MjAwNC0xMi0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdC8xOTA0MgoJKiB0cmVlLXNyYS5jIChkZWNpZGVfYmxvY2tfY29weSk6IEZvcmNlIHVzZV9ibG9ja19jb3B5IGZhbHNlCglmb3IgY29tcGxleCB2YWx1ZXMuCgoyMDA0LTEyLTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTc3OTkKCSogZnVuY3Rpb24uYyAodXNlX3JlZ2lzdGVyX2Zvcl9kZWNsKTogQ2hlY2sgREVDTF9JR05PUkVEX1AgaW5zdGVhZAoJb2YgREVDTF9BUlRJRklDSUFMLgoJKGFzc2lnbl9wYXJtc19hdWdtZW50ZWRfYXJnX2xpc3QpOiBTZXQgREVDTF9JR05PUkVEX1AuCgkqIGMtZGVjbC5jIChidWlsZF9jb21wb3VuZF9saXRlcmFsKTogTGlrZXdpc2UuCgkqIGR3YXJmMmFzbS5jIChkdzJfZm9yY2VfY29uc3RfbWVtKTogTGlrZXdpc2UuCgkqIGdpbXBsaWZ5LmMgKGNyZWF0ZV9hcnRpZmljaWFsX2xhYmVsKTogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmMgKGV4cGFuZF9jYWxsX2lubGluZSk6IExpa2V3aXNlLgoJKiB2YXItdHJhY2tpbmcuYyAodnRfaW5pdGlhbGl6ZSk6IExpa2V3aXNlLgoJKiB0cmVlLW91dG9mLXNzYS5jIChjcmVhdGVfdGVtcCk6IENvcHkgREVDTF9JR05PUkVEX1AuCgoyMDA0LTEyLTMxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0YXJnZXQvMTkyMTEKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19sZWdpdGltaXplX3BpY19hZGRyZXNzKTogSWYgdGhlIG9yaWcKCWlzIHN1YnJlZ2lzdGVyIHJldHVybiBvcmlnLgoKMjAwNC0xMi0zMSAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jIChpbnN0YW50aWF0ZV9wYXJhbWV0ZXJzXzEpOiBDb3B5IHRoZQoJZXhwcmVzc2lvbiBvbmx5IGlmIG5lZWRlZC4KCjIwMDQtMTItMzEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS1ocHV4LmggKEhBTkRMRV9TWVNWX1BSQUdNQSwgSEFORExFX1BSQUdNQV9QQUNLX1BVU0hfUE9QKTogRGVmaW5lLgoKMjAwNC0xMi0zMSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCVBSIHRhcmdldC8xODcwMQoJKiBjb21iaW5lLmMgKGNvbWJpbmVfc2ltcGxpZnlfcnR4KTogRG8gbm90IGFsbG93IHBhcmFkb3hpY2FsCglzdWJyZWdzIG9mIE1FTS4KCglQUiB0YXJnZXQvMTg3MDEKCSogY29tYmluZS5jIChnZW5fbG93cGFydF9mb3JfY29tYmluZSk6IFdoZW4gc3RyaXBwaW5nIFNVQlJFRyBvZgoJTUVNLCBhZGp1c3QgaW1vZGUgYW5kIGlzaXplLgoKMjAwNC0xMi0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaGZhX2VsZW1lbnRfbW9kZSk6IFJldHVybiBmYWxzZSBmb3IKCXplcm8tc2l6ZWQgdG9wLWxldmVsIGFnZ3JlZ2F0ZXMuCgoyMDA0LTEyLTMwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgdGFyZ2V0LzE4MDE5CgkqIGkzODYubWQgKG1vdnFpXzEpOiBGaXggLU9zIGluc3RydWN0aW9uIGNob2ljZS4KCjIwMDQtMTItMzAgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGdsb2JhbC5jIChyZWdjbGFzc19pbnRlcnNlY3QpOiBSZW1vdmUuCgkobWFya19yZWdfdXNlX2Zvcl9lYXJseWNsb2JiZXIpOiBVc2UgcmVnX2NsYXNzZXNfaW50ZXJzZWN0X3AgaW5zdGVhZC4KCjIwMDQtMTItMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZnVuY3Rpb25fdmFsdWUpOiBVc2UgUEFSQUxMRUwgZm9yCglhZ2dyZWdhdGVzIHdpdGggWEYvWENtb2RlLgoKMjAwNC0xMi0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRhcmdldC5oICh0YXJnZXRtLmNhbGxzLmFyZ19wYXJ0aWFsX2J5dGVzKTogTmV3LgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9BUkdfUEFSVElBTF9CWVRFUyk6IE5ldy4KCSogY2FsbHMuYyAoc3RvcmVfdW5hbGlnbmVkX2FyZ3VtZW50c19pbnRvX3BzZXVkb3MpOiBVcGRhdGUgZm9yCglwYXJ0aWFsIGluIGJ5dGVzLgoJKGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IExpa2V3aXNlLgoJKHN0b3JlX29uZV9hcmcpOiBMaWtld2lzZS4KCShpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogVXNlIHRhcmdldG0uY2FsbHMuYXJnX3BhcnRpYWxfYnl0ZXMuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IExpa2V3aXNlLgoJKiBleHByLmMgKGJsb2NrX21vdmVfbGliY2FsbF9zYWZlX2Zvcl9jYWxsX3Bhcm0pOiBMaWtld2lzZS4KCShlbWl0X3B1c2hfaW5zbik6IFVwZGF0ZSBmb3IgcGFydGlhbCBpbiBieXRlcy4KCSogZXhwci5oIChGVU5DVElPTl9BUkdfUEFSVElBTF9OUkVHUyk6IFJlbW92ZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1fZmluZF9lbnRyeV9ydGwpOiBVc2UKCXRhcmdldG0uY2FsbHMuYXJnX3BhcnRpYWxfYnl0ZXMuICBVcGRhdGUgZm9yIHJlc3VsdCBpbiBieXRlcy4KCShsb2NhdGVfYW5kX3BhZF9wYXJtKTogVXBkYXRlIGZvciBwYXJ0aWFsIGluIGJ5dGVzLgoJKiBzeXN0ZW0uaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBQb2lzb24uCgkqIHRhcmdob29rcy5jIChob29rX2ludF9DVU1VTEFUSVZFX0FSR1NfbW9kZV90cmVlX2Jvb2xfMCk6IE5ldy4KCSogdGFyZ2hvb2tzLmggKGhvb2tfaW50X0NVTVVMQVRJVkVfQVJHU19tb2RlX3RyZWVfYm9vbF8wKTogRGVjbGFyZS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9BUkdfUEFSVElBTF9CWVRFUyk6IFJlbmFtZSBhbmQgdXBkYXRlIGZyb20KCUZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTLgoKCSogY29uZmlnL2FyYy9hcmMuaCwgY29uZmlnL2M0eC9jNHguaCwgY29uZmlnL2kzODYvaTM4Ni5oLAoJY29uZmlnL2k4NjAvaTg2MC5oLCBjb25maWcvbTY4aGMxMS9tNjhoYzExLmgsIGNvbmZpZy9tNjhrL202OGsuaCwKCWNvbmZpZy9wZHAxMS9wZHAxMS5oLCBjb25maWcvczM5MC9zMzkwLmgsIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oLAoJY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBSZW1vdmUuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfYXJnX3BhcnRpYWxfYnl0ZXMpOiBOZXcuCgkoVEFSR0VUX0FSR19QQVJUSUFMX0JZVEVTKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCwgY29uZmlnL2FscGhhL3VuaWNvc21rLmgsCgljb25maWcvYWxwaGEvdm1zLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogUmVtb3ZlLgoKCSogY29uZmlnL2FybS9hcm0uaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBNb3ZlIC4uLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fYXJnX3BhcnRpYWxfYnl0ZXMpOiAuLi4gaGVyZS4KCShUQVJHRVRfQVJHX1BBUlRJQUxfQllURVMpOiBOZXcuCgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogTW92ZSAuLi4KCSogY29uZmlnL2NyaXMvY3Jpcy5jIChjcmlzX2FyZ19wYXJ0aWFsX2J5dGVzKTogLi4uIGhlcmUuCgkoVEFSR0VUX0FSR19QQVJUSUFMX0JZVEVTKTogTmV3LgoKCSogY29uZmlnL2ZyMzAvZnIzMC5oIChGVU5DVElPTl9BUkdfUEFSVElBTF9OUkVHUyk6IFJlbW92ZS4KCSogY29uZmlnL2ZyMzAvZnIzMC5jIChmcjMwX2FyZ19wYXJ0aWFsX2J5dGVzKTogUmVuYW1lIGZyb20KCWZyMzBfZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MuICBBZGp1c3QgdG8gcmV0dXJuIGJ5dGVzLgoJKFRBUkdFVF9BUkdfUEFSVElBTF9CWVRFUyk6IE5ldy4KCSogY29uZmlnL2ZyMzAvZnIzMC1wcm90b3MuaDogVXBkYXRlLgoKCSogY29uZmlnL2Zydi9mcnYuaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBSZW1vdmUuCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9hcmdfcGFydGlhbF9ieXRlcyk6IFJlbmFtZSBmcm9tCglmcnZfZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MuICBBZGp1c3QgdG8gcmV0dXJuIGJ5dGVzLgoJKFRBUkdFVF9BUkdfUEFSVElBTF9CWVRFUyk6IE5ldy4KCSogY29uZmlnL2Zydi9mcnYtcHJvdG9zLmg6IFVwZGF0ZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBSZW1vdmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9hcmdfcGFydGlhbF9ieXRlcyk6IFJlbmFtZSBmcm9tCglpYTY0X2Z1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzLiAgQWRqdXN0IHRvIHJldHVybiBieXRlcy4KCShUQVJHRVRfQVJHX1BBUlRJQUxfQllURVMpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IFVwZGF0ZS4KCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogUmVtb3ZlLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5jIChpcTIwMDBfYXJnX3BhcnRpYWxfYnl0ZXMpOiBSZW5hbWUgZnJvbQoJZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MuICBBZGp1c3QgdG8gcmV0dXJuIGJ5dGVzLgoJKFRBUkdFVF9BUkdfUEFSVElBTF9CWVRFUyk6IE5ldy4KCSogY29uZmlnL2lxMjAwMC9pcTIwMDAtcHJvdG9zLmg6IFVwZGF0ZS4KCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBSZW1vdmUuCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAobTMycl9hcmdfcGFydGlhbF9ieXRlcyk6IFJlbmFtZSBmcm9tCglmdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncy4gIEFkanVzdCB0byByZXR1cm4gYnl0ZXMuCgkoVEFSR0VUX0FSR19QQVJUSUFMX0JZVEVTKTogTmV3LgoJKiBjb25maWcvbTMyci9tMzJyLXByb3Rvcy5oOiBVcGRhdGUuCgoJKiBjb25maWcvbWNvcmUvbWNvcmUuaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBSZW1vdmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jIChtY29yZV9hcmdfcGFydGlhbF9ieXRlcyk6IFJlbmFtZSBmcm9tCgltY29yZV9mdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncy4gIEFkanVzdCB0byByZXR1cm4gYnl0ZXMuCgkoVEFSR0VUX0FSR19QQVJUSUFMX0JZVEVTKTogTmV3LgoJKiBjb25maWcvbWNvcmUvbWNvcmUtcHJvdG9zLmg6IFVwZGF0ZS4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBSZW1vdmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19hcmdfcGFydGlhbF9ieXRlcyk6IFJlbmFtZSBmcm9tCglmdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncy4gIEFkanVzdCB0byByZXR1cm4gYnl0ZXMuCgkoVEFSR0VUX0FSR19QQVJUSUFMX0JZVEVTKTogTmV3LgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oOiBVcGRhdGUuCgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogUmVtb3ZlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKG1uMTAzMDBfYXJnX3BhcnRpYWxfYnl0ZXMpOiBSZW5hbWUgZnJvbQoJZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MuICBBZGp1c3QgdG8gcmV0dXJuIGJ5dGVzLgoJKFRBUkdFVF9BUkdfUEFSVElBTF9CWVRFUyk6IE5ldy4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC1wcm90b3MuaDogVXBkYXRlLgoKCSogY29uZmlnL25zMzJrL25zMzJrLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogTW92ZSAuLi4KCSogY29uZmlnL25zMzJrL25zMzJrLmMgKG5zMzJrX2FyZ19wYXJ0aWFsX2J5dGVzKTogLi4uIGhlcmUuCgkoVEFSR0VUX0FSR19QQVJUSUFMX0JZVEVTKTogTmV3LgoKCSogY29uZmlnL3BhL3BhLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogUmVtb3ZlLgoJKiBjb25maWcvcGEvcGEuYyAocGFfYXJnX3BhcnRpYWxfYnl0ZXMpOiBSZW5hbWUgZnJvbQoJZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MuICBIYW5kbGUgMzItYml0LiAgQWRqdXN0IHRvIHJldHVybiBieXRlcy4KCShUQVJHRVRfQVJHX1BBUlRJQUxfQllURVMpOiBOZXcuCgkqIGNvbmZpZy9wYS9wYS1wcm90b3MuaDogVXBkYXRlLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBSZW1vdmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9hcmdfcGFydGlhbF9ieXRlcyk6IFJlbmFtZSBmcm9tCglmdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncy4gIEFkanVzdCB0byByZXR1cm4gYnl0ZXMuCgkoVEFSR0VUX0FSR19QQVJUSUFMX0JZVEVTKTogTmV3LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogVXBkYXRlLgoKCSogY29uZmlnL3NoL3NoLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogTW92ZSAuLi4KCSogY29uZmlnL3NoL3NoLmMgKHNoX2FyZ19wYXJ0aWFsX2J5dGVzKTogLi4uIGhlcmUuCgkoVEFSR0VUX0FSR19QQVJUSUFMX0JZVEVTKTogTmV3LgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfYXJnX3BhcnRpYWxfYnl0ZXMpOiBSZW5hbWUgZnJvbQoJZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MuICBBZGp1c3QgdG8gcmV0dXJuIGJ5dGVzLgoJKFRBUkdFVF9BUkdfUEFSVElBTF9CWVRFUyk6IE5ldy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLXByb3Rvcy5oOiBVcGRhdGUuCgoJKiBjb25maWcvdjg1MC92ODUwLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogUmVtb3ZlLgoJKiBjb25maWcvdjg1MC92ODUwLmMgKHY4NTBfYXJnX3BhcnRpYWxfYnl0ZXMpOiBSZW5hbWUgZnJvbQoJZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MuICBBZGp1c3QgdG8gcmV0dXJuIGJ5dGVzLgoJKFRBUkdFVF9BUkdfUEFSVElBTF9CWVRFUyk6IE5ldy4KCSogY29uZmlnL3Y4NTAvdjg1MC1wcm90b3MuaDogVXBkYXRlLgoKMjAwNC0xMi0zMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogY29uZmlnL21taXgvbW1peC5oIChBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMKTogRGVmaW5lLgoJKiBjb25maWcvbW1peC9tbWl4LmMgKG1taXhfYXNtX291dHB1dF9pbnRlcm5hbF9sYWJlbCk6IE5ldwoJZnVuY3Rpb24uCgkqIGNvbmZpZy9tbWl4L21taXgtcHJvdG9zLmggKG1taXhfYXNtX291dHB1dF9pbnRlcm5hbF9sYWJlbCk6CglQcm90b3R5cGUuCgoyMDAzLTEyLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKFRBUkdFVF9SRUxBWEVEX09SREVSSU5HKTogVHJ1ZS4KCjIwMDQtMTItMjkgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLW91dG9mLXNzYS5jIChpbnNlcnRfYmFja2VkZ2VfY29waWVzKTogTmV3IGZ1bmN0aW9uLgoJKHJld3JpdGVfb3V0X29mX3NzYSk6IFVzZSBpdC4KCjIwMDQtMTItMjkgIElyYSBSb3NlbiAgPGlyYXJAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xODE3OQoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9nZXRfYmFzZV9hbmRfb2Zmc2V0KTogQ2FsbCBnZXRfaW5uZXJfcmVmZXJlbmNlCglhbmQgdmVjdF9hbmFseXplX29mZnNldF9leHByLgoJKHZlY3RfY3JlYXRlX2FkZHJfYmFzZV9mb3JfdmVjdG9yX3JlZik6IEJ1aWxkIGFkZHJlc3NfYmFzZSBieSBjb21iaW5pbmcKCWJhc2UgYW5kIGluaXRpYWxfb2Zmc2V0IGZpZWxkcyBvZiB2ZWN0X3N0bXRfaW5mby4KCSh2ZWN0X3VwZGF0ZV9pbml0c19vZl9kcik6IFVwZGF0ZSBvZmZzZXQgb2YgZGF0YS1yZWYgaW5zdGVhZCBvZiBpdHMKCWFjY2Vzcy1mbi4gUmVtb3ZlIGFyZ3VtZW50LgoJKHZlY3RfdXBkYXRlX2luaXRzX29mX2Rycyk6IENhbGwgdmVjdF91cGRhdGVfaW5pdHNfb2ZfZHIgd2l0aCBuZXcKCWFyZ3VtZW50cy4KCSh2ZWN0X2NvbXB1dGVfZGF0YV9yZWZfYWxpZ25tZW50KTogQ2hlY2sgbWlzYWxpZ25tZW50IGluZm8gaW4KCXZlY3Rfc3RtdF9pbmZvLiBSZW1vdmUgYXJndW1lbnQuCgkodmVjdF9jb21wdXRlX2RhdGFfcmVmc19hbGlnbm1lbnQpOiBDYWxsIHZlY3RfY29tcHV0ZV9kYXRhX3JlZl9hbGlnbm1lbnQKCXdpdGggY29ycmVjdCBhcmd1bWVudC4KCSh2ZWN0X2FuYWx5emVfZGF0YV9yZWZfYWNjZXNzKTogQ2hlY2sgYWNjZXNzIGluZm8gaW4gdmVjdF9zdG10X2luZm8uCgkodmVjdF9hbmFseXplX3BvaW50ZXJfcmVmX2FjY2Vzcyk6IFVwZGF0ZSBzdGVwIGFuZCBpbml0aWFsX29mZnNldCBmaWVsZHMKCW9mIHZlY3Rfc3RtdF9pbmZvLgoJKHZlY3RfZ2V0X21lbXRhZ19hbmRfZHIpOiBDYWxsIHZlY3RfZ2V0X2Jhc2VfYW5kX29mZnNldCBhbmQgc2V0IHRoZQoJZmllbGRzIG9mIHN0bXRfdmVjX2luZm8uCgkodmVjdF9hbmFseXplX2RhdGFfcmVmcyk6IEZpbmQgdmVjdHlwZSBhbmQgcGFzcyBpdCB0bwoJdmVjdF9nZXRfbWVtdGFnX2FuZF9kci4KCSh2ZWN0X2dldF9maXJzdF9pbmRleCk6IFJlbW92ZS4KCSh2ZWN0X2NvbXB1dGVfYXJyYXlfYmFzZV9hbGlnbm1lbnQpOiBSZW1vdmUuCgkodmVjdF9jb21wdXRlX2FycmF5X3JlZl9hbGlnbm1lbnQpOiBSZW1vdmUKCSh2ZWN0X2NyZWF0ZV9kYXRhX3JlZl9wdHIpOiBVc2UgVFlQRV9TSVpFX1VOSVQgaW5zdGVhZCBHRVRfTU9ERV9TSVpFLgoJKHZlY3RfZ2VuX25pdGVyc19mb3JfcHJvbG9nX2xvb3ApOiBVc2UgVFJFRV9DT05TVEFOVCBpbnN0ZWFkCglob3N0X2ludGVnZXJwLgoJKHZlY3Rvcml6YWJsZV9sb2FkKTogVXNlIHNpemUgYXJpdGhtZXRpY3MuCgoyMDA0LTEyLTI5ICBJcmEgUm9zZW4gIDxpcmFyQGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTgxNzkKCSogdHJlZS12ZWN0b3JpemVyLmMgKHZlY3RfZ2V0X2Jhc2VfYW5kX29mZnNldCk6IFJlbmFtZSAocHJldmlvdXMgbmFtZQoJdmVjdF9nZXRfYmFzZV9hbmRfYml0X29mZnNldCkuCgkodmVjdF9nZXRfbWVtdGFnX2FuZF9kcik6IFJlbmFtZSAocHJldmlvdXMgbmFtZSB2ZWN0X2dldF9zeW1ibF9hbmRfZHIpLgoKMjAwNC0xMi0yOSAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE4MTc5CgkqIHRyZWUtdmVjdG9yaXplci5oIChzdHJ1Y3QgX3N0bXRfdmVjX2luZm8pOiBBZGQgbmV3IGZpZWxkczoKCWluaXRpYWxfb2Zmc2V0LCBzdGVwLCBtaXNhbGlnbm1lbnQgYW5kIGJhc2VfYWxpZ25lZF9wIGFuZCBtYWNyb3MKCXRvIGFjY2VzcyB0aGVtLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9hbmFseXplX29mZnNldF9leHByKTogTmV3IGZ1bmN0aW9uLgoJKG5ld19zdG10X3ZlY19pbmZvKTogSW5pdGlhbGl6ZSB0aGUgbmV3IGZpZWxkcyBvZiBzdG10X3ZlY19pbmZvLgoKCSh2ZWN0X2NyZWF0ZV9kYXRhX3JlZl9wdHIpOiBGaXggcHJpbnRpbmdzLgoKMjAwNC0xMi0yOSAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE4MTc5CgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X2dldF9zeW1ibF9hbmRfZHIpOiBSZW9yZ2FuaXplLiBBZGQgbWVtdGFnCglyZXRyaWV2YWwuCgkodmVjdF9hbmFseXplX2RhdGFfcmVmcyk6IFJlbW92ZSBtZW10YWcgcmV0cmlldmFsLgoKMjAwNC0xMi0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBpbmxpbmUtYXNtLzE1NzQwCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2FzbV9leHByKTogTW92ZSByZXNvbHZlIGFzbSBuYW1lcyAuLi4KCSogYy10eXBlY2suYyAoYnVpbGRfYXNtX2V4cHIpOiAuLi4gaGVyZS4gIFZhbGlkYXRlIGlucHV0Cgljb25zdHJhaW50cy4gIE1hcmsgbWVtb3J5IGlucHV0cyBhZGRyZXNzYWJsZS4KCjIwMDQtMTItMjggIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCglQUiB0YXJnZXQvMTgzMjEKCSogY29uZmlnL21taXgvbW1peC5jIChtbWl4X2V4cGFuZF9lcGlsb2d1ZSk6IENoYW5nZSB0eXBlIG9mCgl2YXJpYWJsZSBvZmZzZXQgdG8gSE9TVF9XSURFX0lOVC4gIFJlbW92ZSBvYnNvbGV0ZSBjb21tZW50LiAgRml4CglzcGFjaW5nLgoKMjAwNC0xMi0yOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYnVpbGRfY2xlYW51cF9wb2ludF9leHByKTogRm9yIGEgUkVUVVJOX0VYUFIsCgl3ZSBvbmx5IG5lZWQgYSBjbGVhbnVwIHBvaW50IGV4cHJlc3Npb24gd2hlbiB0aGUgZXhwcmVzc2lvbiBvbiB0aGUKCWxlZnQgaGFuZCBzaWRlIG9mIHRoZSBNT0RJRklZX0VYUFIgaW5zaWRlIHRoZSByZXR1cm4gaGFzIHNpZGUKCWVmZmVjdHMuCgoyMDA0LTEyLTI4ICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9tYXJrX3JlbGV2YW50KSBGaXJzdCBhcmd1bWVudCBjaGFuZ2VkIGZyb20KCXZhcnJheV90eXBlIHRvIHZhcnJheV90eXBlKi4KCSh2ZWN0X21hcmtfc3RtdHNfdG9fYmVfdmVjdG9yaXplZCk6IFBhc3MgJndvcmtsaXN0IGluc3RlYWQgb2Ygd29ya2xpc3QKCXdoZW4gY2FsbGluZyB2ZWN0X21hcmtfcmVsZXZhbnQuCgoyMDA0LTEyLTI4ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MpOiBEb24ndAoJZ2VuZXJhdGUgbm9uLW9mZnNldHRhYmxlIERJbW9kZSBsb19zdW0gYWRkcmVzc2VzLgoKMjAwNC0xMi0yOCAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE5MTAzCgkqIGxvb3AtaXYuYyAoaXZfbnVtYmVyX29mX2l0ZXJhdGlvbnMpOiBGaXggdHlwby4KCjIwMDQtMTItMjggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGdlbnJlY29nLmMgKGNvbXB1dGVfcHJlZGljYXRlX2NvZGVzKTogQXZvaWQgd2FybmluZy4KCjIwMDQtMTItMjcgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHZheC5jICh2YXhfYWRkcmVzc19jb3N0LCB2YXhfcnR4X2Nvc3QpOiBDb3JyZWN0IGNhc3RzLgoJKHZheF9ydHhfY29zdCk6IEhhbmRsZSBzbWFsbCBvZmZzZXRzIGZvciBib3RoIFBMVVMgYW5kIE1JTlVTLgoKMjAwNC0xMi0yNyAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWRvbS5jICh0aHJlYWRfYWNyb3NzX2VkZ2UpOiBSZW1vdmUgYnJva2VuIGNvZGUgdG8KCWF2b2lkIHRocmVhZGluZyBpbnRvIGEgbG9vcC4KCjIwMDQtMTItMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE3NDA2CgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiBBZGQgUkVHX0ZSQU1FX1JFTEFURURfRVhQUgoJbm90ZSBmb3IgYWxsb2NhdGVfc3RhY2tfd29ya2VyIGluc24uCgoyMDA0LTEyLTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfUkVMQVhFRF9PUkRFUklORyk6IERvY3VtZW50LgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBBZGQgcmVsYXhlZF9vcmRlcmluZyBmaWVsZC4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfUkVMQVhFRF9PUkRFUklORyk6IERlZmluZSBkZWZhdWx0LgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEFkZCBpdC4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKFRBUkdFVF9SRUxBWEVEX09SREVSSU5HKTogRGVmaW5lLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKFRBUkdFVF9SRUxBWEVEX09SREVSSU5HKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChUQVJHRVRfUkVMQVhFRF9PUkRFUklORyk6IERlZmluZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKFRBUkdFVF9SRUxBWEVEX09SREVSSU5HKTogRGVmaW5lLgoKMjAwNC0xMi0yNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgZHJpdmVyLzE2MTE4CgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gLXNhdmUtdGVtcHMKCWFuZCAteC4KCjIwMDQtMTItMjcgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbGltaW5hdGVfaW5kZXhlZF9tZW1yZWZzKToKCURvIG5vdCBicmVhayBhcGFydCBjb25zdGFudCBwb29sIGFkZHJlc3Nlcy4KCShyczYwMDBfZW1pdF9tb3ZlKTogT25seSBmb3JjZSBzb3VyY2UgaW50byBSRUcgaWYgdGFyZ2V0IGlzIE1FTS4KCjIwMDQtMTItMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5MTQ4CgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2NvbmRfZXhwcik6IEFkZCBwb3N0X3AgcGFyYW1ldGVyLgoJKGdpbXBsaWZ5X21vZGlmeV9leHByX3Jocyk6IEFkanVzdCBjYWxsIHRvIGdpbXBsaWZ5X2NvbmRfZXhwci4KCShnaW1wbGlmeV9leHByKTogTGlrZXdpc2UuCgoyMDA0LTEyLTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChVTklUU19QRVJfU0lNRF9XT1JEKTogRG9uJ3QgdXNlIE1NWC8zRE5PVy4KCjIwMDQtMTItMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZ2ltcGxpZnlfdmFfYXJnKTogQWxzbyBwYXNzIHRoZSByZXN1bHQKCW9mIHR5cGVfbmF0dXJhbF9tb2RlIHRvIGV4YW1pbmVfYXJndW1lbnQuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChtb3Y8TU1YTU9ERUk+X2ludGVybmFsX3JleDY0KTogTmV3LgoJKG1vdnYyc2ZfaW50ZXJuYWxfcmV4NjQpOiBOZXcuCgkobW92PE1NWE1PREVJPl9pbnRlcm5hbCk6IFVzZSBubyByZWdpc3RlciBwcmVmZXJlbmNlcyBhdCBhbGwuCgkobW92djJzZl9pbnRlcm5hbCk6IExpa2V3aXNlLgoKMjAwNC0xMi0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbl8xKTogRG9uJ3Qgc2ltcGxpZnkKCXBsdXMvbWludXMgYWNyb3NzIEVRIGZvciBmbG9hdGluZy1wb2ludC4KCjIwMDQtMTItMjYgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzE3NjQzCgkqIHBhLmMgKHBhX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogU2liY2FsbHMgYXJlIG5vdCBvayB3aGVuCglnZW5lcmF0aW5nIGNvZGUgZm9yIHRoZSBwb3J0YWJsZSBydW50aW1lLgoKMjAwNC0xMi0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoY2xlYXJfc3RvcmFnZSk6IFZhbGlkYXRlIENPTlNUMF9SVFggZXh0YW50LiAgU3BlY2lhbCBjYXNlCgljb21wbGV4IG1vZGVzLgoKMjAwNC0xMi0yNSAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE5MDc4CgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGRldGVybWluZV91c2VfaXZfY29zdF9nZW5lcmljLAoJZGV0ZXJtaW5lX3VzZV9pdl9jb3N0X291dGVyKTogRml4IGNvbXB1dGluZyBvZiBjb3N0IGZvciB0aGUgb3JpZ2luYWwKCWJpdnMuCgkoZHVtcF91c2UpOiBIYW5kbGUgY2FzZSByZWxhdGVkX2NhbmRzID09IE5VTEwuCgoyMDA0LTEyLTI1ICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGFtZWxlay5nZGEucGw+CgoJUFIgdGFyZ2V0LzE5MDU5CgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9tY3VfdHlwZXMpOiBNb3ZlIGF0dGlueXsxMywyMzEzfSBmcm9tIGF2cjQKCXRvIGF2cjIuCgkqIGNvbmZpZy9hdnIvYXZyLmggKExJTktfU1BFQyk6IERpdHRvLgoJKiBjb25maWcvYXZyL3QtYXZyIChNVUxUSUxJQl9NQVRDSEVTKTogRGl0dG8uCgoyMDA0LTEyLTI1ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHRhcmdldC8xOTEzNwoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92dGlfcG93ZXIsIG1vdnRpX3N0cmluZyk6IFJlbGF4CglvcGVyYW5kWzFdIHByZWRpY2F0ZSB0byBpbnB1dF9vcGVyYW5kLCBhbmQgYWRkIHI8LW4gYWx0ZXJuYXRpdmUuCglNb3ZlIFRJbW9kZSBjb25zdF9kb3VibGVfb3BlcmFuZCBzcGxpdHRlciB0byB3aGVyZSBpdCBiZWxvbmdzLgoKMjAwNC0xMi0yNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMTkxNDcKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGFuZHNpM19pbnRlcm5hbDcsIGFuZHNpM19pbnRlcm5hbDgpOiBEZWxldGUuCgoyMDA0LTEyLTI0ICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqZml4X3RydW5je2QscyxofWlfMSk6CglSZW5hbWUgdG8gKmZpeF90cnVuY3tkLHMsaH1pX2kzODcuCgkoZml4X3RydW5je2Qsc31mZGkyKTogUmVvcmRlciB0ZXN0cy4KCjIwMDQtMTItMjQgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiBkZWJ1Zy8xNDYzOAoKCSogdHJlZS5oIChERUNMX0RFQlVHX0FMSUFTX09GKTogTmV3IG1hY3JvLgoJKiB2YXItdHJhY2tpbmcuYyAodHJhY2tfZXhwcl9wKTogRG9uJ3QgZGlzcXVhbGlmeSB0cmFja2luZyBvZiB2YXJpYWJsZXMKCXRoYXQgYXJlIGFsaWFzZXMgb2YgdmFyaWFibGVzIHdlIHdhbnQgdG8gdHJhY2ssIHVubGVzcyB0aGUKCW9yaWdpbmFsIHZhcmlhYmxlIGlzIGFsc28gaWdub3JlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgoJKFZBUklBQkxFX0hBU0hfVkFMKTogVXNlIERFQ0xfVUlELCBzbyB0aGF0IHRoaXMgaXMgZGV0ZXJtaW5pc3RpYy4KCSogdHJlZS1vdXRvZi1zc2EuYyAoY3JlYXRlX3RlbXApOiBOb3RlIHdobyB3ZSBhcmUgYSBkZWJ1ZyBhbGlhcyBvZi4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF92YXJfbG9jYXRpb24pOiBBZGQgdXMgdG8gdGhlIGxvY2F0aW9uIG9mCgl0aGUgZGVjbCB3ZSBhcmUgYW4gYWxpYXMgb2YuCgoyMDA0LTEyLTI0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHRhcmdldC8xOTE0MgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChsZWdpdGltYXRlX2xvX3N1bV9hZGRyZXNzX3ApOiBBbGxvdwoJREZtb2RlIGZvciAzMi1iaXQgYWdhaW4uCgoyMDA0LTEyLTIzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHJlbG9hZC5jIChyZWdub19jbG9iYmVyZWRfcCk6IEFkZCBhIGdjY19hc3NlcnQgdGhhdCByZWdubwoJcmVmZXJzIHRvIGEgaGFyZCByZWdpc3Rlci4KCjIwMDQtMTItMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9tb2RpZnlfZXhwcl9yaHMpOiBVc2UgdHlwZXNfY29tcGF0aWJsZV9wLgoKMjAwNC0xMi0yMyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBnZW5yZWNvZy5jIChkaWRfeW91X21lYW5fY29kZXMpOiBOZXcuCgkoY29tcHV0ZV9wcmVkaWNhdGVfY29kZXMpOiBGYWlsIHVubWF0Y2hlZCBjb2Rlcy4KCjIwMDQtMTItMjMgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IEFkZAoJYXNzZXJ0IGZvciBtYWNoaW5lPW1pcHMgZm9yICFUQVJHRVRfSVJJWC4KCSogY29uZmlnL21pcHMvbGludXguaDogUmVtb3ZlIG1hY2hpbmU9bWlwcyBhc3NlcnQuCgkqIGNvbmZpZy9taXBzL25ldGJzZC5oOiBEaXR0by4KCSogY29uZmlnL21pcHMvb3BlbmJzZC5oOiBEaXR0by4KCjIwMDQtMTItMjMgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIHRyZWUuYyAoaXRlcmF0aXZlX2hhc2hfZXhwcik6IENhbm9uaWNhbGl6ZSBidWlsdGlucy4KCjIwMDQtMTItMjMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNjgxOQoJKiBjYWxscy5jIChsb2FkX3JlZ2lzdGVyX3BhcmFtZXRlcnMpOiBEb24ndCBjYWxsIHVzZV9yZWdzIHdoZW4KCW5yZWdzIGlzIHplcm8uCgoyMDA0LTEyLTIzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG1pZGRsZS1lbmQvMTc3NDYKCSogZXhwci5jIChnZXRfaW5uZXJfcmVmZXJlbmNlKTogQWRkICdrZWVwX2FsaWduaW5nJyBwYXJhbWV0ZXIuCglCcmVhayBvbiBhbGlnbmluZyBWSUVXX0NPTlZFUlRfRVhQUiBub2RlcyBvbiBTVFJJQ1RfQUxJR05NRU5UCglwbGF0Zm9ybXMgb25seSBpZiBrZWVwX2FsaWduaW5nIGlzIHRydWUuCgkoZXhwYW5kX2Fzc2lnbm1lbnQpOiBBZGp1c3QgY2FsbCB0byBnZXRfaW5uZXJfcmVmZXJlbmNlLgoJKGV4cGFuZF9leHByX2FkZHJfZXhwcl8xKTogTGlrZXdpc2UuCgkoZXhwYW5kX2V4cHJfcmVhbF8xKTogTGlrZXdpc2UuCgkqIGRvanVtcC5jIChkb19qdW1wKTogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jIChsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWVfMSk6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKG9wdGltaXplX2JpdF9maWVsZF9jb21wYXJlKTogTGlrZXdpc2UuCgkoZGVjb2RlX2ZpZWxkX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKHNwbGl0X2FkZHJlc3NfdG9fY29yZV9hbmRfb2Zmc2V0KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKHNwbGl0X2FkZHJlc3NfY29zdCk6IExpa2V3aXNlLgoJKiB0cmVlLmggKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBBZGp1c3QgcHJvdG90eXBlLgoKMjAwNC0xMi0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFJldmVydCBsYXN0IGNoYW5nZQoJd3J0IGZhbmN5IDM4NyBtYXRoLgoKMjAwNC0xMi0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAob25lX2NtcGw8bW9kZT4yLCBhbmQ8bW9kZT4zLCBhbmRub3Q8bW9kZT4zLAoJaW9yPG1vZGU+MywgaW9ybm90PG1vZGU+MywgeG9yPG1vZGU+MywgeG9ybm90PG1vZGU+Myk6IE5ldyBtYWNyb2l6ZWQKCXZlY3RvciBvcGVyYXRlIHBhdHRlcm5zLgoKMjAwNC0xMi0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfdmVjdG9yX21vdmUpOiBUaWR5LgoJKGl4ODZfZXhwYW5kX3ZlY3Rvcl9tb3ZlX21pc2FsaWduKTogTmV3LgoJKGl4ODZfbWlzYWxpZ25lZF9tZW1fb2spOiBSZW1vdmUuCgkoVEFSR0VUX1ZFQ1RPUklaRV9NSVNBTElHTkVEX01FTV9PSyk6IFJlbW92ZS4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaDogVXBkYXRlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChTU0VNT0RFSSk6IFJlbmFtZSBmcm9tIFNTRUlOVDE2LgoJKE1NWE1PREVJKTogUmVuYW1lIGZyb20gTU1YSU5UOC4KCShTU0VNT0RFLCBNTVhNT0RFLCBtb3ZtaXNhbGlnbjxtb2RlPik6IE5ldy4KCjIwMDQtMTItMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE2NDA1CgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X21vZGlmeV9leHByX3Jocyk6IEhhbmRsZQoJSU5ESVJFQ1RfUkVGL0FERFJfRVhQUiBjb21iaW5hdGlvbnMuCgoyMDA0LTEyLTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2V4cGFuZF9tb3YpOiBTcGxpdCBvdXQgLi4uCgkoYWxwaGFfZXhwYW5kX21vdm1pc2FsaWduKTogLi4uIG1pc2FsaWduZWQgdmVjdG9yIHN1cHBvcnQuCgkoVEFSR0VUX1ZFQ1RPUklaRV9NSVNBTElHTkVEX01FTV9PSyk6IFJlbW92ZS4KCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoVkVDKTogTmV3IG1hY3JvLgoJKG1vdnY4cWksIG1vdnY0aGksIG1vdnYyc2kpOiBDb21wcmVzcyB3aXRoIFZFQy4KCShtb3Z2OHFpX2ZpeCwgbW92djRoaV9maXgsIG1vdnYyc2lfZml4KTogTGlrZXdpc2UuCgkobW92djhxaV9ub2ZpeCwgbW92djRoaV9ub2ZpeCwgbW92djJzaV9ub2ZpeCk6IExpa2V3aXNlLgoJKG1vdm1pc2FsaWduPG1vZGU+KTogTmV3LgoKMjAwNC0xMi0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIG9wdGFicy5oIChPVElfbW92bWlzYWxpZ24sIG1vdm1pc2FsaWduX29wdGFiKTogTmV3LgoJKiBvcHRhYnMuYyAoaW5pdF9vcHRhYnMpOiBDcmVhdGUgaXQuCgkqIGdlbm9waW5pdC5jIChvcHRhYnMpOiBJbml0aWFsaXplIGl0LgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSkgPE1JU0FMSUdORURfSU5ESVJFQ1RfUkVGPjogVXNlIGl0LgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9zdXBwb3J0YWJsZV9kcl9hbGlnbm1lbnQpOiBMaWtld2lzZS4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfVkVDVE9SSVpFX01JU0FMSUdORURfTUVNX09LKTogUmVtb3ZlLgoJKiB0YXJnZXQuaCAodmVjdG9yaXplLm1pc2FsaWduZWRfbWVtX29rKTogUmVtb3ZlLgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF92ZWN0X21pc2FsaWduZWRfbWVtX29rKTogUmVtb3ZlLgoJKiBkb2MvbWQudGV4aSAobW92bWlzYWxpZ24pOiBOZXcuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfVkVDVE9SSVpFX01JU0FMSUdORURfTUVNX09LKTogUmVtb3ZlLgoKMjAwNC0xMi0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2VtbWludHJpbi5oIChfbW1fbG9hZGhfcGQpOiBEb24ndCBjYXN0IHBvaW50ZXIgYXJnCgl0byBfX3Yyc2kuCgkoX21tX3N0b3JlaF9wZCwgX21tX2xvYWRsX3BkLCBfbW1fc3RvcmVsX3BkKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBVc2UgZG91YmxlKiBvcgoJY29uc3QgZG91YmxlKiBmb3IgX19idWlsdGluX2lhMzJfbG9hZGhwZCwgX19idWlsdGluX2lhMzJfbG9hZGxwZCwKCV9fYnVpbHRpbl9pYTMyX3N0b3JlaHBkLCBfX2J1aWx0aW5faWEzMl9zdG9yZWxwZC4KCShpeDg2X2V4cGFuZF9idWlsdGluKTogVXBkYXRlIHRvIG1hdGNoLgoJKGl4ODZfZXhwYW5kX3ZlY3Rvcl9pbml0KTogVXNlIHNzZTJfbG9hZGxwZC4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAodmVjX3NldHYyZGYpOiBVc2Ugc3NlMl9sb2FkbHBkLCBzc2UyX2xvYWRocGQuCgkodmVjX2V4dHJhY3R2MmRmKTogVXNlIHNzZTJfc3RvcmVscGQsIHNzZTJfc3RvcmVocGQuCgkoc3NlMl9zdG9yZWhwZCwgc3NlMl9sb2FkaHBkLCBzc2UyX3N0b3JlbHBkLCBzc2UyX2xvYWRscGQpOiBOZXcuCgkoc3NlMl9tb3ZocGQpOiBSZW1vdmUuCgoyMDA0LTEyLTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHRhcmdldC8xODc1MQoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChsZWdpdGltYXRlX2xvX3N1bV9hZGRyZXNzX3ApOiBSZXR1cm4KCWZhbHNlIGZvciBhbnl0aGluZyBsYXJnZXIgdGhhbiAzMiBiaXRzIGluIDMyLWJpdCBjb2RlLgoKMjAwNC0xMi0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGJ0c3EsIGJ0cnEsIGJ0Y3EpOiBGaXggbW9kZXMuCgkoYnQgcGVlcGhvbGVzKTogTGlrZXdpc2UuCgoJKiB2YXJhc20uYyAoZm9yY2VfY29uc3RfbWVtKTogQ2FsbCBzZXRfbWVtX2FsaWduLgoKMjAwNC0xMi0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKHNzZV9jb21wYXJpc29uX29wZXJhdG9yKTogRml4Cgl0eXBvIGluIGllZWUgdGVzdC4KCShhcml0aF9vcl9sb2dpY2FsX29wZXJhdG9yKTogRG93bmNhc2UgY29kZXMuCgoyMDA0LTEyLTIzICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCglQUiB0YXJnZXQvMTg1MTEKCSogcmVsb2FkMS5jIChlbWl0X291dHB1dF9yZWxvYWRfaW5zbnMpOiBDaGVjayBpZiBPTEQgaXMgYSBoYXJkCglyZWdpc3RlciBiZWZvcmUgY2FsbGluZyByZWdub19jbG9iYmVyZWRfcC4KCSogcmVsb2FkLmM6IFVwZGF0ZSBjb21tZW50IGZvciByZWdub19jbG9iYmVyZWRfcC4KCjIwMDQtMTItMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBSZXNwZWN0IHVzZXIgZGlzYWJsZSBvZgoJZmFuY3kgMzg3IG1hdGgsIHNzZSwgbW14LgoJKGNvbnN0cnVjdF9jb250YWluZXIpOiBHZW5lcmF0ZSBlcnJvciBpZiB3ZSBuZWVkIGFuIHNzZSByZWdzdGVyCglhbmQgc3NlIGhhcyBiZWVuIGRpc2FibGVkLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9TV0lUQ0hFUyk6IERpc2FibGluZyBzc2UgYWxzbyBkaXNhYmxlcwoJbGF0ZXIgc3NlIGdlbmVyYXRpb25zLiAgRGlzYWJsaW5nIG1teCBhbHNvIGRpc2FibGVzIDNkbm93LgoKMjAwNC0xMi0yMiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLWlubGluZS5jIChzdHJ1Y3QgaW5saW5lX2RhdGEpOiBSZW1vdmUgaW5saW5lZF9mbnMuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogUmVtb3ZlIGRlYWQgY29kZSBzZXR0aW5nCglpbmxpbmVkX2Zucy4KCShvcHRpbWl6ZV9pbmxpbmVfY2FsbHMpOiBSZW1vdmUgZGVhZCBjb2RlIHNldHRpbmcgREVDTF9JTkxJTkVEX0ZOUy4KCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9kZWNsKTogUmVtb3ZlIGlubGluZWRfZm5zLgoKMjAwNC0xMi0yMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmVlLWJyb3dzZXIuYzogUmVtb3ZlIG9ic29sZXRlICNpZmRlZiBIT1NUX0VCQ0RJQyBjb2RlLgoKMjAwNC0xMi0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMTg4OTYKCSogZnVuY3Rpb24uYyAoc3BsaXRfY29tcGxleF9hcmdzKTogU2V0IERFQ0xfQVJUSUZJQ0lBTCwgREVDTF9JR05PUkVEX1AKCWZvciByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgaWYgdGhlIHBhcm0gaXMgYWRkcmVzc2FibGUuCgkoYXNzaWduX3Bhcm1zX3Vuc3BsaXRfY29tcGxleCk6IElmIHBhcm0gYWRkcmVzc2FibGUsIHNhdmUgcmVhbAoJYW5kIGltYWdpbmFyeSBwYXJ0cyB0byBhIHN0YWNrIHRlbXAuICBQYXNzIGFzc2lnbl9wYXJtX2RhdGFfYWxsLgoJKGFzc2lnbl9wYXJtcyk6IEFkanVzdCBhc3NpZ25fcGFybXNfdW5zcGxpdF9jb21wbGV4IGNhbGwuCgoyMDA0LTEyLTIyICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHRyZWUuaCAoREVDTF9QVEFfQUxJQVNWQVIpOiBEZWFkLgoJKHN0cnVjdCB0cmVlX2RlY2wpOiBSZW1vdmUgYWxpYXNfdmFyIGZpZWxkLgoKMjAwNC0xMi0yMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN5c3RlbS5oIChJTl9SQU5HRSk6IFJlc3RvcmUgSE9TVF9XSURFX0lOVCBjYXN0LgoJKiB0cmVlLmggKElTX0VYUFJfQ09ERV9DTEFTUyk6IERvIG5vdCB1c2UgSU5fUkFOR0UuCgoyMDA0LTEyLTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoJICAgIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHRydW5jZGZzZjIpOiBEb24ndCBjcmVhdGUgc3RhY2sgdGVtcCB3aGVuCgl1c2luZyBzc2UgbWF0aCBvbmx5LiAgVXNlIHRydW5jZGZzZjJfd2l0aF90ZW1wLgoJKHRydW5jZGZzZjJfd2l0aF90ZW1wKTogTmV3LgoJKHRydW5jZGZzZl9mYXN0X2kzODcpOiBSZW5hbWUgZnJvbSB0cnVuY2Rmc2YyX25vb3AuICBBZGQgbWVtb3J5CglvdXRwdXQgYWx0ZXJuYXRpdmUuCgkodHJ1bmNkZnNmX21peGVkKTogUmVuYW1lIGZyb20gdHJ1bmNkZnNmMl8xX3NzZS4gIENvbXByZXNzIGR1cGxpY2F0ZQoJYWx0ZXJuYXRpdmVzLgoJKHRydW5jZGZzZl9mYXN0X3NzZSk6IFJlbmFtZSBmcm9tIHRydW5jZGZzZjJfMi4gIFJlbW92ZSBmIGFsdGVybmF0aXZlLgoJKHRydW5jZGZzZjJfMywgdHJ1bmNkZnNmMl9zc2Vfb25seSk6IFJlbW92ZS4KCSh0cnVuY2Rmc2ZfaTM4Nyk6IFJlbmFtZSBmcm9tIHRydW5jZGZzZjJfMS4gIENvbXByZXNzIGR1cGxpY2F0ZXMuCgkodHJ1bmNkZnNmX2Zhc3RfbWl4ZWQpOiBOZXcuCgkodHJ1bmNkZnNmIHNwbGl0dGVycyk6IFJlbW92ZSBhbGwgZXhjZXB0IHRoZSAzODcgbG9hZC9zdG9yZSBzcGxpdC4KCSh0cnVuY3hmc2YyXzEsIHRydW5jeGZkZjJfMSk6IFVuaWZ5IGVuYWJsZSBjb25zdHJhaW50IHdpdGgKCXJlc3BlY3QgdG8gVEFSR0VUX1NTRTIsIFRBUkdFVF84MDM4NywgVEFSR0VUX1NTRV9NQVRIIGFuZAoJVEFSR0VUX01JWF9TU0VfSTM4Ny4KCSgqdHJ1bmN4ZntzLGR9ZjJfMSk6IFJlbmFtZSB0byAqdHJ1bmN4ZntzLGR9ZjJfbWl4ZWQuCgkodHJ1bmN4ZntzLGR9ZjJfbm9vcCkgUmVuYW1lIHRvIHRydW5jeGZ7ZCxzfWYyX2kzODdfbm9vcC4KCSgqdHJ1bmN4ZntzLGR9ZjJfaTM4Nyk6IE5ldyBwYXR0ZXJucy4KCSgqdHJ1bmN4ZntzLGR9ZjJfMik6IFJlbmFtZSB0byAqdHJ1bmN4ZntzLGR9ZjJfaTM4N18xLgoJKHRydW5jeGZ7cyxkfWYyLCBmbW9ke3MsZH1mMywgZHJlbXtzLGR9ZjMsIGxvZzFwe3MsZH1mMiwKCXJpbnR7cyxkfWYyLCBmbG9vcntzLGR9ZjIsIGNlaWx7cyxkfWYyLCBidHJ1bmN7cyxkfWYyLAoJbmVhcmJ5aW50e3MsZH1mMik6IFVzZSByZW5hbWVkIHBhdHRlcm5zLgoKMjAwNC0xMi0yMiAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuaCAoVFlQRV9TSVpFU19HSU1QTElGSUVEKTogTmV3LgoJKiBmdW5jdGlvbi5jIChnaW1wbGlmeV9wYXJtX3R5cGUpOiBEb24ndCBnaW1wbGlmeSB0eXBlIGlmIGFscmVhZHkgZG9uZS4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfZGVjbF9leHByKTogTGlrZXdpc2UuCgkoZ2ltcGxpZnlfdHlwZV9zaXplcyk6IFNldCBUWVBFX1NJWkVTX0dJTVBMSUZJRUQuICBFeGFtaW5lIG5lc3RlZAoJYXJyYXkgdHlwZXMuCgoyMDA0LTEyLTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZ2ltcGxpZnkuYyAoZXZhbF9zYXZlX2V4cHIpOiBSZW1vdmUuCgkoZ2ltcGxpZnlfb25lX3NpemVwb3MpOiBVbnNoYXJlIGV4cHIgYmVmb3JlIGdpbXBsaWZ5aW5nLgoJKiBzdG9yLWxheW91dC5jICh2YXJpYWJsZV9zaXplKTogUmV2ZXJ0IDIwMDQtMTItMTkgY2hhbmdlLgoJKGxheW91dF9kZWNsKTogUmV2ZXJ0IDIwMDQtMTItMTggY2hhbmdlLgoJKGxheW91dF90eXBlKTogUmV2ZXJ0IDIwMDQtMTItMjEgY2hhbmdlLgoKMjAwNC0xMi0yMiAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUtc3JhLmMgKHR5cGVfY2FuX2JlX2RlY29tcG9zZWRfcCk6IFJlamVjdCB2YXJpYWJsZSBzaXplZCB0eXBlcy4KCjIwMDQtMTItMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1jb21tb24pOiBSZW1vdmUgc3BlY2lhbC1jYXNlIGNvZGUgZm9yIHdoZW4KCVNQRUNTIGlzIGRlZmluZWQuCgoyMDA0LTEyLTIyICBKYW4gQmV1bGljaCAgPGpiZXVsaWNoQG5vdmVsbC5jb20+CgoJKiBjb25maWcuZ2NjOiBBZGQgZGJ4ZWxmLmggdG8gTmV0V2FyZSdzIHRtX2ZpbGUuCgkqIGNvbmZpZy9pMzg2L25ldHdhcmUtY3J0MC5jOiBQcm90b3R5cGUgX19pbml0X2Vudmlyb25tZW50IGFuZAoJX19kZWluaXRfZW52aXJvbm1lbnQgcHJpb3IgdG8gdGhlaXIgZGVmaW5pdGlvbi4KCShfX2luaXRfZW52aXJvbm1lbnQpOiBDb3JyZWN0IGludm9rYXRpb24gb2YgY29uc3RydWN0b3IgZnVuY3Rpb24uCgkqIGNvbmZpZy9pMzg2L25ldHdhcmUuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFVzZQoJYnVpbHRpbl9kZWZpbmVfc3RkIHJhdGhlciB0aGFuIGJ1aWx0aW5fZGVmaW5lIG9uIElBUFgzODYuCgkqIGNvbmZpZy9pMzg2L253bGQuaDogRGlzYWJsZSBzdGFicyBkZWJ1Z2dpbmcgaW5mbyB3aXRoIHRoZSBsaW5rZXIKCXRoaXMgZmlsZSBzdXBwb3J0cy4KCSogY29uZmlnL2kzODYvdC1ud2xkIChTSExJQl9MSU5LKTogRG8gbm90IHVzZSBhIHRlbXBvcmFyeSBmaWxlIGZvcgoJdGhlIG91dHB1dC4gQWRkIC1wb3NpeCB0byB0aGUgb3B0aW9ucyBhcyB0aGF0IGlzIHRoZSBtb3JlIGNvbXBhdGlibGUKCW1vZGUuCgkqIGd0aHItbmtzLmg6IEZvcm1hdHRpbmcuCgkoX19ndGhyZWFkX211dGV4X2luaXRfZnVuY3Rpb24pOiBLaWxsIHRoZSBkdWJpb3VzIHVzZSBvZgoJTlhfTVVURVhfUkVDVVJTSVZFIGFzIGl0IGlzIG5vdyBjbGVhciB0aGF0IHRoZSB0cmFkaXRpb25hbCBtdXRleGVzCgl3ZXJlIG5vdCBtZWFudCB0byBiZSByZWN1cnNpdmUuCgkoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90LCBfX0dUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRfRlVOQ1RJT04sCglfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2luaXRfZnVuY3Rpb24sCglfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2xvY2ssIF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdHJ5bG9jaywKCV9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdW5sb2NrKTogTmV3LgoKMjAwNC0xMi0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy90LWxpbnV4NjQ6IFJlbW92ZSBjb2RlIHRoYXQgbWVzc2VkIHdpdGggJChTUEVDUykuCgkoTVVMVElMSUJfT1BUSU9OUywgTVVMVElMSUJfRElSTkFNRVMsIE1VTFRJTElCX09TRElSTkFNRVMpOiBNb3ZlCgluMzIgdG8gdGhlIGZyb250LgoJKE1VTFRJTElCX0VYVFJBX09QVFMsIENSVFNUVUZGX1RfQ0ZMQUdTLCBDUlRTVFVGRl9UX0NGTEFHU19TKToKCVJlbW92ZWQuCgkqIGNvbmZpZy9taXBzL2xpbnV4NjQuaCAoRFJJVkVSX1NFTEZfU1BFQ1MpOiBEb24ndCBoYW5kbGUKCS1tYWJpLWZha2UtZGVmYXVsdC4KCShTVUJUQVJHRVRfVEFSR0VUX1NXSVRDSEVTKTogTGlrZXdpc2UuCgoyMDA0LTEyLTIxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBjKysvMTg5ODQKCSogcG9pbnRlci1zZXQuYyAocG9pbnRlcl9zZXRfY29udGFpbnMpOiBBZGQgYmFjay4KCSogcG9pbnRlci1zZXQuaCAocG9pbnRlcl9zZXRfY29udGFpbnMpOiBBZGQgYmFjay4KCjIwMDQtMTItMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnaW1wbGlmeS5jIChldmFsX3NhdmVfZXhwcik6IE5ldy4KCShnaW1wbGlmeV9vbmVfc2l6ZXBvcyk6IFVzZSBpdC4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUpOiBVbnNoYXJlIFRZUEVfTUlOL01BWF9WQUxVRS4KCjIwMDQtMTItMjEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzeXN0ZW0uYyAoSU5fUkFOR0UpOiBVc2UgcGxhaW4gdW5zaWduZWQsIG5vdCB1bnNpZ25lZAoJSE9TVF9XSURFX0lOVC4KCSogdHJlZS5kZWYgKFZPSURfVFlQRSwgSU5URUdFUl9UWVBFLCBSRUFMX1RZUEUsIENPTVBMRVhfVFlQRSwKCVZFQ1RPUl9UWVBFLCBPRkZTRVRfVFlQRSwgRU5VTUVSQUxfVFlQRSwgQk9PTEVBTl9UWVBFLCBDSEFSX1RZUEUsCglQT0lOVEVSX1RZUEUsIFJFRkVSRU5DRV9UWVBFLCBNRVRIT0RfVFlQRSwgRlVOQ1RJT05fVFlQRSwKCUZJTEVfVFlQRSwgQVJSQVlfVFlQRSwgUkVDT1JEX1RZUEUsIFVOSU9OX1RZUEUsCglRVUFMX1VOSU9OX1RZUEUpOiBSZW9yZGVyIGZvciBiZXR0ZXIgY29kZSBlZmZpY2llbmN5LgoJKENPTlNUX0RFQ0wsIFRZUEVfREVDTCwgVkFSX0RFQ0wsIEZJRUxEX0RFQ0wsIFBBUk1fREVDTCk6IExpa2V3aXNlLgoJKElORElSRUNUX1JFRiwgQUxJR05fSU5ESVJFQ1RfUkVGLCBNSVNBTElHTkVEX0lORElSRUNUX1JFRik6IExpa2V3aXNlLgoJKiB0cmVlLmggKElORElSRUNUX1JFRl9QKTogUmVvcmRlciBjaGVja3MgZm9yIGJldHRlciBvcHRpbWl6YXRpb24uCgkoSVNfRVhQUl9DT0RFX0NMQVNTKTogVXNlIElOX1JBTkdFLgoJKElOVEVHUkFMX1RZUEVfUCwgRkxPQVRfVFlQRV9QKTogUmVvcmRlciBjaGVja3MgZm9yIGJldHRlcgoJb3B0aW1pemF0aW9uLgoKMjAwNC0xMi0yMSAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZy9mcmVlYnNkLXNwZWMuaDogVXNlIEtTRSBwdGhyZWFkIGxpYiBmb3IgLXB0aHJlYWQuCgoyMDA0LTEyLTIxICBKYW1lcyBBLiBNb3JyaXNvbiAgPHBoeXRob25AZ2NjLmdudS5vcmc+CgoJUFIgYy8xODk2MwoJKiBjLWRlY2wuYyAocHVzaGRlY2wpOiBSZW1vdmUgYmxvY2sgdHJ5aW5nIHRvIG1lcmdlIHN0YXRpYyBmdW5jdGlvbgoJZGVjbGFyYXRpb25zIGF0IGJsb2NrIHNjb3BlIHRvIGZpbGUgc2NvcGUgZGVjbGFyYXRpb25zLgoKMjAwNC0xMi0yMSAgSmFtZXMgQS4gTW9ycmlzb24gIDxwaHl0aG9uQGdjYy5nbnUub3JnPgoKCVBSIGMvMTg1OTYKCSogYy1wYXJzZS5pbiAoaW5pdGRjbCk6IERvbid0IHByb2Nlc3MgYSBkZWNsYXJhdGlvbiBpZiBzdGFydF9kZWNsIGZhaWxzLgoJKG5vdHlwZV9pbml0ZGNsKTogRG9uJ3QgcHJvY2VzcyBhIGRlY2xhcmF0aW9uIGlmIHN0YXJ0X2RlY2wgZmFpbHMuCgkqIGMtZGVjbC5jIChzdGFydF9kZWNsKTogRmFpbCBpZiBncm9rZGVjbGFyYXRvciBmYWlscy4KCShncm9rZGVjbGFyYXRvcik6IEZhaWwgaWYgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGhhcyBhbiBpbnZhbGlkIHN0b3JhZ2UKCWNsYXNzLgoJKiBjLXR5cGVjay5jIChzdGFydF9pbml0KTogVHJlYXQgZXJyb3JfbWFya19ub2RlIHRoZSBzYW1lIGFzIDAuCgoyMDA0LTEyLTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfc3NlX3NwbGl0X3JlZ3MpOiBSZW5hbWUgZnJvbQoJeDg2X3NzZV9wYXJ0aWFsX3JlZ3MuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoeDg2X3NzZV9zcGxpdF9yZWdzKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NTRV9TUExJVF9SRUdTKTogUmVuYW1lIGZyb20gVEFSR0VUX1NTRV9QQVJUSUFMX1JFR1MuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCopOiBVcGRhdGUgdG8gbWF0Y2guICBSZW1vdmUgdHdvCglmbG9hdHNpc2Ygc3BsaXR0ZXJzIHRoYXQgdXNlIGl0LgoKCSogY29uZmlnL2kzODYvaTM4Ni5oICh4ODZfc3NlX3BhcnRpYWxfcmVnc19mb3JfY3Z0c2Qyc3MpOiBSZW1vdmUuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHg4Nl9zc2VfcGFydGlhbF9yZWdzX2Zvcl9jdnRzZDJzcyk6IFJlbW92ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfU1NFX1BBUlRJQUxfUkVHU19GT1JfQ1ZUU0QyU1MpOiBSZW1vdmUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHRydW5jZGZzZjJfMV9zc2UpOiBEb24ndCB0ZXN0IGl0LgoJKHRydW5jZGZzZjJfMiwgdHJ1bmNkZnNmMl9zc2Vfb25seSk6IExpa2V3aXNlLgoJKHRydW5jZGZzZjJfMV9zc2Vfbm9vdmVybGFwLCB0cnVuY2Rmc2YyXzJfbm9vdmVybGFwKTogUmVtb3ZlLgoJKHRydW5jZGZzZjJfc3NlX29ubHlfbm9vdmVybGFwKTogUmVtb3ZlLgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfU1NFX1RZUEVMRVNTX0xPQUQwKTogUmVtb3ZlLgoKMjAwNC0xMi0yMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGV4cHIuYyAoZW1pdF9ncm91cF9sb2FkXzEpOiBSZXR1cm4gdGhlIHNvdXJjZSBpZiB0aGUgbW92ZQoJaXMgYSByZWd1bGFyIG1vdmUgYmV0d2VlbiBjb21wbGV4IHZhbHVlcy4KCjIwMDQtMTItMjAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTg2ODMKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoY3VycmVudF9maWxlX2Z1bmN0aW9uX29wZXJhbmQpOiBPbmx5IGNoZWNrCgljdXJyZW50X2Z1bmN0aW9uX2RlY2wncyBERUNMX1JUTCBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIHNldC4KCjIwMDQtMTItMjAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTg2ODMKCSogZnVuY3Rpb24uYyAocG9wX2Z1bmN0aW9uX2NvbnRleHRfZnJvbSk6IERvbid0IHJlc2V0IHJlZ19yZW51bWJlci4KCjIwMDQtMTItMjAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgbWlkZGxlLWVuZC8xODc3NgoJKiBleHByLmMgKHdyaXRlX2NvbXBsZXhfcGFydCk6IFVzZSBhIHN1YnJlZyBpZiB0aGUgb3JpZ2luYWwgb2JqZWN0CglpcyBhIGhhcmQgcmVnIHRoYXQgc3BhbnMgYW4gZXZlbiBudW1iZXIgb2YgcmVncyBvciBhIE1FTS4KCShyZWFkX2NvbXBsZXhfcGFydCk6IExpa2V3aXNlLgoKMjAwNC0xMi0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWNvbW1vbik6IERvIG5vdCBpbnN0YWxsIHRoZSBzcGVjcyBmaWxlCgl1bmxlc3MgU1BFQ1MgaXMgZGVmaW5lZC4KCjIwMDQtMTItMjAgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xODk0MgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb25fMSk6IFNpbXBsaWZ5Cgl4ICsgY3N0MSA9PSBjc3QyIHRvIHggPT0gY3N0MiAtIGNzdDEuICBNYWRlIHN0YXRpYy4KCjIwMDQtMTItMjAgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCVBSIGMrKy8xOTA0NAoJKiBjLWNvbW1vbi5jIChzZXRfYnVpbHRpbl91c2VyX2Fzc2VtYmxlcl9uYW1lKTogTmV3LgoJKiBjLWNvbW1vbi5oIChzZXRfYnVpbHRpbl91c2VyX2Fzc2VtYmxlcl9uYW1lKTogRGVjbGFyZS4KCSogYy1kZWNsLmMgKGZpbmlzaF9kZWNsKTogVXNlIHNldF9idWlsdGluX3VzZXJfYXNzZW1ibGVyX25hbWUKCjIwMDQtMTItMjAgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE5MDgwCgoJTWVyZ2UgZnJvbSB0cmVlLWNsZWFudXAtYnJhbmNoCgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKGNsZWFyX2NhbGxfY2xvYmJlcmVkKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChpbml0X2FsaWFzX2luZm8pOiBDYWxsIGl0LgoKMjAwNC0xMi0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNzZTJfbW92c2QpOiBSZW1vdmUgaXg4Nl9iaW5hcnlfb3BlcmF0b3Jfb2sKCWNoZWNrLgoKMjAwNC0xMi0yMCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoJICAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMTgxOTEKCVBSIG1pZGRsZS1lbmQvMTg5NjUKCVBSIG1pZGRsZS1lbmQvMTg5OTkKCSogZXhwci5jIChjYXRlZ29yaXplX2N0b3JfZWxlbWVudHNfMSk6IENvdW50IHRoZSB0b3RhbCBudW1iZXIKCW9mIGVsZW1lbnRzIGluIHRoZSBjb25zdHJ1Y3Rvci4KCShjYXRlZ29yaXplX2N0b3JfZWxlbWVudHMpOiBSZXR1cm4gaXQgaW4gYSBuZXcgYXJndW1lbnQuCgkqIHRyZWUuaCAoY2F0ZWdvcml6ZV9jdG9yX2VsZW1lbnRzKTogQWRqdXN0IHByb3RvdHlwZS4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfaW5pdF9jdG9yX2V2YWxfcmFuZ2UpOiBOZXcuCgkoZ2ltcGxpZnlfaW5pdF9jdG9yX2V2YWwpOiBHaW1wbGlmeSBSQU5HRV9FWFBSLgoJKGdpbXBsaWZ5X2luaXRfY29uc3RydWN0b3IpOiBCbG9jayBjbGVhciB0aGUgb2JqZWN0IGlmIHRoZQoJY29uc3RydWN0b3IgaGFzIGZld2VyIGVsZW1lbnRzIHRoYW4gdGhlIG9iamVjdCB0eXBlLiAgT25seSB0cnkKCXRvIGFkZCBhc3NpZ25tZW50cyB0byBpbmRpdmlkdWFsIGVsZW1lbnRzIHdoZW4gd2UgaGF2ZSB0by4KCjIwMDQtMTItMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfaW5pdF9tbXhfc3NlX2J1aWx0aW5zKTogVXNlCglsb25nX2xvbmdfaW50ZWdlcl90eXBlX25vZGUgaW4gYnVpbGRpbmcgVjJESV90eXBlX25vZGUuCgoJKiBjb25maWcvaTM4Ni9lbW1pbnRyaW4uaDogVXNlIF9fdmVjdG9yX3NpemVfXyBpbnN0ZWFkIG9mIHZlY3Rvcl9zaXplLgoJKiBjb25maWcvaTM4Ni9tbWludHJpbi5oLCBjb25maWcvaTM4Ni94bW1pbnRyaW4uaDogTGlrZXdpc2UuCgoyMDA0LTEyLTIwICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGRvYy9tZC50ZXhpIChFeHBhbmRlciBEZWZpbml0aW9ucyk6IFVzZSBAZW1waCBpbnN0ZWFkIG9mIEBzdHJvbmcKCWFyb3VuZCBOb3RlOiB0ZXh0IHRvIHdvcmthcm91bmQgYSBsaW1pdGF0aW9uIG9mIHRoZSBJbmZvIGZvcm1hdC4KCSogZG9jL2NwcC50ZXhpIChJbnZvY2F0aW9uKTogTGlrZXdpc2UuCgkqIGRvYy9jcHBvcHRzLnRleGk6IExpa2V3aXNlLgoKMjAwNC0xMi0xOSAgRGFsZSBKb2hhbm5lc2VuICA8ZGFsZWpAYXBwbGUuY29tPgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoY29udGFpbnNfYWJub3JtYWxfc3NhX25hbWVfcCk6IERvbid0CglyZWZlcmVuY2Ugb3BlcmFuZCAxIG9mIEFERFJfRVhQUnMuCgoyMDA0LTEyLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVmYXVsdHMuaCAoQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCk6IE5ldyBtYWNyby4KCSogb3V0cHV0LmggKGFzc2VtYmxlX25hbWVfcmF3KTogRGVjbGFyZSBpdC4KCSogc3lzdGVtLmggKEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwpOiBEbyBub3QgcG9pc29uIGl0LgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfbmFtZV9yYXcpOiBOZXcgZnVuY3Rpb24uCgkoYXNzZW1ibGVfbmFtZSk6IFVzZSBpdC4KCShkZWZhdWx0X2ludGVybmFsX2xhYmVsKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZGFyd2luX2FzbV9vdXRwdXRfZHdhcmZfZGVsdGEpOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGkgKEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwpOiBEb2N1bWVudC4KCjIwMDQtMTItMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgMTgwNjcKCSogc3Rvci1sYXlvdXQuYyAodmFyaWFibGVfc2l6ZSk6IEZvcmNlIGNyZWF0aW9uIG9mIGEgU0FWRV9FWFBSLgoKMjAwMy0xMi0xOSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3NwbGl0X3RvX3BhcnRzKTogVXNlIGFuIGFycmF5IHdpdGgKCWZvdXIgZWxlbWVudHMgZm9yIGRlY29kaW5nIGEgQ09OU1RfRE9VQkxFIG9uIDY0IGJpdHMgdGFyZ2V0cy4KCjIwMDQtMTItMTkgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGtlbWIuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFJlbW92ZSByZWR1bmRhbnQKCWRlZmluaXRpb24gb2YgbWM2ODAwMCwgYWxyZWFkeSBwcmVzZW50IGluIFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TLgoKMjAwNC0xMi0xOCAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBsYW1iZGEtY29kZS5jIChjYW5fY29udmVydF90b19wZXJmZWN0X25lc3QpOiBNYWtlIGNoZWNraW5nCgltYXRjaCB1cCB3aXRoIHdoYXQgcGVyZmVjdF9uZXN0aWZ5IGNhbiBhY3R1YWxseSBoYW5kbGUuCgkocGVyZmVjdF9uZXN0aWZ5KTogRG9uJ3QgcmV0dXJuIGZhbHNlIGluIHRoZSBwaGkgbm9kZSBsb29wLgoKMjAwNC0xMi0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKFNTRUlOVDE2KTogTmV3LgoJKG1vdnYxNnFpLCBtb3Z2OGhpLCBtb3Z2NHNpLCBtb3Z2MmRpKTogQ29tcHJlc3MgdmlhIG1hY3Jvcy4KCShtb3Z2MTZxaV9pbnRlcm5hbCwgbW92djhoaV9pbnRlcm5hbCwgbW92djRzaV9pbnRlcm5hbCwKCW1vdnYyZGlfaW50ZXJuYWwpOiBDb21wcmVzcyB2aWEgbWFjcm9zLiAgQWRkIFNTRSB6ZXJvIGFsdGVybmF0aXZlLgoJRml4IHB1cmUgU1NFIGFsdGVybmF0aXZlcyB0byB1c2UgJ3gnIGluc3RlYWQgb2YgJ1knLgoJKE1NWElOVDgpOiBOZXcuCgkobW92djhxaSwgbW92djRoaSwgbW92djJzaSwgbW92djhxaV9pbnRlcm5hbCwgbW92djRoaV9pbnRlcm5hbCwKCW1vdnYyc2lfaW50ZXJuYWwpOiBDb21wcmVzcyB2aWEgbWFjcm9zLgoJKFNTRVBVU0gsIE1NWFBVU0gpOiBOZXcuCgkocHVzaHYxOHFpLCBwdXNodjhoaSwgcHVzaHY0c2ksIHB1c2h2MmRpLCBwdXNodGksIHB1c2h2NHNmLCBwdXNodjJkZiwKCXB1c2h2OHFpLCBwdXNodjRoaSwgcHVzaHYyc2ksIHB1c2h2MnNmKTogQ29tcHJlc3MgdmlhIG1hY3Jvcy4KCjIwMDQtMTItMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNjQxNwoJKiBjLWRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IENsYXJpZnkgZ2V0X3BlbmRpbmdfc2l6ZXMgaW5zZXJ0aW9uCgljb21tZW50LgoJKiBjLW9iamMtY29tbW9uLmMgKGNfY2Fubm90X2lubGluZV90cmVlX2ZuKTogUmVtb3ZlIHBlbmRpbmcgc2l6ZXMKCWNoZWNrcy4KCSogYy10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2wpOiBSZW1vdmUgcGVuZGluZ19zaXplcy4KCSogZnVuY3Rpb24uYzogSW5jbHVkZSB0cmVlLWdpbXBsZS5oCgkoYXNzaWduX3Bhcm1fc2V0dXBfcmVnKTogUmVtb3ZlIGNhbGxlZS1jb3BpZXMgY29kZS4KCShnaW1wbGlmeV9wYXJtX3R5cGUsIGdpbXBsaWZ5X3BhcmFtZXRlcnMpOiBOZXcgZnVuY3Rpb25zLgoJKGV4cGFuZF9wZW5kaW5nX3NpemVzKTogUmVtb3ZlLgoJKGV4cGFuZF9mdW5jdGlvbl9zdGFydCk6IERvbid0IGNhbGwgaXQuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2V4cHIpOiBFeGFtaW5lIERFQ0xfVkFMVUVfRVhQUiBmb3IgUEFSTV9ERUNMLgoJKGdpbXBsaWZ5X2JvZHkpOiBBZGQgZG9fcGFybXMgYXJndW1lbnQuICBVc2UgZ2ltcGxpZnlfcGFyYW1ldGVycy4KCShnaW1wbGlmeV9mdW5jdGlvbl90cmVlKTogU2V0dXAgY2Z1bi4gIFVwZGF0ZSBnaW1wbGlmeV9ib2R5IGNhbGwuCgkqIHRyZWUtZ2ltcGxlLmggKGdpbXBsaWZ5X2JvZHkpOiBVcGRhdGUgZGVjbC4KCSogdHJlZS1pbmxpbmUuYyAoaW5pdGlhbGl6ZV9pbmxpbmVkX3BhcmFtZXRlcnMpOiBVcGRhdGUgZ2ltcGxpZnlfYm9keQoJY2FsbC4KCSogdHJlZS5oIChnaW1wbGlmeV9wYXJhbWV0ZXJzKTogRGVjbGFyZS4KCSogTWFrZWZpbGUuaW4gKGZ1bmN0aW9uLm8pOiBEZXBlbmQgb24gVFJFRV9HSU1QTEVfSC4KCjIwMDQtMTItMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZmluaXNoX3N0cnVjdCk6IEFkZCBERUNMX0VYUFIgZm9yIHZhcmlhYmxlIHNpemVkCglzdHJ1Y3R1cmVzIHNlZW4gaW5zaWRlIGZ1bmN0aW9ucy4KCjIwMDQtMTItMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBTYXZlIHZhcmlhYmxlIGFycmF5IHNpemUgYmVmb3JlCglzdWJ0cmFjdGluZyAxLCByYXRoZXIgdGhhbiBhZnRlci4KCjIwMDQtMTItMTggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgbWlkZGxlLWVuZC8xNTQ4NgoJKiB2YXJhc20uYyAoYXNtX2VtaXRfdW5pbml0aWFsaXNlZCk6IFJldHVybiBlYXJseSBpZgoJYSBjdXN0b20gc2VjdGlvbiBpcyByZXF1ZXN0ZWQuCgkoYXNzZW1ibGVfdmFyaWFibGUpOiBSZXZlcnQgMjAwMi0wMy0xNSBwYXRjaC4KCjIwMDQtMTItMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IFVzZSB1bnNoYXJlX2V4cHIsIG5vdCB1bnNhdmVfZXhwci4KCjIwMDQtMTItMTggIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTg4MDAKCSogcGFyYW1zLmRlZiAoUEFSQU1fSVZfQUxXQVlTX1BSVU5FX0NBTkRfU0VUX0JPVU5EKTogTmV3IHBhcmFtZXRlci4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoc3RydWN0IGl2X2NhKTogQWRkIG5fY2FuZHMgZmllbGQuCgkoQUxXQVlTX1BSVU5FX0NBTkRfU0VUX0JPVU5EKTogTmV3IG1hY3JvLgoJKGl2X2NhX3NldF9ub19jcCwgaXZfY2Ffc2V0X2NwLCBpdl9jYV9uZXcpOiBVcGRhdGUgbl9jYW5kcyBmaWVsZC4KCShpdl9jYV9kZWx0YV9qb2luLCBpdl9jYV9kZWx0YV9yZXZlcnNlLCBpdl9jYV9uX2NhbmRzLCBpdl9jYV9wcnVuZSk6CglOZXcgZnVuY3Rpb25zLgoJKGl2X2NhX2V4dGVuZCk6IFJldHVybiBudW1iZXIgb2YgY2FuZGlkYXRlcyBpbiB0aGUgc2V0LgoJKHRyeV9hZGRfY2FuZF9mb3IpOiBBZGQgYXJndW1lbnQgdG8gaXZfY2FfZXh0ZW5kIGNhbGxzLgoJKHRyeV9pbXByb3ZlX2l2X3NldCk6IFVzZSBpdl9jYV9wcnVuZS4KCSogZG9jL2ludm9rZS50ZXhpIChpdi1hbHdheXMtcHJ1bmUtY2FuZC1zZXQtYm91bmQpOiBEb2N1bWVudC4KCjIwMDQtMTItMTggIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xOTAwMQoJKiBsb29wLWl2LmMgKGl2X251bWJlcl9vZl9pdGVyYXRpb25zKTogUmVjb3JkIGFzc3VtcHRpb25zIGZvciBsb29wcwoJd2l0aCBwb3dlciBvZiB0d28gc3RlcCB0byAnaW5maW5pdGUnIGZpZWxkLgoKMjAwNC0xMi0xOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBNYWtlZmlsZS5pbiAoc3Rvci1sYXlvdXQubyk6IERlcGVuZCB1cG9uIGd0LXN0b3ItbGF5b3V0LmguCgkodHJlZS1zc2EtcHJvcGFnYXRlLm8pOiBEZXBlbmQgdXBvbiBndC10cmVlLXNzYS1wcm9wYWdhdGUuaC4KCSh0cmVlLXNzYS1vcGVyYW5kcy5vKTogRGVwZW5kIHVwb24gZ3QtdHJlZS1zc2Etb3BlcmFuZHMuaC4KCSh0cmVlLW11ZGZsYXAubyk6IERlcGVuZCB1cG9uIGd0LXRyZWUtbXVkZmxhcC5oLgoJKGV4cHIubyk6IERlcGVuZCB1cG9uIGd0LWV4cHIuaC4KCShyZWdjbGFzcy5vKTogRGVwZW5kIHVwb24gZ3QtcmVnY2xhc3MuaC4KCShiaXRtYXAubyk6IERlcGVuZCB1cG9uIGd0LWJpdG1hcC5oLgoJKGxpc3RzLm8pOiBEZXBlbmQgdXBvbiBndC1saXN0cy5oLgoKCShjZmdleHBhbmQubyk6IERvbid0IGRlcGVuZCB1cG9uIGd0LXRyZWUtY2ZnLmguCgoJKEdURklMRVMpOiBSZW1vdmUgZm9sZC1jb25zdC5jLgoJKGd0LXN0bXQuaCwgZ3QtZm9sZC1jb25zdC5oLCBndC1pbnB1dC5oLCBndC10cmVlLXNzYS1jY3AuaCk6CglSZW1vdmUgcnVsZXMuCgoyMDA0LTEyLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBVbnNoYXJlIHNpemUgZXhwcmVzc2lvbnMgY29waWVkCglmcm9tIHRoZSB0eXBlLgoKCSogZm9sZC1jb25zdC5jIChtdWx0aXBsZV9vZl9wKTogSGFuZGxlIEJJVF9BTkRfRVhQUiB3aGVuCglCT1RUT00gaXMgYSBwb3dlciBvZiB0d28uCgoyMDA0LTEyLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1uZXN0ZWQuYyAoc2F2ZV90bXBfdmFyKTogTmV3LgoJKHN0cnVjdCB3YWxrX3N0bXRfaW5mbyk6IEFkZCBpc19saHMuCgkod2Fsa19zdG10cykgPE1PRElGWV9FWFBSPjogQmUgbW9yZSBhY2N1cmF0ZSB3aXRoIHNldHRpbmcgb2YKCXZhbF9vbmx5OyBzZXQgaXNfbGhzLgoJKGNvbnZlcnRfbm9ubG9jYWxfcmVmZXJlbmNlKTogVXNlIHNhdmVfdG1wX3ZhciB3aGVuIGlzX2xoczsKCWNsZWFyIGlzX2xocyB3aGVuIGFwcHJvcHJpYXRlLgoJKGNvbnZlcnRfbG9jYWxfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgoyMDA0LTEyLTE4ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS9pZWVlNzU0LXNmLlMgKGZsb2F0ZGlzZik6IEZpeCBsYWJlbCBkZWZpbml0aW9uIGluIEZQQQoJY29tcGF0aWJpbGl0eSBjb2RlLgoKMjAwNC0xMi0xOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBpZmN2dC5jICh0b3RhbF9iYl9ydHhfY29zdCk6IFJlbmFtZSBmdW5jdGlvbiB0byBjaGVhcF9iYl9ydHhfY29zdF9wLgoJVGFrZSBhIG1heF9jb3N0IGFyZ3VtZW50IHRvIGF2b2lkIHNjYW5uaW5nIGxhcmdlIGJsb2NrcywgYnkgcmV0dXJuaW5nCglhIEJvb2xlYW4gaW5zdGVhZCBvZiBhIHRvdGFsLiAgSW5jbHVkZSB0aGUgY29zdCBvZiBhICJmc3RwICVzdCgwKSIKCWluc3RydWN0aW9uIHJlcXVpcmVkIHRvIHBvcCBkZWFkIHZhbHVlcyBvZmYgb2YgYSByZWdpc3RlciBzdGFjay4KCjIwMDQtMTItMTggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTg1NDgKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpIDxNQVhfRVhQUj46IEVuc3VyZSB0aGF0IHRhcmdldCwgb3AwCglhbmQgb3AxIGFyZSBhbGwgcmVnaXN0ZXJzIChvciBjb25zdGFudHMpIGJlZm9yZSBleHBhbmRpbmcgdGhlIFJUTAoJY29tcGFyaXNvbiBzZXF1ZW5jZSBbdG8gYXZvaWQgcmVnX292ZXJsYXBfbWVudGlvbmVkICh0YXJnZXQsIG9wMSldLgoKMjAwNC0xMi0xOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE2OTY4CgkqIGxvb3AuYyAoc2Nhbl9sb29wKTogU3RvcCBzY2FubmluZyB0aGUgbG9vcCBmb3IgbW92YWJsZQoJaW5zbnMgYXMgc29vbiBhcyBhbiBvcHRpbWl6YXRpb24gYmFycmllciBpcyBlbmNvdW50ZXJlZC4KCjIwMDQtMTItMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgMTg4OTcKCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IENhbGwgcHJvY2Vzc19wZW5kaW5nX2Fzc2VtYmxlX2V4dGVybmFscwoJanVzdCBiZWZvcmUgdGFyZ2V0bS5hc21fb3V0LmZpbGVfZW5kLgoKMjAwNC0xMi0xNyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJdHJlZS1vcHRpbWl6YXRpb24vMTg1MDEKCSogdHJlZS1vcHRpbWl6ZS5jIChpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IFJ1bgoJcGFzc19sYXRlX3dhcm5fdW5pbml0aWFsaXplZCBiZWZvcmUgdGhlIGxhc3QgRENFIHJ1bi4KCjIwMDQtMTItMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHg4Nl82NF9yZWdfY2xhc3NfbmFtZSk6IFJlLWluZGVudC4KCShjbGFzc2lmeV9hcmd1bWVudCwgZXhhbWluZV9hcmd1bWVudCwgY29uc3RydWN0X2NvbnRhaW5lciwKCW1lcmdlX2NsYXNzZXMpOiBSZW1vdmUgcHJvdG90eXBlcy4KCSh0eXBlX25hdHVyYWxfbW9kZSk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGZ1bmN0aW9uX2FyZyk6IC4uLiBoZXJlLgoJKGdlbl9yZWdfb3JfcGFyYWxsZWwpOiBSZW1vdmUgYWx0X21vZGUgYXJndW1lbnQuICBVcGRhdGUgY2FsbGVycy4KCVVzZSBvcmlnX21vZGUgdW5sZXNzIGl0J3MgQkxLbW9kZS4KCShjb25zdHJ1Y3RfY29udGFpbmVyKTogQWRkIG9yaWdfbW9kZSBhcmd1bWVudC4gIFVwZGF0ZSBjYWxsZXJzLgoJVXNlIGdlbl9yZWdfb3JfcGFyYWxsZWwgZm9yIFNTRSByZWdpc3RlcnMuCgkoaXg4Nl9mdW5jdGlvbl92YWx1ZSk6IFVzZSB0eXBlX25hdHVyYWxfbW9kZS4KCShpeDg2X2dpbXBsaWZ5X3ZhX2FyZyk6IExpa2V3aXNlLgoJKGl4ODZfaGFyZF9yZWdub19tb2RlX29rKTogQWx3YXlzIGFjY2VwdCBhbGwgU1NFLCBNTVgsIDNETk9XIG1vZGVzIGluCglTU0UgcmVnaXN0ZXJzOyBhbHdheXMgYWNjZXB0IGFsbCBNTVgsIDNETk9XIG1vZGVzIGluIE1NWCByZWdpc3RlcnMuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoVkFMSURfU1NFMl9SRUdfTU9ERSk6IERvbid0IGluY2x1ZGUKCVZBTElEX01NWF9SRUdfTU9ERS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoYXR0cmlidXRlIG1vZGUpOiBBZGQgVjFERi4KCShtb3ZzaV8xKTogVXNlICd4JyBpbnN0ZWFkIG9mICdZJyBjb25zdHJhaW50cy4KCShtb3ZzaV8xX25vaW50ZXJudW5pdCwgbW92ZGlfMiwgbW92ZGlfMV9yZXg2NCk6IExpa2V3aXNlLgoJKG1vdmRpXzFfcmV4NjRfbm9pbnRlcnVuaXQpOiBMaWtld2lzZS4KCShtb3ZkZl9ub2ludGVnZXIsIG1vdmRmX2ludGVnZXIpOiBMaWtld2lzZS4gIEhhbmRsZSBTU0UxLgoJKG1vdnNmXzEsIG1vdnNmXzFfbm9pbnRlcnVuaXQpOiBMaW5lIHVwIGNvbnN0cmFpbnQgYWx0ZXJuYXRpdmVzLgoJKHN3YXBzZik6IFVzZSBmcF9yZWdpc3Rlcl9vcGVyYW5kLCBkb24ndCBkaXNhYmxlIGZvciBUQVJHRVRfU1NFLgoJKHN3YXBkZik6IExpa2V3aXNlLgoJKHN3YXB4Zik6IEVuYWJsZSBvbmx5IGZvciBUQVJHRVRfODAzODcuCgkobW92djJzZiwgbW92djJzZl9pbnRlcm5hbCwgcHVzaHYyc2YpOiBFbmFibGUgZm9yIE1NWC4KCShtb3Z0Zik6IFJlbW92ZSBkb3VibGUtY2hlY2sgZm9yIFRBUkdFVF82NEJJVC4KCShtb3Z2MmRmX2ludGVybmFsKTogRW5hYmxlIGZvciBTU0UxLgoJKG1vdnY4aGlfaW50ZXJuYWwsIG1vdnYxNnFpX2ludGVybmFsKTogTGlrZXdpc2UuCgkobW92djJkZiwgbW92djhoaSwgbW92djE2cWkpOiBMaWtld2lzZS4KCShwdXNodjJkaSwgcHVzaHY4aGksIHB1c2h2MTZxaSwgcHVzaHY0c2kpOiBMaWtld2lzZS4KCShwdXNoZGkyX3JleDY0LCBtb3Z2NHNmX2ludGVybmFsLCBtb3Z2NHNpX2ludGVybmFsLCBtb3Z2MmRpX2ludGVybmFsLAoJbW92djhxaV9pbnRlcm5hbCwgbW92djRoaV9pbnRlcm5hbCwgbW92djJzZl9pbnRlcm5hbCwKCW1vdnYyZGZfaW50ZXJuYWwsIG1vdnY4aGlfaW50ZXJuYWwsIG1vdnYxNnFpX2ludGVybmFsLAoJbW92dGlfaW50ZXJuYWwpOiBBZGQgbGVhZGluZyAnKicgdG8gbmFtZS4KCjIwMDQtMTItMTcgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGMtZGVjbC5jIChkaWFnbm9zZV9taXNtYXRjaGVkX2RlY2xzKTogQWNjZXB0IG1pc21hdGNoZWQKCWZ1bmN0aW9uIHR5cGVzOiB2b2lkIHdpdGggcHJldmlvdXMgaW1wbGljaXQgaW50LgoKMjAwNC0xMi0xNyAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9naW1wbGlmeV92YV9hcmcpOiBTZXQgYWxpYXMgc2V0IHRvCglzMzkwX3NyX2FsaWFzX3NldC4KCjIwMDQtMTItMTcgIEphbiBCZXVsaWNoICA8amJldWxpY2hAbm92ZWxsLmNvbT4KCglQUiB0YXJnZXQvMTc2MDMKCSogY29uZmlnL2kzODYvaTM4Ni5jIChlbnVtIHg4Nl82NF9yZWdfY2xhc3MpOiBEZWZpbmUKCVg4Nl82NF9DT01QTEVYX1g4N19DTEFTUy4KCSh4ODZfNjRfcmVnX2NsYXNzX25hbWVzKTogQWRkIG5hbWUgZm9yIFg4Nl82NF9DT01QTEVYX1g4N19DTEFTUy4KCShtZXJnZV9jbGFzc2VzKTogSGFuZGxlIFg4Nl82NF9DT01QTEVYX1g4N19DTEFTUy4KCShjbGFzc2lmeV9hcmd1bWVudCk6IFhDbW9kZSBpcyBYODZfNjRfQ09NUExFWF9YODdfQ0xBU1MuCgkoZXhhbWluZV9hcmd1bWVudCk6IFg4Nl82NF9DT01QTEVYX1g4N19DTEFTUyByZXF1aXJlcyB0d28KCXJlZ2lzdGVycyB3aGVuIGRlYWxpbmcgd2l0aCBhIHJldHVybiB2YWx1ZS4KCShjb25zdHJ1Y3RfY29udGFpbmVyKTogSGFuZGxlIFg4Nl82NF9DT01QTEVYX1g4N19DTEFTUy4KCUVsaW1pbmF0ZSBpbXBvc3NpYmxlIGNhc2Ugb2YgdHdvIFg4Ny9YODdVUCBwYWlycyAodGhpcyBub3cgaXMKCWJlaW5nIGV4cHJlc3NlZCBieSBhIHNpbmdsZSBDT01QTEVYX1g4NykuCgkoeDg2X2xpYmNhbGxfdmFsdWUpOiBYQ21vZGUgZ2V0cyByZXR1cm5lZCBpbiBzdDAvc3QxLgoKMjAwNC0xMi0xNyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogdHJlZS5jICh0eXBlX2NvbnRhaW5zX3BsYWNlaG9sZGVyXzEpOiBBbHdheXMgcmV0dXJuIGZhbHNlCglmb3IgVkVDVE9SX1RZUEUgaWYgaXRzIFRSRUVfVFlQRSBkb2VzIG5vdCBjb250YWluIGEgcGxhY2Vob2xkZXIuCgoyMDA0LTEyLTE3ICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChleHRlbmRzZmRmMiwgKmV4dGVuZHNmZGYyXzEsCgkqZXh0ZW5kc2ZkZjJfMV9zc2Vfb25seSk6IFVuaWZ5IGVuYWJsZSBjb25zdHJhaW50IHdpdGgKCXJlc3BlY3QgdG8gVEFSR0VUX1NTRTIsIFRBUkdFVF84MDM4NywgVEFSR0VUX1NTRV9NQVRICglhbmQgVEFSR0VUX01JWF9TU0VfSTM4Ny4KCSgqZXh0ZW5kc2ZkZjJfaTM4Nyk6IE5ldyBpbnNuIHBhdHRlcm4uCgkoKmV4dGVuZHNmZGYyXzEpOiBSZW5hbWUgdG8gKmV4dGVuZHNmZGYyX21peGVkLiBGaXgKCXJlZ2lzdGVyIGNvbnN0cmFpbnQgZm9yIG9wZXJhbmQgMC4KCSgqZXh0ZW5kc2ZkZjJfMV9zc2Vfb25seSk6IFJlbmFtZSB0byAqZXh0ZW5kc2ZkZjJfc3NlLgoJKCpleHRlbmR7cyxkfWZ4ZjJfMSk6IFJlbmFtZSB0byAqZXh0ZW5ke3MsZH1meGYyX2kzODcuCgoyMDA0LTEyLTE2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0YXJnZXQvMTkwNDEKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19zeW1ib2xfZGVmaW5lZF9wKTogUmV0dXJuIGZhbHNlCglpZiB0aGUgYmluZHMgbG9jYWwgYW5kIGlzIGEgY29tbW9uIHN5bWJvbC4KCjIwMDQtMTItMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChleHR2LCBleHR6diwgaW5zdik6IFJldmFsaWRhdGUgdGhlCglvcGVyYW5kIHdpdGggZXh0X3JlZ2lzdGVyX29wZXJhbmQuCgoyMDA0LTEyLTE2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZ2xvYmFsLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDQtMTItMTYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgkgICAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTg3MDcKCSogY2ZnbG9vcG1hbmlwLmMgKGNyZWF0ZV9wcmVoZWFkZXIpOiBNb3ZlIHRoZSBwcmVoZWFkZXIKCW9ubHkgaWYgdGhlIGxhdGNoIHdhcyBmYWxsaW5nIHRocm91Z2ggdG8gdGhlIGhlYWRlci4KCjIwMDQtMTItMTYgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgdGFyZ2V0LzE4OTk3CgkqIGNvbmZpZy9pMzg2L2N5Z3dpbi5oIChHVEhSRUFEX1VTRV9XRUFLKTogRGVmaW5lIHRvIDAuCgoyMDA0LTEyLTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoJICAgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9yZXBsYWNlX3J0eCk6IERvIG5vdCBibGluZGx5IHJlcGxhY2UKCWhhcmQgcmVnaXN0ZXJzLgoKMjAwNC0xMi0xNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIG90aGVyLzE4NTA4CgkqIGNvbmZpZy9hbHBoYS90LW9zZjQgKFNITElCX0xJTkspOiBVc2UgYC5iYWNrdXAnIGFzIHRoZSBzdWZmaXgKCXRvIGJhY2sgdXAgdGhlIGV4aXN0aW5nIHNoYXJlZCBsaWJyYXJ5LgoJKiBjb25maWcvYXJtL3QtbmV0YnNkIChTSExJQl9MSU5LKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL3Qtc2xpYmdjYy1pcml4IChTSExJQl9MSU5LKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS90LWhwdXgtc2hsaWIgKFNITElCX0xJTkspOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3QtbGludXggKFNITElCX0xJTkspOiBMaWtld2lzZS4KCSogY29uZmlnL3QtbGlidW53aW5kLWVsZiAoU0hMSUJVTldJTkRfTElOSyk6IExpa2V3aXNlLgoJKiBjb25maWcvdC1zbGliZ2NjLWRhcndpbiAoU0hMSUJfTElOSyk6IExpa2V3aXNlLgoJKiBjb25maWcvdC1zbGliZ2NjLWVsZi12ZXIgKFNITElCX0xJTkspOiBMaWtld2lzZS4KCSogY29uZmlnL3Qtc2xpYmdjYy1zbGQgKFNITElCX0xJTkspOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L3QtbndsZCAoU0hMSUJfTElOSyk6IERvbid0IHVzZSB0aGUgdGVtcG9yYXJ5CglmaWxlLgoKMjAwNC0xMi0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChNRF9ERVBTLCBzLW1kZGVwcyk6IE5ldy4KCShzLWNvbmZpZywgcy1jb25kaXRpb25zLCBzLWZsYWdzLCBzLWNvZGVzLCBzLWNvbnN0YW50cywgcy1lbWl0LAoJcy1yZWNvZywgcy1vcGluaXQsIHMtZXh0cmFjdCwgcy1wZWVwLCBzLWF0dHIsIHMtYXR0cnRhYiwgcy1vdXRwdXQsCglzLXByZWRzKTogRGVwZW5kIG9uIE1EX0RFUFMgaW5zdGVhZCBvZiBtZF9maWxlLgoJKGdlbm9iam5hbWVzKTogQWRkIGdlbm1kZGVwcy5vCgkoYnVpbGQvZ2VubWRkZXBzLCBidWlsZC9nZW5tZGRlcHMubyk6IE5ldy4KCShtb3N0bHljbGVhbik6IFJlbW92ZSBtZGRlcHMubWsuCgkqIGdlbm1kZGVwcy5jOiBOZXcgZmlsZS4KCSogZ2Vuc3VwcG9ydC5jIChpbmNsdWRlX2NhbGxiYWNrKTogTmV3LgoJKHByb2Nlc3NfaW5jbHVkZSk6IENhbGwgaXQuCgkqIGdlbnN1cHBvcnQuaCAoaW5jbHVkZV9jYWxsYmFjayk6IERlY2xhcmUuCgoyMDA0LTEyLTE2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogbG9jYWwtYWxsb2MuYyAoYmxvY2tfYWxsb2MpOiBSZXBsYWNlIElOX1JBTkdFIHdpdGggc2ltcGxlCgljb21wYXJpc29uLgoKCSogZG9jL2MtdHJlZS50ZXhpIChDT05TVFJVQ1RPUik6IE1lbnRpb24gUkFOR0VfRVhQUnMuCgoyMDA0LTEyLTE2ICBNYXJrIERldHRpbmdlciAgPGRldHRpbmdlQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHN0cnVjdCBwcm9jZXNzb3JfY29zdHMpOiBUd28gbmV3IGZpZWxkczoKCW1hZGJyLCBtYWVici4KCShzMzkwX3J0eF9jb3N0cyk6IEFkZGVkIGhhbmRsaW5nIG9mIG11bHRpcHkgYW5kIGFkZCBpbiBTRm1vZGUuCglNb3JlIHByZWNpc2UgdmFsdWVzIGZvciBjb3N0IG9mIG11bHRpcGx5IGFuZCBhZGQuCgoyMDA0LTEyLTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xOTAyOAoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChzc2UgY29tcGFyZSBzcGxpdHRlcik6IFRlc3QgZm9yIFNGIGFuZCBERm1vZGUKCWV4cGxpY2l0bHkgaW5zdGVhZCBvZiB1c2luZyBWQUxJRF9TU0VfUkVHX01PREUuCgoyMDA0LTEyLTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xOTAwNQoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChzd2FwaGlfMSk6IFN3YXAgd2l0aCBzd2FwaGlfMiwgYWxsb3cgd2l0aAoJb3B0aW1pemVfc2l6ZS4KCShzd2FwcWlfMSk6IFJlbmFtZSBmcm9tIHN3YXBxaS4gIEVuYWJsZSBvbmx5IGZvciBubyBwYXJ0aWFsIHJlZwoJc3RhbGwgYW5kIG9wdGltaXplX3NpemUuCgkoc3dhcHFpXzIpOiBOZXcuCgkoc3dhcGhpXzEsIHN3YXBoaV8yLCBzd2FwcWlfMSk6IEFkZCBhdGhsb25fZGVjb2RlLgoJKHN3YXBzaSwgc3dhcGhpXzEsIHN3YXBoaV8yLCBzd2FwcWlfMSwgc3dhcGRpKTogUmVtb3ZlIG1vZHJtIG92ZXJyaWRlLgoKMjAwNC0xMi0xNiAgVXJvcyBCaXpqYWsgIDx1cm9zQGtzcy1sb2thLnNpPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKmZsb2F0aGlzZjJfaTM4NywgKmZsb2F0aGlkZjJfaTM4Nyk6CglBbHNvIGVuYWJsZSBmb3IgVEFSR0VUX01JWF9TU0VfSTM4Ny4KCjIwMDQtMTItMTYgIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNxcnR7cyxkfWYyXzEsIHNxcnR7cyxkfWYyXzFfc3NlX29ubHksCglzcXJ0e3MsZH1mMl9pMzg3KTogVW5pZnkgZW5hYmxlIGNvbnN0cmFpbnQgd2l0aCByZXNwZWN0IHRvCglUQVJHRVRfU1NFLCBUQVJHRVRfU1NFMiwgVEFSR0VUX1VTRV9GQU5DWV9NQVRIXzM4NywKCVRBUkdFVF9TU0VfTUFUSCBhbmQgVEFSR0VUX01JWF9TU0VfSTM4Ny4KCShzcXJ0e3MsZH1mMl8xKTogUmVuYW1lIHRvICpzcXJ0e3MsZH1mMl9taXhlZC4KCShzcXJ0e3MsZH1mMl8xX3NzZV9vbmx5KTogUmVuYW1lIHRvICpzcXJ0e3MsZH1mMl9zc2UuCgkoc3FydHtzLGR9ZjJfaTM4Nyk6IFJlbmFtZSB0byAqc3FydHtzLGR9ZjJfaTM4Ny4KCSgqc3FydGV4dGVuZHNmZGYyKTogQWxzbyBlbmFibGUgZm9yIFRBUkdFVF9NSVhfU1NFX0kzODcuCgkoKnNxcnRleHRlbmQ/Zj9mMik6IFJlbmFtZSB0byAqc3FydGV4dGVuZHNmZGYyX2kzODcuCgoyMDA0LTEyLTE2ICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqZm9wXz9mX2NvbW1feyxzc2Usbm9zc2V9LAoJKmZvcF8/Zl8xX3ssc3NlLG5vc3NlfSwgKmZvcF97ZCx4fWZfezIsMyw0LDUsNn0pOiBVbmlmeSBlbmFibGUKCWNvbnN0cmFpbnQgd2l0aCByZXNwZWN0IHRvIFRBUkdFVF84MDM4NywgVEFSR0VUX1NTRSwgVEFSR0VUX1NTRTIsCglUQVJHRVRfU1NFX01BVEggYW5kIFRBUkdFVF9NSVhfU1NFX0kzODcuCgkoKmZvcF8/Zl97Y29tbSwxfSk6IFJlbmFtZSB0byAqZm9wXz9mX3tjb21tLDF9X21peGVkLgoJKCpmb3BfP2Zfe2NvbW0sMX1fbm9zc2UpOiBSZW5hbWUgdG8gKmZvcF8/Zl97Y29tbSwxfV9pMzg3LgoJKCpmb3Bfe2QseH1mX3syLDMsNCw1LDZ9KTogUmVuYW1lIHRvICpmb3Bfe2QseH1mX3syLDMsNCw1LDZ9X2kzODcuCgoyMDA0LTEyLTE1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgdGFyZ2V0LzE4MTUzCgkqIGNvbmZpZ3VyZS5hYzogRGVmaW5lIEhBVkVfTERfU1RBVElDX0RZTkFNSUMgaWYgbGlua2VyIHN1cHBvcnRzCgktQnN0YXRpYy8tQmR5bmFtaWMgb3B0aW9uLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGVkLgoJKiBjb25maWd1cmU6IExpa2V3aXNlLgoKCSogZ2NjLmMgKGluaXRfc3BlYyk6IFBhc3MgLUJzdGF0aWMvLUJkeW5hbWljIHRvIGxkIGZvciBzdGF0aWMKCS1sdW53aW5kIGlmIHBvc3NpYmxlLgoKMjAwNC0xMi0xNSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBjZmdsb29wLmMgKGZsb3dfbG9vcHNfZHVtcCk6IERvbid0IHByaW50IG91dCBsZXZlbHMuCgkoZmxvd19sb29wc19maW5kKTogRG9uJ3Qgc2V0IGxvb3AtPmxldmVscy4KCShmbG93X2xvb3BzX2xldmVsX2NvbXB1dGUpOiBNYWtlIHZvaWQuCgkqIGNmZ2xvb3AuaCAoc3RydWN0IGxvb3BzKTogUmVtb3ZlIGxldmVscyBtZW1iZXIuCglBZGQgY29tbWVudCBhYm91dCBsb29wcyBpbiBwYXJyYXkgcG9zc2libHkgYmVpbmcgTlVMTC4KCjIwMDQtMTItMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogcmVsb2FkLmMgKFNNQUxMX1JFR0lTVEVSX0NMQVNTX1ApOiBOZXcuCgkocHVzaF9zZWNvbmRhcnlfcmVsb2FkLCBmaW5kX3JldXNhYmxlX3JlbG9hZCwgZmluZF9yZWxvYWRzKTogVXNlCglpdCBpbnN0ZWFkIG9mIHRlc3Rpbmcgb25seSB0aGUgY2xhc3Mgc2l6ZS4KCjIwMDQtMTItMTUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgYysrLzE3OTcyCgkqIHRyZWUtaW5saW5lLmMgKGV4cGFuZF9jYWxsX2lubGluZSk6IFNldCBUUkVFX1NJREVfRUZGRUNUUwoJb24gdGhlIFNUTVRfRVhQUiB3cmFwcGluZyB1cCB0aGUgaW5saW5lZCBib2R5LgoKMjAwNC0xMi0xNSAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgkgICAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoJUFIgbWlkZGxlIGVuZC8xNzM0MAoKCSogZ2xvYmFsLmM6IFVwZGF0ZSBjb21tZW50cyBpbiBhIGZldyBwbGFjZXMuCgkoY2hlY2tfZWFybHljbG9iYmVyKTogUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIGVhcmx5IGNsb2JiZXIKCWNsYXNzZXMuCgkoY2FsY3VsYXRlX2xvY2FsX3JlZ19iYl9pbmZvKTogRG8gbm90IHRyeSB0byBtYXJrIGVhcmx5Y2xvYmJlcgoJcmVncyBpZiB0aGVyZSBhcmUgbm9uZS4KCShiYl9pbmZvLCBhbGxvY2F0ZV9iYl9pbmZvLCBmcmVlX2JiX2luZm8sIG1vZGlmeV9yZWdfcGF2LAoJbWFrZV9hY2N1cmF0ZV9saXZlX2FuYWx5c2lzKTogUmVuYW1lIHBhdmluLCBwYXZvdXQgdG8gbGl2ZV9wYXZpbiwKCWxpdmVfcGF2b3V0LgoJKG1vZGlmeV9iYl9yZWdfcGF2KTogUmVtb3ZlLgoJKGNhbGN1bGF0ZV9yZWdfcGF2KTogVXNlIGNvZGUgZnJvbSBtb2RpZnlfYmJfcmVnX3Bhdi4KCSh0ZW1wX2JpdG1hcCk6IE5ldyB2YXJpYWJsZS4KCShjYWxjdWxhdGVfcmVnX3Bhdik6IEFsbG9jYXRlL2RlYWxsb2NhdGUgdGVtcF9iaXRtYXAuCgoyMDA0LTEyLTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xOTAxMAoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfbXVzdF9wYXNzX2luX3N0YWNrKTogRG9uJ3QgcmV0dXJuIHRydWUKCWZvciBUSW1vZGUgdmVjdG9ycy4KCShnZW5fcmVnX29yX3BhcmFsbGVsKTogTmV3LgoJKGZ1bmN0aW9uX2FyZyk6IFVzZSBpdC4KCShpeDg2X2hhcmRfcmVnbm9fbW9kZV9vayk6IFRlc3QgU1NFMSBhbmQgU1NFMiBzZXBhcmF0ZWx5LAoJTU1YIGFuZCAzRE5PVyBzZXBhcmF0ZWx5LgoJKGl4ODZfcnR4X2Nvc3RzKTogU2ltcGxpZnkgRkxPQVRfRVhURU5EIGNhc2UuCgkoaXg4Nl92ZWN0b3JfbW9kZV9zdXBwb3J0ZWRfcCk6IFRlc3QgU1NFMSBhbmQgU1NFMiBzZXBhcmF0ZWx5LgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFZBTElEX1NTRTJfUkVHX01PREUpOiBNb3ZlIFNTRTIgY2FzZXMgZnJvbSAuLi4KCShWQUxJRF9TU0VfUkVHX01PREUpOiAuLi4gaGVyZS4KCjIwMDQtMTItMTUgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHhjb2Zmb3V0LmMgKHhjb2Zmb3V0X2RlY2xhcmVfZnVuY3Rpb24pOiBDaGFuZ2Ugc3RybmNweSB0byBtZW1jcHkuCgoyMDA0LTEyLTE1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3hzY2FsZV9ydHhfY29zdHMpOiBJbmNyZWFzZSBjb3N0IG9mCglDT01QQVJFIG9mIE1VTFQuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChtdWxzaTNfY29tcGFyZTApOiBEb24ndCBjaGVjawoJYXJtX2FyY2hfeHNjYWxlLgoJKG11bHNpX2NvbXBhcmUwX3NjcmF0Y2gsIG11bHNpM19hZGRzaV9jb21wYXJlMCk6IExpa2V3aXNlLgoJKG11bHNpM2FkZHNpX2NvbXBhcmUwX3NjcmF0Y2gpOiBMaWtld2lzZS4KCjIwMDQtMTItMTUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3RoZXIvMTg2NjUKCSogbGliZ2NjLXN0ZC52ZXIgKEdDQ18zLjQuNCk6IEluaGVyaXQgZnJvbSBHQ0NfMy40LjIuCglFeHBvcnQgX19hYnN2dGkyLCBfX2FkZHZ0aTMsIF9fbXVsdnRpMywgX19uZWd2dGkyIGFuZCBfX3N1YnZ0aTMuCgkqIGxpYmdjYzIuYyAoX19hZGR2c2kzKTogUmVuYW1lIHRvIF9fYWRkdlNJMy4KCU5ldyB2ZXJzaW9uIGlmIENPTVBBVF9TSU1PREVfVFJBUFBJTkdfQVJJVEhNRVRJQy4KCShfX2FkZHZkaTMpOiBSZW5hbWUgdG8gX19hZGR2REkzLgoJKF9fc3VidnNpMyk6IFJlbmFtZSB0byBfX3N1YnZTSTMuICBVc2Ugd29yZCB0eXBlIGZvciB0aGUgcmVzdWx0LgoJTmV3IHZlcnNpb24gaWYgQ09NUEFUX1NJTU9ERV9UUkFQUElOR19BUklUSE1FVElDLgoJKF9fc3VidmRpMyk6IFJlbmFtZSB0byBfX3N1YnZESTMuCgkoX211bHZzaTMpOiBSZW5hbWUgdG8gX211bHZTSTMuCglOZXcgdmVyc2lvbiBpZiBDT01QQVRfU0lNT0RFX1RSQVBQSU5HX0FSSVRITUVUSUMuCgkoX211bHZkaTMpOiBSZW5hbWUgdG8gX211bHZESTMuCgkoX19uZWd2c2kyKTogUmVuYW1lIHRvIF9fbmVndlNJMi4KCU5ldyB2ZXJzaW9uIGlmIENPTVBBVF9TSU1PREVfVFJBUFBJTkdfQVJJVEhNRVRJQy4KCShfX25lZ3ZkaTIpOiBSZW5hbWUgdG8gX19uZWd2REkyLgoJKF9fYWJzdnNpMik6IFJlbmFtZSB0byBfX2Fic3ZTSTIuCglOZXcgdmVyc2lvbiBpZiBDT01QQVRfU0lNT0RFX1RSQVBQSU5HX0FSSVRITUVUSUMuCgkoX19hYnN2ZGkyKTogUmVuYW1lIHRvIF9fYWJzdkRJMi4KCSogbGliZ2NjMi5oICg2NC1iaXQgdGFyZ2V0cyk6IERlZmluZSBDT01QQVRfU0lNT0RFX1RSQVBQSU5HX0FSSVRITUVUSUMuCgkoX19hYnN2U0kyLCBfX2FkZHZTSTMsIF9fc3VidlNJMywgX19tdWx2U0kzLCBfX25lZ3ZTSTIsIF9fYWJzdkRJMiwKCV9fYWRkdkRJMywgX19zdWJ2REkzLCBfX211bHZESTMsIF9fbmVndkRJMik6IERlZmluZSB0byB0aGUgYXBwcm9wcmlhdGUKCXN5bWJvbCBhbmQgZGVjbGFyZS4KCShfX2Fic3ZzaTIsIF9fYWRkdnNpMywgX19zdWJ2c2kzLCBfX211bHZzaTMsIF9fbmVndnNpMik6IERlY2xhcmUgaWYKCUNPTVBBVF9TSU1PREVfVFJBUFBJTkdfQVJJVEhNRVRJQy4KCjIwMDQtMTItMTUgIEthenVoaXJvIEluYW9rYSA8aW5hb2thLmthenVoaXJvQHJlbmVhc2FzLmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKToKCVVzZSBEV0FSRjJfREVCVUcuCgoJKiBjb25maWcvbTMyci5jIChtMzJyX2xlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBDaGFuZ2VkCgl0byBzdXBwb3J0IEdPVE9GRiByZWxvY2F0aW9uLgoJKiBjb25maWcvbTMyci5tZCAoVU5TUEVDX0dPVE9GRik6IE5ldy4KCShnb3RvZmZfbG9hZF9hZGRyKTogTmV3LgoKMjAwNC0xMi0xNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2FyZ19pbmZvKTogVXNlIEZVTkNUSU9OX0FSR19CT1VOREFSWSB0bwoJZGVjaWRlIHdoZXRoZXIgYW4gYXJndW1lbnQgaXMgZG91YmxlLXdvcmQgYWxpZ25lZC4KCjIwMDQtMTItMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBGaXggbWlzc2luZyBtb2RlcyBvbiBjbW92ZSBzcGxpdHRlcnMuCgoyMDA0LTEyLTE1IEphbiBCZXVsaWNoICA8amJldWxpY2hAbm92ZWxsLmNvbT4KCgkqIG1rbGliZ2NjLmluIChsaWJnY2MyX2NfZGVwKTogQWRkIGRlcGVuZGVuY3kgb24gbGliZ2NjMi5oLgoKMjAwNC0xMi0xNSAgVXJvcyBCaXpqYWsgIDx1cm9zQGtzcy1sb2thLnNpPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZmxvYXRoaXNmMiwgKmZsb2F0aGlzZjJfMSwgZmxvYXRzaXNmMiwKCSpmbG9hdHNpc2YyX2kzODcsICpmbG9hdHNpc2YyX3NzZSwgZmxvYXRkaXNmMiwKCSpmbG9hdGRpc2YyX2kzODdfb25seSwgKmZsb2F0ZGlzZjJfaTM4NywgKmZsb2F0ZGlzZjJfc3NlLAoJZmxvYXRoaWRmMiwgKmZsb2F0aGlkZjJfMSwgKmZsb2F0c2lkZjJfaTM4NywgKmZsb2F0c2lkZjJfc3NlLAoJZmxvYXRkaWRmMiwgKmZsb2F0ZGlkZjJfaTM4N19vbmx5LCAqZmxvYXRkaWRmMl9pMzg3LAoJKmZsb2F0ZGlkZjJfc3NlLCBmbG9hdHVuc3Npc2YyLCBmbG9hdHVuc2Rpc2YyLCBmbG9hdHVuc2RpZGYyKToKCVVuaWZ5IGVuYWJsZSBjb25zdHJhaW50IHdpdGggcmVzcGVjdCB0byBUQVJHRVRfODAzODcsIFRBUkdFVF9TU0UsCglUQVJHRVRfU1NFMiwgVEFSR0VUXzY0QklULCBUQVJHRVRfU1NFX01BVEggYW5kIFRBUkdFVF9NSVhfU1NFX0kzODcuCgkoKmZsb2F0P2k/Zl9pMzg3KTogUmVuYW1lIHRvICpmbG9hdD9pP2YyX21peGVkLgoJKCpmbG9hdD9pP2YyXzEpOiBSZW5hbWUgdG8gKmZsb2F0P2k/ZjJfaTM4Ny4KCSgqZmxvYXQ/aT9mMl9pMzg3X29ubHkpOiBSZW5hbWUgdG8gKmZsb2F0P2k/ZjJfaTM4Ny4KCShmbG9hdD9peGYyKTogUGVuYWxpemUgaW50ZWdlciByZWdpc3RlciBvcGVyYW5kLgoKMjAwNC0xMi0xNCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBjKysvMTcyNDIKCSogY29uZmlndXJlLmFjOiBBZGQgR0FTIGNoZWNrIGZvciBIUC1VWCAubnN1YnNwYSBjb21kYXQuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoJKiBjb25maWcvcGEvcGEtaHB1eDEwLmggKFNVUFBPUlRTX09ORV9PTkxZLCBNQUtFX0RFQ0xfT05FX09OTFkpOiBEZWxldGUKCWRlZmluZXMuCgkqIGNvbmZpZy9wYS9wYS5jIChwYV9zZWxlY3Rfc2VjdGlvbik6IEFsbG93IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluCglvbmUtb25seSAoY29tZGF0KSBzdWJzcGFjZXMuCgkqIGNvbmZpZy9wYS9zb20uaCAoU1VQUE9SVFNfU09NX0NPTURBVCk6IE5ldyBkZWZpbmUuCgkoU1VQUE9SVFNfT05FX09OTFkpOiBUcnVlIGlmIFNVUFBPUlRTX1dFQUsgb3IgU1VQUE9SVFNfU09NX0NPTURBVCBhcmUKCXRydWUuCgkoTUFLRV9ERUNMX09ORV9PTkxZKTogUGxhY2UgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gY29tbW9uLgoKMjAwNC0xMi0xNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV92YWxpZGF0ZV9jb3N0KTogQ29uc2lkZXIgY29zdCBvZgoJdW5kb2J1Zi5vdGhlcl9pbnNuIHJhdGhlciB0aGFuIGFsd2F5cyBhbGxvd2luZyB0aGUgcmVjb21iaW5hdGlvbgoJaWYgaXQgaXMgc2V0LgoKMjAwNC0xMi0xNCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLWhvc3QuYyAoTUFQX0ZBSUxFRCk6IERlZmluZSBpZiBub3QgZGVmaW5lZC4KCShwYV9ndF9wY2hfdXNlX2FkZHJlc3MpOiBIYW5kbGUgc2hvcnQgcmVhZHMuCgoyMDA0LTEyLTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNzk5MAoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHg4Nl91c2VfYnQpOiBOZXcuCgkoaXg4Nl9leHBhbmRfdW5hcnlfb3BlcmF0b3IpOiBVc2UgTUVNX1AuCgkoaXg4Nl9leHBhbmRfZnBfYWJzbmVnX29wZXJhdG9yKTogTmV3LgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKHg4Nl91c2VfYnQpOiBEZWNsYXJlLgoJKFRBUkdFVF9VU0VfQlQpOiBOZXcuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAobmVnc2YyKTogVXNlIGl4ODZfZXhwYW5kX2ZwX2Fic25lZ19vcGVyYXRvci4KCShuZWdkZjIsIG5lZ3hmMiwgYWJzc2YyLCBhYnNkZjIsIGFic3hmMik6IExpa2V3aXNlLgoJKG5lZ3NmMl9tZW1vcnksIG5lZ3NmMl9pZnMsIG5lZ3NmMl9pZiwgbmVnZGYyX21lbW9yeSwgbmVnZGYyX2lmcywKCW5lZ2RmMl9pZnNfcmV4NjQsIG5lZ2RmMl9pZiwgbmVnZGYyX2lmX3JleDY0LCBuZWd4ZjJfaWYsCglhYnNzZjJfbWVtb3J5LCBhYnNzZjJfaWZzLCBhYnNzZjJfaWYsIGFic2RmMl9tZW1vcnksIGFic2RmMl9pZnMsCglhYnNkZjJfaWZzX3JleDY0LCBhYnNkZjJfaWYsIGFic3hmMl9pZik6IFJlbW92ZS4KCShhYnNuZWdzZjJfbWl4ZWQsIGFic25lZ3NmMl9zc2UsIGFic25lZ3NmMl9pMzg3LCBhYnNuZWdkZjJfbWl4ZWQsCglhYnNuZWdkZjJfc3NlLCBhYnNuZWdkZjJfaTM4NywgYWJzbmVneGYyX2kzODcpOiBOZXcuICBNZXJnZSBhbGwKCW5lZyBhbmQgYWJzIHNwbGl0dGVycy4gIEhhbmRsZSBERm1vZGUgaW4gZ2VuZXJhbCByZWdzIGluIDY0LWJpdCBtb2RlLgoJKG5lZ2V4dGVuZHNmZGYyLCBhYnNleHRlbmRzZmRmMik6IERpc2FibGUgZm9yIG5vbi1taXhlZCBzc2UgbWF0aC4KCShidHNxLCBidHJxLCBidGNxKTogTmV3LiAgQWRkIHBlZXBob2xlcyBhcyB3ZWxsLgoJKG1vdnY0c2ZfaW50ZXJuYWwgc3BsaXR0ZXIpOiBQb3N0cG9uZSB0aWwgYWZ0ZXIgcmVsb2FkLgoJKG1vdnYyZGlfaW50ZXJuYWwgc3BsaXR0ZXIpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAoY29uc3RfMF90b182M19vcGVyYW5kKTogTmV3LgoJKGFic25lZ19vcGVyYXRvcik6IE5ldy4KCjIwMDQtMTItMTQgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5oIChSRUdOT19PS19GT1JfSU5ERVhfUCwgUkVHTk9fT0tfRk9SX0JBU0VfUCwgUkVHTk9fT0tfRk9SX0ZQX1ApOgoJQ2hlY2sgcmVnaXN0ZXIgbnVtYmVyIGFuZCB0aGF0IHJlZ19yZW51bWJlciBpcyBub256ZXJvIGJlZm9yZSB1c2luZyBpdC4KCjIwMDQtMTItMTQgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChJQS02NCBvcHRpb25zKTogQWRkIGV4aXN0aW5nIG9wdGlvbnMgdGhhdAoJd2VyZW4ndCBhbHJlYWR5IGxpc3RlZC4KCjIwMDQtMTItMTQgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLW91dG9mLXNzYS5jIChjb2FsZXNjZV9hYm5vcm1hbF9lZGdlcyk6IFBhc3MgdGhlIGNvcnJlY3QgdGFyZ2V0CglwYXJ0aXRpb24gdG8gY29uZmxpY3RfZ3JhcGhfbWVyZ2VfcmVncy4KCjIwMDQtMTItMTQgIFV0dGFtIFBhd2FyICA8dXR0YW1wQHVzLmlibS5jb20+CgkgICAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiByczYwMDAuYyAocnM2MDAwX2hhbmRsZV9hbHRpdmVjX2F0dHJpYnV0ZV90cmVlKTogUmVwb3J0IGVycm9ycwoJZm9yIHZlY3RvciB0eXBlcyB3aXRoIGludmFsaWQgY29tcG9uZW50IHR5cGVzLgoKMjAwNC0xMi0xNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xODk1MQoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tYXRoZm4sIGV4cGFuZF9idWlsdGluX21hdGhmbl8yLAoJZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzMpOiBBdm9pZCB1c2luZyBhcmd1bWVudHMgcGFzc2VkIHRvCglzYXZlX2V4cHIgYWZ0ZXIgdGhhdCBjYWxsLgoKCSogZm9sZC1jb25zdC5jIChmb2xkX3NpbmdsZV9iaXRfdGVzdCk6IElmIGZsYWdfc3ludGF4X29ubHksIHByZXRlbmQKCUxPQURfRVhURU5EX09QIGlzIG5vdCBkZWZpbmVkLgoJKGZvbGQpOiBMaWtld2lzZS4gIElmIGZsYWdfc3ludGF4X29ubHksIGRvbid0IGRlcGVuZCBvbiBCSVRTX1BFUl9XT1JELgoKMjAwNC0xMi0xNCAgVG9iaWFzIFNjaGx1ZXRlciAgPHRvYmlhcy5zY2hsdWV0ZXJAcGh5c2lrLnVuaS1tdWVuY2hlbi5kZT4KCgkqIHRyZWUuZGVmLCBkb2MvYy10cmVlLnRleGk6IENvcnJlY3RseSBkb2N1bWVudCByZXN0cmljdGlvbnMgb24gdGhlCglzaGlmdCB3aWR0aC4KCjIwMDQtMTItMTQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHByLmggKGV4cGFuZF9tb2RpZmllcik6IERlZmluZSBFWFBBTkRfU1RBQ0tfUEFSTSBhcyAxLgoKMjAwNC0xMi0xNCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJUFIgdGFyZ2V0LzE4OTczCglhcm0tY29yZXMuZGVmIChhcm05MjZlai1zLCBhcm0xMDI2ZWotcywgYXJtMTEzNmotcywgYXJtMTEzNi1qZnMpCgkoYXJtMTE3Nmp6LXMsIGFybTExNzZqemYtcywgbXBjb3Jlbm92ZnAsIG1wY29yZSk6IEFkZCBsb2FkLXNjaGVkdWxpbmcKCXByb3BlcnR5IHRvIGZsYWdzLgoKMjAwNC0xMi0xNCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLWdpbXBsZS5jIChnZXRfYmFzZV9hZGRyZXNzKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgoyMDA0LTEyLTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTc5MzAKCSogcGFzc2VzLmMgKHJlc3Rfb2ZfY2xlYW5fc3RhdGUpOiBGaXggY29tcHV0YXRpb24gb2YKCXByZWZlcnJlZF9pbmNvbWluZ19zdGFja19ib3VuZGFyeS4KCjIwMDQtMTItMTMgIFdvbGZnYW5nIEJhbmdlcnRoIDxiYW5nZXJ0aEBkZWFsaWkub3JnPgoKCSogcmVsb2FkLmg6IFJlbW92ZSBzdHJ1Y3QgbmVlZHMgYW5kIGl0cyBvbmx5IHVzZS4KCjIwMDQtMTItMTMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTg5MjgKCSogc2ltcGxpZnlfcnR4LmMgKHBsdXNfbWludXNfb3BlcmFuZF9wKTogTmV3IGZ1bmN0aW9uIHRvIGVuY29kZQoJdGhlIHRlc3QgZm9yIHN1aXRhYmxlIG9wZXJhbmRzIGZvciBjYWxscyB0byBzaW1wbGlmeV9wbHVzX21pbnVzLgoJT25seSBhbGxvdyAoQ09OU1QgKFBMVVMgeCB5KSkgaWYgYm90aCB4IGFuZCB5IGFyZSBDT05TVEFOVF9QLgoJKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pOiBVc2UgcGx1c19taW51c19vcGVyYW5kX3AuCgoyMDA0LTEyLTEzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdC8xNjk1MQoJKiB0cmVlLWlubGluZS5jIChzZXR1cF9vbmVfcGFyYW1ldGVyKTogRG9uJ3QgZGlyZWN0bHkgbWFwIGEKCXBhcmFtZXRlciB0byB0aGUgYWRkcmVzcyBvZiBhbm90aGVyIHZhcmlhYmxlIG9mIHRoZSBzYW1lCglmdW5jdGlvbi4KCjIwMDQtMTMtMTIgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGJhc2ljLWJsb2NrLmggKFBST1BfUE9TVFJFTE9BRCk6IERvIG5vdCBpbmNsdWRlIFBST1BfQVVUT0lOQywgd2UKCWNhbiBuZXZlciBjcmVhdGUgYXV0b2luYyBpbnNucyBhZnRlciByZWxvYWQuCgoyMDA0LTEyLTEzICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoJICAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTg2OTQKCSogdHJlZS1zc2EtZG9tLmMgKHRocmVhZF9hY3Jvc3NfZWRnZSk6IERvIG5vdCB0aHJlYWQganVtcHMgaWYgYQoJUEhJIGFyZ3VtZW50IGlzIHNldCBmcm9tIGEgUEhJX1JFU1VMVCBpbiB0aGUgc2FtZSBibG9jayBhbmQgdGhlCglQSEkgYXJndW1lbnQgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBQSEkgcmVzdWx0LgoKMjAwNC0xMi0xMyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogeGNvZmZvdXQuYyAoeGNvZmZvdXRfZGVjbGFyZV9mdW5jdGlvbik6IEFsd2F5cyBzdHJpcCBzdG9yYWdlCgljbGFzcyBlbmNvZGluZy4KCjIwMDQtMTItMTMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRhcmdldC8xODk2NAoJKiBjb25maWcvZGFyd2luLmMgKGRhcndpbl9hc3NlbWJsZV92aXNpYmlsaXR5KTogRml4IG1pbm9yIGRpYWdub3N0aWMKCXByb2JsZW0sIGFkZGluZyBhIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBiZWZvcmUgY29uY2F0ZW5hdGlvbi4KCjIwMDQtMTItMTMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWNvbW1vbi5jIChmbmFtZV9hc19zdHJpbmcpOiBGcmVlIG5hbWVwIGlmIHdlIGFyZSByZXR1cm5pbmcKCWNzdHIudGV4dC4KCgkqIHRyZWUtc3NhLWRvbS5jIChyZWNvcmRfZWRnZV9pbmZvKTogRml4IG1lbW9yeSBsZWFrLgoKMjAwNC0xMi0xMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB0cmVlLWNmZy5jIChyZW1vdmVfdXNlbGVzc19zdG10c19jb25kKTogQ2FsbCBmb2xkIG9uIENPTkRfRVhQUl9DT05ELgoKMjAwNC0xMi0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtc3NhLWRvbS5jIChyZWNvcmRfZXF1aXZhbGVuY2VzX2Zyb21fcGhpcyk6IFNwZWVkIHVwIGJ5Cglkb2luZyBhIHBvaW50ZXIgY29tcGFyaXNvbi4KCgkqIHRyZWUtc3NhLWRvbS5jIChyZWNvcmRfZXF1aXZhbGVuY2VzX2Zyb21fcGhpcyk6IEFkZCBhCgljb21tZW50LgoKCSogZGVmYXVsdHMuaCwgc3RtdC5jLCB0cmVlLWNmZy5jLCB0cmVlLXNzYS1kY2UuYzogRml4IGNvbW1lbnQKCXR5cG9zLgoKMjAwNC0xMi0xMyAgS2F6dWhpcm8gSW5hb2thIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJKiBjb25maWcvbTMyci90LWxpbnV4IChTSExJQl9NQVBGSUxFUyk6IEFkZCBsaWJnY2MtZ2xpYmMudmVyIHRvCgl0aGUgbGlzdCByYXRoZXIgdGhhbiByZXBsYWNpbmcgdGhlIGV4aXN0aW5nIHZhbHVlLgoKMjAwNC0xMi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNmZy5jIChkdW1wX2Zsb3dfaW5mbyk6IERvbid0IGR1bXAgcHNldWRvIGluZm8gYWZ0ZXIgcmVsb2FkLgoKMjAwNC0xMi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChpbnNuLXByZWRzLm8pOiBEZXBlbmQgb24gUkVHU19ILgoJKiBnZW5wcmVkcy5jICh3cml0ZV9pbnNuX3ByZWRzX2MpOiBJbmNsdWRlIHJlZ3MuaC4KCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAoaW5kZXhfcmVnaXN0ZXJfb3BlcmFuZCk6IFVzZQoJUkVHX09LX0ZPUl9JTkRFWF9TVFJJQ1RfUCBhbmQgUkVHX09LX0ZPUl9JTkRFWF9OT05TVFJJQ1RfUC4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogQWRkICdsJy4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAobGVhX2dlbmVyYWxfMSwgbGVhX2dlbmVyYWxfMV96ZXh0LAoJbGVhX2dlbmVyYWxfMiwgbGVhX2dlbmVyYWxfMl96ZXh0LCBsZWFfZ2VuZXJhbF8zLCBsZWFfZ2VuZXJhbF8zX3pleHQsCglhZGRkaV8xX3JleDY0LCBhZGRzaV8xLCBhZGRzaV8xX3pleHQsIGFkZGhpXzFfbGVhLCBhZGRxaV8xX2xlYSwKCWFzaGxkaTNfMV9yZXg2NCwgYXNobHNpM18xLCBhc2hsc2kzXzFfemV4dCwgYXNobGhpM18xX2xlYSwKCWFzaGxxaTNfMV9sZWEpOiBVc2UgJ2wnIGZvciBpbmRleCByZWdpc3RlciBvcGVyYW5kLgoJKGFzaGxkaTNfMV9yZXg2NCBzcGxpdHRlcik6IFVzZSBpbmRleF9yZWdpc3Rlcl9vcGVyYW5kLgoJKGFzaGxzaTNfMSBzcGxpdHRlcik6IEJlIG1vcmUgY2FyZWZ1bCB3aXRoIG1vZGVzLgoKMjAwNC0xMi0xMyAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiB0YXJnZXQvMTg0NTkKCSogZGVmYXVsdHMuaCAoVEFSR0VUX1VTRV9KQ1JfU0VDVElPTik6IE5ldyBtYWNyby4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9VU0VfSkNSX1NFQ1RJT04pOiBEb2N1bWVudCBpdC4KCSogY29uZmlnL2kzODYvY3lnbWluZy5oIChUQVJHRVRfVVNFX0pDUl9TRUNUSU9OKTogT3ZlcnJpZGUKCWRlZmF1bHQuCgoyMDA0LTEyLTEzIFVyb3MgQml6amFrIDx1cm9zQGtzcy1sb2thLnNpPgoKCVBSIHRhcmdldC8xNDk0MQoJUFIgdGFyZ2V0LzE4NTAzCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNzZV9tb3Zzcywgc3NlMl9tb3ZzZCwgc3NlMl9tb3ZocGQpOgoJRml4IHdyb25nIHZlY19tZXJnZSBzZWxlY3RvciBiaXRtYXNrLgoKMjAwNC0xMi0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBydGwtb3B0LzE3MTg2CgkqIHJlZy1zdGFjay5jIChtb3ZlX25hbl9mb3Jfc3RhY2tfcmVnKTogTmV3LgoJKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogVXNlIGl0LgoJKG1vdmVfZm9yX3N0YWNrX3JlZyk6IEhhbmRsZSBzb3VyY2UgcmVnaXN0ZXIgbm90IGxpdmUgd2l0aCBhIG5hbi4KCjIwMDQtMTItMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZ2ltcGxpZnlfdmFfYXJnKTogRml4IHR5cGUgbWlzbWF0Y2gKCWVycm9ycyBhY3Jvc3Mgb3BlcmF0aW9ucy4KCjIwMDQtMTItMTIgIERpLWFuIEphbiAgPGRpYW5qQGZyZWVzaGVsbC5vcmc+CgoJKiBkb2MvcGFzc2VzLnRleGkgKFBhc3MgTWFuYWdlcik6IENvcnJlY3QgbGlzdCBvZiBzb3VyY2UgZmlsZXMuCgoyMDA0LTEyLTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5jIChlbWl0X21vdmVfY2hhbmdlX21vZGUpOiBOZXcuCgkoZW1pdF9tb3ZlX3ZpYV9hbHRfbW9kZSk6IFVzZSBpdC4KCjIwMDQtMTItMTIgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoJICAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgbWlkZGxlLWVuZC8xNzU2NAoJKiBkb2p1bXAuYyAoZG9fY29tcGFyZV9hbmRfanVtcCk6IE9ubHkgY2Fub25pY2FsaXplIGZ1bmN0aW9uIHBvaW50ZXJzCglpbiBhIGNvbXBhcmlzb24gaWYgYm90aCBzaWRlcyBhcmUgZnVuY3Rpb24gcG9pbnRlcnMuCgoyMDA0LTEyLTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xODkzMgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChhbGwgc3BsaXRzIGFuZCBwZWVwaG9sZXMpOiBVc2UgZmxhZ3NfcmVnX29wZXJhbmQKCWFuZCBjb21wYXJlX29wZXJhdG9yIHRvIHByb3BhZ2F0ZSB0aGUgaW5wdXQgQ0MgbW9kZSB0byB0aGUgb3V0cHV0LgoJKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChjb21wYXJlX29wZXJhdG9yKTogTmV3LgoKMjAwNC0xMi0xMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHQvMTgwNDAKCSogZXhwci5jIChnZXRfaW5uZXJfcmVmZXJlbmNlKTogUmVtb3ZlIE5PTl9MVkFMVUVfRVhQUiwgTk9QX0VYUFIsCglDT05WRVJUX0VYUFIgY2FzZXMuCgkoaGFuZGxlZF9jb21wb25lbnRfcCk6IExpa2V3aXNlLgoKMjAwNC0xMi0xMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHJlZy1zdGFjay5jIChjb252ZXJ0X3JlZ3NfMik6IEZyZWUgc3RhY2suCgoJKiB0cmVlLXNzYS1kb20uYyAodGhyZWFkX2Fjcm9zc19lZGdlLCBkb21fb3B0X2ZpbmFsaXplX2Jsb2NrKTogRml4Cgljb21tZW50IHR5cG9zLgoKMjAwNC0xMi0xMiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1sb29wLWNoLmMgKGNvcHlfbG9vcF9oZWFkZXJzKTogTG9vcCBjYW4gYmUgbnVsbC4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChkZXRlcm1pbmVfbHNtKTogdHJlZV9yb290IG1heSBub3QgaGF2ZSBhIHJlYWwKCWlubmVyIGxvb3AuCgoyMDA0LTEyLTEyICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtZ2ltcGxlLmMgKGdldF9iYXNlX2FkZHJlc3MpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCjIwMDQtMTItMTIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBsY20uYyAob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBGcmVlIHB0ciBldmVuIHdoZW4gbW9kZV9zZXQKCWlzIE5VTExfUlRYLgoKMjAwNC0xMi0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiByZWctc3RhY2suYyAoY2hhbmdlX3N0YWNrKTogQXZvaWQgcGxhY2luZyB0aGUgbmV3IHRvcC1vZi1zdGFjayBpbgoJaXRzIGNvcnJlY3QgbG9jYXRpb24gZHVyaW5nIHBvcHBpbmcgaWYgd2UgbmVlZCB0byBwZXJtdXRlIHRoZSBzdGFjawoJYWZ0ZXJ3YXJkcy4gIEF0dGVtcHQgdG8gcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0YWNrIG9yZGVyaW5nLgoKMjAwNC0xMi0xMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGxjbS5jIChvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZyk6IEZyZWUgaW5zZXJ0IGFuZCBkZWxldGUgaW4KCXRoZSAiZm9yIiBsb29wLgoKMjAwNC0xMi0xMSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCglQUiB0YXJnZXQvMTg2NDEKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IFJlbG9hZCBhbGwKCWNvbnN0YW50cyBpbnRvIGFsbCByZWdpc3RlciBjbGFzc2VzIGludGVyc2VjdGluZyB3aXRoIEZMT0FUX1JFR1MKCXZpYSBtZW1vcnkuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBTYW1lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92ZGlfaW50ZXJuYWwzMik6IElnbm9yZSBGUFJzIHdoZW4KCWNob29zaW5nIHJlZ2lzdGVyIHByZWZlcmVuY2VzLgoJKG1vdmRpX2ludGVybmFsNjQpOiBTYW1lLgoKMjAwNC0xMi0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtaW50by1zc2EuYyAocmV3cml0ZV9zc2FfaW50b19zc2EpOiBGcmVlIFNTQV9OQU1FX0FVWAoJYmVmb3JlIHdlIHJlbGVhc2UgYW4gU1NBX05BTUUuCgoyMDA0LTEyLTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzE4OTIxCgkqIGZvbGQtY29uc3QuYyAoZm9sZF91bndpZGVuZWRfY29tcGFyaXNvbik6IFVzZSBvbWl0X29uZV9vcGVyYW5kCglpbnN0ZWFkIG9mIGNvbnN0YW50X2Jvb2xlYW5fbm9kZSBhcyBhcmcwIG1heSBoYXZlIHNpZGUtZWZmZWN0cy4KCjIwMDQtMTItMTAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS1ob3N0LmMgKHBhX2d0X3BjaF91c2VfYWRkcmVzcyk6IFVzZSBsc2VlayBhbmQgcmVhZCB0byBjb3B5IFBDSAoJZmlsZSB0byBhbm9ueW1vdXMgcHJpdmF0ZSBtYXAuCgoyMDA0LTEyLTEwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0YXJnZXQvMTgwMDIKCVBSIG1pZGRsZS1lbmQvMTg0MjQKCSogZG9qdW1wLmMgKGRvX2p1bXApOiBXaGVuIGF0dGVtcHRpbmcgdG8gcmV2ZXJzZSB0aGUgZWZmZWN0cyBvZgoJZm9sZF9zaW5nbGVfYml0X3Rlc3QsIHdlIG5lZWQgdG8gU1RSSVBfTk9QUyBhbmQgbmFycm93aW5nIHR5cGUKCWNvbnZlcnNpb25zLCBhbmQgaGFuZGxlIEJJVF9YT1JfRVhQUiB0aGF0J3MgdXNlZCB0byBpbnZlcnQgdGhlCglzZW5zZSBvZiB0aGUgc2luZ2xlIGJpdCB0ZXN0LgoKMjAwNC0xMi0xMCAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCglQUiAxODczMgoJKiBnY2MuYyAobWFpbik6IERvIG5vdCBicmVhayBvdXQgb2YgbG9vcCB3aGVuIGVycm9yIGlzIHJlcG9ydGVkIHdoaWxlCglwcm9jZXNzaW5nIG9uZSBzb3VyY2UgZmlsZS4KCjIwMDQtMTItMTAgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1pbnRvLXNzYS5jIChSRVdSSVRFX1RISVNfU1RNVCk6IERlZmluZS4KCShtYXJrX2RlZl9zaXRlcyk6IENsZWFyIFJFV1JJVEVfVEhJU19TVE1UIGZvciBzdGF0ZW1lbnRzIHRoYXQKCWRvbid0IG5lZWQgYW55IG9wZXJhbmRzIHJld3JpdHRlbi4KCShyZXdyaXRlX3N0bXQpOiBJZ25vcmUgc3RhdGVtZW50cyB0aGF0IGRvbid0IG5lZWQgdG8gYmUKCXJld3JpdHRlbi4KCShyZXdyaXRlX29wZXJhbmQpOiBWYWxpZGF0ZSB0aGF0IGFuIGV4aXN0aW5nIFNTQV9OQU1FIGlzCglpZGVudGljYWwgdG8gdGhlIGN1cnJlbnQgcmVhY2hpbmcgZGVmaW5pdGlvbiBvZiB0aGUgb3BlcmFuZC4KCjIwMDQtMTItMTAgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1kZmEuYyAobWFya19jYWxsX2Nsb2JiZXJlZF92YXJzX3RvX3JlbmFtZSk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS12ZWN0b3JpemVyLmMgKHZlY3Rvcml6YWJsZV9sb2FkKTogQ2FsbCBpdC4KCSogdHJlZS1mbG93LmggKG1hcmtfY2FsbF9jbG9iYmVyZWRfdmFyc190b19yZW5hbWUpOiBEZWNsYXJlLgoJKiB0cmVlLXNyYS5jIChtYXJrX2FsbF92X2RlZnMpOiBBbHNvIG1hcmsgVlVTRXMgZm9yIHJlbmFtaW5nLgoKMjAwNC0xMi0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHJlZ21vdmUuYyAoY29tYmluZV9zdGFja19hZGp1c3RtZW50c19mb3JfYmxvY2spOiBGcmVlCgltZW1saXN0IGlmIGl0IGhhc24ndCBiZWVuIGZyZWVkLgoKMjAwNC0xMi0xMCAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogYy10eXBlY2suYyAobG9va3VwX2ZpZWxkKTogQ2hlY2sgaWYgYSBUWVBFX0xBTkdfU1BFQ0lGSUMKCXBvaW50ZXIgZmllbGQgaXMgc2V0IGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0LgoKMjAwNC0xMi0xMCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgbWlkZGxlLWVuZC8xODkwMwoJKiB0cmVlLWNmZy5jIChyZW1vdmVfYmIpOiBQdXQgdGhlIG1vdmVkIGxhYmVsIGF0IHRoZSBiZWdpbm5pbmcKCW9mIHRoZSBiYXNpYyBibG9jay4KCjIwMDQtMTItMTAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWRhdGEtcmVmLmMgKGZyZWVfZGF0YV9yZWZzKTogRnJlZSBlYWNoIGRhdGFfcmVmZXJlbmNlCglvYmplY3QuCgoJKiB0cmVlLXNzYS1kb20uYyAodGhyZWFkX2Fjcm9zc19lZGdlKTogU3BlZWQgdXAgYnkgYXZvaWRpbmcgYQoJY2FsbCB0byBpc19naW1wbGVfbWluX2ludmFyaWFudCBpZiB3ZSBrbm93IHRoZSByZXN1bHQuCgoyMDA0LTEyLTEwICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAoc2V0dXBfcG9pbnRlcnNfYW5kX2FkZHJlc3NhYmxlcyk6IFJlbW92ZQoJcmVkdW5kYW50IHRlc3Qgb2Ygdl9hbm4tPm1lbV90YWdfa2luZC4KCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGdldF9pbmRpcmVjdF9yZWZfb3BlcmFuZHMpOiBSZW1vdmUKCXJlZHVuZGFudCBjb25kaXRpb25hbCBjbGVhcmluZyBvcGZfa2lsbF9kZWYuCgoyMDA0LTEyLTEwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi1tb2Rlcy5kZWY6IEZpeCBjb21tZW50IHR5cG9zLgoJKENDX05aKTogRGVmaW5lIG5ldyBtb2RlLgoJKiBjb25maWcvZnJ2L2Zydi1wcm90b3MuaCAoZnJ2X3NlbGVjdF9jY19tb2RlKTogRGVjbGFyZS4KCShjb25kZXhlY19pbnRvcF9jbXBfb3BlcmF0b3IpOiBEZWxldGUuCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGNvbXBhcmlzb25fc3RyaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGZydl9wcmludF9vcGVyYW5kKTogVXNlIGl0IHRvIGhhbmRsZSAnYycgYW5kICdDJy4KCShyZWxhdGlvbmFsX29wZXJhdG9yKTogUmVkZWZpbmUgaW4gdGVybXMgb2YgaW50ZWdlcl9yZWxhdGlvbmFsX29wZXJhdG9yCglhbmQgZmxvYXRfcmVsYXRpb25hbF9vcGVyYXRvci4KCShzaWduZWRfcmVsYXRpb25hbF9vcGVyYXRvciwgdW5zaWduZWRfcmVsYXRpb25hbF9vcGVyYXRvcik6IERlbGV0ZS4KCShpbnRlZ2VyX3JlbGF0aW9uYWxfb3BlcmF0b3IpOiBOZXcgcHJlZGljYXRlLCBjb21iaW5pbmcgdGhlIGFib3ZlLgoJQ2hlY2sgdGhlIG1vZGUgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYnV0IGxlYXZlIGZydi5tZCB0byBjaGVjayB0aGUgcmVzdC4KCShmbG9hdF9yZWxhdGlvbmFsX29wZXJhdG9yKTogSnVzdCBjaGVjayB0aGUgbW9kZSBvZiB0aGUgZmlyc3Qgb3BlcmFuZAoJYW5kIGxlYXZlIGZydi5tZCB0byBjaGVjayB0aGUgcmVzdC4KCShpbnRvcF9jb21wYXJlX29wZXJhdG9yKTogQXNzdW1lIHRoZSByZXN1bHQgaXMgY29tcGFyZWQgd2l0aCB6ZXJvCglpbiBtb2RlIENDX05abW9kZS4gIEFsbG93IFBMVVMgYW5kIE1JTlVTLiAgTGVhdmUgZnJ2Lm1kIHRvIGNoZWNrCgl0aGUgb3BlcmFuZCBwcmVkaWNhdGVzLgoJKGNvbmRleGVjX2ludG9wX2NtcF9vcGVyYXRvcik6IERlbGV0ZS4KCShmcnZfaWZjdnRfbW9kaWZ5X3Rlc3RzLCBmcnZfaWZjdnRfbW9kaWZ5X211bHRpcGxlX3Rlc3RzKQoJKGZydl9oYXJkX3JlZ25vX21vZGVfb2spOiBIYW5kbGUgQ0NfTlptb2RlLgoJKGZydl9zZWxlY3RfY2NfbW9kZSk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2Zydi9mcnYuaCAoU0VMRUNUX0NDX01PREUpOiBVc2UgZnJ2X3NlbGVjdF9jY19tb2RlLgoJKFJFVkVSU0lCTEVfQ0NfTU9ERSk6IEluY2x1ZGUgQ0NfTlptb2RlLgoJKFBSRURJQ0FURV9DT0RFUyk6IFJlcGxhY2UgZW50cmllcyBmb3Igc2lnbmVkX3JlbGF0aW9uYWxfb3BlcmFuZCBhbmQKCXVuc2lnbmVkX3JlbGF0aW9uYWxfb3BlcmF0b3Igd2l0aCBvbmUgZm9yIGludGVnZXJfcmVsYXRpb25hbF9vcGVyYXRvci4KCURlbGV0ZSBlbnRyeSBmb3IgY29uZGV4ZWNfaW50b3BfY21wX29wZXJhdG9yLgoJKiBjb25maWcvZnJ2L2Zydi5tZCAobW92Y2NfbnosICppbnRlcm5hbF9tb3ZjY19ueiwgcmVsb2FkX2luY2NfbnopCgkocmVsb2FkX291dGNjX256LCAqY21wc2lfY2NfbnosICpjb25kX2V4ZWNfY21wc2lfY2NfbnopOiBOZXcgcGF0dGVybnMuCgkoKmNvbWJvX2ludG9wX2NvbXBhcmUyLCAqY29tYm9faW50b3BfY29tcGFyZTQpOiBEZWxldGUuCgkoKmNvbWJvX2ludG9wX2NvbXBhcmUxKTogQ2hhbmdlIG1vZGUgdG8gQ0NfTlouCgkoKmNvbWJvX2ludG9wX2NvbXBhcmUyKTogTGlrZXdpc2UuICBSZW5hbWVkIGZyb20gKmNvbWJvX2ludG9wX2NvbXBhcmUzLgoJKGJyYW5jaF97dW4sfXNpZ25lZF90cnVlLCBicmFuY2hfe3VuLH1zaWduZWRfZmFsc2UpCgkoKnNjY197dW4sfXNpZ25lZCwgKnNjY19uZWcxX3t1bix9c2lnbmVkLCAqY2tfe3VuLH1zaWduZWQpCgkoKm1vdnFpY2NfaW50ZXJuYWwxX3t1bix9c2lnbmVkLCAqbW92cWljY19pbnRlcm5hbDJfe3VuLH1zaWduZWQpCgkoKm1vdmhpY2NfaW50ZXJuYWwxX3t1bix9c2lnbmVkLCAqbW92aGljY19pbnRlcm5hbDJfe3VuLH1zaWduZWQpCgkoKm1vdnNpY2NfaW50ZXJuYWwxX3t1bix9c2lnbmVkLCAqbW92c2ljY19pbnRlcm5hbDJfe3VuLH1zaWduZWQpCgkoKm1vdnNmY2NfaGFzX2ZwcnNfe3VuLH1zaWduZWQsICptb3ZzZmNjX25vX2ZwcnNfe3VuLH1zaWduZWQpCgkoKnJldHVybl97dW5zaWduZWRfLH10cnVlLCAqcmV0dXJuX3t1bnNpZ25lZF8sfWZhbHNlKTogTWVyZ2UgdGhlc2UKCXBhdHRlcm4gcGFpcnMuICBVc2UgaW50ZWdlcl9yZWxhdGlvbmFsX29wZXJhdG9yLiAgUmVtb3ZlIG1vZGUgZnJvbQoJaWNjX29wZXJhbmQuCgoyMDA0LTEyLTEwICBNYXJrIERldHRpbmdlciAgPGRldHRpbmdlQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHN0cnVjdCBwcm9jZXNzb3JfY29zdHMpOiBOZXcgZmllbGRzIG1sLAoJc3FkYnIsIHNxZWJyLgoJKHMzOTBfcnR4X2Nvc3RzKTogQWRkZWQgdGhlIG1pc3NpbmcgaGFuZGxpbmcgb2YgbXVsdGlwbHkgJiBhZGQsCglzcXVhcmUgcm9vdCwgYW5kIHVtdWxzaWRpLgoKMjAwNC0xMi0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cG1lZC5jIChzeW50aF9tdWx0KTogSW5pdGlhbGl6ZSBuZXdfbGltaXQubGF0ZW5jeSBiZWZvcmUKCW1ha2luZyBhIHJlY3Vyc2l2ZSBjYWxsLgoKMjAwNC0xMi0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBSZWplY3QgYWRkcmVzcwoJd2hvc2UgaW5kZXggaXMgaXRzZWxmIHRoZSBzdW0gb2YgdHdvIG90aGVyIHBhcnRzLgoKMjAwNC0xMi0xMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy90LXNsaWJnY2Mtc2xkIChTSExJQl9MSU5LKTogQ29ycmVjdCBzeW1saW5rLgoKMjAwNC0xMi0xMCAgVXJvcyBCaXpqYWsgIDx1cm9zQGtzcy1sb2thLnNpPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKmNtcGZwX3NmKTogQ2hhbmdlIHR5cGUgYXR0cmlidXRlIHRvICJtdWx0aSIuCgoyMDA0LTEyLTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMvMTgyODIKCSogYXR0cmlicy5jIChkZWNsX2F0dHJpYnV0ZXMpOiBVc2UgcmVsYXlvdXRfZGVjbC4KCSogYy1jb21tb24uYyAoaGFuZGxlX21vZGVfYXR0cmlidXRlKTogQ29weSBhbGwgcmVsZXZhbnQgdHlwZQoJcGFyYW1ldGVycyBmcm9tIHRoZSBuZXcgdW5kZXJseWluZyBpbnRlZ3JhbCB0eXBlLgoKMjAwNC0xMi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKHNob3J0ZW5fY29tcGFyZSk6IERvbid0IHNwZWNpYWwtY2FzZSBtaW4vbWF4dmFsCglmb3IgQyBlbnVtZXJhdGlvbnMuCgoyMDA0LTEyLTA5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfc3VicmVnKTogSW4gdGhlIENPTkNBVCBjYXNlLCBjaGVjayB3aGV0aGVyCgl0aGUgcmVxdWVzdCBzdWJyZWcgaXMgZW50aXJlbHkgY29udGFpbmVkIGluIHRoZSByZXF1ZXN0ZWQgY29tcG9uZW50LgoJKHNpbXBsaWZ5X2dlbl9zdWJyZWcpOiBSZXR1cm4gbnVsbCBmb3IgQ09OQ0FUcyB0aGF0IGFyZSByZWplY3RlZAoJYnkgc2ltcGxpZnlfc3VicmVnLgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkKTogQ3JlYXRlIGEgdGVtcG9yYXJ5IHdoZW4gY2hhbmdpbmcgdGhlCgl2YWx1ZSB0byBhbiBpbnRlZ2VyIG1vZGUuCgoyMDA0LTEyLTA5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByZWFsLmMgKGlibV9leHRlbmRlZCk6IENvcnJlY3QgY29tbWVudC4KCjIwMDQtMTItMDkgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi1hc20uaDogTmV3IGZpbGUsIDMyLzY0LWJpdCBhc3NlbWJseSBtYWNyb3MKCWZvcm1lcmx5IGluIGRhcndpbi10cmFtcC5hc20uCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLXRyYW1wLmFzbTogSW5jbHVkZSBkYXJ3aW4tYXNtLmguCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLWZwc2F2ZS5hc206IFVzZSAzMi82NC1iaXQgbWFjcm9zLgoJKiBjb25maWcvcnM2MDAwL3QtZGFyd2luOiBBZGQgZGVwZW5kZW5jaWVzLgoKMjAwNC0xMi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTcwMjUKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAodGVzdHFpXzFfbWF5YmVfc2ksIGFuZHFpXzJfbWF5YmVfc2kpOiBOZXcuCgkodGVzdF9xaV8xLCBhbmRxaV8yKTogRG8gbm90IHByb21vdGUgdG8gc2ltb2RlLgoKMjAwNC0xMi0wOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHQvMTg5MDQKCSogdHJlZS1jaHJlYy5jIChjaHJlY19jb252ZXJ0KTogVXNlIGZvbGRfY29udmVydAoJaW5zdGVhZCBvZiBjb252ZXJ0LgoKMjAwNC0xMi0wOSAgTWF0dCBSaWNlICA8cmF0bWljZUB5YWhvby5jb20+CgoJUFIgcHJlcHJvY2Vzc29yLzE4MTAyCgkqIGMtaW5jcGF0aC5jIChyZW1vdmVfZHVwbGljYXRlcyk6IENoZWNrIGZvciBjb25zdHJ1Y3QKCWVxdWFsaXR5LgoKMjAwNC0xMi0wOSAgRG9yaXQgTmFpc2hsb3MgIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogZ2Vub3Bpbml0LmMgKHZlY19yZWFsaWduX3N0b3JlX29wdGFiKTogSW5pdGlhbGl6YXRpb24gcmVtb3ZlZC4KCSogb3B0YWJzLmMgKG9wdGFiX2Zvcl90cmVlX2NvZGUpOiBSRUFMSUdOX1NUT1JFX0VYUFIgY2FzZSByZW1vdmVkLgoJKiBvcHRhYnMuaCAob3B0YWJfaW5kZXgpOiBPVElfdmVjX3JlYWxpZ25fc3RvcmUgUmVtb3ZlZC4KCSh2ZWNfcmVhbGlnbl9zdG9yZV9vcHRhYik6IFJlbW92ZWQuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElOX01BU0tfRk9SX1NUT1JFKTogUmVtb3ZlZC4KCSogdGFyZ2V0LmggKGJ1aWx0aW5fbWFza19mb3Jfc3RvcmUpOiBSZW1vdmVkLgoJKiB0cmVlLmRlZiAoUkVBTElHTl9TVE9SRV9FWFBSKTogUmVtb3ZlZC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2J1aWx0aW5fbWFza19mb3Jfc3RvcmUpOiBSZW1vdmVkLgoJKGFsdGl2ZWNfYnVpbHRpbl9tYXNrX2Zvcl9zdG9yZSk6IFJlbW92ZWQuCgkoYWx0aXZlY19pbml0X2J1aWx0aW5zKTogUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZgoJYWx0aXZlY19idWlsdGluX21hc2tfZm9yX3N0b3JlLgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9WRUNUT1JJWkVfTUlTQUxJR05FRF9NRU1fT0spOiBOZXcuCgkoVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElOX01BU0tfRk9SX0xPQUQpOiBOZXcuCgoyMDA0LTEyLTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2MtdHJlZS50ZXhpIChDT05TVFJVQ1RPUik6IE1lbnRpb24gUkFOR0VfRVhQUnMuCgoJKiB0cmVlLmRlZiAoU0VUX1RZUEUpOiBSZW1vdmUuCgkoQ09OU1RSVUNUT1IpOiBVcGRhdGUgZGVzY3JpcHRpb24uCgkqIGJ1aWx0aW5zLmMgKHR5cGVfdG9fY2xhc3MpIFJlbW92ZSBTRVRfVFlQRSBjYXNlLgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3R5cGUpOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKGlzX2Jhc2VfdHlwZSk6IExpa2V3aXNlLgoJKGdlbl9zZXRfdHlwZV9kaWUpOiBSZW1vdmUuCgkoZ2VuX3R5cGVfZGllKTogUmVtb3ZlIFNFVF9UWVBFIGNhc2UuCgkqIGV4cHIuYyAoY291bnRfdHlwZV9lbGVtZW50cyk6IExpa2V3aXNlLgoJKG1vc3RseV96ZXJvZXNfcCk6IExpa2V3aXNlLgoJKHN0b3JlX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkqIHByaW50X3RyZWUuYyAocHJpbnRfbm9kZSk6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLWJyb3dzZXIuYyAoYnJvd3NlX3RyZWUpOiBMaWtld2lzZS4KCSogdHJlZS1pbmxpbmUuYyAocmVtYXBfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHR5cGVfY29udGFpbnNfcGxhZWhvbGRlcl8xLCB0eXBlX2hhc2hfZXEsCgl2YXJpYWJseV9tb2RpZmllZF90eXBlX3AsIGluaXRpYWxpemVyX3plcm9wKTogTGlrZXdpc2UuCgkqIHRyZWUuaCAoU0VUX09SX0FSUkFZX0NIRUNLKTogUmVtb3ZlLgoJKEFHR1JFR0FURV9UWVBFX1ApOiBSZW1vdmUgU0VUX1RZUEUgY2hlY2suCgkoVFlQRV9ET01BSU4pOiBVc2UgQVJSQVlfVFlQRV9DSEVDSy4KCSogdHlwZWNsYXNzLmggKGVudW0gdHlwZV9jbGFzcyk6IFJlbW92ZSBzZXRfdHlwZV9jbGFzcy4KCSogdmFyYXNtLmMgKGNvbnN0X2hhc2hfMSk6IFJlbW92ZSBTRVRfVFlQRSBjYXNlLgoJKGNvbXBhcmVfY29uc3RhbnQsIGNvcHlfY29uc3RhbnQsIG91dHB1dF9jb25zdGFudCk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGNsYXNzaWZ5X2FyZ3VtZW50KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaGZhX2VsZW1lbnRfbW9kZSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfdHlwZV9jb2RlKTogTGlrZXdpc2UuCgoJUFIgYysrLzE2NjgxCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKTogQWRkIFJBTkdFX0VYUFIgY2FzZS4KCjIwMDQtMTItMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBVc2UgRkxBR1NfUkVHIGV2ZXJ5d2hlcmUuCgoyMDA0LTEyLTA4ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zY2FsYXJfbW9kZV9zdXBwb3J0ZWRfcCk6IFJld3JpdGUKCXRvIGF2b2lkIGNhbGwgdG8gZGVmYXVsdCBmdW5jdGlvbi4KCjIwMDQtMTItMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgMTc5ODIKCSogdmFyYXNtLmMgKHBlbmRpbmdfYXNzZW1ibGVfZXh0ZXJuYWxzKTogTmV3IHN0YXRpYy4KCShhc3NlbWJsZV9leHRlcm5hbF9yZWFsKTogTWVhdCBvZiBhc3NlbWJsZV9leHRlcm5hbCBzcGxpdCBvdXQKCXRvIHRoaXMgbmV3IGZ1bmN0aW9uLgoJKHByb2Nlc3NfcGVuZGluZ19hc3NlbWJsZV9leHRlcm5hbHMpOiBOZXcgZnVuY3Rpb24uCgkoYXNzZW1ibGVfZXh0ZXJuYWwpOiBVc2UgZ2NjX2Fzc2VydC4gIElmIGZsYWdfdW5pdF9hdF9hX3RpbWUKCWlzIHRydWUgYW5kIHRoZSBiYXNpYyB0ZXN0IHBhc3NlcywgbWVyZWx5IGNvbnMgdGhlIGRlY2wgb250bwoJdGhlIHBlbmRpbmcgbGlzdCB0byBiZSBoYW5kbGVkIGxhdGVyLgoJKiB0cmVlLmg6IERlY2xhcmUgcHJvY2Vzc19wZW5kaW5nX2Fzc2VtYmxlX2V4dGVybmFscy4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfb3B0aW1pemUpOiBDYWxsIGl0LgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmg6IERvIG5vdCBkZWZpbmUgQVNNX09VVFBVVF9FWFRFUk5BTC4KCjIwMDQtMTItMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjZmdsb29wbWFuaXAuYyAoY3JlYXRlX3ByZWhlYWRlcik6IFNwZWVkIHVwIGJ5ICJ1bnJvbGxpbmciCglhbmQgc2ltcGxpZnlpbmcgRk9SX0VBQ0hfRURHRS4KCjIwMDQtMTItMDggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9zb3J0X2luc25fZ3JvdXApOiBBbHdheXMgaW5pdGlhbGl6ZQoJcGFja2V0X2dyb3VwLT5ub3AuCgoyMDA0LTEyLTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xODY3MgoJKiBnaW1wbGlmeS5jIChjYW5vbmljYWxpemVfYWRkcl9leHByKTogQ29wZSB3aXRoIGFycmF5IG9mCglpbmNvbXBsZXRlIHR5cGUuCgkoZ2ltcGxpZnlfY29udmVyc2lvbik6IFJlbW92ZSByZWR1bmRhbnQgY2hlY2tzLgoKCSogZG9jL3Ryb3VibGUudGV4aSAoTm9uLWJ1Z3MpOiBDbGFyaWZ5IGVtcHR5IGxvb3AgcmVtb3ZhbC4KCjIwMDQtMTItMDggIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3V0cHV0XzM4N19iaW5hcnlfb3AsCglpeDg2X3ByZXBhcmVfZnBfY29tcGFyZV9hcmdzKTogRml4IGlzX3NzZSBjb25kaXRpb24uCgoyMDA0LTEyLTA3ICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X3NwbGl0X2ZwX2JyYW5jaCk6IE5ldyBydHgKCWFyZ3VtZW50LgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdXRwdXRfZnBfY29tcGFyZSk6IEZpeCBpc19zc2UgY29uZGl0aW9uLgoJVXNlIEVGTEFHU19QIG9ubHkgd2hlbiBmY29taSBpbnNuIHNob3VsZCBiZSB1c2VkLiBGaXggaGFuZGxpbmcKCW9mIGVmbGFnc19wIHZhcmlhYmxlLiBDaGFuZ2UgYWx0IHRhYmxlIGFjY29yZGluZ2x5LiBGb3Igbm9uLWZjb21pCgljb21wYXJlIGluc24gYWx3YXlzIHVzZSB0cmFpbGluZyBmbnN0c3cgaW5zbi4gRml4IGludG1vZGUKCWNhbGN1bGF0aW9uIGZvciBmaWNvbSBpbnNuLgoJKGl4ODZfc3BsaXRfZnBfYnJhbmNoKTogQWRkICJydHggcHVzaGVkIiBhcyBuZXcgcGFyYW1ldGVyLiBDYWxsCglpeDg2X2ZyZWVfZnJvbV9tZW1vcnkgd2hlbiAicHVzaGVkIiBpcyBzcGVjaWZpZWQuCgkoaXg4Nl9leHBhbmRfYnJhbmNoKTogQ2hhbmdlIGNhbGwgdG8gaXg4Nl9zcGxpdF9mcF9icmFuY2guCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqY21wZnBfMF9zZiwgKmNtcGZwXzBfZGYsICpjbXBmcF8wX3hmKToKCUNoYW5nZSBlZmxhZ3NfcCBwYXJhbWV0ZXIgaW4gY2FsbCB0byBvdXRwdXRfZnBfY29tcGFyZS4KCSgqY21wZnBfMl9zZiwgKmNtcGZwXzJfZGYsICpjbXBmcF8yX3hmKTogUmVtb3ZlLgoJKCpjbXBmcF8yX3NmXzEsICpjbXBmcF8yX2RmXzEsICpjbXBmcF8yX3hmXzEpOiBSZW5hbWUgdG8KCSpjbXBmcF8yX3NmLCAqY21wZnBfMl9kZiwgKmNtcGZwXzJfeGYuCUNoYW5nZSBlZmxhZ3NfcAoJcGFyYW1ldGVyIGluIGNhbGwgdG8gb3V0cHV0X2ZwX2NvbXBhcmUuCgkoKmNtcGZwXzJfdSk6IFJlbW92ZS4KCSgqY21wZnBfMl91XzEpOiBSZW5hbWUgdG8gKmNtcGZwXzJfdS4gQ2hhbmdlIGVmbGFnc19wIHBhcmFtZXRlcgoJaW4gY2FsbCB0byBvdXRwdXRfZnBfY29tcGFyZS4KCSgqZmljb21fMSk6IFJlbW92ZSBpbnNuIGRlZmluaXRpb24gYW5kIGNvcnJlc3BvbmRpbmcgZGVmaW5lX3NwbGl0LgoJKCpjbXBmcF9zaSk6IE5ldyBpbnNuIGRlZmluaXRpb24uCgkoKmZwX2pjY184KTogTmV3IGluc24gZGVmaW5pdGlvbi4gQWRkIG5ldyBzcGxpdHRlcnMgZm9yCgkibWVtb3J5X29wZXJhbmQiIGFuZCAicmVnaXN0ZXJfb3BlcmFuZCIuCgkoZGVmaW5lX3NwbGl0KTogQWRkIG5ldyBwYXJhbWV0ZXIgaW4gY2FsbCB0byBpeDg2X3NwbGl0X2ZwX2JyYW5jaC4KCgljb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChmbG9hdF9vcGVyYXRvcik6IE5ldyBwcmVkaWNhdGUuCgoyMDA0LTEyLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1jb21tb24uYyAodmVyaWZ5X3RyZWUpOiBEb24ndCBjaGVjayBjb2RlIGxlbmd0aCBpZiB3ZSBrbm93Cgl3ZSBhcmUgaGFuZGxpbmcgdGNjX3VuYXJ5LgoJKiBwcmludF90cmVlLmMgKHByaW50X25vZGUpOiBSZW1vdmUgY29kZSB0byBoYW5kbGUgUlRMCglhcHBlYXJpbmcgYXMgYSBwYXJ0IG9mIGEgdHJlZSBub2RlLgoJKiB0cmVlLWdpbXBsZS5jIChyZWNhbGN1bGF0ZV9zaWRlX2VmZmVjdHMpOiBSZW5hbWUgZnJvIGFzIGxlbi4KCSogdHJlZS5jIChidWlsZDFfc3RhdCk6IERvbid0IGNoZWNrIFRSRUVfQ09ERV9MRU5HVEguCgkoUFJPQ0VTU19BUkcpOiBEb24ndCByZWZlciB0byBmcm8uCgkoYnVpbGQyX3N0YXQsIGJ1aWxkM19zdGF0LCBidWlsZDRfc3RhdCk6IERvbid0IGNvbXB1dGUgZnJvLgoKMjAwNC0xMi0wNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xODI5MwoJKiBleHBtZWQuYyAoRVhBQ1RfUE9XRVJfT0ZfMl9PUl9aRVJPX1ApOiBNb3ZlIGRlZmluaXRpb24gZWFybGllci4KCShleHBhbmRfbXVsdCk6IFNwZWNpYWwgY2FzZSBwb3dlcnMgb2YgdHdvIHRvIGF2b2lkIHN5bnRoX211bHQuCgkqIGxvb3AuYyAocHJvZHVjdF9jaGVhcF9wKTogSGFuZGxlIGNhc2Ugd2hlcmUgZXhwYW5kX211bHQgZG9lcwoJcmVxdWlyZS9nZW5lcmF0ZSBhbnkgaW5zdHJ1Y3Rpb25zIChpLmUuIG11bHRpcGxpY2F0aW9uIGJ5IHplcm8pLgoKMjAwNC0xMi0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfYXJyYXlfZG9tYWluKTogU3BsaXQgb3V0IGZyb20KCWR1bXBfZ2VuZXJpY19ub2RlOyBmaXggb2ZmLWJ5LW9uZSBlcnJvciBvbiB6ZXJvLWJhc2VkIGFycmF5IGJvdW5kcy4KCShkdW1wX2dlbmVyaWNfbm9kZSk6IFVzZSBpdC4KCShwcmludF9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoKMjAwNC0xMi0wOCAgUmljaGFyZCBHdWVudGhlciA8cmljaGFyZC5ndWVudGhlckB1bmktdHVlYmluZ2VuLmRlPgoKCSogZG9jL2ludm9rZS50ZXhpOiBBZGp1c3QgZGVmYXVsdCB2YWx1ZXMgZm9yCglsYXJnZS1mdW5jdGlvbi1ncm93dGggYW5kIGlubGluZS11bml0LWdyb3d0aCB0byBtYXRjaAoJcGFyYW1zLmRlZi4gIENsYXJpZnkgdXNlZCBhbGdvcml0aG0uCgoyMDA0LTEyLTA3ICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCglQUiB0YXJnZXQvMTg0NDMKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2Fzc2VtYmxlX2ludGVnZXIpOiBBZGQgc3VwcG9ydCBmb3IKCWVtaXR0aW5nIHVuYWxpZ25lZCBwb2ludGVyLXNpemVkIGludGVnZXJzLgoKMjAwNC0xMi0wNyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCVBSIGMvMTg4NjcKCSogYy10eXBlY2suYyAoY19zdGFydF9jYXNlKTogU2V0IG9yaWdfdHlwZSB0byBlcnJvcl9tYXJrX25vZGUKCXdoZW4gdGhlIHR5cGUgb2YgdGhlIGNvbnRyb2xsaW5nIGV4cHJlc3Npb24gaXMgbm90IGEgdmFsaWQgdHlwZS4KCjIwMDQtMTItMDcgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNzM0MAoJKiB0cmVlLXNzYS1wcmUuYyAoY29tcHV0ZV9hbnRpYyk6IEZpeCBjb21tZW50LgoJKGNvbXB1dGVfYXZhaWwpOiBEbyBub3QgcmVjdXJzZSwgaW5zdGVhZCBkbyBhIERGUyB1c2luZyBhIHN0YWNrCglhbmQgYSBsb29wLgoJKGV4ZWN1dGVfcHJlKTogQWRqdXN0LgoKMjAwNC0xMi0wNyAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogYy10cmVlLmggKHN0cnVjdCBsYW5nX3R5cGUpOiBSZW5hbWUgJ29iamNfcHJvdG9jb2xzJyBmaWVsZAoJdG8gJ29iamNfaW5mbycuCgoyMDA0LTEyLTA3ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTYzMTcKCSogY29uZmlnL25ldGJzZC5oIChOT19JTVBMSUNJVF9FWFRFUk5fQyk6IERlZmluZS4KCjIwMDQtMTItMDcgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc192YWxpZF9wb2ludGVyX21vZGUpOiBNb3ZlCglwcm90b3R5cGUuLi4KCSogY29uZmlnL21pcHMvbWlwcy5jOiAuLi4gaGVyZS4gTWFrZSBzdGF0aWMuCgoyMDA0LTEyLTA3ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTg0NDIKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3ZlY3Rvcl9tb2RlX3N1cHBvcnRlZF9wKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9TQ0FMQVJfTU9ERV9TVVBQT1JURURfUCk6IERlZmluZSB0byBhYm92ZS4KCjIwMDQtMTItMDcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWNvbW1vbi5jLCBleHByLmMsIGZvbGQtY29uc3QuYywgcHJpbnQtdHJlZS5jLAoJdHJlZS1naW1wbGUuYywgdHJlZS1pbmxpbmUuYywgdHJlZS1wcmV0dHktcHJpbnQuYywKCXRyZWUtc3NhLWxvb3AtaW0uYywgdHJlZS1zc2EtbG9vcC1pdm9wdHMuYzogUmVwbGFjZSB1c2VzIG9mCglmaXJzdF9ydGxfb3Agd2l0aCBUUkVFX0NPREVfTEVOR1RILgoJKiB0cmVlLmMgKGZpcnN0X3J0bF9vcCk6IFJlbW92ZS4KCVJlcGxhY2UgdXNlcyBvZiBmaXJzdF9ydGxfb3Agd2l0aCBUUkVFX0NPREVfTEVOR1RILgoJKiB0cmVlLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBmaXJzdF9ydGxfb3AuCgoyMDA0LTEyLTA3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3QtYWl4NDMsIGNvbmZpZy9yczYwMDAvdC1haXg1MiAoU0hMSUJfTElOSyk6CglSZXZlcnQgMjAwNC0xMi0wMSBjaGFuZ2UuCgoyMDA0LTEyLTA2ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjLXRyZWUuaCAoc3RydWN0IGxhbmdfdHlwZSk6IEFkZCAnb2JqY19wcm90b2NvbHMnIGZpZWxkLgoKMjAwNC0xMi0wNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiByZWxvYWQuYyAoZmluZF92YWxpZF9jbGFzcyk6IEZpeCBsb2dpYyB0byB0ZXN0IGlubmVyIG1vZGUgYXMgd2VsbC4KCShwdXNoX3JlbG9hZCk6IFBhc3MgaW5uZXIgbW9kZS4KCjIwMDQtMTItMDYgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9WQUxJRF9QT0lOVEVSX01PREUpOiBEb2N1bWVudC4KCjIwMDQtMTItMDYgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaDogRGVmaW5lIFJFTE9DQVRBQkxFX05FRURTX0ZJWFVQIHRvIDEuCgoyMDA0LTEyLTA2ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoJICAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTg2MDEKCSogdHJlZS1jZmcuYyAodGhyZWFkX2p1bXBzLCB0aHJlYWRfanVtcHNfZnJvbV9iYik6IFJlbW92ZWQuCgkodHJlZV9mb3J3YXJkZXJfYmxvY2tfcCk6IERvIG5vdCBjb25zaWRlciBibG9ja3MgdGhhdCBhcmUgaXRzIG93bgoJc3VjY2Vzc29ycyBmb3J3YXJkZXJzLgoJKGNsZWFudXBfZm9yd2FyZGVyX2Jsb2NrcywgcmVtb3ZlX2ZvcndhcmRlcl9ibG9jayk6IE5ldyBmdW5jdGlvbnMuCgkoY2xlYW51cF90cmVlX2NmZyk6IFVzZSBjbGVhbnVwX2ZvcndhcmRlcl9ibG9ja3MgaW5zdGVhZCBvZgoJdGhyZWFkX2p1bXBzLgoJKiB0cmVlLWZsb3cuaCAoYmJfYW5uX2QpOiBSZW1vdmUgZm9yd2FyZGFibGUuCgoyMDA0LTEyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBSZW1vdmUgYW4gImlmIiB3aG9zZSBjb25kaXRpb24KCWlzIGFsd2F5cyBmYWxzZS4KCjIwMDQtMTItMDYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYy1naW1wbGlmeS5jIChnaW1wbGlmeV9jX2xvb3ApOiBJbXByb3ZlIGluaXRpYWwgaW1wbGVtZW50YXRpb25zCglmb3IgbG9vcHMgd2hvc2UgY29uZGl0aW9ucyBhcmUga25vd24gYXQgY29tcGlsZS10aW1lLgoJKiBnaW1wbGlmeS5jIChhcHBlbmRfdG9fc3RhdGVtZW50X2xpc3RfMSk6IFJlbW92ZSBzaWRlX2VmZmVjdHMKCXBhcmFtZXRlciwgdGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGlmIGl0cyBmYWxzZS4KCShhcHBlbmRfdG9fc3RhdGVtZW50X2xpc3QpOiBPbmx5IGNhbGwgYXBwZW5kX3RvX3N0YXRlbWVudF9saXN0XzEKCWlmIHQgaXMgbm9uLU5VTEwgdHJlZSB3aXRoIHNpZGUtZWZmZWN0cy4KCShhcHBlbmRfdG9fc3RhdGVtZW50X2xpc3RfZm9yY2UpOiBMaWtld2lzZSwgaWYgdCBpcyBub3QgTlVMTC4KCjIwMDQtMTItMDYgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdC5jb20+CgoJKiBidC1sb2FkLmMgKGJ0cl9kZWZfcyk6IE5ldyBtZW1iZXIgb3duX2VuZDsKCShhZGRfYnRyX3RvX2xpdmVfcmFuZ2UpOiBBZGQgc2Vjb25kIHBhcmFtZXRlci4gIENoYW5nZWQgY2FsbGVyLgoJKGNsZWFyX2J0cl9mcm9tX2xpdmVfcmFuZ2UpOiBDbGVhciBidHJzX2xpdmVfYXRfZW5kIGJpdAoJZm9yIHRoZSByZWdpc3RlciBpdHMgZGVmaW5pdGlvbiBiYXNpYyBibG9jayBpZiBvd25fZW5kIGlzIHNldC4KCShhdWdtZW50X2xpdmVfcmFuZ2UpOiBBbHNvIHRha2UgYnRyc19saXZlX2F0X2VuZCBpbnRvIGFjY291bnQuCgkoY29tYmluZV9idHJfZGVmcyk6IERvbid0IGJvdGhlciB3aXRoCglvdGhlcl9kZWYtPm90aGVyX2J0cl91c2VzX2FmdGVyX3VzZSBpZiBpdCBwZXJ0YWlucyB0byBhIGRpZmZlcmVudAoJcmVnaXN0ZXIuCgkobW92ZV9idHJfZGVmKTogU2V0IGRlZi0+b3RoZXJfYnRyX3VzZXNfYmVmb3JlX2RlZiBhZnRlcgoJY2FsbGluZyBjb21iaW5lX2J0cl9kZWZzLiIKCgkqIGJ0LWxvYWQuYyAoYXVnbWVudF9saXZlX3JhbmdlKTogTmV3IGFyZ3VtZW50IGZ1bGxfcmFuZ2UuCglDaGFuZ2VkIGFsbCBjYWxsZXJzLgoKCSogYnQtbG9hZC5jIChtb3ZlX3RyX2RlZik6IFNldCBvdGhlcl90cl91c2VzX2JlZm9yZV9kZWYKCXRha2luZyBuZXcgYnRyIGFzc2lnbm1lbnQgaW50byBhY2NvdW50LgoKMjAwNC0xMi0wNSAgRGFuaWVsIEJlcmxpbiA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNyZWF0ZV9nbG9iYWxfdmFyKTogVXNlIHZvaWRfdHlwZV9ub2RlLAoJbm90IHNpemVfdHlwZV9ub2RlLgoKMjAwNC0xMi0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogQWJvcnQgb24gQ09ORF9FWFBSIG9mCglWT0lEX1RZUEUuCgoyMDA0LTEyLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xODg0MQoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKFVOU1BFQ1ZfU0VUSk1QUl9FUik6IE5ldy4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcl9lcl9zbF8xKTogVXNlIGl0LgoJKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyX2VyXzEpOiBMaWtld2lzZS4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcl9lciwgZXhjZXB0aW9uX3JlY2VpdmVyX2VyKTogUmVtb3ZlLgoJKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogRG9uJ3Qgc3BsaXQgZm9yIGV4cGxpY2l0IHJlbG9jcyB1bnRpbAoJYWZ0ZXIgcmVsb2FkLgoJKGV4Y2VwdGlvbl9yZWNlaXZlcik6IExpa2V3aXNlLgoKMjAwNC0xMi0wNSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBta2xpYmdjYy5pbiAodmlzX2hpZGUpOiBBZGQgdGhlIHByb3RvdHlwZSBmb3IgdGhlIHRlc3QuCgoyMDA0LTEyLTA1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGMtdHlwZWNrLmMgKGNfZmluaXNoX2xvb3ApOiBJbXByb3ZlIGluaXRpYWwgaW1wbGVtZW50YXRpb25zCglmb3IgbG9vcHMgd2hvc2UgY29uZGl0aW9ucyBhcmUga25vd24gYXQgY29tcGlsZS10aW1lLgoKMjAwNC0xMi0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGJ1aWx0aW5zLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNC0xMi0wNCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBtaWRkbGUtZW5kLzE4NzMwCgkqIGVtaXQtcnRsLmMgKGdldF9maXJzdF9ub25ub3RlX2luc24sIGdldF9sYXN0X25vbm5vdGVfaW5zbik6IFdoZW4KCXRoZSBmaXJzdC9sYXN0IGluc24gaXMgYSBzZXF1ZW5jZSwgcmV0dXJuIHRoZSBmaXJzdC9sYXN0IGluc24gb2YgdGhlCglzZXF1ZW5jZS4KCglQUiBib290c3RyYXAvMTg4MDQKCSogbWtsaWJnY2MuaW4gKHZpc19oaWRlKTogVXNlIGltcGxlbWVudGF0aW9uIGluc3RlYWQgb2YgZGVjbGFyYXRpb24KCWZvciB0ZXN0IGZ1bmN0aW9uLgoKMjAwNC0xMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9leHBhbmRfdW5hbGlnbmVkX2xvYWQpOiBEb24ndCBmb3JnZXQgdG8KCXVzZSBvZnMgaW4gQldYIHR3byBieXRlIHNwZWNpYWwgY2FzZS4KCShhbHBoYV9leHBhbmRfdW5hbGlnbmVkX3N0b3JlKTogTGlrZXdpc2UuCgoyMDA0LTEyLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZ2NzZS5jIChnY3NlX21haW4pOiBBZGQgYSBjb21tZW50LgoKMjAwNC0xMi0wNCAgQW5kcmV3ICBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMTc5MDkKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX25leHRfYXJnKTogRXhwb3J0IGFuZCByZXR1cm4gdHJ1ZQoJd2hlbiB0aGVyZSBpcyBhIHdhcm5pbmcgb3IgYW4gZXJyb3IuCgkoZXhwYW5kX2J1aWx0aW5fdmFfc3RhcnQpOiBXaGVuIGZvbGRfYnVpbHRpbl9uZXh0X2FyZyByZXR1cm5zIHRydWUsCglyZXR1cm4gY29uc3QwX3J0eC4KCShleHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jYWxsX2V4cHIpOiBFcnJvciBvdXQgaWYgdGhlcmUgaXMgbm90Cgllbm91Z2ggYXJndW1lbnRzIHRvIHZhX3N0YXJ0LiBDYWxsIGZvbGRfYnVpbHRpbl9uZXh0X2FyZyBhbHNvCglvbiB0aGUgc2Vjb25kIGFyZ3VtZW50LgoJKiB0cmVlLmggKGZvbGRfYnVpbHRpbl9uZXh0X2FyZyk6IFByb3RvdHlwZS4KCjIwMDQtMTItMDQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBta2xpYmdjYy5pbjogQnVpbGQgc2hhcmVkIGxpYmdjYyBhbmQgc2hhcmVkIGxpYnVud2luZCBpbiBnY2MvLgoJRG9uJ3Qgc3Vic3Qgc2hsaWJfZGlyIGZvciBTSExJQl9MSU5LLCBTSExJQlVOV0lORF9MSU5LLAoJU0hMSUJfSU5TVEFMTCwgYW5kIFNITElCVU5XSU5EX0lOU1RBTEwuCgkqIGNvbmZpZy9pMzg2L3QtbndsZCAoU0hMSUJfTkFNRSk6IFVzZSBzaGxpYl9iYXNlX25hbWUgaW4gcGxhY2Ugb2YKCXNobGliX2RpciBhbmQgc2hsaWJfc29fbmFtZS4KCSogY29uZmlnL21pcHMvdC1zbGliZ2NjLWlyaXggKFNITElCX05BTUUpOiBMaWtld2lzZS4KCSogY29uZmlnL3QtbGlidW53aW5kLWVsZiAoU0hMSUJfTkFNRSk6IExpa2V3aXNlLgoJKiBjb25maWcvdC1zbGliZ2NjLWRhcndpbiAoU0hMSUJfTkFNRSk6IExpa2V3aXNlLgoJKiBjb25maWcvdC1zbGliZ2NjLWVsZi12ZXIgKFNITElCX05BTUUpOiBMaWtld2lzZS4KCSogY29uZmlnL3Qtc2xpYmdjYy1zbGQgKFNITElCX05BTUUpOiBMaWtld2lzZS4KCShTSExJQl9MSU5LKTogRG9uJ3QgdXNlIHNobGliX2RpciB3aGVuIGNyZWF0aW5nIHN5bWxpbmsuCgoyMDA0LTEyLTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfREVMRUdJVElNSVpFX0FERFJFU1MpOiBEb2N1bWVudCB0YXJnZXQgaG9vay4KCjIwMDQtMTItMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBhbGlhcy5jIChjb21wb25lbnRfdXNlc19wYXJlbnRfYWxpYXNfc2V0KTogUmVuYW1lIGZyb20KCWNhbl9hZGRyZXNzX3AuICBSZXR1cm4gYm9vbC4gIFJldmVyc2UgdGhlIHNlbnNlIG9mIHRoZSByZXN1bHQuCglSZWluc3RhdGUgdGhlIGNoZWNrIGZvciBhbGlhcyBzZXQgemVyby4KCShnZXRfYWxpYXNfc2V0KTogVXBkYXRlIHRvIG1hdGNoLgoJKiBhbGlhcy5oIChjb21wb25lbnRfdXNlc19wYXJlbnRfYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKHNldF9tZW1fYXR0cmlidXRlc19taW51c19iaXRwb3MpOiBMaWtld2lzZS4KCSogZXhwci5jIChleHBhbmRfYXNzaWdubWVudCk6IExpa2V3aXNlLgoJKiBleHByLmg6IFJlbW92ZSBjb21tZW50ZWQgb3V0IHByb3RvdHlwZXMgdGhhdCB3ZXJlIG1vdmVkIHRvIGFsaWFzLmguCgoyMDA0LTEyLTAzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9CVUlMRF9CVUlMVElOX1ZBX0xJU1QpOiBOZXcuCgkoVEFSR0VUX0NBTk5PVF9GT1JDRV9DT05TVF9NRU0pOiBOZXcuCgoyMDA0LTEyLTA0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIG1pZGRsZSBlbmQvMTg3MTgKCSogc2NoZWQtcmduLmMgKHNjaGVkdWxlX3JlZ2lvbik6IERvbid0IGFzc3VtZSBSRUdfU0FWRV9OT1RFcyBhcmUKCWluIHBhaXJzLgoJKiBzY2hlZC1lYmIuYyAoc2NoZWR1bGVfZWJiKTogTGlrZXdpc2UuCgoyMDA0LTEyLTAzICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKEhPU1RIT09LU19ERUZfSCk6IERlZmluZS4KCShnZ2MtY29tbW9uLm8pOiBEZXBlbmQgb24gJChIT1NUSE9PS1NfREVGX0gpLgoJKGhvc3QtZGVmYXVsdC5vKTogTGlrZXdpc2UuCgoyMDA0LTEyLTAzICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5tZCAocHVzaHFpLCBwb3BxaSwgcHVzaGhpLAoJcG9waGkpOiBBZGQgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBuYW1lIHNvIHRoYXQgdGhlCglwYXR0ZXJuIGlzIHJlY29nbml6ZWQgYXMgYSBuYW1lZCBwYXR0ZXJuLgoKMjAwNC0xMi0wMyAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKEFsdGlWZWMgQnVpbHRpbnMpOiBGaXggaW5mbyBhYm91dCBzaWduZWRuZXNzLgoKMjAwNC0xMi0wMyAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBQcm90ZWN0CglkYXJ3aW5fb25lX2J5dGVfYm9vbCB3aXRoICNpZi4KCjIwMDQtMTItMDMgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBkb2MvdG0udGV4aSAoTWlzYyk6IERvY3VtZW50IFRBUkdFVF9GT0xEX0JVSUxUSU4uCgoyMDA0LTEyLTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBta2xpYmdjYy5pbjogUHV0IGJhY2sgdGhlIGRlZmF1bHQgc2V0IG9mIEVYVFJBX01VTFRJTElCX1BBUlQuCgoyMDA0LTEyLTAzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWM6IE1vdmUgVExfQUNfR0NDX1ZFUlNJT04gaW50byBpbml0aWFsaXphdGlvbiBzZWN0aW9uLgoJU2V0IGxpYnN0ZGN4eF9pbmNkaXIgZGlyZWN0bHkuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMTItMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXNzYS1kb20uYyAocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX3BoaXMpOiBSZW1vdmUgYW4KCSJpZiIgd2hvc2UgY29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlLgoKCSogY2ZncnRsLmMgKHJ0bF92ZXJpZnlfZmxvd19pbmZvXzEpOiBVc2UgSlVNUF9QIGluc3RlYWQgb2YKCUlOU05fUC4KCjIwMDQtMTItMDIgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IE1ha2UgNjQtYml0CglEYXJ3aW4gZGVmYXVsdCB0byBvbmUtYnl0ZSBib29scy4KCjIwMDQtMTItMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgMTg3NzQKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2ltbWVkX3N1YnJlZyk6IEZhaWwgY29tcGxleCBtb2Rlcy4KCjIwMDQtMTItMDMgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZG9jL2NmZy50ZXhpIChFZGdlcyk6IFVwZGF0ZS4gRG9jdW1lbnQgdGhlIGVkZ2VfaXRlcmF0b3IgZGF0YQoJdHlwZSBhbmQgaXRzIG1ldGhvZHMuCgoyMDA0LTEyLTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5jICh3cml0ZV9jb21wbGV4X3BhcnQpOiBVc2Ugc2ltcGxpZnlfZ2VuX3N1YnJlZyB3aGVuIHRoZQoJc3VibW9kZSBpcyBhdCBsZWFzdCBhcyBsYXJnZSBhcyBhIHdvcmQuCgkocmVhZF9jb21wbGV4X3BhcnQpOiBMaWtld2lzZS4KCjIwMDQtMTItMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglQUiBib290c3RyYXAvMTg1MzIKCSogbWtsaWJnY2MuaW46IEJ1aWxkIG9uZSBzZXQgb2YgRVhUUkFfTVVMVElMSUJfUEFSVFMgZm9yCgltdWx0aWxpYiBhdCBhIHRpbWUuIERvbid0IGJ1aWxkIHRoZSBkZWZhdWx0IHNldC4gRG9uJ3QgYWRkCglFWFRSQV9NVUxUSUxJQl9QQVJUUyB0byBzaGFyZWQgbGlidW53aW5kIG5vciBsaWJnY2MuIFJlbW92ZQoJZmlsdGVyIGZvciBzaGFyZWQgbGlidW53aW5kIGFuZCBsaWJnY2MuCgoyMDA0LTEyLTAyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0YXJnZXQvMTg3NTkKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogSWYgLWZvbWl0LWZyYW1lLXBvaW50ZXIgaGFzCglhbHJlYWR5IGJlZW4gc3BlY2lmaWVkLCBpZ25vcmUgdGhlIC1tb21pdC1sZWFmLWZyYW1lLXBvaW50ZXIgb3B0aW9uLgoKMjAwNC0xMi0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9ydGwpOiBBZGQgdGhlIG1pc3NpbmcgYDsnLgoKMjAwNC0xMi0wMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB0cmVlLmMgKGlzX2F0dHJpYnV0ZV9wKTogU3BsaXQgb3V0IHRvIC4uCgkoaXNfYXR0cmlidXRlX3dpdGhfbGVuZ3RoX3ApOiBIZXJlLiAgVXNlIElERU5USUZJRVJfTEVOR1RIIGluc3RlYWQKCW9mIHN0cmxlbiBhbmQgY29tcGFyZSB0aGUgc3RyaW5nIGxlbmd0aHMgYmVmb3JlIGNhbGxpbmcgc3RyY21wLgoJKGxvb2t1cF9hdHRyaWJ1dGUpOiBDYWxsIGlzX2F0dHJpYnV0ZV93aXRoX2xlbmd0aF9wIGluc3RlYWQgb2YKCWlzX2F0dHJpYnV0ZV9wLgoKMjAwNC0xMi0wMiAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uaCAoVEFSR0VUX09QVElPTl9UUkFOU0xBVEVfVEFCTEUpOiBBZGQgLWdmdWxsIGFuZCAtZ3VzZWQuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKENDMV9TUEVDKTogRG8gbm90IGhhbmRsZSAtZ2Z1bGwgYW5kIC1ndXNlZC4KCSogY29uZmlnL2kzODYvZGFyd2luLmggKENDMV9TUEVDKTogU2FtZS4KCjIwMDQtMTItMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBvcHRhYnMuYyAobG93cGFydF9zdWJyZWdfbWF5YmVfY29weSk6IE5ldy4KCShleHBhbmRfdW5vcCwgZXhwYW5kX2Fic19ub2p1bXApOiBVc2UgaXQuCgoyMDA0LTEyLTAyICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCSogc2gubWQgKGV4dHYsIGV4dHp2KTogQWRkIHBhdHRlcm4gcHJlZGljYXRlLgoKMjAwNC0xMi0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmMgKHBoaV9hbHRlcm5hdGl2ZXNfZXF1YWwpOiBDaGVjayB0aGF0IFBISV9BUkdfREVGCglpcyBub3QgbnVsbC4KCgkqIHRyZWUtY2ZnLmMgKHBoaV9hbHRlcm5hdGl2ZXNfZXF1YWwpOiBDaGVjayB0aGF0IFBISV9BUkdfREVGCglpcyBub3QgbnVsbC4KCgkqIHRyZWUtY2ZnLmMgKHRocmVhZF9qdW1wcyk6IFJlZHVjZSB0aGUgc2l6ZSBvZiBXT1JLTElTVC4KCjIwMDQtMTItMDIgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLWVoLmM6IFJldmVydCB5ZXN0ZXJkYXkncyBjaGFuZ2UuCgoyMDA0LTEyLTAyICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHZhcmFzbS5jIChkZWNvZGVfcmVnX25hbWUpOiBSZXZlcnQgY2hhbmdlIHRvIGNoZWNrIGZvciB6ZXJvCglsZW5ndGggc3RyaW5ncy4KCShtYWtlX2RlY2xfcnRsKTogTWFrZSBzdXJlIHRoYXQgd2UgY2FsbCBkZWNvZGVfcmVnX25hbWUgb25seQoJd2hlbiBuZWVkZWQuCgoyMDA0LTEyLTAyICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHQvMTg3MTYKCSogdHJlZS12ZWN0b3JpemVyLmMgKHNscGVlbF9tYWtlX2xvb3BfaXRlcmF0ZV9udGltZXMpOiBQcm9wZXJseSBzZXQKCXRoZW4gYW5kIGVsc2UgbGFiZWxzLgoKMjAwNC0xMi0wMiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluIChXRVJST1JfRkxBR1MpOiBSZW5hbWVkIGZyb20gV0VSUk9SLgoJKFNUUklDVDJfV0FSTik6IFVzZSAkKFdFUlJPUl9GTEFHUykgaW5zdGVhZCBvZiAkKFdFUlJPUikuCgkoU1RBR0UyX0ZMQUdTX1RPX1BBU1MpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L3gtbWluZ3czMjogU2V0IFdFUlJPUl9GTEFHUyBpbnN0ZWFkIG9mIFdFUlJPUi4KCjIwMDQtMTItMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogVXNlIFRMX0FDX0dDQ19WRVJTSU9OIHRvIHNldCBnY2NfdmVyc2lvbi4gIFJlbW92ZQoJbm93LXJlZHVuZGFudCBBQ19TVUJTVHMuCgkqIGFjbG9jYWwubTQ6IEluY2x1ZGUgLi4vY29uZmlnL2djYy12ZXJzaW9uLm00LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTEyLTAyICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2Fzc2VtYmxlX2ludGVnZXIpOiBQdXQgYmFjayB0aGUKCSNpZmRlZiBSRUxPQ0FUQUJMRV9ORUVEU19GSVhVUC4KCjIwMDQtMTItMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRhcmdldC85OTA4CgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpjYWxsX3ZhbHVlXzEsICpzaWJjYWxsX3ZhbHVlXzEpOiBDb3JyZWN0CglJbnRlbCBhc3NlbWJsZXIgc3ludGF4IGJ5IHVzaW5nICVBMSBpbnN0ZWFkIG9mICUqJTEuCgoyMDA0LTEyLTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfYXNzaWdubWVudCk6IEhhbmRsZSBDT05DQVQgYm90aCBhcyBhIGZpbmFsCglkZXN0aW5hdGlvbiBhbmQgYXMgYSBtaWRkbGUgcG9pbnQuCgoyMDA0LTEyLTAxICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1laC5jIChzYXZlX2VwdHIsIHNhdmVfZmlsdCk6IE5vdyBmaWxlIHNjb3BlZCBzdGF0aWNzLgoJKGhvbm9yX3Byb3RlY3RfY2xlYW51cF9hY3Rpb25zKTogT25seSBjcmVhdGUgc2F2ZV9lcHRyIGFuZAoJc2F2ZV9maWx0IGlmIHRoZXkgZG8gbm90IGFscmVhZHkgZXhpc3QuCgkobG93ZXJfZWhfY29uc3RydWN0cyk6IFdpcGUgYWxsIGtub3dsZWRnZSBvZiBzYXZlX2VwdHIgYW5kCglzYXZlX2ZpbHQgYmVmb3JlIHJldHVybmluZy4KCjIwMDQtMTItMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXBoaW5vZGVzLmMgKHJlbW92ZV9waGlfYXJnX251bSk6IEZpeCBhIGNvbW1lbnQuCgoyMDA0LTEyLTAyICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHRhcmdldC8xNjk1MgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfYXNzZW1ibGVfaW50ZWdlcik6IFJlcGxhY2UKCSNpZmRlZiBSRUxPQ0FUQUJMRV9ORUVEU19GSVhVUCB3aXRoIGlmLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LmggKFJFTE9DQVRBQkxFX05FRURTX0ZJWFVQKTogRGVmaW5lIGluIHRlcm1zCglvZiB0YXJnZXRfZmxhZ3NfZXhwbGljaXQuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChSRUxPQ0FUQUJMRV9ORUVEU19GSVhVUCk6IERpdHRvIGZvciBiaWFyY2gKCWNhc2UuICBEZWZpbmUgYXMgMCBmb3Igbm9uLWJpYXJjaC4KCjIwMDQtMTItMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3QtYWl4NDMsIGNvbmZpZy9yczYwMDAvdC1haXg1MiAoU0hMSUJfTElOSyk6CglDaGFuZ2UgdGVtcG9yYXJ5IGZpbGUgdGFnIGZyb20gYSBwcmVmaXggdG8gYW4gaW5maXguCgoyMDA0LTEyLTAyICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogZ2NjLmMgKHN0cnVjdCBvcHRpb25fbWFwKTogQWRkIGVudHJ5IGZvciAiLS1wYXNzLWV4aXQtY29kZXMiLgoKMjAwNC0xMi0wMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHQvMTg3NjMKCVBSIHRyZWUtb3B0LzE4NzQ2CgkqIHRyZWUtc3NhLWFsaWFzLmMgKGluaXRfYWxpYXNfaW5mbyk6IEdldCBzdGF0ZW1lbnQgb3BlcmFuZHMgZm9yIGFsbAoJdGhlIHN0YXRlbWVudHMgaWYgYWxpYXNlc19jb21wdXRlZF9wIGlzIHRydWUuCgoyMDA0LTEyLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKFdFUlJPUik6IE5ldyB2YXJpYWJsZS4KCShTVFJJQ1QyX1dBUk4pOiBVc2UgaXQuCgkoU1RBR0UyX0ZMQUdTX1RPX1BBU1MpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYveC1taW5ndzMyIChXRVJST1IpOiBBZGQgLVduby1mb3JtYXQuCgoyMDA0LTEyLTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5jIChnZXRfaW5uZXJfcmVmZXJlbmNlKTogRml4IHRoaW5rbyBpbiBSRUFML0lNQUdQQVJUX0VYUFIKCW9mZnNldHRpbmcuCgoyMDA0LTEyLTAxICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xODI5MQoJKiB0cmVlLXNzYS1jb3B5LmMgKG1lcmdlX2FsaWFzX2luZm8pOiBGaXggbWVyZ2luZyBvZgoJZmxvdy1zZW5zaXRpdmUgYWxpYXMgaW5mb3JtYXRpb24uICBJZiB0aGUgbmV3IHBvaW50ZXIgaGFzIG5vCgluYW1lIHRhZywgY29weSBpdCBmcm9tIHRoZSBvcmlnaW5hbCBwb2ludGVyLiAgT3RoZXJ3aXNlLCBtYWtlCglzdXJlIHRoYXQgdGhlIHBvaW50ZWQtdG8gc2V0cyBoYXZlIGEgY29tbW9uIGludGVyc2VjdGlvbi4KCjIwMDQtMTItMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgcnRsLW9wdC8xNTI4OQoJKiBlbWl0LXJ0bC5jIChnZW5fY29tcGxleF9jb25zdGFudF9wYXJ0KTogUmVtb3ZlLgoJKGdlbl9yZWFscGFydCwgZ2VuX2ltYWdwYXJ0KTogUmVtb3ZlLgoJKiBydGwuaCAoZ2VuX3JlYWxwYXJ0LCBnZW5faW1hZ3BhcnQpOiBSZW1vdmUuCgkqIGV4cG1lZC5jIChleHRyYWN0X2JpdF9maWVsZCk6IFJlbW92ZSBDT05DQVQgaGFjayBjYXRlcmluZyB0bwoJZ2VuX3JlYWxwYXJ0L2dlbl9pbWFncGFydC4KCSogZXhwci5jICh3cml0ZV9jb21wbGV4X3BhcnQsIHJlYWRfY29tcGxleF9wYXJ0KTogTmV3LgoJKGVtaXRfbW92ZV92aWFfYWx0X21vZGUsIGVtaXRfbW92ZV92aWFfaW50ZWdlciwgZW1pdF9tb3ZlX3Jlc29sdmVfcHVzaCwKCWVtaXRfbW92ZV9jb21wbGV4X3B1c2gsIGVtaXRfbW92ZV9jb21wbGV4LCBlbWl0X21vdmVfY2Ntb2RlLAoJZW1pdF9tb3ZlX211bHRpX3dvcmQpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShlbWl0X21vdmVfaW5zbl8xKTogLi4uIGhlcmUuCgkoZXhwYW5kX2V4cHJfcmVhbF8xKSA8Q09NUExFWF9FWFBSPjogVXNlIHdyaXRlX2NvbXBsZXhfcGFydC4KCTxSRUFMUEFSVF9FWFBSLCBJTUFHUEFSVF9FWFBSPjogVXNlIHJlYWRfY29tcGxleF9wYXJ0LgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybV9zZXR1cF9yZWcpOiBIYXJkLWNvZGUgdHJhbnNmb3JtYXRpb25zCglpbnN0ZWFkIG9mIHVzaW5nIGdlbl9yZWFscGFydC9nZW5faW1hZ3BhcnQuCgoJKiBleHByLmMgKG9wdGltaXplX2JpdGZpZWxkX2Fzc2lnbm1lbnRfb3ApOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShleHBhbmRfYXNzaWdubWVudCk6IC4uLiBoZXJlLiAgVXNlIGhhbmRsZWRfY29tcG9uZW50X3AgdG8gZ2F0ZQoJZ2V0X2lubmVyX3JlZmVyZW5jZSBjb2RlLiAgU2ltcGxpZnkgTUVNIGhhbmRsaW5nLiAgU3BlY2lhbCBjYXNlCglDT05DQVQgZGVzdGluYXRpb25zLgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IFVzZSBzaW1wbGlmeV9nZW5fc3VicmVnIGluc3RlYWQKCW9mIGdlbl9ydHhfU1VCUkVHIGRpcmVjdGx5LgoKMjAwNC0xMi0wMSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgdGFyZ2V0LzE3MTA3CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChzZ2UpOiBFbmFibGUgZm9yIG5vbi1UQVJHRVRfUE9XRVIuCgkoc2d0KTogU2FtZS4KCShzbGUpOiBTYW1lLgoJKHNsdCk6IFNhbWUuCgoyMDA0LTEyLTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTg2NjcKCSogcGFyYW1zLmMgKHNldF9wYXJhbV92YWx1ZSk6IEFkZCByYW5nZSBjaGVjay4KCSogcGFyYW1zLmRlZjogQWRkIG1pbiBhbmQgbWF4IHZhbHVlcy4gUmVmb3JtYXQgbG9uZyBzdHJpbmdzLgoJKiBwYXJhbXMuaCAoc3RydWN0IHBhcmFtX2luZm8pOiBBZGQgbWluIGFuZCBtYXggZmllbGRzLgoJKGVudW0gY29tcGlsZXJfcGFyYW0pOiBBZGp1c3QgREVGUEFSQU0uCgkqIHRvcGxldi5jIChsYW5nX2luZGVwZW5kZW50X3BhcmFtcyk6IExpa2V3aXNlLgoKMjAwNC0xMi0wMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMTI4MTcKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBVc2UgcjAgZm9yIHZyc2F2ZS4KCjIwMDQtMTItMDEgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL3N0YW5kYXJkcy50ZXhpOiBVcGRhdGUgZm9yIEM5OSBUQzIuCgoyMDA0LTExLTMwICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogc2JpdG1hcC5jIChzYml0bWFwX2FueV9jb21tb25fYml0cyk6IE5ldyBmdW5jdGlvbi4KCSogc2JpdG1hcC5oIChzYml0bWFwX2FueV9jb21tb25fYml0cyk6IFByb3RvdHlwZS4KCSogbW9kdWxvLXNjaGVkLmMgKHNtc19zY2hlZHVsZV9ieV9vcmRlcik6IFVzZSBzYml0bWFwX2FueV9jb21tb25fYml0cwoJTm8gbG9uZ2VyIGFsbG9jYXRlL2ZyZWUgInBzcCIsICJwc3MiIHNiaXRtYXBzLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjb21wdXRlX2Zsb3dfaW5zZW5zaXRpdmVfYWxpYXNpbmcpOiBTaW1pbGFybHkgZm9yCgl0aGUgInJlcyIgc2JpdG1hcC4KCShncm91cF9hbGlhc2VzKTogU2ltaWxhcmx5LgoKMjAwNC0xMS0zMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X2FuYWx5emVfZGF0YV9yZWZzKTogUmVmb3JtYXQgYW5kIGF2b2lkCgl1bmluaXRpYWxpemVkIHZhcmlhYmxlLgoKMjAwNC0xMS0zMCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfd2lkZW5lZF9jb21wYXJpc29uKTogTWFrZSBzdXJlIHRoYXQgd2UncmUKCXBhc3NpbmcgYW4gSU5URUdFUl9UWVBFIHRvIGludF9maXRzX3R5cGVfcC4KCShmb2xkKTogQ2xlYW4gdXAgY29tbWVudC4KCjIwMDQtMTEtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBta2xpYmdjYy5pbjogQ29ycmVjdCBjYWxjdWxhdGlvbiBvZiBsaWJnY2Nfc19zb25hbWUgYW5kCglsaWJ1bndpbmRfc29uYW1lLiAgVXNlICRvdXQsIG5vdCAkb3V0UywgaW4gY29tbWFuZHMgZm9yCgluby1zaGFyZWQtbGlicmFyeSBjYXNlLiAgTW92ZSBFWFRSQV9NVUxUSUxJQl9QQVJUUyBydWxlcyBhYm92ZQoJbGlicmFyeSBidWlsZCBydWxlcywgbWFrZSAkbGlidW53aW5kX3NvIGFuZCAkbGliZ2NjX3Nfc28KCWRlcGVuZCBvbiB0aGVtIGluIHRoZSBub3JtYWwgZmFzaGlvbiwgYW5kIGZpbHRlciB0aG9zZSBvYmplY3RzCglvdXQgb2YgQHNobGliX29ianNALgoKMjAwNC0xMS0zMCAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMuaCAodmVjX3N0ZXBfaGVscCk6IFN1cHBvcnQgY29uc3QgdmVjdG9yIHR5cGVzLgoKMjAwNC0xMS0zMCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHQvMTgyOTgKCSogdHJlZS1vcHRpbWl6ZS5jIChpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkZCBhIG1heV9hbGlhcwoJcGFzcyByaWdodCBhZnRlciBmb2xkIGJ1aWx0aW5zLgoKMjAwNC0xMS0zMCAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtbW9kZXMuZGVmOiBBZGRlZCBjYyBtb2RlcyBkb2N1bWVudGF0aW9uLgoJKiBjb25maWcvczM5MC9zMzkwLmM6IChzMzkwX3RtX2NjbW9kZSwgczM5MF9zZWxlY3RfY2Ntb2RlLAoJczM5MF9leHBhbmRfYWRkY2MpOiBBZGRlZCBjYyBtb2RlIGNvbW1lbnRzLgoJKiBjb25maWcvczM5MC9zMzkwLm1kOiBSZW1vdmVkIG9sZCBjYyBtb2RlIGRvY3VtZW50YXRpb24uCgoyMDA0LTExLTMwICBNYXJrIERldHRpbmdlciAgPGRldHRpbmdlQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHN0cnVjdCBwcm9jZXNzb3JfY29zdHMpOiBOZXcgZGF0YSB0eXBlLgoJKHMzOTBfY29zdCwgejkwMF9jb3N0LCB6OTkwX2Nvc3QpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlcy4KCShvdmVycmlkZV9vcHRpb25zKTogSW5pdGlhbGl6ZSBzMzkwX2Nvc3QuCgkoczM5MF9ydHhfY29zdHMpOiBSZWltcGxlbWVudC4KCjIwMDQtMTEtMjkgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8xODY3MwoKCSogdHJlZS1zc2EtcHJlLmM6IFJlbW92ZSBzcGxheS10cmVlLmggaW5jbHVkZS4KCShiaXRtYXBfdmFsdWVfcmVwbGFjZV9pbl9zZXQpOiBGaXggdG8gYWRkIGlmIGl0IGRvZXMgbm90IGV4aXN0LgoJKGZpbmRfb3JfZ2VuZXJhdGVfZXhwcmVzc2lvbik6IFJlbW92ZSBub3ctd3JvbmcgY29uZGl0aW9uLgoJKGNyZWF0ZV9leHByZXNzaW9uX2J5X3BpZWNlcyk6IEZpeCBjb25kaXRpb24gYW5kIGNvbW1lbnQgcmVhc29uCglmb3IgaXQuCgkoaW5zZXJ0X2F1eCk6IEZpeCBjb25kaXRpb24gYW5kIGNvbW1lbnQgcmVhc29ucyBmb3IgaXQuCglGYWN0b3IgaW5zZXJ0aW9uIGNvZGUgZnJvbSBoZXJlLgoJKGluc2VydF9pbnRvX3ByZWRzX29mX2Jsb2NrKTogVG8gaGVyZS4gIEZpeCBjb25kaXRpb25zIGluIGZhY3RvcmVkCglmdW5jdGlvbiBhbmQgY29tbWVudCByZWFzb25zIGZvciB0aGVtLgoKMjAwNC0xMS0zMCAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0LzE4NjA3CgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X2FuYWx5emVfZGF0YV9yZWZzKTogVXNlIHRlbXBvcmFyeQoJdmFyaWFibGUgZm9yIGRhdGFfcmVmZXJlbmNlIHdoZW4gbG9va2luZyBmb3IgbWVtdGFnLgoKMjAwNC0xMS0zMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjLW9wdHMuYyAoY2hlY2tfZGVwc19lbnZpcm9ubWVudF92YXJzKTogSWYgc3BlYyAhPSBOVUxMLCBzZXQKCWRlcHNfc2Vlbi4KCjIwMDQtMTEtMzAgIERvcml0IE5haXNobG9zICA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X2dlbl9uaXRlcnNfZm9yX3Byb2xvZ19sb29wKTogVXNlCgl0cmVlX2xvd19jc3QgaW5zdGVhZCBvZiBUUkVFX0lOVF9DU1RfTE9XLgoKMjAwNC0xMS0zMCAgRG9yaXQgTmFpc2hsb3MgIDxkb3JpdEBpbC5pYm0uY29tPgoKCVBSIHRhcmdldC8xODE3MwoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9jYW5fZm9yY2VfZHJfYWxpZ25tZW50X3ApOiBSZXR1cm4gZmFsc2UgZm9yCglkZWNscyB0aGF0IGFyZSBhc3NlbWJsZWQgYmVmb3JlIHZlY3Rvcml6YXRpb24gdGFrZXMgcGxhY2UuCgkodmVjdF9jb21wdXRlX2RhdGFfcmVmX2FsaWdubWVudCk6IFNldCBERUNMX1VTRVJfQUxJR04gdG8gMS4KCjIwMDQtMTEtMzAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIHBhc3Nlcy5jIChyZXN0X29mX2hhbmRsZV9vbGRfcmVnYWxsb2MpOiBEZWxldGUgdW5yZWFjaGFibGUgYmxvY2tzCglpZiBsb2NhbF9hbGxvYyBtb2RpZmllZCBqdW1wcy4KCjIwMDQtMTEtMzAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiB2YXJhc20uYyAoZGVmYXVsdF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRG9uJ3Qgc2V0IFNZTUJPTF9GTEFHX1NNQUxMCglvbiBUTFMgc3ltYm9scy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VsZl9pbl9zbWFsbF9kYXRhX3ApOiBSZW1vdmUgVExTCgljaGVjay4KCjIwMDQtMTEtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBndGhyLWduYXQuYywgZ3Roci1nbmF0LmgsIGd0aHIuaCwgbGliZ2NjMi5oLCB1bndpbmQtZHcyLWZkZS5oCgkqIHVud2luZC5oOiBTdXJyb3VuZCBhbGwgdmlzaWJpbGl0eSBwcmFnbWFzIHdpdGggI2lmbmRlZiBISURFX0VYUE9SVFMuCgoJKiBta2xpYmdjYy5pbjogRHJhc3RpYyByZXN0cnVjdHVyZSBmb3IgY29tcHJlaGVuc2liaWxpdHkuCglSZW1vdmUgdGhlIG9sZCBoaWRkZW4tZGlyZWN0aXZlIGhhY2suCglFbGltaW5hdGUgc3VwcG9ydCBmb3IgLnR4dCBmaWxlcyBpbiBMSUIyQUREIGV0YyAobmV2ZXIgdXNlZCkuCglFbGltaW5hdGUgc3VwcG9ydCBmb3IgYXNzZW1ibHkgc291cmNlIGZpbGVzIGluIExJQjJBRERFSCogYW5kCglMSUJVTldJTkQgKGFsc28gbmV2ZXIgdXNlZCkuCglCdWlsZCB1cCBkZXBlbmRlbmN5IGxpc3RzIGZvciBsaWJyYXJpZXMgaW5jcmVtZW50YWxseS4KCUlmIHdlIGhhdmUgU0hMSUJfTElOSywgY29tcGlsZSBlYWNoIGZpbGUgdHdpY2UsIG9uY2UgZm9yIHRoZQoJc3RhdGljIGFuZCBvbmNlIGZvciB0aGUgc2hhcmVkIGxpYnJhcnk7IGFsc28gcHJvYmUgZm9yCgktZnZpc2liaWxpdHk9aGlkZGVuIGluIHRoZSBnZW5lcmF0ZWQgbGliZ2NjLm1rLiAgSWYgZm91bmQsCglwYXNzIHRoYXQgYW5kIC1ESElERV9FWFBPUlRTIHRvIHRoZSBjb21waWxhdGlvbiBvZiBldmVyeSBDCglzb3VyY2UgZmlsZSBnb2luZyBpbnRvIHRoZSBzdGF0aWMgbGlicmFyeS4gIElmIGZvdW5kLCBnZW5lcmF0ZQoJaGlkZGVuLWRpcmVjdGl2ZSBsaXN0cyBmb3IgZXZlcnkgYXNzZW1ibHkgc291cmNlIGZpbGUgZ29pbmcKCWludG8gdGhlIHN0YXRpYyBsaWJyYXJ5LCBidXQgaW5jb3Jwb3JhdGUgdGhlbSB3aXRoIC1pbmNsdWRlCglpbnN0ZWFkIG9mIGxkIC1yLgoJV3JpdGUgY29tbWVudHMgaW50byBnZW5lcmF0ZWQgbGliZ2NjLm1rIHRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLgoJKiBNYWtlZmlsZS5pbjogUGFzcyBBU01fSElEREVOX09QIHRvIG1rbGliZ2NjLgoJKiBjb25maWcvdC1zbGliZ2NjLWRhcndpbjogRGVmaW5lIEFTTV9ISURERU5fT1AuCgoJKiBjb25maWcvZGFyd2luLmggKFJFQUxfTElCR0NDX1NQRUMpOiBQdXQgLWxnY2MgYmFjayBpbgoJLVpkeW5hbWljbGliIGNhc2UuCgoyMDA0LTExLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5jIChnZXRfaW5uZXJfcmVmZXJlbmNlKTogSGFuZGxlIFJFQUwvSU1BR1BBUlRfRVhQUi4KCShoYW5kbGVkX2NvbXBvbmVudF9wKTogTGlrZXdpc2UuCgkqIGFsaWFzLmMgKGNhbl9hZGRyZXNzX3ApOiBSZWZvcm1hdCBhbmQgc2ltcGxpZnkuICBIYW5kbGUKCVJFQUwvSU1BR1BBUlRfRVhQUi4gIERvIG5vdCBkaXNhYmxlIGFkZHJlc3NhYmlsaXR5IGJhc2VkIG9uCglhbGlhcyBzZXQgemVyby4KCSogZm9sZC1jb25zdC5jIChidWlsZF9mb2xkX2FkZHJfZXhwcl93aXRoX3R5cGUpOiBSZW1vdmUgZHVwbGljYXRlCgljaGVjayBmb3IgUkVBTC9JTUFHUEFSVF9FWFBSLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jb21wb3VuZF9sdmFsKTogTGlrZXdpc2UuCgkqIHRyZWUtY2ZnLmMgKHZlcmlmeV9leHByKTogTGlrZXdpc2UuCgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9hZGRyZXNzYWJsZSwgZ2V0X2Jhc2VfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiB0cmVlLW5lc3RlZC5jIChidWlsZF9hZGRyLCBjb252ZXJ0X25vbmxvY2FsX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKGNvbnZlcnRfbG9jYWxfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKHByZXBhcmVfZGVjbF9ydGwpOiBMaWtld2lzZS4KCjIwMDQtMTEtMzAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBleHByLmMgKGVtaXRfZ3JvdXBfbG9hZF8xKTogRG9uJ3QgZGllIG9uIGNvbnN0X2ludCBvcmlnX3NyYy4KCjIwMDQtMTEtMjkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgcGNoLzE0OTQwCgkqIGNvbmZpZy9wYS9wYS1ob3N0LmMsIGNvbmZpZy9wYS94LWhwdXgsIGNvbmZpZy9wYS94LWxpbnV4OiBOZXcgZmlsZXMuCgkqIGNvbmZpZy5ob3N0IChocHBhKi0qLWhwdXgqLCBocHBhKi0qLWxpbnV4KTogRGVmaW5lIG91dF9ob3N0X2hvb2tfb2JqCglhbmQgaG9zdF94bWFrZV9maWxlIHVzaW5nIG5ldyBob3N0IGNvbmZpZ3VyYXRpb24gZmlsZXMuCgoyMDA0LTExLTI5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHJlZy1zdGFjay5jIChjaGFuZ2Vfc3RhY2spOiBJbXByb3ZlIGFsZ29yaXRobSB1c2VkIHRvIHBvcCByZWdzCglvZmYgdGhlIHN0YWNrIHRvIG1heGltaXplIGZmcmVlcCB1c2FnZSBhbmQgcmVkdWNlIGZ4Y2ggY291bnQuCgoyMDA0LTExLTMwICBKYW1lcyBBLiBNb3JyaXNvbiAgPHBoeXRob25AZ2NjLmdudS5vcmc+CgoJUFIgbWlkZGxlLWVuZC8xODU5NgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZXNldCBERUNMX0lOVElBTCB0byBlcnJvcl9tYXJrX25vZGUKCW9uIGVycm9ycy4KCjIwMDQtMTEtMzAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSwgY2FzZSBOT1BfRVhQUik6IFByb3Blcmx5IGhhbmRsZQoJUkVEVUNFX0JJVF9GSUVMRCBieSBhcHBseWluZyBpdCB0byByZXN1bHQsIG5vdCBpbnB1dCwgb2YgY29udmVyc2lvbi4KCjIwMDQtMTEtMzAgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogTWFrZWZpbGUuaW4gKFJFR1NfSCk6IERlcGVuZCBvbiAkKEJBU0lDX0JMT0NLX0gpLgoKMjAwNC0xMS0yOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYy8xODQ3OQoJKiBjLWNvbW1vbi5jIChoYW5kbGVfdmlzaWJpbGl0eV9hdHRyaWJ1dGUpOiBXaGVuIHRoZSB0eXBlIGRlY2wKCWlzIHJlYWxseSBhIGlkZW50aWZpZXIgbm9kZSwgd2FybiBhYm91dCBiZWluZyBpZ25vcmVkIGFuZCByZXR1cm4uCgoyMDA0LTExLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1jZmcuYyAodHJlZV9ub2RlX2Nhbl9iZV9zaGFyZWQpOiBGaXggdHlwbydkIGVycm9yX21hcmtfbm9kZS4KCjIwMDQtMTEtMjkgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGNmZ2NsZWFudXAuYyAob3V0Z29pbmdfZWRnZXNfbWF0Y2gsIHRyeV9jcm9zc2p1bXBfdG9fZWRnZSk6CglSZW1vdmUgQ0FTRV9EUk9QU19USFJPVUdIIGNoZWNrcywgaXQgaXMgbmV2ZXIgZGVmaW5lZC4KCSogY2ZnbHlvdXQuYyAoZml4dXBfcmVvcmRlcl9jaGFpbik6IExpa2V3aXNlLgoJKiBjZmdydGwuYyAocnRsX3ZlcmlmeV9mbG93X2luZm8pOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfY2FzZSk6IExpa2V3aXNlLgoJKiBjZmdidWlsZC5jIChtYWtlX2VkZ2VzKTogTGlrZXdpc2UuICBBbHNvIHJlbW92ZSBmb3JjZV9mYWxsdGhydSwKCWl0IGlzIG5vdyBhbHdheXMgMC4KCSogc3lzdGVtLmggKENBU0VfRFJPUFNfVEhST1VHSCk6IFBvaXNvbi4KCSogZG9jL21kLnRleGkgKGNhc2VzaSk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIG9mIENBU0VfRFJPUFNfVEhST1VHSC4KCSogZG9jL3RtLnRleGkgKGNhc2VzaSk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIG9mIENBU0VfRFJPUFNfVEhST1VHSC4KCgkqIGNvbmZpZy92ODUwL3Y4NTAuaDogUmVtb3ZlIGNvbW1lbnRlZCBvdXQgQ0FTRV9EUk9QU19USFJPVUdILgoKMjAwNC0xMS0yOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgbWlkZGxlLWVuZC8xODcyNQoJKiB0cmVlLWNmZy5jICh0cmVlX25vZGVfY2FuX2JlX3NoYXJlZCk6IEVycm9yX21hcmtfbm9kZSBjYW4gYmUKCXNoYXJlZCBhbHdheXMuCgoyMDA0LTExLTI5ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xODcxMgoJKiB0cmVlLWludG8tc3NhLmMgKGluc2VydF9waGlfbm9kZXNfZm9yKTogUGFzcyBhcmd1bWVudAoJV09SS19TVEFDSyBieSByZWZlcmVuY2UuCglDYWxsIFZFQ19zYWZlX3B1c2ggaW5zdGVhZCBvZiBWRUNfcXVpY2tfcHVzaC4KCVVwZGF0ZSBhbGwgdXNlcnMuCgoyMDA0LTExLTI5ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMvNzU0NAoJKiBNYWtlZmlsZS5pbiAoYy1sYW5nLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBjLWxhbmcuYzogSW5jbHVkZSAiYy1wcmFnbWEuaCIuCgkoZmluaXNoX2ZpbGUpOiBDYWxsIG1heWJlX2FwcGx5X3BlbmRpbmdfcHJhZ21hX3dlYWtzLgoJKiBjLXByYWdtYS5jIChtYXliZV9hcHBseV9wZW5kaW5nX3ByYWdtYV93ZWFrcyk6IE5ldyBmdW5jdGlvbi4KCSogYy1wcmFnbWEuaCAobWF5YmVfYXBwbHlfcGVuZGluZ19wcmFnbWFfd2Vha3MpOiBOZXcgcHJvdG90eXBlLgoKMjAwNC0xMS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTcyMjQKCSogY29uZmlnL2lhNjQvcHJlZGljYXRlcy5tZCAoc2RhdGFfc3ltYm9saWNfb3BlcmFuZCk6IERlbnkgb2Zmc2V0cwoJb3V0c2lkZSB0aGUgcmVmZXJlbmNlZCBvYmplY3QuCgoyMDA0LTExLTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1pZi1jb252LmMgKHJlcGxhY2VfcGhpX3dpdGhfY29uZF9tb2RpZnlfZXhwcik6IFVzZQoJRURHRV9QUkVEIGluc3RlYWQgb2YgUEhJX0FSR19FREdFLgoJKiB0cmVlLXNzYS1saXZlLmM6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmM6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS5jOiBMaWtld2lzZS4KCgkqIGNmZ3J0bC5jIChjZmdfbGF5b3V0X3JlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCk6IFNwZWVkIHVwIGJ5CglzaW1wbGlmeWluZyBlZGdlIG1hbmlwdWxhdGlvbi4KCgkqIGNmZ3J0bC5jIChydGxfdGlkeV9mYWxsdGhydV9lZGdlKTogU3BlZWQgdXAgYnkgdXNpbmcKCUVER0VfQ09VTlQuCgoJKiB0cmVlLWNmZy5jICh0cmVlX3JlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCk6IENhbGwgZmluZF9lZGdlCglvbmx5IHdoZW4gbmVlZGVkLgoKCSogY2ZnLmMgKGZsb3dfb2JzdGFjayk6IFJlbW92ZS4KCShmbG93X2ZpcnN0b2JqKTogTGlrZXdpc2UuCgkoaW5pdF9mbG93KTogUmVtb3ZlIGFsbCB1c2VzIG9mIGZsb3dfb2JzdGFjay4KCjIwMDQtMTEtMjkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiB2YXJhc20uYyAoZGVmYXVsdF9lbGZfc2VsZWN0X3NlY3Rpb25fMSk6IE9ubHkgcGFzcyBERUNMX1AgZGVjbAoJdG8gbmFtZWRfc2VjdGlvbi4KCjIwMDQtMTEtMjkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBvcHRzLmMgKGRlY29kZV9vcHRpb25zKTogRG8gbm90IHNldCBtYXgtaW5saW5lLWluc25zLXJ0bC4KCShjb21tb25faGFuZGxlX29wdGlvbik6IExpa2V3aXNlLgoJKiBwYXJhbXMuZGVmIChQQVJBTV9NQVhfSU5MSU5FX0lOU05TX1JUTCk6IFJlbW92ZS4KCSogcGFyYW1zLmggKE1BWF9JTkxJTkVfSU5TTlNfUlRMKTogUmVtb3ZlLgoJKiBkb2MvaW52b2tlLnRleGkgKG1heC1pbmxpbmUtaW5zbnMtcnRsKTogUmVtb3ZlLgoKMjAwNC0xMS0yOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvOTU3MQoJKiB2YXJhc20uYyAoZGVmYXVsdF9lbGZfc2VsZWN0X3NlY3Rpb25fMSk6IFBhc3MgZGVjbCB0byBuYW1lZF9zZWN0aW9uLgoKMjAwNC0xMS0yOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgbWlkZGxlLWVuZC8xODE2NAoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9hc21fZXhwcik6IElmIHRoZSBsZW5ndGggb2YgYW4gb3V0cHV0IG9wZXJhbmQKCWlzIHplcm8sIGRvIG5vdCBwcm9jZXNzIGl0LCBqdXN0IGxldCBpdCBnbyB0aHJvdWdoLgoKMjAwNC0xMS0yOCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCSAgICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUi8xODY2MiwgYWxzbyBiYWNrcG9ydGVkIGZyb20gdHJlZS1jbGVhbnVwLWJyYW5jaC4KCSogdHJlZS1zc2EtY2NwLmMgKHN1YnN0aXR1dGVfYW5kX2ZvbGQpOiBJZiByZXBsYWNlZCBhbnl0aGluZywKCWFsd2F5cyBjYWxsIG1heWJlX2NsZWFuX2VoX3N0bXQgYW5kIG1vZGlmeV9zdG10LgoKMjAwNC0xMS0yOCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCglQUi8xODY2NAoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChidWlsZF9zc2Ffb3BlcmFuZHMsIGNhc2UgTU9ESUZZX0VYUFIpOgoJSWdub3JlIGEgVklFV19DT05WRVJUX0VYUFIgb24gTEhTIHdoZW4gZGVjaWRpbmcgaWYgbXVzdCBvciBtYXkgZGVmLgoJKiB0cmVlLXNzYS1jY3AuYyAodmlzaXRfYXNzaWdubWVudCk6IElmIExIUyBpcyBhIFZJRVdfQ09OVkVSVF9FWFBSLAoJYWRkIGFuIGludmVyc2UgVklFV19DT05WRVJUX0VYUFIgdG8gY29uc3RfdmFsLgoKCVBSLzE4NjU3CgkqIHRyZWUtbmVzdGVkLmMgKGNoZWNrX2Zvcl9uZXN0ZWRfd2l0aF92YXJpYWJseV9tb2RpZmllZCk6IE5ldy4KCShjcmVhdGVfbmVzdGluZ190cmVlKTogQ2FsbCBpdC4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbXB1dGVfcG9pbnRzX3RvX2FuZF9hZGRyX2VzY2FwZXMpOiBSZW1vdmUKCXNwZWNpYWwgY29kZSBmb3IgYXNzaWduaW5nIHRvIG5vbi1wb2ludGVyLgoJKGlzX2VzY2FwZV9zaXRlKTogSWYgUkhTIGlzIGEgY29udmVyc2lvbiBiZXR3ZWVuIHBvaW50ZXIgYW5kIGludGVnZXIKCXR5cGVzLAl0aGlzIGlzIGFuIGVzY2FwZSBzaXRlLgoKCSogZ2NzZS5jIChpbnNlcnRfc3RvcmUpOiBFcnJvciBpZiB0cnkgdG8gaW5zZXJ0IHN0b3JlIG9uIGFibm9ybWFsIGVkZ2UuCgkoc3RvcmVfbW90aW9uKTogRG9uJ3QgbW92ZSBzdG9yZSBpZiBhbnkgZWRnZSB3ZSdkIHdhbnQgdG8gbW92ZSBpdAoJdG8gaXMgYWJub3JtYWwuCgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSwgY2FzZSBBUlJBWV9SRUYpOiBQcm9wZXJseSBmb2xkIHdpdGgKCW5vbi16ZXJvIGxvd2VyIGJvdW5kLgoKCSogZXhwci5jIChjYXRlZ29yaXplX2N0b3JfZWxlbWVudHNfMSwgY2FzZSBTVFJJTkdfQ1NUKTogTmV3IGNhc2UuCgoyMDA0LTExLTI4ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJUFIgZGlhZ25vc3RpYy8xNzU5NAoJKiBvcHRzLmMgKGZpbmRfb3B0KTogUmVxdWlyZSB0aGF0IHRoZSBpbnB1dCBtYXRjaCBhIHN3aXRjaCBleGFjdGx5CglvciB0aGF0IHRoZSBzd2l0Y2ggdGFrZSBhIGpvaW5lZCBvcHRpb24gdG8gYmUgaW50ZXJwcmV0ZWQgYXMgYQoJbWF0Y2ggZm9yIGFub3RoZXIgbGFuZ3VhZ2UuCgoyMDA0LTExLTI4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHRpbWV2YXIuZGVmIChUVl9UUkVFX1JFRFBISSk6IE5ldyB0aW1ldmFyLgoJKiB0cmVlLXNzYS5jIChwYXNzX3JlZHVuZGFudF9waGkpOiBVc2UgVFZfVFJFRV9SRURQSEkgZm9yIHRoZSB0diBpZC4KCjIwMDQtMTEtMjggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCVBSIHByZXByb2Nlc3Nvci8xNzY1MQoJKiBjLW9wdHMuYyAoc2FuaXRpemVfY3BwX29wdHMpOiBNYWtlIGZsYWdfbm9fb3V0cHV0IGltcGx5CglmbGFnX25vX2xpbmVfY29tbWFuZHMuCgkqIGMtcHBvdXRwdXQuYyAocHBfZmlsZV9jaGFuZ2UpOiBSZW1vdmUgbm93LXJlZHVuZGFudCBjaGVjayBvZgoJZmxhZ19ub19vdXRwdXQuCgoyMDA0LTExLTI4ICBUaGVvZG9yZSBBLiBSb3RoICA8dHJvdGhAb3BlbmF2ci5vcmc+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUpOiBHZW5lcmF0ZSBhCgl3YXJuaW5nIGlmIHRoZSBmdW5jdGlvbiBuYW1lIGRvZXMgbm90IGJlZ2luIHdpdGggIl9fdmVjdG9yIiBhbmQgdGhlCglmdW5jdGlvbiBoYXMgZWl0aGVyIHRoZSAnc2lnbmFsJyBvciAnaW50ZXJydXB0JyBhdHRyaWJ1dGUuCgoyMDA0LTExLTI4ICBUaGVvZG9yZSBBLiBSb3RoICA8dHJvdGhAb3BlbmF2ci5vcmc+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfbWN1X3R5cGVzKTogQWRkIGVudHJpZXMgZm9yIGF0bWVnYTQ4LAoJYXRtZWdhODgsIGF0bWVnYTE2OCwgYXR0aW55MTMsIGF0dGlueTIzMTMsIGF0OTBjYW4xMjgsIGF0bWVnYTE2NSwKCWF0bWVnYTMyNSwgYXRtZWdhMzI1MCwgYXRtZWdhNjQ1IGFuZCBhdG1lZ2E2NDUwLgoJKiBjb25maWcvYXZyL2F2ci5oIChMSU5LX1NQRUMpOiBEaXR0by4KCShMSUJfU1BFQyk6IERpdHRvLgoJKExJQkdDQ19TUEVDKTogRGl0dG8uCgkoQ1JUX0JJTlVUSUxTX1NQRUNTKTogRGl0dG8uCgkqIGNvbmZpZy9hdnIvdC1hdnIgKE1VTFRJTElCX01BVENIRVMpOiBEaXR0by4KCjIwMDQtMTEtMjggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCVBSIHByZXByb2Nlc3Nvci8xNzYxMAoJKiB0ZXN0c3VpdGUvZ2NjLmRnL2NwcC9lbXB0eS1pbmNsdWRlLmM6IE5ldyB0ZXN0Y2FzZS4KCjIwMDQtMTEtMjggIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjb3VudF9jYWxsc19hbmRfbWF5YmVfY3JlYXRlX2dsb2JhbF92YXIpOiBOZXcuCgkocGFzc19tYXliZV9jcmVhdGVfZ2xvYmFsX3Zhcik6IE5ldy4KCSogdHJlZS1wYXNzLmggKHBhc3NfbWF5YmVfY3JlYXRlX2dsb2JhbF92YXIpOiBEZWNsYXJlLgoJKiB0cmVlLW9wdGltaXplLmMgKGluaXRfdHJlZV9vcHRpbWl6YXRpb25fcGFzc2VzKTogTGluayBpbgoJcGFzc19tYXliZV9jcmVhdGVfZ2xvYmFsX3Zhci4KCjIwMDQtMTEtMjggIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLWlubGluZS5jIChpbmxpbmVfZm9yYmlkZGVuX3BfMSwgY2FzZSBSRUNPUkRfVFlQRSk6IEFkZCBjb21tZW50LgoKMjAwNC0xMS0yOCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTg0MjAKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2dlbl9zdWJyZWcpOiBSZXZlcnQgMjAwNC0xMC0yOCBjaGFuZ2UuCgoyMDA0LTExLTI4ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgkgICAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIGNvbmZpZy92YXgvdmF4LmggKENBU0VfRFJPUFNfVEhST1VHSCk6IERvbid0IGRlZmluZS4KCSogY29uZmlnL3ZheC92YXgubWQgKGNhc2VzaSk6IEVtaXQgYSB0ZXN0LWFuZC1icmFuY2ggdG8gbWFrZSBzdXJlCgl0aGF0IHRoZSBjYXNlIGlzIGluIHJhbmdlLCB0byBtYWtlIHN1cmUgdGhlIGNhc2VzaSBpbnNuIGlzIGFsd2F5cwoJaW4gcmFuZ2UgYW5kIG5ldmVyIGZhbGxzIHRocm91Z2guCgkoY2FzZXNpMSk6IEFkZCBjb21tZW50IHRvIGV4cGxhaW4gd2h5IGNhc2VzaSBuZXZlciBmYWxscyB0aHJvdWdoLgoJUmVtb3ZlIHRoZSB1bm5hbWVkIHNwZWNpYWwgY2FzZSBjYXNlc2kgcGF0dGVybi4KCjIwMDQtMTEtMjggIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCglQUiB0YXJnZXQvMTgzMzEKCSogY29uZmlnL21taXgvbW1peC5tZCAoIiptb3ZkaWNjX3JlYWxfcmV2ZXJzaWJsZSIpOiBSZW5hbWUgZnJvbQoJIiptb3ZkaWNjX3JlYWwiLiAgT25seSBtYXRjaCByZXZlcnNpYmxlIGNvbXBhcmlzb25zLgoJKCIqbW92ZGljY19yZWFsX25vbnJldmVyc2libGUiKTogTmV3IHBhdHRlcm4sIHNwbGl0IGZyb20KCSIqbW92ZGljY19yZWFsIi4gIE1hdGNoIG9ubHkgbm9ucmV2ZXJzaWJsZSBjb21wYXJpc29ucy4gIEV4Y2x1ZGUKCXJldmVyc2VkIGFsdGVybmF0aXZlcy4KCSgiKm1vdmRmY2NfcmVhbF9yZXZlcnNpYmxlIiwgIiptb3ZkZmNjX3JlYWxfbm9ucmV2ZXJzaWJsZSIpOgoJU2ltaWxhci4KCjIwMDQtMTEtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kOiBNb3ZlIGFsbCBkZWZpbmVfcHJlZGljYXRlJ3MgLi4uCgkqIGNvbmZpZy9pYTY0L3ByZWRpY2F0ZXMubWQ6IC4uLiBoZXJlLiAgTmV3IGZpbGUuCgoyMDA0LTExLTI3ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglQUiBib290c3RyYXAvMTgxNDIKCVJlLWFwcGxpZWQgZm9sbG93aW5nLCB3aXRoIHR3byBtb2RpZmljYXRpb25zOiBhZGQgYSBVUkwgZm9yIHRoZQoJZml4ZWQgY2N0b29sczsgb25seSBleGl0IGlmICRidWlsZCA9ICR0YXJnZXQuCgoJMjAwNC0xMC0xOCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCSogY29uZmlndXJlLmFjIChwb3dlcnBjLSotZGFyd2luKik6IFJlcXVpcmUgYXNzZW1ibGVyIHRvIHN1cHBvcnQKCS5tYWNoaW5lIGRpcmVjdGl2ZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0xMS0yOCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVBSIHRhcmdldC8xNjgwMAoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfcnR4X2Nvc3RzKTogSW1wcm92ZSBhY2N1cmFjeSBvZgoJRVEsIEdUVSwgYW5kIExUVSBjb3N0cy4gIEFkZCBjb3N0cyBmb3IgR1QsIExULCBhbmQgVU5PUkRFUkVELgoJRGlzdGluZ3Vpc2ggYmV0d2VlbiBTSW1vZGUgYW5kIERJbW9kZSBDT05TVF9JTlQuCgoyMDA0LTExLTI4ICBBbmRyZWFzIEZpc2NoZXIgPGFfZmlzY2hAZ214LmRlPgoJICAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0LzE2MzQzCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbGZfaW5fc21hbGxfZGF0YV9wKTogRGlzYWxsb3cKCWZ1bmN0aW9ucywgc3RyaW5ncyBhbmQgdGhyZWFkLWxvY2FsIHZhcnMuCgoyMDA0LTExLTI4ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoV09STERfU0FWRV9QKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChXT1JMRF9TQVZFX1ApOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGNvbXB1dGVfc2F2ZV93b3JsZF9pbmZvKTogVXNlIFdPUkxEX1NBVkVfUAoJdG8gYWxsb3cgbm9uLWRhcndpbiBBQklzIHRvIG9wdGltaXplIGF3YXkgY29kZS4KCShyczYwMDBfZW1pdF9wcm9sb2d1ZSwgcnM2MDAwX2VtaXRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCjIwMDQtMTEtMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLmMgKG9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdfcCk6IE5ldy4KCSogdHJlZS5oOiBBZGQgYSBwcm90b3R5cGUgZm9yIG9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdfcC4KCSogdHJlZS1jZmcuYywgdHJlZS1zc2EtZG9tLmMsIHRyZWUtc3NhLXBoaW9wdC5jLCB0cmVlLXNzYS5jOgoJUmVwbGFjZSBvcGVyYW5kX2VxdWFsX3Agd2l0aCBvcGVyYW5kX2Zvcl9waGlfYXJnX3AKCWFwcHJvcHJpYXRlbHkuCgoJKiBiYi1yZW9yZGVyLmMgKGZpbmRfdHJhY2VzXzFfcm91bmQpOiBTcGVlZCB1cCBieSB1c2luZwoJRURHRV9DT1VOVCBpbnN0ZWFkIG9mIEZPUl9FQUNIX0VER0UuCgoJKiBmb2xkLWNvbnN0LmMsIGNvbmZpZy9pMzg2L2xpbnV4NjQuaDogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTExLTI3ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIHBjaC8xNDk0MAoJKiBjb25maWcvaG9zdC1saW51eC5jIChUUllfRU1QVFlfVk1fU1BBQ0UpOiBSZXZlcnQgMjAwNC0xMS0yMiBjaGFuZ2UuCgoyMDA0LTExLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2kzODYvbGludXguaDogRml4IGEgY29tbWVudCB0eXBvLgoJKiBkb2MvZXh0ZW5kLnRleGk6IEZpeCBhIHR5cG8uCgoyMDA0LTExLTI3ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1jZmcuYyAoY2xlYW51cF90cmVlX2NmZyk6IEFsc28gcmV0dXJuIHRydWUgaWYgYmxvY2tzCglhcmUgbWVyZ2VkLgoKMjAwNC0xMS0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9saW51eDY0LmggKFJFR19OQU1FKTogRGVmaW5lLgoKMjAwNC0xMS0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2XzEpIDxjYXNlIEFCU19FWFBSPjogSWYgY3R5cGUgaXMKCXVuc2lnbmVkIGFuZCB0eXBlIHNpZ25lZCwgYnVpbGQgQUJTX0VYUFIgd2l0aCBzaWduZWRfdHlwZSAoY3R5cGUpCglhbmQgb25seSBhZnRlcndhcmRzIGNvbnZlcnQgdG8gY3R5cGUuCgoyMDA0LTExLTI3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChmdW5jdGlvbl9hcmdfYm91bmRhcnkpOiBEZWNsYXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBBUk1fQk9VTkRBUlkpOiBTaW1wbGlmeSBkZWZpbml0aW9uLgoJKFNUQUNLX0JPVU5EQVJZLCBNSVBTX1NUQUNLX0FMSUdOKTogTGlrZXdpc2UuCgkoRlVOQ1RJT05fQVJHX0JPVU5EQVJZKTogVXNlIG5ldyBmdW5jdGlvbl9hcmdfYm91bmRhcnkgZnVuY3Rpb24uCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoZnVuY3Rpb25fYXJnX2JvdW5kYXJ5KTogTmV3IGZ1bmN0aW9uLgoJSW1wb3NlIGEgbWF4aW11bSBhbGlnbm1lbnQgb2YgU1RBQ0tfQk9VTkRBUlkuCgoyMDA0LTExLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE3ODI1CgkqIGNvbWJpbmUuYyAoc3Vic3QpOiBJZ25vcmUgU1RSSUNUX0xPV19QQVJUIG5vIG1hdHRlciBpZiBSRUdfUCAobmV3KQoJb3Igbm90LgoKMjAwNC0xMS0yNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMTI3NjkKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBTZXQgY2FsbF9jb29raWUKCWZyb20gcnM2MDAwX2RlZmF1bHRfbG9uZ19jYWxscyBmb3IgbGliY2FsbHMuCgoyMDA0LTExLTI2ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwbWVkLmMgKGV4dHJhY3RfYml0X2ZpZWxkKTogV2hlbiBleHRyYWN0aW5nIGZyb20gbm9uLWludGVnZXIgbW9kZSwKCWZvcmNlIGEgU1VCUkVHIGludG8gYSByZWdpc3RlciBiZWNhdXNlIHdlIG1heSBiZSB0YWtpbmcgYSBmdXJ0aGVyCglTVUJSRUcgb2YgaXQuCgoyMDA0LTExLTI3ICBEaS1hbiBKYW4gIDxkaWFuakBmcmVlc2hlbGwub3JnPgoKCSogZG9jL2NvbnRyaWIudGV4aSAoVGltIEpvc2xpbmcpOiBSZW1vdmUgbmVzdGluZyBxdW90YXRpb24gbWFya3MuCgoyMDA0LTExLTI2ICBSb2JlcnQgTWlsbGFuICA8cm9iZXJ0bWhAZ251Lm9yZz4KCglDaGFuZ2VzIGZvciBrKmJzZC1nbnUgc3VwcG9ydC4KCSogY29uZmlnL2kzODYvbGludXguaDogRGVmaW5lIFJFR19OQU1FIHRvIGFsbG93IG92ZXJyaWRpbmcgb2YKCXJlZ2lzdGVyIG5hbWVzIGluIHNjIHN0cnVjdHVyZS4KCSogY29uZmlnL2kzODYvbGludXgtdW53aW5kLmg6IFJlZmVyIHRvIHNjLT5SRUdfTkFNRShyZWcpIGluc3RlYWQKCW9mIHNjLT5yZWcuCgkqIGNvbmZpZy5nY2M6IERldGVjdCB4ODZfNjQtaypic2QtZ251IHN5c3RlbXMuCgoyMDA0LTExLTI2ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EuYyAodmVyaWZ5X2Zsb3dfc2Vuc2l0aXZlX2FsaWFzX2luZm8pOiBEb24ndAoJcmV0cmlldmUgYW5ub3RhdGlvbnMgb3IgcG9pbnRlciBpbmZvIGJlZm9yZSBpdCdzIG5lY2Vzc2FyeS4KCVJlb3JkZXIgdGVzdHMgZm9yIGVhcmx5IGNvbnRpbnVlIG9mIHRoZSBsb29wLiAgTWFudWFsbHkgQ1NFCglTU0FfTkFNRV9WQVIuCgoyMDA0LTExLTI2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogTmV3IGZpZWxkICdkd2FyZl9oYW5kbGVfZnJhbWVfdW5zcGVjJy4KCSogdGFyZ2V0X2RlZi5oIChUQVJHRVRfRFdBUkZfSEFORExFX0ZSQU1FX1VOU1BFQyk6IERlZmluZSB0byAwLgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEFkZCBUQVJHRVRfRFdBUkZfSEFORExFX0ZSQU1FX1VOU1BFQy4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByKTogQWxsb3cgUkVHLT5SRUcgbW92ZQoJdG8gYSBmaXhlZCByZWcgaWYgdGhlIHNvdXJjZSBpcyB0aGUgUmV0dXJuIEFkZHJlc3MgcmVnaXN0ZXIuCglJbXBsZW1lbnQgbmV3IFJ1bGUgMTUuCgkqIGRvYy90bS50ZXhpIChGcmFtZSBMYXlvdXQpOiBEb2N1bWVudCBUQVJHRVRfRFdBUkZfSEFORExFX0ZSQU1FX1VOU1BFQy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKFRBUkdFVF9EV0FSRl9IQU5ETEVfRlJBTUVfVU5TUEVDKTogRGVmaW5lIHRvCglzcGFyY19kd2FyZl9oYW5kbGVfZnJhbWVfdW5zcGVjLgoJKGdlbl9zYXZlX3JlZ2lzdGVyX3dpbmRvdyk6IE5ldyBmdW5jdGlvbi4KCShlbWl0X3N0YWNrX3BvaW50ZXJfaW5jcmVtZW50KTogUmVuYW1lIGludG8gZ2VuX3N0YWNrX3BvaW50ZXJfaW5jLgoJKGVtaXRfc3RhY2tfcG9pbnRlcl9kZWNyZW1lbnQpOiBSZW5hbWUgaW50byBnZW5fc3RhY2tfcG9pbnRlcl9kZWMuCgkoZXhwYW5kX3Byb2xvZ3VlKTogQWRqdXN0IGNhbGxzIHRvIGVtaXRfc3RhY2tfcG9pbnRlcl97aW4sZGV9Y3JlbWVudC4KCVNldCBSVFhfRlJBTUVfUkVMQVRFRF9QIG9uIHRoZSBhcHByb3ByaWF0ZSBpbnNucyBhbmQgbWVtYmVycyBvZiBpbnNucy4KCShzcGFyY19hc21fZnVuY3Rpb25fcHJvbG9ndWUpOiBEbyBub3QgZW1pdCBjYWxsIGZyYW1lIGRlYnVnZ2luZyBpbmZvLgoJKGVtaXRfYW5kX3ByZXNlcnZlKTogQWRqdXN0IGNhbGxzIHRvIGVtaXRfc3RhY2tfcG9pbnRlcl97aW4sZGV9Y3JlbWVudC4KCShzcGFyY19leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShzcGFyY19kd2FyZl9oYW5kbGVfZnJhbWVfdW5zcGVjKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKHNhdmVfcmVnaXN0ZXJfd2luZG93KTogUmVtb3ZlLgoJKHNhdmVfcmVnaXN0ZXJfd2luZG93ZGkpOiBSZXdyaXRlIG1vZGVsbGVkIG9uIHRoZSBjYWxsZnJhbWUgZGVidWcgaW5mby4KCShzYXZlX3JlZ2lzdGVyX3dpbmRvd3NpKTogTGlrZXdpc2UuCgoyMDA0LTExLTI2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2LXByb3Rvcy5oOiBHdWFyZCBpZmN2dCBmdW5jdGlvbnMgZGVjbGFyYXRpb25zIHdpdGgKCUJCX0hFQUQsIG5vdCBCTE9DS19IRUFELgoKMjAwNC0xMS0yNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfaWZjdnRfbW9kaWZ5X2luc24pOiBEb24ndCBsZWF2ZSBhbG9uZQoJc2NyYXRjaCBpbnNucyB0aGF0IHNldCBhIHJlZ2lzdGVyIGxpdmUgYXQgdGhlIGpvaW4gcG9pbnQuCgoyMDA0LTExLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY3NlLmMsIHRyZWUtc3NhLW9wZXJhbmRzLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKCSogdHJlZS1jZmcuYyAodHJlZV9zcGxpdF9lZGdlKTogU3BlZWQgdXAgYnkgdXNpbmcgZmluZF9lZGdlLgoKMjAwNC0xMS0yNiAgSmFtZXMgQS4gTW9ycmlzb24gIDxwaHl0aG9uQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8xODUxMAoJKiBkb2MvZXh0ZW5kLnRleGkgKFNQQVJDIFZJUyBCdWlsdC1pbiBGdW5jdGlvbnMpOiBOZXcgc2VjdGlvbi4KCjIwMDQtMTEtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjZmdydGwuYyAodHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogU3BlZWQgdXAgdGhlCgljaGVjayB0aGF0IHRlc3RzIGlmIGFsbCBlZGdlcyBnbyB0byB0aGUgc2FtZSBkZXN0aW5hdGlvbi4KCgkqIGJpdG1hcC5jIChiaXRtYXBfZmluZF9iaXQpOiBTcGVlZCB1cCBieSB0cmF2ZXJzaW5nIGZyb20KCWhlYWQtPmZpcnN0IGlmIHRoYXQgc2VlbXMgcHJvZml0YWJsZS4KCjIwMDQtMTEtMjUgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0aW1ldmFyLmRlZiAoVFZfVFJFRV9MT09QX0lOSVQsIFRWX1RSRUVfTE9PUF9GSU5JKTogTmV3IHRpbWV2YXJzLgoJKiB0cmVlLXNzYS1sb29wLmMgKHBhc3NfbG9vcF9pbml0KTogVXNlIFRWX1RSRUVfTE9PUF9JTklULgoJKHBhc3NfbG9vcF9kb25lKTogVXNlIFRWX1RSRUVfTE9PUF9GSU5JLgoKMjAwNC0xMS0yNiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE2MzU2CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChmbG9hdGRpc2YyX2ludGVybmFsMik6IFJld3JpdGUgd2l0aAoJc2VwYXJhdGUgb3V0cHV0IHJlZ2lzdGVyIGFuZCBvbmUgbGVzcyBqdW1wLiAgRW5hYmxlIGZvciBwb3dlcnBjNjQuCgkoZmxvYXRkaXNmMik6IEFkanVzdCBmb3IgYWJvdmUuCgoyMDA0LTExLTI1ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoU1RBUlRGSUxFX1NQRUMpOiBBZGQgY3J0MC4KCShHQ0NfRFJJVkVSX0hPU1RfSU5JVElBTElaQVRJT04pOiBEZWZpbmUuCgoyMDA0LTExLTI1ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzE3OTU3CgkqIHRyZWUtY29tcGxleC5jICh2ZWN0b3JfaW5uZXJfdHlwZSk6IE5ldyB2YXJpYWJsZSBtb3ZlZCBmcm9tCglidWlsZF93b3JkX21vZGVfdmVjdG9yX3R5cGUuCgkodmVjdG9yX2xhc3RfdHlwZSk6IExpa2V3aXNlLgoJKHZlY3Rvcl9sYXN0X251bml0cyk6IExpa2V3aXNlLgoJKGJ1aWxkX3dvcmRfbW9kZV92ZWN0b3JfdHlwZSk6IFVzZSB0aGUgbmV3IHZhcmlhYmxlcy4KCSogTWFrZWZpbGUuaW4gKHRyZWUtY29tcGxleC5vKTogQWRkIGd0LXRyZWUtY29tcGxleC5oICQoR0dDX0gpLgoJKEdURklMRVMpOiBBZGQgdHJlZS1jb21wbGV4LmMuCgkoZ3QtdHJlZS1jb21wbGV4LmgpOiBOZXcgcnVsZSwgYWRkIGl0IHRvIHRoZSByZXN0IG9mIHRoZSBndC0qIHJ1bGVzLgoKMjAwNC0xMS0yNSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lCglfX1hURU5TQV9XSU5ET1dFRF9BQklfXy4KCjIwMDQtMTEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X3N0YWNrX2FkanVzdCk6IEFkZCBhZnRlcl9wIGFyZ3VtZW50LiAgU2F2ZQoJYXJnc19zaXplIGFkanVzdG1lbnRzIGZvciBjYWxscyBldmVuIHdpdGggY2ZhIGFzIHN0YWNrIHBvaW50ZXIuCglTZWFyY2ggY2FsbHMgZm9yIHN0YWNrIGFkanVzdG1lbnRzIGFmdGVyIHRoZSBpbnNuIGlzIGlzc3VlZC4KCShkd2FyZjJvdXRfZnJhbWVfZGVidWcpOiBBZGQgYWZ0ZXJfcCBhcmd1bWVudDsgcGFzcyBpdCBvbi4KCSogZHdhcmYyb3V0LmggKGR3YXJmMm91dF9mcmFtZV9kZWJ1Zyk6IFVwZGF0ZSB0byBtYXRjaC4KCSogZmluYWwuYyAoZmluYWxfc3RhcnRfZnVuY3Rpb24sIGZpbmFsX3NjYW5faW5zbik6IExpa2V3aXNlLgoKMjAwNC0xMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBjKysvNjc2NAoJKiByZWxvYWQxLmMgKHNldF9pbml0aWFsX2VoX2xhYmVsX29mZnNldCk6IE5ldy4KCShzZXRfaW5pdGlhbF9sYWJlbF9vZmZzZXRzKTogVXNlIGl0LgoKMjAwNC0xMS0yNSAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvc2guYyAoc2hfb3V0cHV0X21pX3RodW5rKTogSW5pdGlhbGl6ZSBiaXRtYXAgb2JzdGFja3MKCWJlZm9yZSBjYWxsaW5nIGxpZmVfYW5hbHlzaXMgYW5kIHJlbGVhc2UgdGhlbSBhZnRlci4KCjIwMDQtMTEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChzdWJzdGl0dXRlX3NpbmdsZV91c2VfdmFycyk6IFJlbW92ZQoJZHVwbGljYXRlIGNvZGUuCgoyMDA0LTExLTI1ICBBbmRyZXcgUGluc2tpIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogYml0bWFwLmggKEJJVE1BUF9YTUFMTE9DKTogVXNlIEJJVE1BUF9BTExPQyBhbmQgbm90CglCSVRNQVBfT0JTVEFDS19BTExPQy4KCShCSVRNQVBfWEZSRUUpOiBVc2UgQklUTUFQX0ZSRUUgYW5kIG5vdCBCSVRNQVBfT0JTVEFDS19GUkVFLgoKMjAwNC0xMS0yNSAgQW5kcmV3IFBpbnNraSA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglwYXJ0cyBvZiBQUiBydGwtb3B0LzE4NDYzLCBydGwtb3B0LzE3NjQ3CgkqIGNzZS5jIChjYW5vbl9mb3JfYWRkcmVzcyk6IE5ldyBmdW5jdGlvbi4KCShmaW5kX2Jlc3RfYWRkcik6IENhbGwgY2Fub25fZm9yX2FkZHJlc3MgYmVmb3JlIGdldHRpbmcgdGhlCglhZGRyZXNzJ3MgY29zdCB3aGVuIGNoZWNraW5nIGlmIHdlIHNob3VsZCB0YWtlIHRoYXQgYWRkcmVzcy4KCjIwMDQtMTEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXBoaW5vZGVzLmMgKGFkZF9waGlfYXJnKTogVGFrZSAidHJlZSIgaW5zdGVhZCBvZgoJInRyZWUgKiIgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LgoJKiB0cmVlLWZsb3cuaDogVXBkYXRlIHRoZSBwcm90b3R5cGUgb2YgYWRkX3BoaV9hcmcuCgkqIGxhbWJkYS1jb2RlLmMsIHRyZWUtY2ZnLmMsIHRyZWUtaW50by1zc2EuYywKCXRyZWUtc3NhLWxvb3AtaXZvcHRzLmMsIHRyZWUtc3NhLWxvb3AtbWFuaXAuYywgdHJlZS1zc2EtcHJlLmMsCgl0cmVlLXNzYS10aHJlYWR1cGRhdGUuYywgdHJlZS1zc2EuYywgdHJlZS10YWlsY2FsbC5jLAoJdHJlZS12ZWN0b3JpemVyLmM6IFVwZGF0ZSBhbGwgY2FsbCBzaXRlcyBvZiBhZGRfcGhpX2FyZy4KCjIwMDQtMTEtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiaXRtYXAuYyAoYml0bWFwX21hbGxvY19hbGxvYywgYml0bWFwX21hbGxvY19mcmVlKTogUmVtb3ZlLgoJKiBiaXRtYXAuaCAoYml0bWFwX21hbGxvY19hbGxvYywgYml0bWFwX21hbGxvY19mcmVlKTogUmVtb3ZlLgoJKEJJVE1BUF9YTUFMTE9DKTogRm9yd2FyZCB0byBCSVRNQVBfT0JTVEFDS19BTExPQy4KCShCSVRNQVBfWEZSRUUpOiBGb3J3YXJkIHRvIEJJVE1BUF9PQlNUQUNLX0ZSRUUuCgoyMDA0LTExLTI1ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTg1ODcKCSogdHJlZS1mbG93LWlubGluZS5oIChtYXJrX2NhbGxfY2xvYmJlcmVkLCBtYXJrX25vbl9hZGRyZXNzYWJsZSk6IEZsYWcKCWNhbGwgY2xvYmJlcmVkIGNhY2hlcyBhcyBpbnZhbGlkLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChzc2FfY2FsbF9jbG9iYmVyZWRfY2FjaGVfdmFsaWQpOiBOZXcuICBGbGFnCglpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGwgY2xvYmJlcmVkIG9wZXJhbmQgY2FjaGUgaXMgdmFsaWQuCgkoc3NhX3JvX2NhbGxfY2FjaGVfdmFsaWQpOiBOZXcuICBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUKCXB1cmUvY29uc3QgY2FsbCBvcGVyYW5kIGNhY2hlIGlzIHZhbGlkLgoJKGNsb2JiZXJlZF92X21heV9kZWZzLCBjbG9iYmVyZWRfdnVzZXMsIHJvX2NhbGxfdnVzZXMpOiBOZXcuICBDYWNoZWQKCWxpc3Qgb2Ygb3BlcmFuZHMgZm9yIGNhY2hlZCBjYWxsIHZpcnR1YWwgb3BlcmFuZHMuCgkoY2xvYmJlcmVkX2FsaWFzZWRfbG9hZHMsIGNsb2JiZXJlZF9hbGlhc2VkX3N0b3JlcywKCXJvX2NhbGxfYWxpYXNlZF9sb2FkKTogTmV3LiAgZmxhZ3MgY2FjaGluZyB3aGV0aGVyIGFsaWFzIGJpdHMgYXJlCgl0byBiZSBzZXQgaW4gY2FsbCBzdG10J3MuCgkoZmluaV9zc2Ffb3BlcmFuZHMpOiBSZW1vdmUgY2FsbCBvcGVyYW5kIGNhY2hlcyBpZiBwcmVzZW50LgoJKGdldF9leHByX29wZXJhbmRzLCBnZXRfYXNtX2V4cHJfb3BlcmFuZHMsCglnZXRfaW5kaXJlY3RfcmVmX29wZXJhbmRzKTogUGFzcyBzdG10IGFubm90YXRpb24gdG8gYWRkX3N0bXRfb3BlcmFuZC4KCShnZXRfY2FsbF9leHByX29wZXJhbmRzKTogQWRkIGNhbGwgY2xvYmJlcmVkIHZhcmlhYmxlcyBmaXJzdC4KCShhZGRfc3RtdF9vcGVyYW5kKTogVGFrZSBzdG10IGFubm90YXRpb24gcmF0aGVyIHRoYW4gc3RtdCBhcyBhIHBhcmFtLgoJKGFkZF9jYWxsX2Nsb2JiZXJfb3BzLCBhZGRfY2FsbF9yZWFkX29wcyk6IFVzZSB0aGUgY2FsbCBvcGVyYW5kIGNhY2hlCglpZiBpdCBpcyB2YWxpZCwgb3RoZXJpc2UgZmlsbCB0aGUgY2FjaGUuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmggKHNzYV9jbG9iYmVyZWRfY2FjaGVfdmFsaWQpOiBEZWNsYXJlIGV4dGVybi4KCSogdHJlZS1mbG93LmggKHN0cnVjdCB2YXJfYW5uX2QpOiBBZGQgaW5fdnVzZV9saXN0IGFuZAoJaW5fdl9tYXlfZGVmX2xpc3QgYml0cy4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoY2xlYW51cF92X21heV9kZWZzKTogTmV3LiAgQ2xlYXIgdGhlCglpbl9saXN0IGJpdHMgZm9yIHRoZSB2X21heV9kZWYgZWxlbWVudHMgYW5kIGVtcHR5IHRoZSBvcGVyYW5kCglidWlsZCBhcnJheQoJKGZpbmFsaXplX3NzYV92dXNlcyk6IFVzZSBjbGVhbnVwX3ZfbWF5X2RlZnMgYW5kIHJlbW92ZSByZWR1bmRhbnQKCVZVU0VTIGJ5IGNoZWNraW5nIHRoZSBpbl92X21heV9kZWZfbGlzdCBiaXQuCgkoYXBwZW5kX3ZfbWF5X2RlZiwgYXBwZW5kX3Z1c2UpOiBVc2UgdGhlIGluX2xpc3QgYml0IHJhdGhlciB0aGFuCglzY2FubmluZyB0aGUgYXJyYXkgZm9yIGR1cGxpY2F0ZXMuCgoyMDA0LTExLTI1ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfc2hvcnRfZGlzcGxhY2VtZW50KTogVU5TUEVDX0dPVE5UUE9GRgoJZGlzcGxhY2VtZW50cyBhcmUgbm90IHNob3J0LgoKMjAwNC0xMS0yNSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogVXNlIHMzOTBfbG9hZF9hZGRyZXNzCgl0byBsb2FkIGFkZHJlc3Nlcy4KCjIwMDQtMTEtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE4MDAxCgkqIGMtY29tbW9uLmggKGx2YWx1ZV91c2UpOiBNb3ZlIGhlcmUgZnJvbSBjLWN0eXBlY2suYy4KCShsdmFsdWVfb3JfZWxzZSk6IERlY2xhcmUuCgkqIGMtY29tbW9uLmMgKGx2YWx1ZV9vcl9lbHNlKTogTW92ZSBoZXJlIGZyb20gYy10eXBlY2suYy4KCSogYy10eXBlY2suYyAobHZhbHVlX3VzZSk6IFJlbW92ZS4KCShsdmFsdWVfb3JfZWxzZSk6IFJlbW92ZS4KCglQUiBjKysvMTg1NTYKCSogdG9wbGV2LmMgKGNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBTZXQgREVDTF9JR05PUkVEX1Agb24KCXVuZW1pdHRlZCB2YXJpYWJsZXMgd2l0aCBzdGF0aWMgc3RvcmFnZSBkdXJhdGlvbi4KCjIwMDQtMTEtMjUgIEdlcmFsZCBQZmVpZmVyICA8Z2VyYWxkQHBmZWlmZXIuY29tPgoKCSogdHJlZS1jZmcuYyAodHJlZV92ZXJpZnlfZmxvd19pbmZvKTogRG8gbm90IHRlcm1pbmF0ZSBlcnJvcigpCgltZXNzYWdlIHdpdGggXG4uCgoyMDA0LTExLTI1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChWSXNob3J0KTogTmV3IG1vZGUgbWFjcm8uCgkoYWx0aXZlY192YWRkdWJzLCBhbHRpdmVjX3ZhZGR1aHMsIGFsdGl2ZWNfdmFkZHV3cyk6IFJlcGxhY2UKCXdpdGggLi4uCgkoYWx0aXZlY192YWRkdTxWSV9jaGFyPnMpOiAuLi4gdGhpcy4KCShhbHRpdmVjX3ZhZGRzYnMsIGFsdGl2ZWNfdmFkZHNocywgYWx0aXZlY192YWRkc3dzKTogUmVwbGFjZQoJd2l0aCAuLi4KCShhbHRpdmVjX3ZhZGRzPFZJX2NoYXI+cyk6IC4uLiB0aGlzLgoJKGFsdGl2ZWNfdnN1YnVicywgYWx0aXZlY192c3VidWhzLCBhbHRpdmVjX3ZzdWJ1d3MpOiBSZXBsYWNlCgl3aXRoIC4uLgoJKGFsdGl2ZWNfdnN1YnU8VklfY2hhcj5zKTogLi4uIHRoaXMuCgkoYWx0aXZlY192c3Vic2JzLCBhbHRpdmVjX3ZzdWJzaHMsIGFsdGl2ZWNfdnN1YnN3cyk6IFJlcGxhY2UKCXdpdGggLi4uCgkoYWx0aXZlY192c3ViczxWSV9jaGFyPnMpOiAuLi4gdGhpcy4KCShhbHRpdmVjX3Zhdmd1YiwgYWx0aXZlY192YXZndWgsIGFsdGl2ZWNfdmF2Z3V3KTogUmVwbGFjZQoJd2l0aCAuLi4KCShhbHRpdmVjX3Zhdmd1PFZJX2NoYXI+KTogLi4uIHRoaXMuCgkoYWx0aXZlY192YXZnc2IsIGFsdGl2ZWNfdmF2Z3NoLCBhbHRpdmVjX3Zhdmdzdyk6IFJlcGxhY2UKCXdpdGggLi4uCgkoYWx0aXZlY192YXZnczxWSV9jaGFyPik6IC4uLiB0aGlzLgoJKGFsdGl2ZWNfdm1zdW11Ym0sIGFsdGl2ZWNfdm1zdW11aG0pOiBSZXBsYWNlIHdpdGggLi4uCgkoYWx0aXZlY192bXN1bXU8VklfY2hhcj5tKTogLi4uIHRoaXMuCgkoYWx0aXZlY192bXN1bW1ibSwgYWx0aXZlY192bXN1bW1obSk6IFJlcGxhY2UKCXdpdGggLi4uCgkoYWx0aXZlY192bXN1bW08VklfY2hhcj5tKTogLi4uIHRoaXMuCgkoYWx0aXZlY192YW5kYyk6IFJlbW92ZS4KCSgqYW5kYzxtb2RlPjMpOiBSZW5hbWVkIHRvIC4uLgoJKGFuZGM8bW9kZT4zKTogLi4uIGhlcmUuIFN3YXAgb3BlcmFuZCAxIGFuZCAyIG51bWJlcmluZy4KCShhbHRpdmVjX3ZybGIsIGFsdGl2ZWNfdnJsaCwgYWx0aXZlY192cmx3KTogUmVwbGFjZQoJd2l0aCAuLi4KCShhbHRpdmVjX3ZybDxWSV9jaGFyPik6IC4uLiB0aGlzLgoJKGFsdGl2ZWNfdnNsYiwgYWx0aXZlY192c2xoLCBhbHRpdmVjX3ZzbHcpOiBSZXBsYWNlCgl3aXRoIC4uLgoJKGFsdGl2ZWNfdnNsPFZJX2NoYXI+KTogLi4uIHRoaXMuCgkoYWx0aXZlY192c3JiLCBhbHRpdmVjX3ZzcmgsIGFsdGl2ZWNfdnNydyk6IFJlcGxhY2UKCXdpdGggLi4uCgkoYWx0aXZlY192c3I8VklfY2hhcj4pOiAuLi4gdGhpcy4KCShhbHRpdmVjX3ZzcmFiLCBhbHRpdmVjX3ZzcmFoLCBhbHRpdmVjX3ZzcmF3KTogUmVwbGFjZQoJd2l0aCAuLi4KCShhbHRpdmVjX3ZzcmE8VklfY2hhcj4pOiAuLi4gdGhpcy4KCShhbHRpdmVjX3ZzdW00c2JzLCBhbHRpdmVjX3ZzdW00c2hzKTogUmVwbGFjZSB3aXRoIC4uLgoJKGFsdGl2ZWNfdnN1bTRzPFZJX2NoYXI+cyk6IC4uLiB0aGlzLgoJKGFsdGl2ZWNfdnBlcm1fNHNpLCBhbHRpdmVjX3ZwZXJtXzhoaSwgYWx0aXZlY192cGVybV8xNnFpKTogUmVwbGFjZQoJd2l0aCAuLi4KCShhbHRpdmVjX3ZwZXJtXzxtb2RlPik6IC4uLiB0aGlzLgoJKGFsdGl2ZWNfdnNlbF80c2YpOiBSZW5hbWUgdG8gLi4uCgkoYWx0aXZlY192c2VsX3Y0c2YpOiAuLi4gaGVyZS4KCShhbHRpdmVjX3ZzZWxfNHNpLCBhbHRpdmVjX3ZzZWxfOGhpLCBhbHRpdmVjX3ZzZWxfMTZxaSk6IFJlcGxhY2UKCXdpdGggLi4uCgkoYWx0aXZlY192c2VsXzxtb2RlPik6IC4uLiB0aGlzLgoJKGFsdGl2ZWNfdnNsZG9pXzRzaSwgYWx0aXZlY192c2xkb2lfOGhpLAoJYWx0aXZlY192c2xkb2lfMTZxaSk6IFJlbmFtZSB0byAuLi4KCShhbHRpdmVjX3ZzbGRvaV92NHNpLCBhbHRpdmVjX3ZzbGRvaV92OGhpLAoJYWx0aXZlY192c2xkb2lfdjE2cWkpOiAuLi4gaGVyZS4KCShhbHRpdmVjX3ZzbGRvaV80c2YpOiBSZW5hbWUgdG8gLi4uCgkoYWx0aXZlY192c2xkb2lfdjRzZik6IC4uLiBoZXJlLgoJKGFsdGl2ZWNfcHJlZGljYXRlX3Y0c2ksIGFsdGl2ZWNfcHJlZGljYXRlX3Y4aGksCglhbHRpdmVjX3ByZWRpY2F0ZV92MTZxaSk6IFJlcGxhY2Ugd2l0aCAuLi4KCShhbHRpdmVjX3ByZWRpY2F0ZV88bW9kZT4pOiAuLi4gdGhpcy4KCShhbHRpdmVjX2x2ZWJ4LCBhbHRpdmVjX2x2ZWh4LCBhbHRpdmVjX2x2ZXd4KTogUmVwbGFjZQoJd2l0aCAuLi4KCShhbHRpdmVjX2x2ZTxWSV9jaGFyPngpOiAuLi4gdGhpcy4KCShhbHRpdmVjX3N0dmVieCwgYWx0aXZlY19zdHZlaHgsIGFsdGl2ZWNfc3R2ZXd4KTogUmVwbGFjZQoJd2l0aCAuLi4KCShhbHRpdmVjX3N0dmU8VklfY2hhcj54KTogLi4uIHRoaXMuCgkoYWJzdjE2cWkyLCBhYnN2OGhpMiwgYWJzdjRzaTIpOiBSZXBsYWNlCgl3aXRoIC4uLgoJKGFiczxtb2RlPjIpOiAuLi4gdGhpcy4KCShhbHRpdmVjX2Fic3NfdjE2cWksIGFsdGl2ZWNfYWJzc192OGhpLCBhbHRpdmVjX2Fic3NfdjRzaSk6IFJlcGxhY2UKCXdpdGggLi4uCgkoYWx0aXZlY19hYnNzXzxtb2RlPik6IC4uLiB0aGlzLgoJKHZlY19yZWFsaWduX2xvYWRfdjE2cWksIHZlY19yZWFsaWduX2xvYWRfdjhoaSwKCXZlY19yZWFsaWduX2xvYWRfdjRzaSk6IFJlcGxhY2Ugd2l0aCAuLi4KCSh2ZWNfcmVhbGlnbl9sb2FkXzxtb2RlPik6IC4uLiB0aGlzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChiZGVzY18zYXJnLCBiZGVzY18yYXJnKTogVXBkYXRlIHR3ZWFrZWQKCWluc24gbmFtZXMuCgkocnM2MDAwX2V4cGFuZF90ZXJub3BfYnVpbHRpbik6IExpa2V3aXNlLgoKMjAwNC0xMS0yNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogRG9uJ3Qgc3VwcGx5IC12IHRvIGxpbmtlci4KCjIwMDQtMTEtMjUgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBVc2UgJXFzCglpbnN0ZWFkIG9mIGAlcycgaW4gZGlhZ25vc3RpYy4KCjIwMDQtMTEtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChPQlNUQUNLX0FMTE9DX1JFR19TRVQpOiBBZGp1c3QuCgkoRlJFRV9SRUdfU0VUKTogQWRqdXN0LgoJKiBiaXRtYXAuYyAoYml0bWFwX29ic3RhY2tfZnJlZSk6IENvcGUgd2l0aCBOVUxMIGJpdG1hcC4KCSogYml0bWFwLmggKEJJVE1BUF9PQlNUQUNLX0FMTE9DKTogUmVuYW1lIHRvIC4uLgoJKEJJVE1BUF9BTExPQyk6IC4uLiBoZXJlLgoJKEJJVE1BUF9PQlNUQUNLX0ZSRUUpOiBSZW5hbWUgdG8gLi4uCgkoQklUTUFQX0ZSRUUpOiBEb24ndCBjaGVjayBmb3IgTlVMTCBiaXRtYXAgaGVyZS4KCSogdHJlZS1zc2EtcHJlLmMgKHZhbHVlX2luc2VydF9pbnRvX3NldF9iaXRtYXAsCgliaXRtYXBfc2V0X25ldyk6IFVzZSBuZXcgbmFtZXMuCgoJKiBidC1sb2FkLmMgKG1pZ3JhdGVfYnRyX2RlZnMpOiBSZW1vdmUgdW5uZWVkZWQgTlVMTCBjaGVjay4KCSogZGYuYyAoZGZfZnJlZSk6IExpa2V3aXNlLgoJKiByYS1idWlsZC5jIChyYV9idWlsZF9mcmVlLCByYV9idWlsZF9mcmVlX2FsbCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChzZXRfdXNlX2l2X2Nvc3QpOiBMaWtld2lzZS4KCgkqIGJhc2ljLWJsb2NrLmggKE9CU1RBQ0tfQUxMT0NfUkVHX1NFVCk6IFJlbmFtZSB0byAuLi4KCShBTExPQ19SRUdfU0VUKTogLi4uIGhlcmUuCgkoRlJFRV9SRUdfU0VUKTogQWRqdXN0LgoJKFhNQUxMT0NfUkVHX1NFVCwgWEZSRUVfUkVHX1NFVCk6IFJlbW92ZS4KCSogYmItcmVvcmRlci5jIChmaXhfY3Jvc3NpbmdfY29uZGl0aW9uYWxfYnJhbmNoZXMpOiBBZGp1c3QuCgkqIGNmZ2xheW91dC5jIChjZmdfbGF5b3V0X2R1cGxpY2F0ZV9iYik6IEFkanVzdC4KCSogY2ZncnRsLmMgKHJ0bF9zcGxpdF9ibG9jaywgcnRsX3NwbGl0X2VkZ2UsCglzYWZlX2luc2VydF9pbnNuX29uX2VkZ2UsIGNmZ19sYXlvdXRfc3BsaXRfZWRnZSk6IEFkanVzdC4KCSogZmxvdy5jICh1cGRhdGVfbGlmZV9pbmZvLCBjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSwKCWFsbG9jYXRlX2JiX2xpZmVfZGF0YSwgaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IEFkanVzdC4KCSogZ2xvYmFsLmMgKGJ1aWxkX2luc25fY2hhaW4pOiBBZGp1c3QuCgkqIGlmY3Z0LmMgKGRlYWRfb3JfcHJlZGljYWJsZSk6IEFkanVzdC4KCSogbG9vcC1pdi5jIChzaW1wbGlmeV91c2luZ19pbml0aWFsX3ZhbHVlcyk6IEFkanVzdC4KCSogcmVjb2cuYyAocGVlcGhvbGUyX29wdGltaXplKTogQWRqdXN0LgoJKiBzY2hlZC1kZXBzLmMgKGluaXRfZGVwc19nbG9iYWwpOiBBZGp1c3QuCgoyMDA0LTExLTI1ICBSYWxmIENvcnNlcGl1cyA8cmFsZi5jb3JzZXBpdXNAcnRlbXMub3JnPgoKCSogY29uZmlnLmdjYyAoYXZyLSotcnRlbXMqKTogRml4IHR5cG8uCgoyMDA0LTExLTI1ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCSogc2guYyAoc2hfb3V0cHV0X21pX3RodW5rKTogRG8gbm90IGNhbGwgcmVnc2V0X3JlbGVhc2VfbWVtb3J5LgoKMjAwNC0xMS0yNCAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbXB1dGVfZmxvd19pbnNlbnNpdGl2ZV9hbGlhc2luZyk6IFJlZHVjZQoJdGhlIG51bWJlciBvZiBxdWVyaWVzIHRvIHJhbmRvbSBlbGVtZW50cyBpbiB0aGUgYWktPndyaXR0ZW5fdmFycwoJYml0bWFwLgoKMjAwNC0xMS0yNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBEaXNhYmxlIHg4NyBmYW5jeSBtYXRoCglpbnRyaW5zaWNzIGlmIC1tZnBtYXRoPSBkb2Vzbid0IGluY2x1ZGUgMzg3IChkZWZhdWx0IG9uIHg4Nl82NCkuCgoyMDA0LTExLTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogVHdlYWsgdGVzdCBmb3IgSEFWRV9ERUNMX0xER0VUTkFNRSB0byBhdm9pZCBhCglzeXN0ZW0gaGVhZGVyIGNvbmZsaWN0IG9uIEFJWCA1LjIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMTEtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLW91dG9mLXNzYS5jIChjb2FsZXNjZV9hYm5vcm1hbF9lZGdlcyk6IFVzZSBlLT5kZXN0X2lkeAoJaW5zdGVhZCBvZiBjYWxsaW5nIHBoaV9hcmdfZnJvbV9lZGdlLgoKCSogdHJlZS1waGlub2Rlcy5jIChyZW1vdmVfcGhpX2FyZ3MpOiBSZXBsYWNlIHBoaV9hcmdfZnJvbV9lZGdlCgl3aXRoIGUtPmRlc3RfaWR4LgoKMjAwNC0xMS0yNCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEFTTV9PVVRQVVRfRFdBUkZfQUREUl9DT05TVCk6IFJlbW92ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpMzg2X2R3YXJmX291dHB1dF9hZGRyX2NvbnN0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGkzODZfZHdhcmZfb3V0cHV0X2FkZHJfY29uc3QpOgoJTGlrZXdpc2UuCgoyMDA0LTExLTI0ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS1zcmEuYyAoc3JhX3dhbGtfbW9kaWZ5X2V4cHIpOiBIYW5kbGUgUkhTIGZpcnN0LCB0aGVuIExIUy4KCgkqIHRyZWUtaW5saW5lLmMgKGNvcHlfYm9keV9yKTogRXhwbGljaXRseSBjb3B5IGEgY29uc3RhbnQgaWYgdGhlCgl0eXBlIHdpbGwgYmUgcmVtYXBwZWQuCgoyMDA0LTExLTI0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBjLW9wdHMuYyAoY19jb21tb25fcG9zdF9vcHRpb25zKTogRG9uJ3QgY2xlYXIKCWZsYWdfaW5saW5lX2Z1bmN0aW9ucy4KCSogZG9qdW1wLmMgKGNsZWFyX3BlbmRpbmdfc3RhY2tfYWRqdXN0KTogUmVtb3ZlIGNoZWNrIG9uCglmbGFnX2lubGluZV9mdW5jdGlvbnMsIGl0J3MgYWx3YXlzIHRydWUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAobW92ZGlfZXJfbWF5YmVfZyk6IFJlbW92ZSBzcGxpdHRlcgoJdGhhdCBjYW4gbmV2ZXIgdHJpZ2dlci4KCSogY29uZmlnL2M0eC9jNHguaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEb24ndCBsb29rIGF0CglmbGFnX2lubGluZV90cmVlcywgbm93IHRoYXQgZmxhZ19pbmxpbmVfZnVuY3Rpb25zIGlzIG5ldmVyCgljbGVhcmVkLgoJKiBjb25maWcvcGRwMTEvcGRwMTEuaCAoT1BUSU1JWkFUSU9OX09QVElPTlMpOiBEb24ndCBzZXQKCWZsYWdfaW5saW5lX2Z1bmN0aW9ucyBhdCBvcHRpbWl6YXRpb24gbGV2ZWxzIGdyZWF0ZXIgdGhhbgoJb3IgZXF1YWwgdG8gMy4gIFRoaXMgaXMgYWxyZWFkeSBkb25lIGJ5IGRlZmF1bHQuCgoyMDA0LTExLTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1vdXRvZi1zc2EuYyAoZWxpbWluYXRlX2J1aWxkKTogVXNlIGctPmUtPmRlc3RfaWR4CglpbnN0ZWFkIHRvIGZpbmQgdGhlIFBISSBhcmd1bWVudC4gIERvIG5vdCB0YWtlIEkgYXMgYW4KCWFyZ3VtZW50LgoJKGVsaW1pbmF0ZV9waGkpOiBBZGp1c3QgdGhlIGNhbGwgdG8gZWxpbWluYXRlX2J1aWxkLiAgRG8gbm90Cgl0YWtlIEkgYXMgYW4gYXJndW1lbnQuCgkocmV3cml0ZV90cmVlcyk6IEFkanVzdCB0aGUgY2FsbCB0byBlbGltaW5hdGVfcGhpLgoKMjAwNC0xMS0yNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogb3B0YWJzLmggKGZvcmNlX2V4cGFuZF9iaW5vcCk6IERlY2xhcmUuCgkqIG9wdGFicy5jIChmb3JjZV9leHBhbmRfYmlub3ApOiBFeHBvcnQuCgkqIHN0bXQuYyAoc2hpZnRfcmV0dXJuX3ZhbHVlKTogRGVsZXRlLgoJKGV4cGFuZF9yZXR1cm4pOiBEb24ndCBjYWxsIGl0LgoJKiBleHByLmggKHNoaWZ0X3JldHVybl92YWx1ZSk6IERlY2xhcmUuCgkqIGNhbGxzLmMgKHNoaWZ0X3JldHVybmVkX3ZhbHVlKTogRGVsZXRlIGluIGZhdm9yIG9mLi4uCgkoc2hpZnRfcmV0dXJuX3ZhbHVlKTogLi4udGhpcyBuZXcgZnVuY3Rpb24uICBMZWF2ZSB0aGUgY2FsbGVyIHRvIGNoZWNrCglmb3Igbm9uLUJMS21vZGUgdmFsdWVzIHBhc3NlZCBpbiB0aGUgbXNiIG9mIGEgcmVnaXN0ZXIuICBUYWtlIHNhaWQgbW9kZQoJYW5kIGEgc2hpZnQgZGlyZWN0aW9uIGFzIGFyZ3VtZW50LiAgT3BlcmF0ZSBvbiB0aGUgaGFyZCBmdW5jdGlvbiB2YWx1ZSwKCW5vdCBhIHBzZXVkby4KCShleHBhbmRfY2FsbCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogSWYgYSBub24tQkxLbW9kZSByZXR1cm4gdmFsdWUKCWlzIHBhZGRlZCBhdCB0aGUgbGFzdCBzaWduaWZpY2FudCBlbmQgb2YgdGhlIHJldHVybiByZWdpc3RlciwgdXNlIHRoZQoJcmV0dXJuIHZhbHVlJ3MgbmF0dXJhbCBtb2RlIGZvciB0aGUgREVDTF9SRVNVTFQsIG5vdCB0aGUgbW9kZSBvZiB0aGUKCXBhZGRlZCByZWdpc3Rlci4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogU2hpZnQgdGhlIHNhbWUgc29ydCBvZiByZXR1cm4gdmFsdWVzIGxlZnQgYnkKCXRoZSBhcHByb3ByaWF0ZSBhbW91bnQuCgoyMDA0LTExLTI0ICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCgkqIHJlY29nLmMgKHJlY29nX21lbW9pemVkXzEpOiBSZW1vdmUuCgkqIHJlY29nLmggKHJlY29nX21lbW9pemVkXzEpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkocmVjb2dfbWVtb2l6ZWQpOiBDaGFuZ2UgZnJvbSBtYWNybyB0byBpbmxpbmUgZnVuY3Rpb24uCgoyMDA0LTExLTI0ICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCVBSLzE4NTU1CgkqIGdjYy5oIChERUZBVUxUX1dPUkRfU1dJVENIX1RBS0VTX0FSRyk6IEFkZCBpc3lzcm9vdC4KCSogY29uZmlnL2Rhcndpbi1jLmMgKGRhcndpbl9yZWdpc3Rlcl9mcmFtZXdvcmtzKTogVXNlIHN5c3Jvb3QuCgoyMDA0LTExLTI0ICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogZ2NjLmMgKHByb2Nlc3NfY29tbWFuZCk6IFN1cHBseSAtdiB0byBsaW5rZXIuCgoyMDA0LTExLTI0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgkgICAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9yZXR1cm5faW5fbWVtb3J5KTogQWxsb3cgQWx0aXZlYwoJdmVjdG9yIG1vZGVzIHdpdGhvdXQgQUxUSVZFQ19BQkkuICBVc2UgR0NDIHZlY3RvciBpbnN0ZWFkIG9mCglzeW50aGV0aWMgdmVjdG9yLgoJKHJzNjAwMF9wYXNzX2J5X3JlZmVyZW5jZSk6IFNwbGl0IGNvbmRpdGlvbmFsIGludG8gcGllY2VzLiAgVXNlCglHQ0MgdmVjdG9yIGluc3RlYWQgb2Ygc3ludGhldGljIHZlY3Rvci4KCjIwMDQtMTEtMjQgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAocmVjb21wdXRlX3RyZWVfaW52YXJhbnRfZm9yX2FkZHJfZXhwcik6IFRoZSBhZGRyZXNzIG9mIGEKCXRocmVhZC1sb2NhbCB2YXJpYWJsZSBpcyBpbnZhcmlhbnQuCgoyMDA0LTExLTI0ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUsIGNhc2UgUE9JTlRFUl9UWVBFKToKCUhhbmRsZSBUWVBFX1JFRl9DQU5fQUxJQVNfQUxMLgoJKHByaW50X2RlY2xhcmF0aW9uKTogUHJpbnQgYXJyYXkgZGltZW5zaW9ucyBsaWtlIGR1bXBfZ2VuZXJpY19ub2RlLgoKCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3ApOiBSZW1vdmUga2x1ZGdlIGFsbG93aW5nIEFSRzAgYW5kCglBUkcxIHRvIGJlIG51bGw7IGluc3RlYWQgZGVmaW5lIE9QX1NBTUUgYW5kIE9QX1NBTUVfTlVMTCBhbmQgdXNlIHRoZW0uCgoyMDA0LTExLTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYml0bWFwLmMgKElOTElORSk6IERvIG5vdCBkZWZpbmUuCgkoYml0bWFwX2VsZW1fdG9fZnJlZWxpc3QsIGJpdG1hcF9lbGVtZW50X2ZyZWUsCgliaXRtYXBfZWxlbWVudF9hbGxvY2F0ZSwgYml0bWFwX2NsZWFyLCBiaXRtYXBfZWxlbWVudF96ZXJvcCwKCWJpdG1hcF9lbGVtZW50X2xpbmssIGJpdG1hcF9maW5kX2JpdCk6IFVzZSBpbmxpbmUga2V5d29yZC9tYWNyby4KCjIwMDQtMTEtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXNzYS1kb20uYyAoY3Byb3BfaW50b19zdWNjZXNzb3JfcGhpcyk6IFJlbW92ZSBjb2RlIHRvCglmaW5kIHRoZSBpbmRleCBvZiBhIFBISSBhcmd1bWVudC4gIFVzZSBlLT5kZXN0X2lkeCBpbnN0ZWFkLgoJUmVwbGFjZSBoaW50IHdpdGggaW5kZXguCgoJKiB0cmVlLXNzYS1kb20uYyAoY3Byb3BfaW50b19zdWNjZXNzb3JfcGhpcyk6IFJlcGxhY2UgaW5kZXgKCXdpdGggaW5keC4KCjIwMDQtMTEtMjQgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAobWVyZ2VfcG9pbnRlZF90b19pbmZvKTogRml4IGNvbW1lbnQKCXJlZ2FyZGluZyBQVF9NQUxMT0MuCgoyMDA0LTExLTI0ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3B0aW1pemF0aW9uX29wdGlvbnMpOiBVc2UKCVNVQlRBUkdFVF9PUFRJTUlaQVRJT05fT1BUSU9OUy4KCSogY29uZmlnL2kzODYvc29sMi0xMC5oIChTVUJUQVJHRVRfT1BUSU1JWkFUSU9OX09QVElPTlMpOiBEZWZpbmUuCgkoVEFSR0VUX1NVQlRBUkdFVF9ERUZBVUxUKTogRG9uJ3QgaW5jbHVkZQoJTUFTS19PTUlUX0xFQUZfRlJBTUVfUE9JTlRFUi4KCjIwMDQtMTEtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaTM4Ni9zb2wyLmggKFg4Nl9GSUxFX1NUQVJUX1ZFUlNJT05fRElSRUNUSVZFKToKCURlZmluZSB0byBmYWxzZS4KCjIwMDQtMTEtMjQgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2kzODYvdC1zb2wyLTEwIChNVUxUSUxJQl9ESVJOQU1FUywgTVVMVElMSUJfT1NESVJOQU1FUyk6CglVc2UgYW1kNjQgaW5zdGVhZCBvZiA2NC4KCjIwMDQtMTEtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcnRzdHVmZi5jIChJTl9MSUJHQ0MyKTogRGVmaW5lIGl0LgoJKEVIX0ZSQU1FX1NFQ1RJT05fQ09OU1QpOiBDaGVjayBFSF9UQUJMRVNfQ0FOX0JFX1JFQURfT05MWQoJaW5zdGVhZCBvZiBIQVZFX0xEX1JPX1JXX1NFQ1RJT05fTUlYSU5HLgoJKiBkZWZhdWx0cy5oIChFSF9UQUJMRVNfQ0FOX0JFX1JFQURfT05MWSk6IE5ldyBtYWNyby4KCSogZHdhcmYyb3V0LmMgKG5hbWVkX3NlY3Rpb25fZWhfZnJhbWVfc2VjdGlvbik6IENoZWNrCglFSF9UQUJMRVNfQ0FOX0JFX1JFQURfT05MWS4KCSogZXhjZXB0LmMgKGRlZmF1bHRfZXhjZXB0aW9uX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvc29sMi5oIChFSF9UQUJMRVNfQ0FOX0JFX1JFQURfT05MWSk6IERlZmluZS4KCSogZG9jL3RtLnRleGkgKEVIX1RBQkxFU19DQU5fQkVfUkVBRF9PTkxZKTogRG9jdW1lbnQuCgoyMDA0LTExLTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1zc2EtcHJlLmMgKHBoaV90cmFuc2xhdGUpOiBVc2UgZmluZF9lZGdlIHRvIGZpbmQgdGhlCglpbmRleCBvZiBhIFBISSBhcmd1bWVudC4KCgkqIHRyZWUtc3NhLWxvb3AtbWFuaXAuYyAobHZfYWRqdXN0X2xvb3BfaGVhZGVyX3BoaSk6IFVzZQoJZmluZF9lZGdlIHRvIGZpbmQgdGhlIGluZGV4IG9mIGEgUEhJIGFyZ3VtZW50LgoKMjAwNC0xMS0yNCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBSZW1vdmUgY2FzZXMgZm9yIEVYSVRfQkxPQ0tfRVhQUgoJYW5kIExBQkVMRURfQkxPQ0tfRVhQUi4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfbGFiZWxlZF9ibG9ja19leHByKTogUmVtb3ZlLgoJKGdpbXBsaWZ5X2V4aXRfYmxvY2tfZXhwcik6IFJlbW92ZS4KCShnaW1wbGlmeV9leHByKTogRG9uJ3QgY2FsbCB0aGVtLgoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JvZHlfcik6IERvbid0IGhhbmRsZSBFWElUX0JMT0NLX0VYUFIKCWFuZCBMQUJFTEVEX0JMT0NLX0VYUFIuCgkoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBMaWtld2lzZS4KCSh3YWxrX3RyZWUpOiBMaWtld2lzZS4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBEb24ndCBoYW5kbGUKCUVYSVRfQkxPQ0tfRVhQUiBhbmQgTEFCRUxFRF9CTE9DS19FWFBSLgoJKiB0cmVlLmRlZiAoRVhJVF9CTE9DS19FWFBSKTogTW92ZWQgdG8gamF2YS10cmVlLmRlZi4KCShMQUJFTEVEX0JMT0NLX0VYUFIpOiBMaWtld2lzZS4KCSogdHJlZS5oIChMQUJFTEVEX0JMT0NLX0xBQkVMKTogTW92ZWQgdG8gamF2YS10cmVlLmguCgkoTEFCRUxFRF9CTE9DS19CT0RZKTogTGlrZXdpc2UuCgkoRVhJVF9CTE9DS19MQUJFTEVEX0JMT0NLKTogTGlrZXdpc2UuCgkoRVhJVF9CTE9DS19SRVRVUk4pOiBSZW1vdmVkLgoKMjAwNC0xMS0yNCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY2ZncnRsLmMgKHJ0bF9kZWxldGVfYmxvY2spOiBGaXggY29tbWVudC4KCSogZW1pdC1ydGwuYyAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogRGllIGlmIHdlIHNlZSBCTE9DS19CRUcKCW9yIEJMT0NLX0VORCBpbnNuIG5vdGVzLgoJKiBqdW1wLmMgKHNxdWVlemVfbm90ZXMpOiBMaWtld2lzZS4KCSogaGFpZmEtc2NoZWQuYyAocmVlbWl0X25vdGVzKTogRG9uJ3QgInJlLWVtaXQiIEVIX1JFR0lPTl9CRUcgYW5kCglFSF9SRUdJT05fRU5EIG5vdGVzLCB3ZSBuZXZlciBoYXZlIHRoZW0gdG8gYmVnaW4gd2l0aC4KCSogc2NoZWQtZGVwcy5jIChzY2hlZF9hbmFseXplX2luc24pOiBXaGVuIHVwZGF0aW5nIGxvb3Agbm90ZXMsCgl2ZXJpZnkgdGhhdCB3ZSBoYXZlIGluZGVlZCBvbmx5IHJlY29yZGVkIGxvb3Agbm90ZXMuCgkoc2NoZWRfYW5hbHl6ZSk6IERpZSBpZiB3ZSBzZWUgRUhfUkVHSU9OX0JFRyBvciBFSF9SRUdJT05fRU5EIG5vdGVzLgoJT25seSByZWNvcmQgbG9vcCBub3Rlcy4KCgkqIGNmZ2V4cGFuZC5jICh0cmVlX2V4cGFuZF9jZmcpOiBGaXggY29tbWVudC4KCgkqIHBhc3Nlcy5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRG9uJ3QgZG8gYSBzZWNvbmQgY2FsbCB0bwoJY29udmVydF9mcm9tX2VoX3JlZ2lvbl9yYW5nZXMgZnJvbSBoZXJlLCBpdCdzIGFscmVhZHkgY2FsbGVkCglmcm9tIGNmZ2V4cGFuZC5jLgoJKiBleGNlcHQuYyAocmVzb2x2ZV9maXh1cF9yZWdpb25zKTogUmVtb3ZlLgoJKHJlbW92ZV9maXh1cF9yZWdpb25zKTogUmVtb3ZlLgoJKGNvbnZlcnRfZnJvbV9laF9yZWdpb25fcmFuZ2VzXzEpOiBSZW1vdmUuCgkoY29udmVydF9mcm9tX2VoX3JlZ2lvbl9yYW5nZXMpOiBSZW1vdmUgdGhlIGNhc2Ugd2hlcmUgRUggaXMKCW5vdCBhbHJlYWR5IGxvd2VyZWQgYXQgdGhlIHRyZWUgbGV2ZWwuICBXZSBhbHdheXMgbG93ZXIgdGhlcmUuCgoyMDA0LTExLTI0ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIGMrKy8xNjg4MgoJKiB0cmVlLmMgKG1ha2VfdmVjdG9yX3R5cGUpOiBNb3ZlIHF1YWxpZmllcnMgdG8gdGhlIHZlY3RvciB0eXBlLAoJdXNlIHRoZSBpbm5lciB0eXBlJ3MgbWFpbiB2YXJpYW50IGFuZCBidWlsZCBhIG1haW4gdmFyaWFudCBmb3IKCXRoZSB2ZWN0b3IgdHlwZSBpZiBuZWNlc3NhcnkuCgkodHlwZV9oYXNoX2VxKTogQ2hlY2sgYSB2ZWN0b3IgdHlwZSdzIFRZUEVfVkVDVE9SX1NVQlBBUlRTLgoKMjAwNC0xMS0yNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIHRhcmdldC5oIChsYXRlX3J0bF9wcm9sb2d1ZV9lcGlsb2d1ZSk6IFJlbW92ZS4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfTEFURV9SVExfUFJPTE9HVUVfRVBJTE9HVUUpOiBSZW1vdmUuCgkqIHN5c3RlbS5oOiBQb2lzb24gVEFSR0VUX0xBVEVfUlRMX1BST0xPR1VFX0VQSUxPR1VFLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfcHJvbG9ndWVfZXBpbG9ndWUpOiBSZW1vdmUgYW5kIG1vdmUKCXJlbWFpbmluZyBiaXRzIHRvLi4uCgkocmVzdF9vZl9oYW5kbGVfZmxvdzIpOiAuLi5oZXJlLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSZW1vdmUgY2FsbCB0byByZXN0X29mX2hhbmRsZV9wcm9sb2d1ZV9lcGlsb2d1ZS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9MQVRFX1JUTF9QUk9MT0dVRV9FUElMT0dVRSk6IFJlbW92ZS4KCjIwMDQtMTEtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBod2ludC5oIChIT1NUX0xPTkdfTE9OR19GT1JNQVQpOiBOZXcgbWFjcm8uICBVc2UgaXQgdGhyb3VnaG91dC4KCSogY29uZmlnL2kzODYveG0tbWluZ3czMi5oIChIT1NUX0xPTkdfTE9OR19GT1JNQVQpOiBEZWZpbmUuCgkqIGRvYy9ob3N0Y29uZmlnLnRleGkgKEhPU1RfTE9OR19MT05HX0ZPUk1BVCk6IERvY3VtZW50LgoKMjAwNC0xMS0yNCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IE1vdmUKCVNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TIGJlZm9yZSBkZWZhdWx0aW5nCglmbGFnX29taXRfZnJhbWVfcG9pbnRlci4KCjIwMDQtMTEtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBydGwuaCAodmFsaWRhdGVfc3VicmVnKTogRGVjbGFyZS4KCSogZW1pdC1ydGwuYyAodmFsaWRhdGVfc3VicmVnKTogTmV3LgoJKGdlbl9ydHhfU1VCUkVHKTogVXNlIGl0LgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfc3VicmVnKTogTGlrZXdpc2UuCgkoc2ltcGxpZnlfZ2VuX3N1YnJlZyk6IExpa2V3aXNlLiAgUmVtb3ZlIGR1cGxpY2F0ZSBhc3NlcnRzLgoJKiBleHByLmMgKGVtaXRfbW92ZV9pbnNuXzEpOiBUaWR5IGNvbXBsZXggbW92ZSBjb2RlLiAgVXNlIG1lbW9yeQoJZmFsbGJhY2sgd2hlbmV2ZXIgZ2VuX3JlYWxwYXJ0L2dlbl9pbWFncGFydCB3b3VsZCBub3QgYmUgYWJsZSB0bwoJY3JlYXRlIFNVQlJFR3MuCgoyMDA0LTExLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwbWVkLmMgKGV4dHJhY3RfYml0X2ZpZWxkKTogVXNlIHNpbXBsaWZ5X2dlbl9zdWJyZWcgaW5zdGVhZCBvZgoJaGFyZC1jb2RpbmcgYXZvaWRpbmcgY2FsbHMgdG8gZ2VuX3J0eF9TVUJSRUcuICBTcGxpdCBjb21wbGV4IHJldHVybgoJbW9kZXMgdG8gQ09OQ0FULgoKMjAwNC0xMS0yMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTg2MTgKCSogdHJlZS1pbnRvLXNzYS5jIChERUZfVkVDX01BTExPQ19QKGJhc2ljX2Jsb2NrKSk6IERlY2xhcmUuCgkoaW5zZXJ0X3BoaV9ub2Rlc19mb3IpOiBDaGFuZ2UgdGhpcmQgYXJndW1lbnQgdG8gVkVDKGJhc2ljX2Jsb2NrKS4KCSogdHJlZS1zc2EtZG9tLmMgKGF2YWlsX2V4cHJzX3N0YWNrKTogQ2hhbmdlIHR5cGUgdG8gVkVDKHRyZWVfb25faGVhcCkuCglVcGRhdGUgYWxsIHVzZXJzLgoJKHN0bXRzX3RvX3Jlc2Nhbik6IExpa2V3aXNlLgoJKGNvbnN0X2FuZF9jb3BpZXNfc3RhY2spOiBMaWtld2lzZS4KCShub256ZXJvX3ZhcnNfc3RhY2spOiBMaWtld2lzZS4KCSh2cnBfdmFyaWFibGVzX3N0YWNrKTogTGlrZXdpc2UuCgoyMDA0LTExLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY3NlLmMgKHJlY29yZF9qdW1wX2NvbmRfc3VicmVnKTogTmV3LgoJKHJlY29yZF9qdW1wX2NvbmQpOiBVc2UgaXQgaW5zdGVhZCBvZiBnZW5fbG93cGFydC4KCjIwMDQtMTEtMjMgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc29sMi1jLmMgKHNvbGFyaXNfcmVnaXN0ZXJfcHJhZ21hcyk6IFVzZQoJY19yZWdpc3Rlcl9wcmFnbWFfd2l0aF9leHBhbnNpb24uCgkqIGNvbmZpZy9zb2wyLmggKEhBTkRMRV9QUkFHTUFfUEFDS19XSVRIX0VYUEFOU0lPTik6IERlZmluZS4KCSogYy1wcmFnbWEuYyAoY19yZWdpc3Rlcl9wcmFnbWEpOiBVcGRhdGUgY2FsbCB0bwoJY3BwX3JlZ2lzdGVyX3ByYWdtYS4KCShjX3JlZ2lzdGVyX3ByYWdtYV93aXRoX2V4cGFuc2lvbik6IE5ldyBmdW5jdGlvbi4KCShpbml0X3ByYWdtYSk6IEhvbm9yIEhBTkRMRV9QUkFHTUFfUEFDS19XSVRIX0VYUEFOU0lPTi4KCSogYy1wcmFnbWEuaCAoY19yZWdpc3Rlcl9wcmFnbWFfd2l0aF9leHBhbnNpb24pOiBOZXcgcHJvdG90eXBlLgoJKiBkb2MvZXh0ZW5kLnRleGkgKFNvbGFyaXMgUHJhZ21hcyk6IE1lbnRpb24gbWFjcm8gZXhwYW5zaW9uIGZvcgoJI3ByYWdtYSBhbGlnbi4KCSogZG9jL3RtLnRleGkgKGNfcmVnaXN0ZXJfcHJhZ21hX3dpdGhfZXhwYW5zaW9uLAoJSEFORExFX1BSQUdNQV9QQUNLX1dJVEhfRVhQQU5TSU9OKTogRG9jdW1lbnQuCgoyMDA0LTExLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChnZW5fbG93cGFydF9mb3JfY29tYmluZSk6IEZhY3RvciBvdXQgbW9kZSBvZiB4IGFzIHdlbGwKCWFzIG1vZGUgc2l6ZXMgaW50byBsb2NhbCB0ZW1wb3Jhcmllcy4gIFVuaWZ5IGZhaWx1cmUgcGF0aC4KCjIwMDQtMTEtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbWl0LXJ0bC5jLCBydGwuaCAoc3VicmVnX2hhcmRfcmVnbm8pOiBSZW1vdmUuCgkqIGNhbGxlci1zYXZlLmMgKG1hcmtfc2V0X3JlZ3MpOiBVc2Ugc3VicmVnX3JlZ25vIGluc3RlYWQuCgkqIGZpbmFsLmMgKGFsdGVyX3N1YnJlZyk6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jIChyZWdfaXNfYm9ybik6IExpa2V3aXNlLgoKMjAwNC0xMS0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9zdWJyZWcpOiBVc2Ugc3VicmVnX3JlZ25vX29mZnNldCBkaXJlY3RseQoJaW5zdGVhZCBvZiB1c2luZyBhIFNVQlJFRyB0ZW1wb3JhcnkuCgoyMDA0LTExLTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1jZmcuYyAodHJlZV9mb3J3YXJkZXJfYmxvY2tfcCk6IFNwZWVkIHVwIGJ5IHJlb3JkZXJpbmcKCXR3byBjaGVja3MuCgoyMDA0LTExLTIzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIGNhbGxzX2xvbmdqbXAuCgkoY3VycmVudF9mdW5jdGlvbl9jYWxsc19sb25nam1wKTogRGVsZXRlLgoJKiB0cmVlLmggKEVDRl9MT05HSk1QKTogRGVsZXRlLgoJKEVDRl9TSUJDQUxMLCBFQ0ZfUFVSRSwgRUNGX1NQX0RFUFJFU1NFRCwgRUNGX0FMV0FZU19SRVRVUk4pCgkoRUNGX0xJQkNBTExfQkxPQ0spOiBFdmVyeWJvZHkgc2xpZGUgZG93biBvbmUuCgkoRUNGX0NPTlNULCBFQ0ZfTk9SRVRVUk4sIEVDRl9TSUJDQUxMKTogQ2xhcmlmeSBjb21tZW50cy4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbG9uZ2ptcCk6IERvbid0IHNldAoJY3VycmVudF9mdW5jdGlvbl9jYWxsc19sb25nam1wLgoJKiBjYWxscy5jIChzcGVjaWFsX2Z1bmN0aW9uX3ApOiBNYXJrIGxvbmdqbXAgYW5kIHNpZ2xvbmdqbXAKCXdpdGggRUNGX05PUkVUVVJOLCBub3QgRUNGX0xPTkdKTVAuCgkoZW1pdF9jYWxsXzEsIGV4cGFuZF9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKToKCURvbid0IGNoZWNrIGZvciBFQ0ZfTE9OR0pNUC4KCSogdHJlZS1jZmcuYyAobWFrZV9leGl0X2VkZ2VzLCBpc19jdHJsX2FsdGVyaW5nX3N0bXQpCgkobmVlZF9mYWtlX2VkZ2VfcCk6IExpa2V3aXNlLgoKCSogY29uZmlnL2F2ci9hdnIuaCwgY29uZmlnL2lwMmsvaXAyay5oOiBEb24ndCBkZWZpbmUgTk9OX1NBVklOR19TRVRKTVAuCgkqIHN5c3RlbS5oOiBQb2lzb24gTk9OX1NBVklOR19TRVRKTVAuCgkqIGZ1bmN0aW9uLmMgKHVzZV9yZWdpc3Rlcl9mb3JfZGVjbCkKCSogZ2NzZS5jIChjb21wdXRlX2hhc2hfdGFibGVfd29yaywgY29tcHV0ZV9zdG9yZV90YWJsZSkKCSogcG9zdHJlbG9hZC1nY3NlLmMgKHJlY29yZF9vcHJfY2hhbmdlcykKCSogcmVsb2FkLmMgKGZpbmRfZXF1aXZfcmVnKQoJKiByZWxvYWQxLmMgKHJlbG9hZCkKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Nhbl91c2VfcmV0dXJuX2luc25fcCk6CglSZW1vdmUgY29kZSBjb25kaXRpb25hbCBvbiBOT05fU0FWSU5HX1NFVEpNUC4KCSogZG9jL3RtLnRleGk6IERlbGV0ZSBkb2N1bWVudGF0aW9uIG9mIE5PTl9TQVZJTkdfU0VUSk1QLgoKCSogY29uZmlnL2kzODYvc3lzdjMuaDogRGVsZXRlIGZpbGUuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9zdnIzX2FzbV9vdXRfY29uc3RydWN0b3IpOiBEZWxldGUuCgoyMDA0LTExLTIzICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9hbmFseXplX29wZXJhdGlvbnMpOiBEb24ndCB2ZWN0b3JpemUgaWYKCXRoZSB2ZWN0b3JpemF0aW9uIGZhY3RvciBpcyBncmVhdGVyIHRoYW4gdGhlIGl0ZXJhdGlvbiBjb3VudC4KCSh2ZWN0X2dlbl9uaXRlcnNfZm9yX3Byb2xvZ19sb29wKTogTm8gbmVlZCB0byBjYWxjdWxhdGUgbWluIGlmIHRoZQoJaXRlcmF0aW9uIGNvdW50IGlzIGtub3duLgoKCSh2ZWN0X2J1aWxkX3N5bWJvbF9ib3VuZCk6IFJlbW92ZWQuIEl0cyBmdW5jdGlvbmFsaXR5IG1vdmVkIHRvCgl2ZWN0X2dlbmVyYXRlX3RtcHNfb25fcHJlaGVhZGVyLgoJKHZlY3RfZ2VuZXJhdGVfdG1wc19vbl9wcmVoZWFkZXIpOiBNb3ZlZCBjb250ZW50IG9mCgl2ZWN0X2J1aWxkX3N5bWJvbF9ib3VuZCBoZXJlIGluc3RlYWQgb2YgY2FsbGluZyBpdC4gIENoYW5nZWQgc29tZQoJdmFyaWFibGVzIG5hbWVzLgoKCSh2ZWN0X2J1aWxkX2xvb3Bfbml0ZXJzKTogV2UgZG9uJ3QgZXhwZWN0IGEgbmV3X2JiIHRvIGJlIGdlbmVyYXRlZCAtCgl1c2UgZ2NjX2Fzc2VydC4KCSh2ZWN0X2dlbl9uaXRlcnNfZm9yX3Byb2xvZ19sb29wKTogTGlrZXdpc2UuCgkodmVjdF9nZW5fbml0ZXJzX2Zvcl9wcm9sb2dfbG9vKTogTGlrZXdpc2UuCgoJKHNscGVlbF9tYWtlX2xvb3BfaXRlcmF0ZV9udGltZXMpOiBVc2UgYnVpbGROIGluc3RlYWQgb2YgYnVpbGQuCgkoc2xwZWVsX2FkZF9sb29wX2d1YXJkKTogTGlrZXdpc2UuCgkoc2xwZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UpOiBMaWtld2lzZS4KCSh2ZWN0X2RvX3BlZWxpbmdfZm9yX2FsaWdubWVudCk6IExpa2V3aXNlLgoKCSh2ZWN0X2dldF9maXJzdF9pbmRleCk6IE1pc3Npbmcgc3BhY2UuCgoyMDA0LTExLTIzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmlvcmRpMyIpOiBNYXJrIGNvbW11dGF0aXZlLgoJKCIqaW9yc2kzX3phcmNoIiwgIippb3JzaTNfZXNhIik6IExpa2V3aXNlLgoKMjAwNC0xMS0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtcGhpbm9kZS5jIChyZXNpemVfcGhpX25vZGUpOiBBYm9ydCB3aGVuIExFTiBpcyBzdHJpY3RseQoJZ3JlYXRlciB0aGFuIFBISV9BUkdfQ0FQQUNJVFkuCgkocmVzZXJ2ZV9waGlfYXJnc19mb3JfbmV3X2VkZ2UpOiBJbml0aWFsaXplIHRoZSBuZXcgUEhJCglhcmd1bWVudCB0byBOVUxMX1RSRUUuICBJbmNyZW1lbnQgUEhJX05VTV9BUkdTLgoJKGFkZF9waGlfYXJnKTogQWRkIGEgUEhJIGFyZ3VtZW50IHRvIHRoZSBzbG90IGdpdmVuIGJ5CglFLT5kZXN0X2lkeC4KCShyZW1vdmVfcGhpX2FyZ19udW0pOiBEbyBub3Qgd3JpdGUgdG8gUEhJX0FSR19FREdFLgoJKiB0cmVlLWZsb3ctaW5saW5lIChwaGlfYXJnX2Zyb21fZWRnZSk6IFJldHVybiBFLT5kZXN0X2lkeC4KCSogdHJlZS1zc2EuYyAoc3NhX3JlZGlyZWN0X2VkZ2UpOiBDaGVjayBmb3IgYSBtaXNzaW5nIFBISQoJYXJndW1lbnQgYnkgbG9va2luZyBhdCBQSElfQVJHX0RFRi4KCSh2ZXJpZnlfcGhpX2FyZ3MpOiBDaGVjayBmb3IgYSBtaXNzaW5nIFBISSBhcmd1bWVudC4gIFJlbW92ZQoJdGhlIGNoZWNrIGZvciBkdXBsaWNhdGUgUEhJIGFyZ3VtZW50cy4KCSogdHJlZS5oIChQSElfQVJHX0VER0UpOiBSZWRlZmluZSBpbiB0ZXJtcyBvZiBFREdFX1BSRUQuCgkocGhpX2FyZ19kKTogUmVtb3ZlIGUuCgoJKiB0cmVlLWNmZy5jICh0cmVlX3RyeV9yZWRpcmVjdF9ieV9yZXBsYWNpbmdfanVtcCk6IFNwZWVkIHVwCglieSByZXN0cmljdGluZyB0byB0aGUgY2FzZSB3aXRoIHR3byBvdXRnb2luZyBlZGdlcy4KCjIwMDQtMTEtMjMgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfYmFja2NoYWluX3N0cmluZyk6IFJlbW92ZWQuCgkoczM5MF9yZXR1cm5fYWRkcl9ydHgsIHMzOTBfYmFja19jaGFpbl9ydHgsIHMzOTBfZnJhbWVfaW5mbykKCShzMzkwX2VtaXRfcHJvbG9ndWUsIHMzOTBfdmFfc3RhcnQsIHMzOTBfZ2ltcGxpZnlfdmFfYXJnKToKCUNoYW5nZWQgdXNlcnMgb2YgVEFSR0VUX0JBQ0tDSEFJTiwgVEFSR0VUX05PX0JBQ0tDSEFJTiBhbmQKCVRBUkdFVF9LRVJORUxfQkFDS0NIQUlOIHRvIHJlZmxlY3QgdGhlIG5ldyBvcHRpb25zLgoJKiBjb25maWcvczM5MC9zMzkwLmggKE1BU0tfQkFDS0NIQUlOLCBNQVNLX1BBQ0tFRF9TVEFDSyk6IE5ldyBtYWNyb3MuCgkoVEFSR0VUX0tFUk5FTF9CQUNLQ0hBSU4pOiBSZW1vdmVkLgoJKFRBUkdFVF9CQUNLQ0hBSU4pOiBGb3JtZXIgdHJpcGxlIHN0YXRlIG9wdGlvbiBjaGFuZ2UgdG8gYSB0YXJnZXQgZmxhZy4KCShUQVJHRVRfUEFDS0VEX1NUQUNLKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IE5ldyBzd2l0Y2hlcyBhZGRlZC4KCShUQVJHRVRfT1BUSU9OUyk6ICJiYWNrY2hhaW4iLCAibm8tYmFja2NoYWluIiBhbmQgImtlcm5lbC1iYWNrY2hhaW4iCglyZW1vdmVkLgoJKERZTkFNSUNfQ0hBSU5fQUREUkVTUyk6IFVzZSBUQVJHRVRfUEFDS0VEX1NUQUNLLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiYWxsb2NhdGVfc3RhY2siLCAicmVzdG9yZV9zdGFja19ibG9jayIpCgkoInNhdmVfc3RhY2tfbm9ubG9jYWwiLCAicmVzdG9yZV9zdGFja19ub25sb2NhbCIpOiBNb2RpZmllZCB0byByZWZsZWN0Cgl0aGUgY2hhbmdlIGluIHRhcmdldCBzd2l0Y2ggc2VtYW50aWNzLgoJKiBjb25maWcvczM5MC90cGYuaCAoVEFSR0VUX0RFRkFVTFRfQkFDS0NIQUlOKTogUmVtb3ZlZC4KCShUQVJHRVRfREVGQVVMVCk6IE1BU0tfQkFDS0NIQUlOIGFkZGVkLgoJKiBkb2MvaW52b2tlLnRleGk6IEFkZGVkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBuZXcvY2hhbmdlZCBvcHRpb25zLgoKMjAwNC0xMS0yMyAgVXJvcyBCaXpqYWsgIDx1cm9zQGtzcy1sb2thLnNpPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTg2MTQKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pOiBEbyBub3QKCXNpbXBsaWZ5IGlubmVyIGVsZW1lbnRzIG9mIGNvbnN0YW50IGFyZ3VtZW50cyBvZgoJVkVDX0NPTkNBVCBpbnNuLgoKMjAwNC0xMS0yMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGd0aHItc29sYXJpcy5oIChfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2luaXRfZnVuY3Rpb24pOiBVc2UKCTAgaW5zdGVhZCBvZiBOVUxMLgoKMjAwNC0xMS0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtcGhpbm9kZS5jIChtYWtlX3BoaV9ub2RlKTogVXNlIGEgbmV3IHZhcmlhYmxlLAoJY2FwYWNpdHksIHRvIHJlY2VpdmUgdGhlIHJldHVybiB2YWx1ZSBvZiBpZGVhbF9waGlfbm9kZV9sZW4uCgoyMDA0LTExLTIzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZ3Roci1zb2xhcmlzLmggKF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdCk6IE5ldyB0eXBlLgoJKF9fR1RIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVF9GVU5DVElPTik6IERlZmluZSB0bwoJX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF9pbml0X2Z1bmN0aW9uLgoJKF9fZ3RocmVhZF9rZXlfY3JlYXRlKTogUHJvcGVybHkgY2FzdCAtMS4KCShfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2luaXRfZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF9sb2NrKTogUmV3cml0ZS4KCShfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3RyeWxvY2spOiBMaWtld2lzZS4KCShfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3VubG9jayk6IExpa2V3aXNlLgoKMjAwNC0xMS0yMyAgUmFsZiBDb3JzZXBpdXMgPHJhbGYuY29yc2VwaXVzQHJ0ZW1zLm9yZz4KCgkqIGNvbmZpZy9jNHgvdC1ydGVtczogTmV3LgoJKiBjb25maWcuZ2NjOiBSZWZsZWN0IGhhdmluZyBhZGRlZCBjNHgvdC1ydGVtcy4KCjIwMDQtMTEtMjMgIERvcml0IE5haXNobG9zIDxkb3JpdEBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0LzE4NDAzCglQUiB0cmVlLW9wdC8xODUwNQoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9jcmVhdGVfZGF0YV9yZWZfcHRyKTogVXNlCglsYW5nX2hvb2tzLnR5cGVzLnR5cGVfZm9yX3NpemUgaW5zdGVhZCBvZiBpbnRlZ2VyX3R5cGVfbm9kZSBmb3IgdGhlCgl0eXBlIG9mIHB0cl91cGRhdGUuCgoyMDA0LTExLTIzICBSYWxmIENvcnNlcGl1cyA8cmFsZi5jb3JzZXBpdXNAcnRlbXMub3JnPgoKCSogY29uZmlnLmdjYyAoaDgzMDAtKi1ydGVtcyopOiBVc2UgaDgzMDAvdC1ydGVtcy4KCjIwMDQtMTEtMjMgIFJhbGYgQ29yc2VwaXVzIDxyYWxmLmNvcnNlcGl1c0BydGVtcy5vcmc+CgoJKiBjb25maWcvYXJtL3QtcnRlbXM6IE5ldy4KCSogY29uZmlnLmdjYzogUmVmbGVjdCBoYXZpbmcgYWRkZWQgYXJtL3QtcnRlbXMuCgoyMDA0LTExLTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1jZmcuYyAodHJlZV9leGVjdXRlX29uX2dyb3dpbmdfcHJlZCk6IE5ldy4KCSh0cmVlX2NmZ19ob29rcyk6IEFkZCB0cmVlX2V4ZWN1dGVfb25fZ3Jvd2luZ19wcmVkLgoJKiB0cmVlLWZsb3cuaDogQWRkIGEgcHJvdG90eXBlIGZvcgoJcmVzZXJ2ZV9waGlfYXJnc19mb3JfbmV3X2VkZ2UuCgkqIHRyZWUtcGhpbm9kZXMuYyAocmVzZXJ2ZV9waGlfYXJnc19mb3JfbmV3X2VkZ2UpOiBOZXcuCgkoYWRkX3BoaV9hcmcpOiBEb24ndCByZXNpemUgYSBQSEkgYXJyYXkuCgoyMDA0LTExLTIzICBSYWxmIENvcnNlcGl1cyA8cmFsZi5jb3JzZXBpdXNAcnRlbXMub3JnPgoKCSogY29uZmlnLmdjYzogQWRkIGF2ci0qLXJ0ZW1zKi4KCSogY29uZmlnL2F2ci90LXJ0ZW1zOiBOZXcuCgkqIGNvbmZpZy9hdnIvcnRlbXMuaDogTmV3LgoKMjAwNC0xMS0yMiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBkZi5jIChkYXRhZmxvd19zZXRfYV9vcF9iKTogUmVtb3ZlIHJlc2x0IHBhcmFtZXRlciwgc2luY2UgaXQncwoJYWx3YXlzIHRoZSBzYW1lIGFzIG9wMS4gIFVzZSBiaXRtYXBfaW9yX2ludG8gYW5kIGJpdG1hcF9hbmRfaW50by4KCUFkZCBjb21tZW50IHRvIGZ1bmN0aW9uLgoKMjAwNC0xMS0yMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBwY2gvMTQ5NDAKCSogY29uZmlnL2hvc3QtbGludXguYyAoVFJZX0VNUFRZX1ZNX1NQQUNFKTogRGVmaW5lIGZvciBfX2hwcGFfXy4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE0ODM4CgkqIGVtaXQtcnRsLmMgKGdldF9maXJzdF9ub25ub3RlX2luc24pOiBEb24ndCBhc3N1bWUgZmlyc3QgaW5zbiBpcyBhCglub3RlLgoJKGdldF9sYXN0X25vbm5vdGVfaW5zbik6IERvbid0IGFzc3VtZSBsYXN0IGluc24gaXMgYSBub3RlLgoKMjAwNC0xMS0yMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKG5vbmRlc3RydWN0aXZlX2ZvbGRfYmluYXJ5X3RvX2NvbnN0YW50KTogUmVuYW1lCgl0byBmb2xkX2JpbmFyeV90b19jb25zdGFudC4KCShub25kZXN0cnVjdGl2ZV9mb2xkX3VuYXJ5X3RvX2NvbnN0YW50KTogTGlrZXdpc2UsIHJlbmFtZSB0bwoJZm9sZF91bmFyeV90b19jb25zdGFudC4KCShmb2xkX3JlbGF0aW9uYWxfaGlfbG8pOiBVcGRhdGUgY2FsbCB0byBmb2xkX2JpbmFyeV90b19jb25zdGFudC4KCSogdHJlZS5oIChub25kZXN0cnVjdGl2ZV9mb2xkX2JpbmFyeV90b19jb25zdGFudCk6IFVwZGF0ZSBwcm90b3R5cGUuCgkobm9uZGVzdHJ1Y3RpdmVfZm9sZF91bmFyeV90b19jb25zdGFudCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1jY3AuYyAoY2NwX2ZvbGQpOiBVcGRhdGUgY2FsbHMgdG8gZm9sZF91bmFyeV90b19jb25zdGFudAoJYW5kIGZvbGRfYmluYXJ5X3RvX2NvbnN0YW50LgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKEVYRUNfQklOQVJZLCBFWEVDX1VOQVJZKTogRGVsZXRlIG1hY3Jvcy4KCShpbnZlcnNlLCBudW1iZXJfb2ZfaXRlcmF0aW9uc19jb25kKTogUmVwbGFjZSB1c2VzIG9mIEVYRUNfQklOQVJZCglhbmQgRVhFQ19VTkFSWSB3aXRoIGNhbGxzIHRvIGZvbGRfKm5hcnlfdG9fY29uc3RhbnQuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKEVYRUNfQklOQVJZLCBFWEVDX1VOQVJZKTogRGVsZXRlIG1hY3Jvcy4KCShpZHhfZmluZF9zdGVwKTogUmVwbGFjZSB1c2VzIG9mIEVYRUNfQklOQVJZIHdpdGggY2FsbHMgdG8KCWZvbGRfYmluYXJ5X3RvX2NvbnN0YW50LgoKMjAwNC0xMS0yMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIHNiaXRtYXAuYyAoc2JpdG1hcF91bmlvbl9vZl9wcmVkcyk6IFJlbW92ZSByZWR1bmRhbnQKCWluaXRpYWxpc2F0aW9uIG9mICdlJy4KCjIwMDQtMTEtMjIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfVVNFX0ZBTkNZX01BVEhfMzg3KTogTmV3IG1hY3JvLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBTZXQgTUFTS19OT19GQU5DWV9NQVRIXzM4NwoJYXV0b21hdGljYWxseSBmb3IgdGFyZ2V0cyB3aXRob3V0IFRBUkdFVF84MDM4Ny4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoc3FydHNmMiwgc3FydHNmMl8xLCBzcXJ0c2YyX2kzODcsIHNxcnRkZjIsCglzcXJ0ZGYyXzEsIHNxcnRkZjJfaTM4NywgKnNxcnRleHRlbmRzZmRmMiwgc3FydHhmMiwKCSpzcXJ0ZXh0ZW5kZGZ4ZjIsICpzcXJ0ZXh0ZW5kc2Z4ZjIsIGZwcmVteGY0LCBmbW9kc2YzLCBmbW9kZGYzLAoJZm1vZHhmMywgZnByZW0xeGY0LCBkcmVtc2YzLCBkcmVtZGYzLCBkcmVteGYzLCAqc2luZGYyLCAqc2luc2YyLAoJKnNpbmV4dGVuZHNmZGYyLCAqc2lueGYyLCAqY29zZGYyLCAqY29zc2YyLCAqY29zZXh0ZW5kc2ZkZjIsCgkqY29zeGYyLCBzaW5jb3NkZjMsIHNpbmNvc3NmMywgKnNpbmNvc2V4dGVuZHNmZGYzLCBzaW5jb3N4ZjMsCgkqdGFuZGYzXzEsIHRhbmRmMiwgKnRhbnNmM18xLCB0YW5zZjIsICp0YW54ZjNfMSwgdGFueGYyLAoJYXRhbjJkZjNfMSwgYXRhbjJkZjMsIGF0YW5kZjIsIGF0YW4yc2YzXzEsIGF0YW4yc2YzLCBhdGFuc2YyLAoJYXRhbjJ4ZjNfMSwgYXRhbjJ4ZjMsIGF0YW54ZjIsIGFzaW5kZjIsIGFzaW5zZjIsIGFzaW54ZjIsCglhY29zZGYyLCBhY29zc2YyLCBhY29zeGYyLCBmeWwyeF94ZjMsIGxvZ3NmMiwgbG9nZGYyLCBsb2d4ZjIsCglsb2cxMHNmMiwgbG9nMTBkZjIsIGxvZzEweGYyLCBsb2cyc2YyLCBsb2cyZGYyLCBsb2cyeGYyLAoJZnlsMnhwMV94ZjMsIGxvZzFwc2YyLCBsb2cxcGRmMiwgbG9nMXB4ZjIsICpmeHRyYWN0eGYzLCBsb2dic2YyLAoJbG9nYmRmMiwgbG9nYnhmMiwgaWxvZ2JzaTIsICpmMnhtMXhmMiwgKmZzY2FsZXhmNCwgZXhwc2YyLAoJZXhwZGYyLCBleHB4ZjIsIGV4cDEwc2YyLCBleHAxMGRmMiwgZXhwMTB4ZjIsIGV4cDJzZjIsIGV4cDJkZjIsCglleHAyeGYyLCBleHBtMWRmMiwgZXhwbTFzZjIsIGV4cG0xeGYyLCBmcm5kaW50eGYyLCByaW50ZGYyLAoJcmludHNmMiwgcmludHhmMiwgZnJuZGludHhmMl9mbG9vciwgZmxvb3JkZjIsIGZsb29yc2YyLAoJZmxvb3J4ZjIsIGZybmRpbnR4ZjJfY2VpbCwgY2VpbGRmMiwgY2VpbHNmMiwgY2VpbHhmMiwKCWZybmRpbnR4ZjJfdHJ1bmMsIGJ0cnVuY2RmMiwgYnRydW5jc2YyLCBidHJ1bmN4ZjIsCglmcm5kaW50eGYyX21hc2tfcG0sIG5lYXJieWludGRmMiwgbmVhcmJ5aW50c2YyLCBuZWFyYnlpbnR4ZjIpOgoJU2ltcGxpZnkgY29uZGl0aW9uYWxzIHVzaW5nIFRBUkdFVF9VU0VfRkFOQ1lfTUFUSF8zODcuCgoyMDA0LTExLTIyICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmggKEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTik6IENvbmRpdGlvbmFsaXplCglwcm9wZXJseSBhbmQgY29tbWVudC4KCjIwMDQtMTEtMjIgIEphbWVzIEEuIE1vcnJpc29uICA8cGh5dGhvbkBnY2MuZ251Lm9yZwoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmM6IEluY2x1ZGUgaW5zbi1jb2Rlcy5oIGFuZCBsYW5naG9va3MuaC4KCShzcGFyY19pbml0X2J1aWx0aW5zKTogTmV3IGZ1bmN0aW9uLgoJKHNwYXJjX2luaXRfdmlzX2J1aWx0aW5zKTogQ3JlYXRlIGJ1aWx0aW4gZnVuY3Rpb25zIGZvciBWSVMKCWluc3RydWN0aW9ucy4KCShzcGFyY19leHBhbmRfYnVpbHRpbik6IEV4cGFuZCBidWlsdGluIGZ1bmN0aW9ucyBmb3IgVklTIGluc3RydWN0aW9ucy4KCShUQVJHRVRfSU5JVF9CVUlMVElOUyk6IERlZmluZSB0byBzcGFyY19pbml0X2J1aWx0aW5zLgoJKFRBUkdFVF9FWFBBTkRfQlVJTFRJTik6IERlZmluZSB0byBzcGFyY19leHBhbmRfYnVpbHRpbi4KCShkZWZfYnVpbHRpbik6IE5ldyBtYWNybyBmb3IgY3JlYXRpbmcgYnVpbHRpbiBmdW5jdGlvbnMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoUCk6IE5ldyBtb2RlIG1hY3JvIGZvciBwb2ludGVyIHR5cGVzLgoJKFVOU1BFQ19GUEFDSzE2LCBVTlNQRUNfRlBBQ0szMiwgVU5TUEVDX0ZQQUNLRklYLCBVTlNQRUNfRkVYUEFORCwKCVVOU1BFQ19GUE1FUkdFLCBVTlNQRUNfTVVMMTZBTCwgVU5TUEVDX01VTDhVTCwgVU5TUEVDX01VTERVTCwKCVVOU1BFQ19BTElHTkRBVEEsIFVOU1BFQ19BTElHTkFERFIsIFVOU1BFQ19QRElTVCk6IE5ldyBjb25zdGFudHMuCgkoZnBhY2sxNl92aXMsIGZwYWNrZml4X3ZpcywgZnBhY2szMl92aXMsIGZleHBhbmRfdmlzLCBmcG1lcmdlX3ZpcywKCWZtdWw4eDE2X3ZpcywgZm11bDh4MTZhdV92aXMsIGZtdWw4eDE2YWxfdmlzLCBmbXVsOHN1eDE2X3ZpcywKCWZtdWw4dWx4MTZfdmlzLCBmbXVsZDhzdXgxNl92aXMsIGZtdWxkOHVseDE2X3ZpcywgcGRpc3RfdmlzLAoJZmFsaWduZGF0YTxWNjQ6bW9kZT5fdmlzLCBhbGlnbmFkZHI8UDptb2RlPl92aXMpOiBOZXcgcGF0dGVybnMuCgoyMDA0LTExLTIyICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogdHJlZS1pZi1jb252LmMgKGNsZWFuX3ByZWRpY2F0ZV9saXN0cyk6IENsZWFuIGFsbCBiYXNpYyBibG9ja3MuCgoyMDA0LTExLTIyICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogdHJlZS1pZi1jb252LmMgKGlmX2NvbnZlcnRhYmxlX3BoaV9wKTogUmVuYW1lIHRvIC4uLgoJKGlmX2NvbnZlcnRpYmxlX3BoaV9wKTogLi4uIG5ldyBuYW1lLgoJKGlmX2NvbnZlcnRhYmxlX21vZGlmeV9leHByX3ApOiBSZW5hbWUgdG8gLi4uCgkoaWZfY29udmVydGlibGVfbW9kaWZ5X2V4cHJfcCk6IC4uLiBuZXcgbmFtZS4KCShpZl9jb252ZXJ0YWJsZV9zdG10X3ApOiBSZW5hbWUgdG8gLi4uCgkoaWZfY29udmVydGlibGVfc3RtdF9wKTogLi4uIG5ldyBuYW1lLgoJKGlmX2NvbnZlcnRhYmxlX2JiX3ApOiBSZW5hbWUgdG8gLi4uCgkoaWZfY29udmVydGlibGVfYmJfcCk6IC4uLiBuZXcgbmFtZS4KCShpZl9jb252ZXJ0YWJsZV9sb29wX3ApOiBSZW5hbWUgdG8gLi4uCgkoaWZfY29udmVydGlibGVfbG9vcF9wKTogLi4uIG5ldyBuYW1lLgoKMjAwNC0xMS0yMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTg0NDQKCSogY29uZmlndXJlLmFjICh0aHJlYWRpbmcpOiBBY2NlcHQgJ3Bvc2l4OTUnLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5nY2MgKGlbMzQ1NjddODYtKi1zb2xhcmlzMiopOiBPbiBTb2xhcmlzIHVwIHRvIDIuNiwKCWluY2x1ZGUgc29sMjYuaCBhbmQgZGVmYXVsdCB0byBwb3NpeDk1IHRocmVhZHMgaWYgaGF2ZV9wdGhyZWFkX2guCgkoc3BhcmMtKi1zb2xhcmlzMiopOiBMaWtld2lzZS4KCSogZ3Roci5oOiBJbmNsdWRlIGd0aHItcG9zaXg5NS5oIGlmIF9QVEhSRUFEUzk1IGlzIGRlZmluZWQuCgkqIGd0aHItcG9zaXg5NS5oOiBOZXcgZmlsZS4KCSogY29uZmlnL3NvbDI2Lmg6IE5ldyBmaWxlLgoJKiBkb2MvaW5zdGFsbC50ZXhpICgtLWVuYWJsZS10aHJlYWRzKTogRG9jdW1lbnQgJ3Bvc2l4OTUnLgoKMjAwNC0xMS0yMyAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBwb2ludGVyLXNldC5oIChwb2ludGVyX3NldF9jb250YWlucyk6IFJlbW92ZS4KCSogcG9pbnRlci1zZXQuYyAocG9pbnRlcl9zZXRfY29udGFpbnMpOiBMaWtld2lzZS4KCjIwMDQtMTEtMjIgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRG8gbm90IGNhbGwgcHJlc2VydmVfdGVtcF9zbG90cy4KCjIwMDQtMTEtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWZsb3cuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIHJlbW92ZV9waGlfYXJnLgoJQWRkIGEgcHJvdG90eXBlIGZvciByZW1vdmVfcGhpX2FyZ3MuCgkqIHRyZWUtcGhpbm9kZXMuYyAocmVtb3ZlX3BoaV9hcmcpOiBSZW1vdmUuCgkocmVtb3ZlX3BoaV9hcmdzKTogTmV3LgoJKiB0cmVlLXNzYS5jIChzc2FfcmVtb3ZlX2VkZ2UpOiBDYWxsIHJlbW92ZV9waGlfYXJncyBpbnN0ZWFkCglvZiByZW1vdmVfcGhpX2FyZy4KCgkqIGNmZy5jICh1bmNoZWNrZWRfbWFrZV9lZGdlKTogQ2FsbCBleGVjdXRlX29uX2dyb3dpbmdfcHJlZAoJYWZ0ZXIgbWFraW5nIGFuIGVkZ2UuCgkocmVtb3ZlX2VkZ2UpOiBDYWxsIGV4ZWN1dGVfb25fc2hyaW5raW5nX3ByZWQgYmVmb3JlIHJlbW92aW5nCglhbiBlZGdlLgoJKHJlZGlyZWN0X2VkZ2Vfc3VjYyk6IENhbGwgZXhlY3V0ZV9vbl9ncm93aW5nX3ByZWQgYW5kCglleGVjdXRlX29uX3Nocmlua2luZ19wcmVkLgoJKiBjZmdob29rcy5jIChleGVjdXRlX29uX2dyb3dpbmdfcHJlZCk6IE5ldy4KCShleGVjdXRlX29uX3Nocmlua2luZ19wcmVkKTogTGlrZXdpc2UuCgkqIGNmZ2hvb2tzLmggKGNmZ19ob29rcyk6IEFkZCBleGVjdXRlX29uX2dyb3dpbmdfcHJlZCBhbmQKCWV4ZWN1dGVfb25fc2hyaW5raW5nX3ByZWQuCglBZGQgcHJvdG90eXBlcyBmb3IgZXhlY3V0ZV9vbl9ncm93aW5nX3ByZWQgYW5kCglleGVjdXRlX29uX3Nocmlua2luZ19wcmVkLgoJKiBjZmdydGwuYyAocnRsX2NmZ19ob29rcyk6IEFkZCBOVUxMIGhvb2tzIHRvCglleGVjdXRlX29uX2dyb3dpbmdfcHJlZCBhbmQgZXhlY3V0ZV9vbl9zaHJpbmtpbmdfcHJlZC4KCShjZmdfbGF5b3V0X3J0bF9jZmdfaG9vayk6IExpa2V3aXNlLgoJKiB0cmVlLWNmZy5jICh0cmVlX2NmZ19ob29rcyk6IExpa2V3aXNlLgoKCSogdHJlZS1jZmcuYyAodHJlZV9leGVjdXRlX29uX3Nocmlua2luZ19wcmVkKTogTmV3LgoJKHRyZWVfY2ZnX2hvb2tzKTogVXNlIGl0LgoJKiB0cmVlLXNzYS5jIChzc2FfcmVtb3ZlX2VkZ2UpOiBEb24ndCBjYWxsIHJlbW92ZV9waGlfYXJncy4KCShzc2FfcmVkaXJlY3RfZWRnZSk6IERvbid0IGNhbGwgcmVtb3ZlX3BoaV9hcmdfbnVtLgoKCSogdHJlZS1waGlub2Rlcy5jIChyZW1vdmVfcGhpX2FyZ19udW0pOiBNYWtlIGl0IHN0YXRpYy4KCSogdHJlZS1mbG93Lmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoJKiB0cmVlLXNzYS5jIChzc2FfcmVtb3ZlX2VkZ2UpOiBSZW1vdmUuCgkqIHRyZWUtZmxvdy5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoJKiB0cmVlLWNmZy5jOiBSZXBsYWNlIHNzYV9yZW1vdmVfZWRnZSB3aXRoIHJlbW92ZV9lZGdlLgoJKiBiYXNpYy1ibG9jay5oOiBMaWtld2lzZS4KCSogdHJlZS1pZi1jb252LmM6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYzogTGlrZXdpc2UuCgoyMDA0LTExLTIzICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGRvYy9jZmcudGV4aSAoTWFpbnRhaW5pbmcgdGhlIENGRyk6IFVzZSBAZnRhYmxlIGluc3RlYWQgb2YKCUB0YWJsZSB0byBsaXN0IHRoZSBCU0kgbWV0aG9kcy4gIFVzZSBpbmRpdmlkdWFsIEBmaW5kZXggZGlyZWN0aXZlcwoJaW5zdGVhZCBvZiBvbmUgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGluZGV4IGVudHJpZXMuCgoyMDA0LTExLTIyICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE4NTI5CgkqIGZvbGQtY29uc3QuYyAoZm9sZF90b19ub25zaGFycF9pbmVxX3VzaW5nX2JvdW5kKTogTmV3IGZ1bmN0aW9uLgoJKHNpbXBsZV9vcGVyYW5kX3ApOiBVc2UgU1RSSVBfTk9QUy4gIENvbnNpZGVyIFNTQSBuYW1lcyBzaW1wbGUuCgkoZm9sZCk6IENhbGwgZm9sZF90b19ub25zaGFycF9pbmVxX3VzaW5nX2JvdW5kLgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKHNpbXBsaWZ5X3JlcGxhY2VfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCShudW1iZXJfb2ZfaXRlcmF0aW9uc19jb25kKTogRm9sZCB0aGUgZXhwcmVzc2lvbnMgYmVmb3JlIGZ1dGhlcgoJcHJvY2Vzc2luZy4KCSh0cmVlX3NpbXBsaWZ5X3VzaW5nX2NvbmRpdGlvbik6IEhhbmRsZSBjYXNlIHdoZW4gY29uZCBvciBleHByIGlzCglhbiBFUV9FWFBSIHNwZWNpYWxseS4KCjIwMDQtMTEtMjIgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS5jICh2ZXJpZnlfc3NhKTogU1NBX09QX0FMTF9VU0VTIHNob3VsZCBiZQoJU1NBX09QX0FMTF9VU0VTIHwgU1NBX09QX0FMTF9LSUxMUyBmb3IgdmVyaWZpY2F0aW9uIHB1cnBvc2VzLgoKMjAwNC0xMS0yMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIEZhcmlib3J6IEphaGFuaWFuICA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9yZXR1cm5faW5fbWVtb3J5KTogVGVzdAoJVEFSR0VUX0FMVElWRUNfQUJJLgoJKGZ1bmN0aW9uX2FyZ19ib3VuZGFyeSk6IEFsaWduIDggdG8gMTYgYnl0ZSB2ZWN0b3JzIGxpa2UgU1BFLgoJQWxpZ24gMTYgYnl0ZSBhbmQgbGFyZ2VyIHZlY3RvcnMgbGlrZSBBbHRpdmVjLgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogUGFzcyBhbnkgMTYgYnl0ZSB2ZWN0b3IgbGlrZSBBbHRpdmVjIHZlY3Rvci4KCShmdW5jdGlvbl9hcmcpOiBTYW1lLgoJKHJzNjAwMF9wYXNzX2J5X3JlZmVyZW5jZXMpOiBUZXN0IFRBUkdFVF9BTFRJVkVDX0FCSS4KCjIwMDQtMTEtMjIgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzE4NTcyCgkqIHRyZWUtc3JhLmMgKHNjYWxhcml6ZV9pbml0KTogVW5zaGFyZSB0aGUgcmhzIGJlZm9yZSBnaW1wbGlmeWluZwoJaXQuCgoyMDA0LTExLTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1fc2V0dXBfYmxvY2spOiBSZXZlcnQgMTEtMTMgY2hhbmdlIHRvCglmb3JjYWJseSByZS1tb2RlIGEgKHBvc3NpYmx5IEJMS21vZGUpIGhhcmQgcmVnaXN0ZXIuCgoyMDA0LTExLTIyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKG1lbV9taW5fYWxpZ25tZW50KTogQ2hlY2sgTUVNX0FMSUdOLgoKMjAwNC0xMS0yMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9wb3dlcjQubWQ6IFJlbW92ZSBkZWxheSBiZXR3ZWVuIGRpc3BhdGNoIGFuZCBpc3N1ZQoJYXNzb2NpYXRlZCB3aXRoIGRpc3BhdGNoIGdyb3VwIHNsb3RzIDMgYW5kIDQuCgkqIGNvbmZpZy9yczYwMDAvcG93ZXI1Lm1kOiBTYW1lLgoKMjAwNC0xMS0yMSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGNmZy5jIChjYWNoZWRfbWFrZV9lZGdlKTogVXNlIGZpbmRfZWRnZSByYXRoZXIgdGhhbiBhbiBpbmxpbmVkCgl2YXJpYW50LgoJKiBjZmdidWlsZC5jIChtYWtlX2VkZ2VzKTogTGlrZXdpc2UuCgkqIGNmZ2hvb2tzLmMgKGNhbl9kdXBsaWNhdGVfYmxvY2tfcCk6IExpa2V3aXNlLgoJKiBjZmdsb29wLmMgKGxvb3BfbGF0Y2hfZWRnZSk6IExpa2V3aXNlLgoJKiBjZmdsb29wbWFuaXAuYyAoZm9yY2Vfc2luZ2xlX3N1Y2NfbGF0Y2hlcyk6IExpa2V3aXNlLgoJKiBjZmdydGwuYyAocnRsX2Zsb3dfY2FsbF9lZGdlc19hZGQpOiBMaWtld2lzZS4KCSogcHJlZGljdC5jIChwcmVkaWN0X2xvb3BzLCBwcm9wYWdhdGVfZnJlcSk6IExpa2V3aXNlLgoJKiB0cmFjZXIuYyAodGFpbF9kdXBsaWNhdGUpOiBMaWtld2lzZS4KCSogdHJlZS1jZmcuYyAoZGlzYmFuZF9pbXBsaWNpdF9lZGdlcyk6IExpa2V3aXNlLgoJKHRyZWVfZm9yd2FyZGVyX2Jsb2NrX3AsIHRyZWVfZmxvd19jYWxsX2VkZ2VzX2FkZCk6IExpa2V3aXNlLgoKMjAwNC0xMS0yMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIHNiaXRtYXAuYyAoc2JpdG1hcF91bmlvbl9vZl9wcmVkcyk6IFJlbW92ZSByZWR1bmRhbnQKCWluaXRpYWxpc2F0aW9uIG9mICdlJy4KCjIwMDQtMTEtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xODU5OQoJKiByZWdyZW5hbWUuYyAoY29weXByb3BfaGFyZHJlZ19mb3J3YXJkKTogU3BlZWQgdXAgYnkgcHV0dGluZwoJQkJfVklTSVRFRCBmbGFncyBvbiBiYXNpYyBibG9ja3MgYXMgd2UgcHJvY2VzcyB0aGVtLgoKMjAwNC0xMS0yMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMTg1MzEKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChWSV9jaGFyKTogTmV3IG1vZGUgYXR0cmlidXRlLgoJKGFkZHYxNnFpMywgYWRkdjhoaTMsIGFkZHY0YWkzKTogUmVwbGFjZSB3aXRoIC4uLgoJKGFkZDxtb2RlPjMpOiAuLi4gdGhpcy4KCShzdWJ2MTZxaTMsIHN1YnY4aGkzLCBzdWJ2NGFpMyk6IFJlcGxhY2Ugd2l0aCAuLi4KCShzdWI8bW9kZT4zKTogLi4uIHRoaXMuCgkoc21heHYxNnFpMywgc21heHY4aGkzLCBzbWF4djRhaTMpOiBSZXBsYWNlIHdpdGggLi4uCgkoc21heDxtb2RlPjMpOiAuLi4gdGhpcy4KCShzbWludjE2cWkzLCBzbWludjhoaTMsIHNtaW52NGFpMyk6IFJlcGxhY2Ugd2l0aCAuLi4KCShzbWluPG1vZGU+Myk6IC4uLiB0aGlzLgoJKHVtYXh2MTZxaTMsIHVtYXh2OGhpMywgdW1heHY0YWkzKTogUmVwbGFjZSB3aXRoIC4uLgoJKHVtYXg8bW9kZT4zKTogLi4uIHRoaXMuCgkodW1pbnYxNnFpMywgdW1pbnY4aGkzLCB1bWludjRhaTMpOiBSZXBsYWNlIHdpdGggLi4uCgkodW1pbjxtb2RlPjMpOiAuLi4gdGhpcy4KCShhbmR2MTZxaTMsIGFuZHY4aGkzLCBhbmR2NGFpMyk6IFJlcGxhY2Ugd2l0aCAuLi4KCShhbmQ8bW9kZT4zKTogLi4uIHRoaXMuCgkoaW9ydjE2cWkzLCBpb3J2OGhpMywgaW9ydjRhaTMpOiBSZXBsYWNlIHdpdGggLi4uCgkoaW9yPG1vZGU+Myk6IC4uLiB0aGlzLgoJKHhvcnYxNnFpMywgeG9ydjhoaTMsIHhvcnY0YWkzKTogUmVwbGFjZSB3aXRoIC4uLgoJKHhvcjxtb2RlPjMpOiAuLi4gdGhpcy4KCShhbmR2MTZxaTMsIGFuZHY4aGkzLCBhbmR2NGFpMyk6IFJlcGxhY2Ugd2l0aCAuLi4KCShhbmQ8bW9kZT4zKTogLi4uIHRoaXMuCgkoaW9ydjE2cWkzLCBpb3J2OGhpMywgaW9ydjRhaTMpOiBSZXBsYWNlIHdpdGggLi4uCgkoaW9yPG1vZGU+Myk6IC4uLiB0aGlzLgoJKGFsdGl2ZWNfdm5vcik6IFJlcGxhY2Ugd2l0aCAuLi4KCShhbHRpdmVjX25vcjxtb2RlPik6IC4uLiB0aGlzLgoJKG9uZV9jbXBsdjE2cWkyLCBvbmVfY21wbHY4aGkyLCBvbmVfY29tcGx2NGFpMik6IFJlcGxhY2Ugd2l0aCAuLi4KCShvbmVfY21wbDxtb2RlPjIpOiAuLi4gdGhpcy4KCShhbHRpdmVjX3ZhbmRjKTogTmV3IGV4cGFuZGVyLgoJKCphbmRjPG1vZGU+Myk6IE5ldyBpbnNuLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChiZGVzY18yYXJnKTogQWRqdXN0IGZvciBuZXcgaW5zbiBuYW1lcy4KCjIwMDQtMTEtMjIgIERvcml0IE5haXNobG9zICA8ZG9yaXRAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdC8xODUzNgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAobWFrZV9sb29wX2l0ZXJhdGVfbnRpbWVzKTogVXNlIHR5cGUgb2Ygbml0ZXJzIHdoZW4KCWNyZWF0aW5nIGl2IGluc3RlYWQgb2YgaW50ZWdlcl90eXBlLgoJKHZlY3RfYnVpbGRfbG9vcF9uaXRlcnMpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgkodmVjdF90cmFuc2Zvcm1fbG9vcF9ib3VuZCk6IFJlbW92ZWQgKGR1cGxpY2F0ZXMgZnVuY3Rpb25hbGl0eSBvZgoJbWFrZV9sb29wX2l0ZXJhdGVfbnRpbWVzLgoJKHZlY3RfZ2VuX25pdGVyc19mb3JfcHJvbG9nX2xvb3ApOiBBZGQgZG9jdW1lbnRhdGlvbi4gQ2FsbAoJbGFuZ19ob29rcy50eXBlcy50eXBlX2Zvcl9zaXplIHRvIGNyZWF0ZSBhIHR5cGUgb2YgdGhlIHJlcXVpcmVkIHNpemUuCglVc2UgdGhhdCB0eXBlIGluc3RlYWQgb2YgaW50ZWdlcl90eXBlLiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgkodmVjdF91cGRhdGVfbml0ZXJzX2FmdGVyX3BlZWxpbmcpOiBVc2UgdHlwZSBvZiBuaXRlcnMgaW5zdGVhZCBvZgoJaW50ZWdlcl90eXBlLgoJKHZlY3RfdHJhbnNmb3JtX2xvb3ApOiBVbmlmeSBoYW5kbGluZyBvZiBrbm93biBhbmQgdW5rbm93biBsb29wIGJvdW5kCgljYXNlcy4gQ2FsbCBtYWtlX2xvb3BfaXRlcmF0ZV9udGltZXMgaW5zdGVhZCBvZgoJdmVjdF90cmFuc2Zvcm1fbG9vcF9ib3VuZC4KCjIwMDQtMTEtMjIgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRhcmdldC8xODIxNwoJKiBjb25maWcvcnM2MDAwL3QtZGFyd2luIChMSUIyRlVOQ1NfRVhUUkEpOiBNb3ZlIGRhcndpbi1mYWxsYmFjay5jIHRvCgkoTElCMkFEREVIKTogSGVyZS4KCjIwMDQtMTEtMjIgIERvcml0IE5haXNobG9zICA8ZG9yaXRAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdC8xODU0NAoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9hbmFseXplX2RhdGFfcmVmcyk6IEZhaWwgaWYgbWVtdGFnIG5vdCBmb3VuZC4KCjIwMDQtMTEtMjIgS2F6dWhpcm8gSW5hb2thIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJKiBjb25maWcuZ2NjOiBVc2UgdC1zbGliZ2NjLWVsZiB0byBidWlsZCBsaWJnY2Nfcy5zbyBvbgoJbTMycipsaW51eC4KCSogY29uZmlnL20zMnIvdC1saW51eCAoU0hMSUJfTUFQRklMRVMpOiBPdmVycmlkZSB0byB1c2UKCW0zMnIvbGliZ2NjLWdsaWJjLnZlci4KCSogY29uZmlnL20zMnIvbGliZ2NjLWdsaWJjLnZlcjogQWRkIE5ldyBmaWxlLgoKMjAwNC0xMS0yMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJpdG1hcC5oIChzdHJ1Y3QgYml0bWFwX29ic3RhY2spOiBOZXcgb2JzdGFjayB0eXBlLgoJKHN0cnVjdCBiaXRtYXBfaGVhZF9kZWYpOiBSZXBsYWNlIHVzaW5nX29ic3RhY2sgd2l0aCBvYnN0YWNrCglwb2ludGVyLgoJKGJpdG1hcF9kZWZhdWx0X29ic3RhY2spOiBOZXcuCgkoYml0bWFwX2luaXRpYWxpemUpOiBNYWtlIGlubGluZSwgZG9lcyBub3QgZG8gYWxsb2NhdGlvbi4KCShiaXRtYXBfcmVsZWFzZV9tZW1vcnkpOiBSZW1vdmUuCgkoYml0bWFwX29ic3RhY2tfaW5pdGlhbGl6ZSwgYml0bWFwX29ic3RhY2tfcmVsZWFzZSk6IERlY2xhcmUuCgkoYml0bWFwX29ic3RhY2tfYWxsb2MsIGJpdG1hcF9tYWxsb2NfYWxsb2MsIGJpdG1hcF9nY19hbGxvYywKCWJpdG1hcF9vYnN0YWNrX2ZyZWUsIGJpdG1hcF9tYWxsb2NfZnJlZSk6IERlY2xhcmUuCgkoQklUTUFQX09CU1RBQ0tfQUxMT0MsIEJJVE1BUF9HR0NfQUxMT0MsIEJJVE1BUF9YTUFMTE9DKTogQWRqdXN0LgoJKEJJVE1BUF9GUkVFKTogUmVwbGFjZSB3aXRoIC4uLgoJKEJJVE1BUF9PQlNUQUNLX0ZSRUUpOiAuLi4gdGhpcy4KCShCSVRNQVBfWEZSRUUpOiBBZGp1c3QuCgkoQklUTUFQX0lOSVRfT05DRSk6IFJlbW92ZS4KCSogYml0bWFwLmMgKGJpdG1hcF9vYnN0YWNrLCBiaXRtYXBfb2JzdGFja19pbml0LCBiaXRtYXBfZnJlZTogUmVtb3ZlLgoJKGJpdG1hcF9kZWZhdWx0X29ic3RhY2spOiBOZXcuCgkoYml0bWFwX2VsZW1fdG9fZnJlZWxpc3QpOiBBZGp1c3QuCgkoYml0bWFwX2VsZW1lbnRfYWxsb2NhdGUpOiBBZGp1c3QuIEJyZWFrIGluaXRpYWxpemF0aW9uIGludG8gLi4uCgkoYml0bWFwX29ic3RhY2tfaW5pdGlhbGl6ZSk6IC4uLiBoZXJlLgoJKGJpdG1hcF9yZWxlYXNlX21lbW9yeSk6IFJlcGxhY2Ugd2l0aCAuLi4KCShiaXRtYXBfb2JzdGFja19yZWxlYXNlKTogLi4uIHRoaXMuCgkoYml0bWFwX29ic3RhY2tfYWxsb2MsIGJpdG1hcF9tYWxsb2NfYWxsb2MsIGJpdG1hcF9nY19hbGxvYywKCWJpdG1hcF9vYnN0YWNrX2ZyZWUsIGJpdG1hcF9tYWxsb2NfZnJlZSk6IE5ldy4KCShiaXRtYXBfaW9yX2FuZF9jb21wbCwgYml0bWFwX2lvcl9hbmRfY29tcGxfaW50byk6IFVzZQoJYml0bWFwX2luaXRpYWxpemUuCgkoYml0bWFwX2luaXRpYWxpemUpOiBNb3ZlIHRvIGJpdG1hcC5oLgoJKiBnZW5ndHlwZS5jIChvcGVuX2Jhc2VfZmlsZXMpOiBBZGQgb2JzdGFjay5oIHRvIGlmaWxlcy4KCSogTWFrZWZpbGUuaW4gKEJBU0lDX0JMT0NLX0gsIFJFR1NfSCk6IEFkZCBvYnN0YWNrLmguCgkqIGJhc2ljLWJsb2NrLmggKElOSVRfUkVHX1NFVCk6IEFsbG9jYXRlIGZyb20gcmVnX29ic3RhY2suCgkoSU5JVElBTElaRV9SRUdfU0VUKTogUmVtb3ZlLgoJKEZSRUVfUkVHX1NFVCk6IFVzZSBCSVRNQVBfT0JTVEFDS19GUkVFLgoJKElOSVRfT05DRV9SRUdfU0VULCBNQVhfUkVHTk9fUkVHX1NFVCk6IFJlbW92ZS4KCShmbG93X29ic3RhY2spOiBEbyBub3QgZGVjbGFyZS4KCShyZWdfb2JzdGFjayk6IERlY2xhcmUuCgkqIHJlZ3MuaDogSW5jbHVkZSBvYnN0YWNrLmguCgkqIHRyZWUtb3B0aW1pemUuYyAodHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uKTogSW5pdGlhbGl6ZSBhbmQKCXJlbGVhc2UgYml0bWFwIG9ic3RhY2sgaGVyZS4KCSogYmItcmVvcmRlci5jOiAjaW5jbHVkZSByZWdzLCBub3QgYmFzaWMtYmxvY2suCgkoZml4X2Nyb3NzaW5nX2NvbmRpdGlvbmFsX2JyYW5jaGVzKTogQWxsb2NhdGUgcmVnc2V0cyBmcm9tCglyZWdfb2JzdGFjay4KCSogYnQtbG9hZC5jOiBEbyBub3QgaW5sdWRlIGJpdG1hcC5oLCBzYml0bWFwLmgsIGJhc2ljLWJsb2NrLmggb3IKCW9ic3RhY2suaC4KCSogY2FsbGVyLXNhdmUuYzogSW5jbHVkZSByZWdzLmggZWFybGllci4KCSogY2ZnLmM6IERvIG5vdCBpbmNsdWRlIGJhc2ljLWJsb2NrLmggb3Igb2JzdGFjay5oLgoJKHJlZ19vYnN0YWNrKTogRGVmaW5lLgoJKiBjZmdhbmFsLmM6IEluY2x1ZGUgb2JzdGFjay5oCgkqIGNmZ2NsZWFueXAuYzogRG8gbm90IGluY2x1ZGUgYmFzaWMtYmxvY2suaC4gSW5jbHVkZSByZWdzLmgKCWVhcmxpZXIuCgkqIGNmZ2xheW91dC5jOiBEbyBub3QgaW5jbHVkZSBvYnN0YWNrLmguCgkoZmxvd19vYnN0YWNrKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGNmZ19sYXlvdXRfZHVwbGljYXRlX2JiKTogVXNlIHJlZ19vYnN0YWNrLgoJKiBjZmdsb29wLmMsIGNmZ2xvb3BhbmFsLmMsIGNmZ2xvb3BtYW5pcC5jOiBJbmNsdWRlIG9ic3RhY2suaC4KCSogY2ZncnRsLmMgKHJ0bF9zcGxpdF9ibG9jayk6IFVzZSByZWdfb2JzdGFjay4KCShmb3JjZV9ub25mYWxsdGhydV9hbmRfcmVkaXJlY3QsIHJ0bF9zcGxpdF9lZGdlKTogTGlrZXdpc2UuCgkoc2FmZV9pbnNlcnRfaW5zbl9vbl9lZGdlKTogVXNlIE9CU1RBQ0tfQUxMT0NfUkVHX1NFVCwgYWRqdXN0LgoJKGNmZ19sYXlvdXRfc3BsaXRfZWRnZSk6IFVzZSByZWdfb2JzdGFjay4KCSogY3NlLmM6IEluY2x1ZGUgcmVncy5oIGVhcmxpZXIuCgkqIGRkZy5jOiBEbyBub3QgaW5jbHVkZSBiYXNpYy1ibG9jay5oLgoJKiBkb21pbmFuY2UuYzogSW5sdWRlIG9ic3RhY2suaC4KCSogZmxvdy5jICh1cGRhdGVfbGlmZV9pbmZvKTogVXNlIE9CU1RBQ0tfQUxMT0NfUkVHX1NFVCwgYWRqdXN0LgoJKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogTGlrZXdpc2UuCgkoYWxsb2NhdGVfYmJfbGlmZV9kYXRhKTogVXNlIHJlZ19vYnN0YWNrLgoJKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBVc2UgT0JTVEFDS19BTExPQ19SRUdTRVQuCgkqIGdsb2JhbC5jOiBEbyBub3QgaW5jbHVkZSBiYXNpYy1ibG9jay5oLgoJKGJ1aWxkX2luc25fY2hhaW4pOiBVc2UgT0JTVEFDS19BTExPQ19SRUdfU0VULCBhZGp1c3QuCgkqIGdyYXBoLmM6IEluY2x1ZGUgb2JzdGFjay5oLgoJKiBoYWlmYS1zY2hlZC5jOiBEbyBub3QgaW5jbHVkZSBiYXNpYy1ibG9jay5oLgoJKiBpZmN2dC5jOiBVc2UgT0JTVEFDS19BTExPQ19SRUdfU0VULCBhZGp1c3QuCgkqIGxvY2FsLWFsbG9jLmM6IERvIG5vdCBpbmNsdWRlIGJhc2ljLWJsb2NrLmguCgkqIGxvb3AtaW5pdC5jLCBsb29wLWludmFyaWFudC5jOiBJbmNsdWRlIG9ic3RhY2suaC4KCSogbG9vcC1pdi5jOiBMaWtld2lzZS4KCShzaW1wbGlmeV91c2luZ19pbml0aWFsX3ZhbHVlcyk6IFVzZSBPQlNUQUNLX0FMTE9DX1JFR19TRVQsCglhZGp1c3QuCgkqIGxvb3AtdW5yb2xsLmMsIGxvb3AtdW5zd2l0Y2guYzogSW5sdWRlIG9ic3RhY2suaC4KCSogbW9kdWxvLXNjaGVkLmM6IERvIG5vdCBpbmNsdWRlIGJhc2ljLWJsb2NrLmguCgkqIHBhc3Nlcy5jIChyZXN0X29mX2hhbmRsZV9maW5hbCk6IERvIG5vdCBjYWxsCglyZWdzZXRfcmVsZWFzZV9tZW1vcnkuCgkqIHJhLWRlYnVnLmM6IEluY2x1ZGUgcmVncy5oIGVhcmxpZXIuIERvIG5vdCBpbmNsdWRlCgliYXNpYy1ibG9jay5oLgoJKiByZWNvZy5jIChwZWVwaG9sZTJfb3B0aW1pemUpOiBVc2UgT0JTVEFDS19BTExPQ19SRUdfU0VULCBhZGp1c3QuCgkqIHJlZ2NsYXNzLmMgKGluaXRfcmVnX3NldHMpOiBEbyBub3QgY2FsbCBJTklUX09OQ0VfUkVHX1NFVC4KCShhbGxvY2F0ZV9yZWdfaW5mbyk6IERvIG5vdCBjYWxsIE1BWF9SRUdOT19SRUdfU0VULgoJKHJlZ3NldF9yZWxlYXNlX21lbW9yeSk6IFJlbW92ZS4KCSogcmVzb3VyY2UuYzogRG8gbm90IGluY2x1ZGUgYmFzaWMtYmxvY2suaC4KCSogcnRsYW5hbC5jOiBEbyBub3QgaW5jbHVkZSBiYXNpYy1ibG9jay5oLgoJKiBzYml0bWFwLmM6IEluY2x1ZGUgb2JzdGFjay5oLgoJKiBzY2hlZC1kZXBzLmM6IERvIG5vdCBpbmNsdWRlIGJhc2ljLWJsb2NrLmguCgkocmVnX3BlbmRpbmdfc2V0c19oZWFkLCByZWdfcGVuZGluZ19jbG9iYmVyc19oZWFkLAoJcmVnX3BlbmRpbmdfdXNlc19oZWFkKTogUmVtb3ZlLgoJKGluaXRfZGVwc19nbG9iYWwpOiBVc2UgT0JTVEFDS19BTExPQ19SRUdfU0VULgoJKiBzY2hlZC1lYmIuYzogRG8gbm90IGluY2x1ZGUgYmFzaWMtYmxvY2suaC4KCSogc2NoZWQtcmduLmM6IExpa2V3aXNlLgoJKiB0cmVlLWlmLWNvbnYuYyAoZ2V0X2xvb3BfYm9keV9pbl9pZl9jb252X29yZGVyKTogVXNlCglCSVRNQVBfWEZSRUUuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKHBlcmZvcm1fZWRnZV9pbnNlcnRzKTogVXNlIEJJVE1BUF9YRlJFRS4KCSogdHJlZS1zcmEuYyAoZGVjaWRlX2luc3RhbnRpYXRpb25zKTogQWRqdXN0IGJpdG1hcAoJaW5pdGlhbGl6YXRpb24uCgkqIHRyZWUtc3NhLWRjZS5jOiBJbmNsdWRlIG9ic3RhY2suaC4KCSogdHJlZS1zc2EtcHJlLmMgKGdyYW5kX2JpdG1hcF9vYnN0YWNrKTogTWFrZSBhIGJpdG1hcF9vYnN0YWNrLgoJKHZhbHVlX2luc2VydF9pbnRvX3NldF9iaXRtYXApOiBSZW1vdmUgdXNlbGVzcyBiaXRtYXBfY2xlYXIuCgkoYml0bWFwX3NldF9uZXcpOiBMaWtld2lzZS4KCShpbml0X3ByZSk6IEluaXRpYWxpemUgYml0bWFwIG9ic3RhY2suCgkoZmluaV9wcmUpOiBSZWxlYXNlIGJpdG1hcCBvYnN0YWNrLgoJKiB0cmVlLXNzYW5hbWVzLmMgKHNzYV9uYW1lc190b19yZXdyaXRlKTogTWFrZSBzdGF0aWMuCgkobWFya2VkX2Zvcl9yZXdyaXRlX3ApOiBzc2FfbmFtZXNfdG9fcmV3cml0ZSBpcyBuZXZlciBOVUxMLgoJKG1hcmtfZm9yX3Jld3JpdGUsIHVubWFya19mb3JfcmV3cml0ZSk6IExpa2V3aXNlLgoJKG1hcmtlZF9zc2FfbmFtZXMpOiBMaWtld2lzZS4KCShpbml0X3NzYW5hbWVzKTogVXNlIEJJVE1BUF9YTUFMTE9DLgoJKGZpbmlfc3NhbmFtZXMpOiBVc2UgQklUTUFQX1hGUkVFLgoJKiB3ZWIuYzogSW5jbHVkZSBvYnN0YWNrLmgKCjIwMDQtMTEtMjIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBzYml0bWFwLmMgKHNiaXRtYXBfdW5pb25fb2ZfcHJlZHMpOiBTZXQgJ2UnIHRvIHRoZSBuZXh0IGVkZ2UKCXByZWRlY2Vzc29yIGluIHRoZSBmaXJzdCBmb3ItbG9vcC4KCjIwMDQtMTEtMjEgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiAocnM2MDAwX2RhcndpbjY0X2Z1bmN0aW9uX2FyZyk6IEFkZAoJVU5JT05fVFlQRSBjYXNlLgoJKGZ1bmN0aW9uX2FyZyk6IE1vdmUgZGFyd2luIHRlc3QgdXAsIHNuaWZmIG1vZGUgZmlyc3QgZm9yCgllZmZpY2llbmN5LCB0ZXN0IGZvciB1bmlvbiB0eXBlLgoKMjAwNC0xMS0yMSAgRGFsZSBKb2hhbm5lc2VuICA8ZGFsZWpAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oIChKVU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04pOiBEZWZpbmUuCgoyMDA0LTExLTIxICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EuYyAodmVyaWZ5X3VzZSk6IEZpeCBjb21tZW50LgoJKHZlcmlmeV9waGlfYXJncyk6IENoZWNrIHRoYXQgdGhlIG51bWJlciBvZiBpbmNvbWluZyBlZGdlcyBtYXRjaGVzCgl0aGUgbnVtYmVyIG9mIFBISSBhcmd1bWVudHMuICBDaGVjayB0aGF0IGVhY2ggUEhJIGFyZ3VtZW50IGlzCgllaXRoZXIgYW4gU1NBX05BTUUgb3IgYW4gaW52YXJpYW50LiAgQ29hbGVzY2UgdGVzdHMgZm9yIFBISXMgZm9yCglkZWFkIG9yIGR1cGxpY2F0ZWQgZWRnZXMuICBDbGVhciBlLT5hdXggZWFybGllciBhbmQgYXZvaWQgc2VwYXJhdGUKCWxvb3AgdG8gY2xlYXIgZS0+YXV4IGFuZCB0ZXN0IGZvciBtaXNzZWQgZWRnZXMuCgkodmVyaWZ5X3NzYSk6IFJlbW92ZSBmaXJzdCB3YWxrIG92ZXIgc3RhdGVtZW50cy4gIE1vdmUgY2hlY2tpbmcKCW9mIFBISSBhcmdzIGludG8gdmVyaWZ5X3BoaV9hcmdzLiAgTW92ZSBjaGVja2luZyBvZiBzdGF0ZW1lbnRzCgl3aXRoIGFsaWFzZWQgc3RvcmVzIGFuZCBWX01BWV9ERUZTIGludG8gdGhlIHJlbWFpbmluZyBsb29wIG92ZXIKCXRoZSBzdGF0ZW1lbnRzLiAgUmVnaXN0ZXIgZGVmcyBieSB3YWxraW5nIHRocm91Z2ggdGhlIGZvcm1hbAoJU1NBX05BTUUgdGFibGUuCgoyMDA0LTExLTIxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzE4NTIwCgkqIGRvanVtcC5jIChjb21wYXJlX2Zyb21fcnR4KTogQ2xhcmlmeSBtb2RlIGFyZ3VtZW50IGluIGZ1bmN0aW9uCglkZXNjcmlwdGlvbi4gIENvcnJlY3Qgb3JkZXIgb2YgbW9kZS9jbXBfbW9kZSBhcmd1bWVudHMgaW4gY2FsbCB0bwoJc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24uICBDaGVjayAidGVtIiBmb3IgQ09NUEFSSVNPTl9QLgoKMjAwNC0xMS0yMSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCSAgICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJUFIgdGFyZ2V0LzE3ODM2CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9yZXR1cm5faW5fbWVtb3J5KTogUmV0dXJuCglzeW50aGV0aWMgdmVjdG9ycyBpbiBtZW1vcnkuCgkoZnVuY3Rpb25fYXJnX2JvdW5kYXJ5KTogQWxpZ24gbGFyZ2Ugc3ludGhldGljIHZlY3RvcnMuCgkocnM2MDAwX3Bhc3NfYnlfcmVmZXJlbmNlKTogUGFzcyBzeW50aGV0aWMgdmVjdG9ycyBpbiBtZW1vcnkuCgoyMDA0LTExLTIxICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogY2ZnLmMgKHVwZGF0ZV9iYl9wcm9maWxlX2Zvcl90aHJlYWRpbmcpOiBEbyBub3QgcmVzY2FsZSB0aGUKCXN1Y2Nlc3NvciBwcm9iYWJpbGl0aWVzIGlmIHRoZXkgYXJlIG5vdCBnb2luZyB0byBjaGFuZ2UuICBQdWxsCglkaXZpc2lvbiBvdXQgb2YgbG9vcCBpZiB3ZSBkbyBuZWVkIHRvIHJlc2NhbGUgc3VjY2Vzc29yIHByb2JhYmlsaXRpZXMuCgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAocmVkaXJlY3Rpb25fZGF0YV9oYXNoKTogVXNlIHRoZQoJaW5kZXggb2YgdGhlIGRlc3RpbmF0aW9uIGJsb2NrIGZvciB0aGUgaGFzaCB2YWx1ZSByYXRoZXIgdGhhbgoJaGFzaGluZyBhIHBvaW50ZXIuCgoyMDA0LTExLTIwICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2FycmF5X3JlZik6IERvbid0IGNoZWNrIGZvciBpbmRleCA9PSAwLiAgTWFrZQoJY2hlY2tzIGZvciBuZWl0aGVyIGFyZ3VtZW50IGJlaW5nIGFuIGFycmF5IG9yIHBvaW50ZXIgKHN3YXBwaW5nCgl0aGUgYXJndW1lbnRzIGlmIG5lY2Vzc2FyeSksIHRoZSBhcnJheSBhcmd1bWVudCBiZWluZyBhIHBvaW50ZXIgdG8KCW9yIGFycmF5IG9mIGZ1bmN0aW9ucyBhbmQgZm9yIC1XY2hhci1zdWJzY3JpcHRzIHdhcm5pbmdzIHVwZnJvbnQuCgoyMDA0LTExLTIwICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogcmVncmVuYW1lLmMgKGNvcHlwcm9wX2hhcmRyZWdfZm9yd2FyZCk6IE9ubHkgc2VhcmNoIGZvciBhCglwcmV2aW91c2x5IHByb2Nlc3NlZCBibG9jayBpZiB0aGUgY3VycmVudCBibG9jayBvbmx5IGhhcyBvbmUKCXByZWRlY2Vzc29yLgoKMjAwNC0xMS0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtc3NhLXRocmVhZHVwZGF0ZS5jLCB0cmVlLXZlY3Rvcml6ZXIuYzogRml4IGNvbW1lbnQKCXR5cG9zLgoJKiBjb25maWcvYXJtL2FybS5jOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDA0LTExLTIwICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSBhcm1fbGRfc2NoZWQgcmF0aGVyIHRoYW4gdGVzdGluZwoJYSBiaXQgaW4gdHVuZV9mbGFncy4KCShjb25zdF9kb3VibGVfbmVlZHNfbWluaXBvb2wpOiBMaWtld2lzZS4gIFNwbGl0IG1vc3Qgb2YgdGhlIGNvZGUgb3V0CglpbnRvIC4uLgoJKGFybV9jb25zdF9kb3VibGVfaW5saW5lX2Nvc3QpOiAuLi4gbmV3IGZ1bmN0aW9uIGhlcmUuCgkqIGFybS1wcm90b3MuaCAoYXJtX2NvbnN0X2RvdWJsZV9pbmxpbmVfY29zdCk6IEFkZCBwcm90b3R5cGUuCgkqIGFybS5oIChFWFRSQV9DT05TVFJBSU5UX1NUUl9BUk0pOiBBZGQgRFthYmNdIGNvbnN0cmFpbnRzIGZvciBkb3VibGUtCgl3b3JkIGNvbnN0YW50cyBvZiBsZW5ndGggMiwgMyBhbmQgNCBpbnNucyByZXNwZWN0aXZlbHkuCgkoQ09OU1RSQUlOVF9MRU4pOiBUaGUgJ0QnIHByZWZpeCBpcyBhIDItbGV0dGVyIGNvbnN0cmFpbnQuCgkqIGFybS5tZCAoYXJtX21vdmRpLCBtb3ZkZl9zb2Z0X2luc24pOiBBZGQgYWx0ZXJuYXRpdmVzIGZvciBEW2FiY10KCWNvbnN0cmFpbnRzLiAgU2V0IGluc24gbGVuZ2h0cyBhY2NvcmRpbmdseS4KCjIwMDQtMTEtMTkgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYzogUmVwbGFjZSBSRURJUkVDVElPTl9EQVRBIHZhcnJheSB3aXRoCglhIGhhc2ggdGFibGUuICBFeHRlbnNpdmUgbW9kaWZpY2F0aW9ucyB0aHJvdWdob3V0IHRvIHN1cHBvcnQKCXRoYXQgY2hhbmdlLgoJKHN0cnVjdCBlbCk6IE5ldy4KCShzdHJ1Y3QgbG9jYWxfaW5mbyk6IE5ldy4KCShzdHJ1Y3QgcmVkaXJlY3Rpb25fZGF0YSk6IEFkZCBuZXcgSU5DT01JTkdfRURHRVMgYW5kIERPX05PVF9EVVBMSUNBVEUKCWZpZWxkcy4KCShyZWRpcmVjdGlvbl9kYXRhKTogTm93IGEgaGFzaHRhYmxlLgoJKHJlZGlyZWN0aW9uX2RhdGFfaGFzaCwgcmVkaXJlY3Rpb25fZGF0YV9lcSk6IE5ldy4KCShsb29rdXBfcmVkaXJlY3Rpb25fZGF0YSwgY3JlYXRlX2R1cGxpY2F0ZXMpOiBOZXcuCgkoY3JlYXRlX2VkZ2VfYW5kX3VwZGF0ZV9kZXN0aW9uYXRpb25fcGhpcyk6IE5ldy4KCShmaXh1cF90ZW1wbGF0ZV9ibG9jaywgcmVkaXJlY3RfZWRnZXMpOiBOZXcuCgkodGhyZWFkX2Jsb2NrKTogVXNlIGhhc2ggdGFibGUgdHJhdmVyc2FscyBpbnN0ZWFkIG9mIGxvb3BzIG92ZXIKCXZhcnJheSBlbnRyaWVzIG9yIGluY29taW5nIGVkZ2UgdmVjdG9ycy4KCjIwMDQtMTEtMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBiYXNpYy1ibG9jay5oIChlZGdlX2RlZik6IEFkZCBkZXN0X2lkeC4KCSogY2ZnLmMgKHVuY2hlY2tlZF9tYWtlX2VkZ2UpOiBJbml0aWFsaXplIGRlc3RfaWR4LgoJKHJlbW92ZV9lZGdlKTogU2ltcGxpZnkgdGhlIGRpc2Nvbm5lY3Rpb24gb2YgYW4gZWRnZSBmcm9tIGl0cwoJZGVzdGluYXRpb24uCgkocmVkaXJlY3RfZWRnZV9zdWNjKTogTGlrZXdpc2UuCgkqIGNmZ2hvb2tzLmMgKHZlcmlmeV9mbG93X2luZm8pOiBDaGVjayB0aGUgY29uc2lzdGVuY3kgb2YKCWRlc3RfaWR4IGZvciBlYWNoIGVkZ2UuCgoyMDA0LTExLTE5ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdGVybmFyeV9vcGVyYXRpb24pOiBVc2UKCWdlbl9pbnRfbW9kZS4KCjIwMDQtMTEtMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jIChyZWluc3RhbGxfcGhpX2FyZ3MpOiBOZXcuCgkodHJlZV9zcGxpdF9lZGdlKTogVXNlIGl0IGFmdGVyIHJlZGlyZWN0aW5nIGFuIGVkZ2UuICBEb24ndAoJbW9kaWZ5IFBISV9BUkdfRURHRS4KCjIwMDQtMTEtMTkgIEFuZHJlYXMgVG9ibGVyICA8YS50b2JsZXJAc2Nod2Vpei5jaD4KCgkqIHRyZWUtdmVjdG9yaXplci5jIChzbHBlZWxfdmVyaWZ5X2NmZ19hZnRlcl9wZWVsaW5nKTogRGVmaW5lIG9ubHkKCWlmIGNoZWNraW5nIGlzIGVuYWJsZWQuCgoyMDA0LTExLTE5ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChwdXNoX3Njb3BlKTogUmVtb3ZlICJcbiIgZnJvbSBlbmQgb2YgZGlhZ25vc3RpYyBmb3IKCXRvbyBtYW55IG5lc3RlZCBzY29wZXMuCgoyMDA0LTExLTE5ICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHQvMTgxODEKCSogdHJlZS12ZWN0b3JpemVyLmMgKHNscGVlbF90cmVlX3BlZWxfbG9vcF90b19lZGdlKTogUGVlbGluZyBzY2hlbWUKCWNoYW5nZWQgdG8gc3VwcG9lciB1c2VzLWFmdGVyLWxvb3AgYW5kIHRvIHZvaWQgY3JlYXRpbmcgZmxvdyBwYXRocwoJdGhhdCBzaG91bGRuJ3QgZXhpc3QuCgkoc2xwZWVsX3VwZGF0ZV9waGlfbm9kZXNfZm9yX2d1YXJkKTogVGFrZXMgYWRkaXRpb25hbCB0d28gYXJndW1lbnRzLgoJTW9kaWZpZWQgdG8gZml0IHRoZSBuZXcgcGVlbGluZyBzY2hlbWUuIEF2b2lkIHF1YWRyYXRpYyBiZWhhdmlvci4KCShzbHBlZWxfYWRkX2xvb3BfZ3VhcmQpOiBUYWtlcyBhZGRpdGlvbmFsIGFyZ3VtZW50LgoJKHNscGVlbF92ZXJpZnlfY2ZnX2FmdGVyX3BlZWxpbmcpOiBOZXcgZnVuY3Rpb24uCgkodmVjdF91cGRhdGVfaXZzX2FmdGVyX3ZlY3Rvcml6ZXIpOiBUYWtlcyBhZGRpdGlvbmFsIGFyZ3VtZW50LiBVcGRhdGVkCglkb2N1bWVudGF0aW9uLiBVc2UgJ2V4aXQtYmInIGluc3RlYWQgb2YgY3JlYXRpbmcgJ25ldy1iYicuCgkocmVuYW1lX3ZhcmlhYmxlc19pbl9iYik6IERvbid0IHVwZGF0ZSBwaGlzIGZvciBCQnMgb3V0IG9mIGxvb3AsIHRvIGZpdAoJdGhlIG5ldyBwZWVsaW5nIHNjaGVtZS4KCShjb3B5X3BoaV9ub2Rlcyk6IEZ1bmN0aW9uIHJlbW92ZWQuIEl0cyBmdW5jdGlvbmFsaXR5IG1vdmVkIHRvCgl1cGRhdGVfcGhpc19mb3JfZHVwbGljYXRlX2xvb3AuCgkoc2xwZWVsX3VwZGF0ZV9waGlzX2Zvcl9kdXBsaWNhdGVfbG9vcCk6IEZ1bmN0aW9uYWxpdHkgb2YgY29weV9waGlfbm9kZXMKCW1vdmVkIGhlcmUuIEFkZGVkIGRvY3VtZW50YXRpb24uIE1vZGlmaWVkIHRvIGZpdCB0aGUgbmV3IHBlZWxpbmcgc2NoZW1lLgoJKHNscGVlbF9tYWtlX2xvb3BfaXRlcmF0ZV9udGltZXMpOiBTZXR0aW5nIGxvb3AtPnNpbmdsZV9leGl0IG5vdCBub3QKCW5lZWRlZCAtIGRvbmUgaW4gc2xwZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UuCgkoc2xwZWVsX3RyZWVfZHVwbGljYXRlX2xvb3BfdG9fZWRnZV9jZmcpOiBEZWJ1ZyBwcmludG91dHMgY29tcGFjdGVkLgoJKHZlY3RfZG9fcGVlbGluZ19mb3JfbG9vcF9ib3VuZCk6IEFkZCBkb2N1bWVudGF0aW9uLiBDYWxsCglzbHBlZWxfdmVyaWZ5X2NmZ19hZnRlcl9wZWVsaW5nLiBDYWxsIHZlY3RfdXBkYXRlX2l2c19hZnRlcl92ZWN0b3JpemVyCgl3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnQuCgkodmVjdF9kb19wZWVsaW5nX2Zvcl9hbGlnbm1lbnQpOiBDYWxsIHNscGVlbF92ZXJpZnlfY2ZnX2FmdGVyX3BlZWxpbmcuCgoJKHZlY3RfZmluaXNoX3N0bXRfZ2VuZXJhdGlvbik6IEF2b2lkIDgwIGNvbHVtbiBvdmVmbG93LgoKMjAwNC0xMS0xOSAgRG9yaXQgTmFpc2hsb3MgIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0b3JpemVyLmMgKHNscGVlbF9tYWtlX2xvb3BfaXRlcmF0ZV9udGltZXMpOiBMYXN0IHR3bwoJYXJndW1lbnRzIHJlbW92ZWQuCgkoc2xwZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UpOiBDYWxsIHNscGVlbF9tYWtlX2xvb3BfaXRlcmF0ZV9udGltZXMKCXdpdGhvdXQgbGFzdCB0d28gYXJndW1lbnRzLiBVcGRhdGUgc2luZ2xlX2V4aXQgb2YgbG9vcHMuCgkodmVjdF91cGRhdGVfbml0ZXJzX2FmdGVyX3BlZWxpbmcpOiBSZW1vdmVkLiBJdHMgZnVuY3Rpb25hbGl0eSB3YXMKCW1vdmVkIHRvIHZlY3RfZG9fcGVlbGluZ19mb3JfYWxpZ25tZW50LgoJKHZlY3RfZG9fcGVlbGluZ19mb3JfbG9vcF9ib3VuZCk6IE5ldyBuYW1lIGZvciBmdW5jdGlvbiBwcmV2aW91c2x5CgljYWxsZWQgdmVjdF90cmFuc2Zvcm1fZm9yX3Vua25vd25fbG9vcF9ib3VuZC4KCSh2ZWN0X3RyYW5zZm9ybV9sb29wX2JvdW5kKTogQ2FsbCBzbHBlZWxfbWFrZV9sb29wX2l0ZXJhdGVfbnRpbWVzCglpbnN0ZWFkIG9mIGNvZGUgdGhhdCBkdXBsaWNhdGVzIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkuCgkodmVjdF9kb19wZWVsaW5nX2Zvcl9hbGlnbm1lbnQpOiBGdW5jdGlvbmFsaXR5IG9mCgl2ZWN0X3VwZGF0ZV9uaXRlcnNfYWZ0ZXJfcGVlbGluZyBtb3ZlZCBoZXJlLgoJKHZlY3RfdHJhbnNmb3JtX2xvb3ApOiBVbmlmeSBjYWxsIHRvIHZlY3RfZG9fcGVlbGluZ19mb3JfbG9vcF9ib3VuZCAtCglwcmV2aW91c2x5IG5hbWVkIHZlY3RfdHJhbnNmb3JtX2Zvcl91bmtub3duX2xvb3BfYm91bmQgLSBmb3IgYm90aCBrbm93bgoJYW5kIHVua25vd24gbG9vcCBib3VuZCBjYXNlcy4KCjIwMDQtMTEtMTkgIERvcml0IE5haXNobG9zICA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIHRyZWUtdmVjdG9yaXplci5jIChzbHBlZWxfY2FuX2R1cGxpY2F0ZV9sb29wX3ApOiBOZXcgbmFtZSBmb3IgZnVuY3Rpb24KCXByZXZpb3VzbHkgY2FsbGVkIHZlcmlmeV9sb29wX2Zvcl9kdXBsaWNhdGlvbi4gQWxsIGNvbmRpdGlvbnMgY29tcGFjdGVkCglpbnRvIG9uZSBjb21wb3VuZCBjb25kaXRpb24uIFJlbW92ZWQgZGVidWcgZHVtcHMuCgkodmVjdF9hbmFseXplX2xvb3Bfd2l0aF9zeW1ib2xpY19udW1fb2ZfaXRlcnMpOiBSZW1vdmVkLiBTb21lIG9mIHRoZQoJZnVuY3Rpb25hbGl0eSBtb3ZlZCB0byB2ZWN0X2Nhbl9hZHZhbmNlX2l2c19wLCBhbmQgc29tZSB0bwoJdmVjdF9hbmFseXplX2xvb3BfZm9ybS4KCSh2ZWN0X2Nhbl9hZHZhbmNlX2l2c19wKTogTmV3IGZ1bmN0aW9uLiBDb250YWlucyBmdW5jdGlvbmFsaXR5IHRoYXQgd2FzCgl0YWtlbiBvdXQgb2YgdmVjdF9hbmFseXplX2xvb3Bfd2l0aF9zeW1ib2xpY19udW1fb2ZfaXRlcnMuCgkoc2xwZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UpOiBDYWxsIHNscGVlbF9jYW5fZHVwbGljYXRlX2xvb3BfcC4KCSh2ZWN0X2FuYWx5emVfb3BlcmF0aW9ucyk6IENhbGwgdmVjdF9jYW5fYWR2YW5jZV9pdnNfcCBhbmQKCXNscGVlbF9jYW5fZHVwbGljYXRlX2xvb3BfcC4KCSh2ZWN0X2dldF9sb29wX25pdGVycyk6IEFkZGVkIGRvY3VtZW50YXRpb24uCgkodmVjdF9hbmFseXplX2xvb3BfZm9ybSk6IENoZWNrIHRoZSBsb29wIGVudHJ5IGFsd2F5cyAtIG5vdCBvbmx5IGluIGNhc2UKCW9mIHVua25vd24gbG9vcCBib3VuZC4gQ3JlYXRlIHByZWhlYWRlciBhbmQgZXhpdCBiYiBpZiBuZWNlc3NhcnkuIEFwcGx5CglhIGNoZWNrIHRoYXQgdXNlZCB0byB0YWtlIHBsYWNlIGluCgl2ZWN0X2FuYWx5emVfbG9vcF93aXRoX3N5bWJvbGljX251bV9vZl9pdGVycy4KCSh2ZWN0b3JpemVfbG9vcHMpOiBDYWxsIHZlcmlmeV9sb29wX2Nsb3NlZF9zc2EgdW5kZXIgRU5BQkxFX0NIRUNLSU5HLgoJUmVtb3ZlIHJlZHVuZGFudCBjYWxsIHRvIHJld3JpdGVfaW50b19sb29wX2Nsb3NlZF9zc2EuCgkodmVjdF9jb21wdXRlX2RhdGFfcmVmc19hbGlnbm1lbnQpOiBSZW1vdmVkIG9ic29sZXRlIGNvbW1lbnQuCgoyMDA0LTExLTE5ICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmlibS5jb20+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoc2xwZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UpOiBOZXcgbmFtZSBmb3IKCWZ1bmN0aW9uIHByZXZpb3VzbHkgY2FsbGVkIHRyZWVfZHVwbGljYXRlX2xvb3BfdG9fZWRnZS4KCShzbHBlZWxfdHJlZV9kdXBsaWNhdGVfbG9vcF90b19lZGdlX2NmZyk6IE5ldyBuYW1lIGZvciBmdW5jdGlvbgoJcHJldmlvdXNseSBjYWxsZWQgdHJlZV9kdXBsaWNhdGVfbG9vcF90b19lZGdlX2NmZy4KCShzbHBlZWxfdXBkYXRlX3BoaXNfZm9yX2R1cGxpY2F0ZV9sb29wKTogUHJlZml4ICdzbHBlZWwnIGFkZGVkIHRvCglmdW5jdGlvbiBuYW1lLgoJKHNscGVlbF91cGRhdGVfcGhpX25vZGVzX2Zvcl9ndWFyZCk6IExpa2V3aXNlLgoJKHNscGVlbF9tYWtlX2xvb3BfaXRlcmF0ZV9udGltZXMpOiBMaWtld2lzZS4KCShzbHBlZWxfYWRkX2xvb3BfZ3VhcmQpOiBMaWtld2lzZS4KCShhbGxvY2F0ZV9uZXdfbmFtZXMsIGZyZWVfbmV3X25hbWVzKTogRnVuY3Rpb24gZGVjbGFyYXRpb24gbW92ZWQgdG8gdG9wCglvZiBmaWxlLgoJKHJlbmFtZV91c2Vfb3AsIHJlbmFtZV9kZWZfb3ApOiBMaWtld2lzZS4KCShyZW5hbWVfdmFyaWFibGVzX2luX2JiLCByZW5hbWVfdmFyaWFibGVzX2luX2xvb3ApOiBMaWtld2lzZS4KCSh2ZWN0X2dlbmVyYXRlX3RtcHNfb25fcHJlaGVhZGVyKTogRnVuY3Rpb24gZGVjbGFyYXRpb24gbW92ZWQuCgkodmVjdF90cmFuc2Zvcm1fZm9yX3Vua25vd25fbG9vcF9ib3VuZCk6IEFkZGVkIG1pc3NpbmcgZnVuY3Rpb24KCWRlY2xhcmF0aW9uLgoKMjAwNC0xMS0xOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHQvMTg1MDcKCSogdHJlZS1mbG93LmggKHRyZWVfb25faGVhcCk6IFR5cGVkZWYgYmVjYXVzZSB0aGVyZSBpcyBhbHJlYWR5IGEgVkVDKHRyZWUpLgoJRGVmaW5lIGEgVkVDKHRyZWVfb25faGVhcCkgZm9yIGhlYWQuCgkocmVnaXN0ZXJfbmV3X2RlZik6IENoYW5nZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgYSBWRUModHJlZV9vbl9oZWFwKS4KCSogdHJlZS1zc2EtZG9tLmMgKGJsb2NrX2RlZnNfc3RhY2spOiBDaGFuZ2UgdG8gYmUgYSBWRUModHJlZV9vbl9oZWFwKS4KCSh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBJbml0aWFsaXplIGJsb2NrX2RlZnNfc3RhY2sgd2l0aAoJdGhlIFZFQyh0cmVlX29uX2hlYXApIGZ1bmN0aW9uLiAgQWxzbyBmcmVlIGl0IGJlZm9yZSByZXR1cm5pbmcuCgkoZG9tX29wdF9pbml0aWFsaXplX2Jsb2NrKTogVXNlIFZFQ19zYWZlX3B1c2ggaW5zdGVhZCBvZiBWQVJSQVlfUFVTSF9UUkVFCglmb3IgYmxvY2tfZGVmc19zdGFjay4KCShyZXN0b3JlX2N1cnJkZWZzX3RvX29yaWdpbmFsX3ZhbHVlKTogVXNlIFZFQ19sZW5ndGggaW5zdGVhZCBvZgoJVkFSUkFZX0FDVElWRV9TSVpFLiBWRUNfcG9wIGluc3RlYWQgb2YgVkFSUkFZX1RPUF9UUkVFL1ZBUlJBWV9QT1AuCgkoZG9tX29wdF9maW5hbGl6ZV9ibG9jayk6IFVzZSBWRUNfc2FmZV9wdXNoIGluc3RlYWQgb2YgVkFSUkFZX1BVU0hfVFJFRQoJZm9yIGJsb2NrX2RlZnNfc3RhY2suCgkqIHRyZWUtaW50by1zc2EuYyAoYmxvY2tfZGVmc19zdGFjayk6IENoYW5nZSB0byBiZSBhIFZFQyh0cmVlX29uX2hlYXApLgoJKHJld3JpdGVfaW5pdGlhbGl6ZV9ibG9jayk6IFVzZSBWRUNfc2FmZV9wdXNoIGluc3RlYWQgb2YgVkFSUkFZX1BVU0hfVFJFRQoJZm9yIGJsb2NrX2RlZnNfc3RhY2suCgkoc3NhX3JlZ2lzdGVyX25ld19kZWYpOiBMaWtld2lzZS4KCShzc2FfcmV3cml0ZV9pbml0aWFsaXplX2Jsb2NrKTogTGlrZXdpc2UuCgkocmV3cml0ZV9maW5hbGl6ZV9ibG9jayk6IFVzZSBWRUNfbGVuZ3RoIGluc3RlYWQgb2YKCVZBUlJBWV9BQ1RJVkVfU0laRS4gVkVDX3BvcCBpbnN0ZWFkIG9mIFZBUlJBWV9UT1BfVFJFRS9WQVJSQVlfUE9QLgoJKHNzYV9yZXdyaXRlX2ZpbmFsaXplX2Jsb2NrKTogTGlrZXdpc2UuCgkocmVnaXN0ZXJfbmV3X2RlZik6IENoYW5nZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgYSBWRUModHJlZV9vbl9oZWFwKS4KCVVzZSBWRUNfc2FmZV9wdXNoIGluc3RlYWQgb2YgVkFSUkFZX1BVU0hfVFJFRS4KCShyZXdyaXRlX2Jsb2Nrcyk6IEluaXRpYWxpemUgYmxvY2tfZGVmc19zdGFjayB3aXRoCgl0aGUgVkVDKHRyZWVfb25faGVhcCkgZnVuY3Rpb24uICBBbHNvIGZyZWUgaXQgYmVmb3JlIHJldHVybmluZy4KCShyZXdyaXRlX3NzYV9pbnRvX3NzYSk6IExpa2V3aXNlLgoKMjAwNC0xMS0xOSAgRmFyaWJvcnogSmFoYW5pYW4gPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX2RhdGFfZGVmaW5lZF9wKTogcmV0dXJuIDEgZm9yCglNQUNIT1BJQ19ERUZJTkVEX0ZVTkNUSU9OLgoKMjAwNC0xMS0xOSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLmMgKHZlcmlmeV9zc2EpOiBSZW1vdmUgcmVkdW5kYW50IGNoZWNraW5nIG9mIFBISQoJYXJndW1lbnRzLgoKMjAwNC0xMS0xOSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMTc3MzUKCSogdmFyYXNtLmMgKGRlZmF1bHRfYXNzZW1ibGVfaW50ZWdlcik6IEFsbG93IHBvaW50ZXItc2l6ZWQgdmFsdWVzLgoJRXhwYW5kIGNvbW1lbnQuCgoyMDA0LTExLTE5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKGNvbWJpbmVfYm5wKTogQWRkIGNvZGUgdG8gaGFuZGxlCgl6ZXJvX2V4dGVuc2lvbiBhbmQgbHNoaWZ0cnQgaW5zbnMuCglSZXBsYWNlIHVzZXMgb2YgWEVYUCguLi4pIHdpdGggZWl0aGVyIFNFVF9ERVNUKCkgb3IgU0VUX1NSQygpCgl3aGVyZSBhcHByb3ByaWF0ZS4KCSogY29uZmlnL3N0b3JteTE2LnN0b3JteTE2Lm1kIChiY2xyeDMsIGJzZXR4Myk6IE5ldyBwYXR0ZXJucwoJdG8gaGFuZGxlIGJwIGFuZCBibiBpbnNuIHBhdHRlcm5zIHdpdGggYSB6ZXJvX2V4dGVuZCBydHgKCWluc2lkZSB0aGVtLgoKMjAwNC0xMS0xOSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChnZW5lcmljX3NjaGVkKTogTWFrZSBjb25zdC4KCjIwMDQtMTEtMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBlbWl0LXJ0bC5jIChjbGFzc2lmeV9pbnNuKTogTWFrZSBpdCBzdGF0aWMuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKCSogaW50ZWdyYXRlLmMgKGhhc19mdW5jX2hhcmRfcmVnX2luaXRpYWxfdmFsLAoJZ2V0X2Z1bmNfaGFyZF9yZWdfaW5pdGlhbF92YWwpOiBNYWtlIHRoZW0gc3RhdGljLgoJKiBpbnRlZ3JhdGUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZXMuCgoyMDA0LTExLTE5ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGR3YXJmMmFzbS5oIChkdzJfYXNtX291dHB1dF9wY2VsKTogU3R1YiBvdXQgd2l0aCAjaWYgMC4KCShkdzJfYXNtX291dHB1dF9kZWx0YV9zbGViMTI4KTogTGlrZXdpc2UuCgkqIGR3YXJmMmFzbS5jIChkdzJfYXNtX291dHB1dF9wY3JlbCk6IExpa2V3aXNlLgoJKGR3Ml9hc21fb3V0cHV0X2RlbHRhX3NsZWIxMjgpOiBMaWtld2lzZS4KCjIwMDQtMTEtMTkgIEFkYW0gTmVtZXQgIDxhbmVtZXRAbG54dy5jb20+CgoJKiB0cmVlLXNzYS1hbGlhcy5jOiBGaXggY29tbWVudC4KCjIwMDQtMTEtMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLW91dG9mLXNzYS5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTExLTE5ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIHByZWRpY3QuaCAocHJlZGljdF9pbnNuKTogUmVtb3ZlIGV4dGVybiBkZWNsYXJhdGlvbi4KCSogcHJlZGljdC5jIChwcmVkaWN0X2luc24pOiBNYWtlIHN0YXRpYy4KCjIwMDQtMTEtMTkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChmdW5jdGlvbl9hcmcpOiBEb24ndCByZXR1cm4gQkxLbW9kZSByZWdzLgoKMjAwNC0xMS0xOCAgTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgoKCSogY29uZmlnL2FybS9hcm0uYyAoY29uc3RfZG91YmxlX25lZWRzX21pbmlwb29sKTogTmV3IGZ1bmN0aW9uIHRvCglkZXRlcm1pbmUgaWYgYSBDT05TVF9ET1VCTEUgc2hvdWxkIGJlIHB1c2hlZCB0byB0aGUgbWluaXBvb2wuCgkobm90ZV9pbnZhbGlkX2NvbnN0YW50cyk6IFVzZSBpdC4KCjIwMDQtMTEtMTggIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jICh0YXJnZXRfZmxvYXRfc3dpdGNoKTogTmV3IHZhcmlhYmxlLi4KCShhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkgYW5kCgl0YXJnZXRfZmxvYXRfc3dpdGNoLgoJKiBjb25maWcvYXJtL2FybS5oICh0YXJnZXRfZmxvYXRfc3dpdGNoKTogRGVjbGFyZS4KCShBUk1fRkxBR19TT0ZUX0ZMT0FUKTogUmVtb3ZlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSBoYXJkLWZsb2F0IGFuZCBzb2Z0LWZsb2F0LgoJKFRBUkdFVF9PUFRJT05TKTogQWRkIGhhcmQtZmxvYXQgYW5kIHNvZnQtZmxvYXQuCgkoVEFSR0VUX0RFRkFVTFRfRkxPQVRfQUJJKTogRGVmaW5lLgoJKiBjb25maWcvYXJtL2NvZmYuaCAoVEFSR0VUX0RFRkFVTFRfRkxPQVRfQUJJKTogRGVmaW5lCgkoVEFSR0VUX0RFRkFVTFQpOiBEb24ndCB1c2UgQVJNX0ZMQUdfU09GVF9GTE9BVC4KCSogY29uZmlnL2FybS9lbGYuaDogRG9uJ3QgdXNlIEFSTV9GTEFHX1NPRlRfRkxPQVQuCgkqIGNvbmZpZy9hcm0vbmV0YnNkLWVsZi5oOiBEaXR0by4KCSogY29uZmlnL2FybS9uZXRic2QuaDogRGl0dG8uCgkqIGNvbmZpZy9hcm0vcGUuaDogRGl0dG8uCgkqIGNvbmZpZy9hcm0vdW5rbm93bi1lbGYuaDogRGl0dG8uCgkqIGNvbmZpZy9hcm0vd2luY2UtcGUuaDogRGl0dG8uCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKFRBUkdFVF9ERUZBVUxUX0ZMT0FUX0FCSSk6IERlZmluZS4KCSogY29uZmlnL2FybS9zZW1pLmggKFRBUkdFVF9ERUZBVUxUX0ZMT0FUX0FCSSk6IERlZmluZS4KCSogY29uZmlnL2FybS9zZW1pYW9mLmggKFRBUkdFVF9ERUZBVUxUX0ZMT0FUX0FCSSk6IERlZmluZS4KCjIwMDQtMTEtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKFZJLCBWRiwgVik6IE5ldyBtb2RlIG1hY3Jvcy4KCShhbHRpdmVjX2x2eF80c2ksIGFsdGl2ZWNfbHZ4XzhoaSwgYWx0aXZlY19sdnhfMTZxaSwKCWFsdGl2ZWNfbHZ4XzRzZik6IFJlbmFtZSBhbmQgcmVwbGFjZSB3aXRoIC4uLgoJKGFsdGl2ZWNfbHZ4Xzxtb2RlPik6IC4uLiBtb2RlIG1hY3JvIHZlcnNpb24uCgkoYWx0aXZlY19zdHZ4XzRzaSwgYWx0aXZlY19zdHZ4XzhoaSwgYWx0aXZlY19zdHZ4XzE2cWksCglhbHRpdmVjX3N0dnhfNHNmKTogUmVuYW1lIGFuZCByZXBsYWNlIHdpdGggLi4uCgkoYWx0aXZlY19zdHZ4Xzxtb2RlPik6IC4uLiBtb2RlIG1hY3JvIHZlcnNpb24uCgkobW92djRzaSwgbW92djhoaSwgbW92djE2cWksIG1vdnY0c2Z9KTogUmVwbGFjZSB3aXRoIC4uLgoJKG1vdjxtb2RlPik6IC4uLiBtb2RlIG1hY3JvIHZlcnNpb24uCgkoKm1vdnY0c2lfaW50ZXJuYWwsICptb3Z2OGhpX2ludGVybmFsMSwgKm1vdnYxNnFpX2ludGVybmFsMSwKCSptb3Z2NHNmX2ludGVybmFsMSk6IFJlcGxhY2Ugd2l0aCAuLi4KCSgqbW92PG1vZGU+X2ludGVybmFsKTogLi4uIG1vZGUgbWFjcm8gdmVyc2lvbi4KCShnZXRfdnJzYXZlX2ludGVybmFsLCAqc2V0X3Zyc2F2ZV9pbnRlcm5hbCwgKnNhdmVfd29ybGQsCgkqcmVzdG9yZV93b3JsZCk6IFVucXVvdGUgb3V0cHV0IHN0YXRlbWVudHMuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGFsdGl2ZWNfZXhwYW5kX2xkX2J1aWx0aW4sCglhbHRpdmVjX2V4cGFuZF9zdF9idWlsdGluKTogQWRqdXN0IGluc24gbmFtZXMuCgoyMDA0LTExLTE4ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfY29tcGxleF9mdW5jdGlvbl92YWx1ZSk6IFJldmVydAoJcHJldmlvdXMgY2hhbmdlLgoJKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogTGlrZXdpc2UuCgkoc3BlX2J1aWxkX3JlZ2lzdGVyX3BhcmFsbGVsKTogSGFuZGxlIGNvbXBsZXggZG91YmxlcyBvbiBlNTAwdjIuCgkocnM2MDAwX3NwZV9mdW5jdGlvbl9hcmcpOiBMaWtld2lzZS4KCShmdW5jdGlvbl9hcmcpOiBMaWtld2lzZS4KCShyczYwMDBfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCShyczYwMDBfbGliY2FsbF92YWx1ZSk6IExpa2V3aXNlLgoKMjAwNC0xMS0xOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBpZmN2dC5jIChmaW5kX2lmX2Jsb2NrKTogTW92ZSB0aGUgY2hlY2sgZm9yIHRoZSBudW1iZXIgb2YgZWRnZXMKCWFib3ZlIHRoZSBsb29wcyBjaGVja2luZyBmb3IgY29tcGxleCBlZGdlcy4KCVJlbW92ZSB0aGUgY291bnRpbmcgb2YgZWRnZXMgYXMgd2UgdXNlIEVER0VfQ09VTlQgbm93LgoKMjAwNC0xMS0xOCAgS2F6dWhpcm8gSW5hb2thIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb21uPgoKCSogY29uZmlnL20zMnIvbGludXguaCAoVEFSR0VUX0FTTV9GSUxFX0VORCk6IFNldAoJVEFSR0VUX0FTTV9GSUxFX0VORCB0byBmaWxlX2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrLgoKMjAwNC0xMS0xOCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGRlZmluZV9wZWVwaG9sZTIpOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgoyMDA0LTExLTE4ICBLYXp1aGlybyBJbmFva2EgPGluYW9rYS5rYXp1aGlyb0ByZW5lc2FzLmNvbW4+CgoJKiBjb25maWcvbTMyci9saW51eC5oIChUQVJHRVRfQVNNX0ZJTEVfRU5EKTogU2V0CglUQVJHRVRfQVNNX0ZJTEVfRU5EIHRvIGZpbGVfZW5kX2luZGljYXRlX2V4ZWNfc3RhY2suCgoyMDA0LTExLTE4ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLXByb3BhZ2F0ZS5jIChzc2FfcHJvcF9pbml0KTogVXNlIEZPUl9BTExfQkIgaW5zdGVhZAoJb2YgRk9SX0VBQ0hfQkIuCgoyMDA0LTExLTE4ICBKb24gR3JpbW0gPGpncmltbTJAdXMuaWJtLmNvbT4KCgkqIE1ha2VmaWxlLmluIChtYWNyb19saXN0KTogRGVwZW5kIG9uIHMtbWFjcm9fbGlzdC4KCShzLW1hY3JvX2xpc3QpOiBOZXcgdGFyZ2V0LgoKMjAwNC0xMS0xOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMTcxMDcKCSogZm9sZC1jb25zdC5jIChSQU5HRV9URVNUX05PTl9TSE9SVF9DSVJDVUlUKTogUmVuYW1lIHRvIC4uLgoJKExPR0lDQUxfT1BfTk9OX1NIT1JUX0NJUkNVSVQpOiAuLi4gaGVyZS4KCShmb2xkX3JhbmdlX3Rlc3QpOiBBZGp1c3QuCgkoZm9sZF90cnV0aG9wKTogVXNlIGl0LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChSQU5HRV9URVNUX05PTl9TSE9SVF9DSVJDVUlUKTogUmVuYW1lIHRvIC4uLgoJKExPR0lDQUxfT1BfTk9OX1NIT1JUX0NJUkNVSVQpOiAuLi4gaGVyZS4KCjIwMDQtMTEtMTggIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIGNvbmZpZ3VyZS9pMzg2L2kzODYubWQgKCpmaXhfdHJ1bmNoXzEpOiBBZGQgIiYmIDEiIHRvCglpbnNuIHNwbGl0IGNvbnN0cmFpbnQuCgkoZGVmaW5lX3BlZXBob2xlMik6IFJlbW92ZSB1bm5lZWRlZCAiJiYgMSIgZnJvbSBwZWVwaG9sZTIKCWNvbnN0cmFpbnRzLgoKMjAwNC0xMS0xOCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBkb2MvY2ZnLnRleGkgKE1haW50YWluaW5nIHRoZSBDRkcpOiBSZW1vdmUgZHVwbGljYXRlZCBAaXRlbQoJZWxlbWVudCBmb3IgYnNpX3ByZXY7IHVzZSBAZmluZGV4IGluc3RlYWQuCgoyMDA0LTExLTE4ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIG9wdHMuaCAoYWRkX2lucHV0X2ZpbGVuYW1lKTogUmVtb3ZlIGV4dGVybiBkZWNsYXJhdGlvbi4KCSogb3B0cy5jIChhZGRfaW5wdXRfZmlsZW5hbWUpOiBNYWtlIHN0YXRpYy4KCjIwMDQtMTEtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGkzODZfc29sYXJpc19lbGZfbmFtZWRfc2VjdGlvbik6IE1hcmsgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCjIwMDQtMTEtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWZhdWx0cy5oLCBjb25maWcvZGFyd2luLmg6IERvbid0IGRlZmluZSBUQVJHRVRfU1VQUE9SVFNfSElEREVOLgoJKiBzeXN0ZW0uaDogUG9pc29uIGl0LgoJKiBkb2MvdG0udGV4aTogRGVsZXRlIGl0cyBkb2N1bWVudGF0aW9uLgoKMjAwNC0xMS0xOCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2kzODYvc29sMi0xMC5oLCBjb25maWcvaTM4Ni90LXNvbDItMTA6IE5ldyBmaWxlcy4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpMzg2X3NvbGFyaXNfZWxmX25hbWVkX3NlY3Rpb24pOiBOZXcKCWZ1bmN0aW9uLgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotc29sYXJpczIqKTogSGFuZGxlIFNvbGFyaXMgMi4xMC4KCSogY29uZmlnL2kzODYvc29sMi5oIChBU01fUFJFRkVSUkVEX0VIX0RBVEFfRk9STUFUKTogSGFuZGxlCgk2NC1iaXQuCgkoQVNNX1FVQUQpOiBEb24ndCB1bmRlZmluZSBmb3IgYmlhcmNoIHRhcmdldHMuCgkqIGNvbmZpZy9pMzg2L3Qtc29sMjogSW50cm9kdWNlIG11bHRpbGliIHN1cHBvcnQuCgoyMDA0LTExLTE4ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNncmFwaHVuaXQuYzogUmVwbGFjZSAiaXQncyIgd2l0aCAiaXRzIiBhbmQgZml4IGEgdHlwby4KCjIwMDQtMTEtMTggIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY2dyYXBoLmg6IFJlcGxhY2UgIml0J3MiIHdpdGggIml0cyIgdGhyb3VnaG91dC4KCjIwMDQtMTEtMTggIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZG9jL3J0bC50ZXhpIChGbGFncyk6IEdyYW1tYXIgZml4LgoKMjAwNC0xMS0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cG1lZC5jIChhbGdfY29kZSk6IEFkZCBhbGdfdW5rbm93bi4KCShhbGdfaGFzaF9lbnRyeSk6IE5ldy4KCShOVU1fQUxHX0hBU0hfRU5UUklFUyk6IExpa2V3aXNlLgoJKGFsZ19oYXNoKTogTGlrZXdpc2UuCgkoc3ludGhfbXVsdCk6IENhY2hlIHRoZSByZXN1bHQgaW50byBhbGdfaGFzaC4KCjIwMDQtMTEtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3QtZGFyd2luOiBBdWdtZW50IFNITElCX01BUEZJTEVTIHdpdGgKCWNvbmZpZy9yczYwMDAvbGliZ2NjLXBwYzY0LnZlci4KCjIwMDQtMTEtMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjZmdydGwuYyAocnRsX3ZlcmlmeV9mbG93X2luZm8pOiBEb24ndCB1c2UgSU5TTl9QIHdoZW4KCWNoZWNraW5nIGlmIGFuIHVuY29uZGl0aW9uYWwgcmV0dXJuIGlzIGZvbGxvd2VkIGJ5IGEgYmFycmllci4KCgkqIGp1bXAuYyAoY29uZGp1bXBfcCk6IFJlbW92ZSB1bnJlYWNoYWJsZSBjb2RlLgoKCSogYmFzaWMtYmxvY2suaCwgYy1jb21tb24uaCwgZGYuaCwgZXhwci5oLCBvdXRwdXQuaCwgcnRsLmgsCgl0cmVlLWNocmVjLmgsIHRyZWUtZmxvdy5oLCB0cmVlLXNjYWxhci1ldm9sdXRpb24uaCwKCXRyZWUtc3NhLWxpdmUuaCwgdHJlZS5oOiBSZW1vdmUgdW51c2VkIHByb3RvdHlwZXMuCgoyMDA0LTExLTE3ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1jZmcuYyAoZWRnZV90b19jYXNlcyk6IFJlbmFtZWQgZnJvbSBlZGdlX3RvX2Nhc2VfbGVhZGVyLgoJKGVkZ2VfdG9fY2FzZXNfZWx0KTogUmVuYW1lZCBmcm9tIGVkZ2VfdG9fY2FzZV9sZWFkZXIuCgkoZWRnZV90b19jYXNlc19oYXNoKTogUmVuYW1lZCBmcm9tIGVkZ2VfdG9fY2FzZV9sZWFkZXJfaGFzaC4KCShlZGdlX3RvX2Nhc2VzX2VxKTogUmVuYW1lZCBmcm9tIGVkZ2VfdG9fY2FzZV9sZWFkZXJfZXEuCgkoZWRnZV90b19jYXNlc19jbGVhbnVwLCByZWNvcmRpbmdfY2FzZV9sYWJlbHNfcCk6IE5ldyBmdW5jdGlvbnMuCgkoZ2V0X2Nhc2VzX2Zvcl9lZGdlKTogTmV3IGZ1bmN0aW9uLgoJKHN0YXJ0X3JlY29yZGluZ19jYXNlX2xhYmVscywgZW5kX3JlY29yZGluZ19jYXNlX2xhYmVscyk6IFNpbWlsYXJseS4KCShyZWNvcmRfc3dpdGNoX2VkZ2UpOiBEb24ndCBtdWNrIHdpdGggdGhlIENBU0VfTEFCRUwuICBJbnN0ZWFkCgljaGFpbiBlcXVpdmFsZW50IENBU0VfTEFCRUxfRVhQUnMgdG9nZXRoZXIuCgkoZ2V0X2Nhc2VfbGVhZGVyX2Zvcl9lZGdlLCBnZXRfY2FzZV9sZWFkZXJfZm9yX2VkZ2VfaGFzaCk6IEtpbGwuCgkobWFrZV9zd2l0Y2hfZXhwcl9lZGdlcyk6IERvIG5vdCByZWNvcmQgZWRnZS9jYXNlcyBoZXJlLgoJKGNsZWFudXBfdHJlZV9jZmcpOiBSZWNvcmQgY2FzZXMgYXJvdW5kIHRoZSBjYWxsIHRvIHRocmVhZF9qdW1wcy4KCShzcGxpdF9jcml0aWNhbF9lZGdlcyk6IFJlY29yZCBjYXNlcyBhcm91bmQgdGhlIGVkZ2Ugc3BsaXR0aW5nIGNvZGUuCgkoY2xlYW51cF9kZWFkX2xhYmVscyk6IFVzZSBDQVNFX0xBQkVMIGFnYWluLgoJKHRyZWVfcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoKTogSWYgd2UgaGF2ZSBhIG1hcHBpbmcgZnJvbSBlZGdlCgl0byBjYXNlcywgdXNlIGl0IHRvIGhhbmRsZSByZWRpcmVjdGlvbnMuICBFbHNlIGRvIGl0IHRoZSBzbG93IHdheS4KCSogdHJlZS5oIChDQVNFX0xFQURFUl9PUl9MQUJFTCk6IEtpbGwuCgkoQ0FTRV9MQUJFTCk6IFJldmVydCB0byBqdXN0IGxvb2tpbmcgYXQgdGhlIHRyZWUncyBzZWNvbmQgb3BlcmFuZC4KCSogdHJlZS5jIChnZXRfY2FzZV9sYWJlbCk6IEtpbGwuCgoyMDA0LTExLTE3ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xODMwNwoJKiB0cmVlLXNzYS1hbGlhcy5jIChtZXJnZV9wb2ludGVkX3RvX2luZm8pOiBJQ0UgaWYgJ2Rlc3QnIGFuZAoJJ29yaWcnIGFyZSB0aGUgc2FtZSBub2RlLgoJKGNvbGxlY3RfcG9pbnRzX3RvX2luZm9fcik6IERvIG5vdCBjYWxsIG1lcmdlX3BvaW50ZWRfdG9faW5mbwoJd2hlbiB0aGUgUEhJIGFyZ3VtZW50IGlzIGlkZW50aWNhbCB0byB0aGUgTEhTLgoKMjAwNC0xMS0xNyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogdHJlZS1zc2EtcHJvcGFnYXRlLmMgKGNmZ19ibG9ja3NfYWRkKTogQXNzZXJ0IHdlJ3JlIG5vdCB0cnlpbmcKCXRvIGluc2VydCB0aGUgZXhpdCBvciBlbnRyeSBibG9jay4KCShzc2FfcHJvcF9pbml0KTogVXNlIGFkZF9jb250cm9sX2VkZ2UgdG8gc2VlZCB0aGUgYWxnb3JpdGhtLgoKMjAwNC0xMS0xNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1rbWFwLWZsYXQuYXdrLCBta21hcC1zeW12ZXIuYXdrOiBJZiB0aGUgbGFzdCB2ZXJzaW9uCglhc3NpZ25lZCB0byBhIHN5bWJvbCB3YXMgJyVleGNsdWRlJywgZG8gbm90IGVtaXQgaXQgYW55d2hlcmUuCglJZiBsZWFkaW5nX3VuZGVyc2NvcmUgaXMgdHJ1ZSwgcHJlZml4IGFsbCBzeW1ib2xzIGZyb20gdGhlCgl2ZXJzaW9uIHNjcmlwdHMgd2l0aCBhIGxlYWRpbmcgdW5kZXJzY29yZSBiZWZvcmUgY29tcGFyaW5nCgl0aGVtIHdpdGggbm0gb3V0cHV0IG9yIGVtaXR0aW5nIHRoZW0uICBSZW1vdmUgc3VwcG9ydCBmb3IgZG90CglzeW1ib2xzLgoJKiBjb25maWcvdC1zbGliZ2NjLWRhcndpbiAoU0hMSUJfTElOSyk6IFVzZSBta21hcC1mbGF0LmF3ay4KCShTSExJQl9NQVBGSUxFUyk6IFVzZSBsaWJnY2Mtc3RkLnZlci4KCShTSExJQl9NS01BUF9PUFRTKTogRW5hYmxlIGxlYWRpbmctdW5kZXJzY29yZSBtb2RlLgoJKFNITElCX0xJTkspOiBBZGQgLVdsLC1leHBvcnRlZF9zeW1ib2xzX2xpc3QsJChTSExJQl9NQVApLgoJKiBjb25maWcvc2gvdC1saW51eDogVXNlIHRoZSBub3JtYWwgbGliZ2NjLXN0ZC52ZXIsIHBsdXMKCWxpYmdjYy1leGNsLnZlciBhbmQgbGliZ2NjLWdsaWJjLnZlci4KCgkqIGNvbmZpZy9zaC9saWJnY2MtZXhjbC52ZXI6IE5ldyBmaWxlLgoJKiBjb25maWcvc2gvbGliZ2NjLXN0ZC52ZXIsIGxpYmdjYy1kYXJ3aW4udmVyOiBEZWxldGUuCgoyMDA0LTExLTE2ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGxhbWJkYS1jb2RlLmMgKGxhbWJkYV9sb29wbmVzdF90b19nY2NfbG9vcG5lc3QpOiBTd2FwCgl0aGUgdGVzdCB3aGVuIHRoZSBlZGdlIGhhcyB0aGUgb3Bwb3NpdGUgbWVhbmluZywgbm90IHdoZW4KCXRoZSBmaXJzdCBhcmd1bWVudCBpcyBpbnZhcmlhbnQuCgoyMDA0LTExLTE2ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IFNwbGl0IGU1MDB2MgoJZG91Ymxlcy4KCShyczYwMDBfY29tcGxleF9mdW5jdGlvbl92YWx1ZSk6IEhhbmRsZSBlNTAwIHYyIHZhcmlhbnQuCgoyMDA0LTExLTE2ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMTg1MTkKCgkqIHRyZWUtb3B0aW1pemUgKGV4ZWN1dGVfdG9kbyk6IEFkZCBjYXNlIGZvciBUT0RPX2NsZWFudXBfY2ZnLgoJKiB0cmVlLXBhc3MuaDogQWRkIFRPRE9fY2xlYW51cF9jZmcuCgkqIHRyZWUtc3NhLWNjcC5jIChwYXNzX2NjcCk6IFVzZSBUT0RPX2NsZWFudXBfY2ZnLgoJKGNjcF9maW5hbGl6ZSk6IFJlbW92ZSBjYWxsIHRvIGNsZWFudXBfY2ZnLgoJKiB0cmVlLXNzYS1kY2UuYyAocGFzc19kY2UpOiBVc2UgVE9ET19jbGVhbnVwX2NmZyBhbmQgVE9ET19kdW1wX2Z1bmMuCgkocGFzc19jZF9kY2UpOiBEaXR0by4KCShwZXJmb3JtX3RyZWVfc3NhX2RjZSk6IFJlbW92ZSBjYWxsIHRvIGNsZWFudXBfY2ZnLAoJZHVtcF9mdW5jdGlvbl90b19maWxlLgoJKiB0cmVlLXNzYS1sb29wLWNoLmMgKGNvcHlfbG9vcF9oZWFkZXJzKTogUmVtb3ZlIGNhbGwKCXRvIGNsZWFudXBfY2ZnLgoJKHBhc3NfY2gpOiBBZGQgVE9ET19jbGVhbnVwX2NmZy4KCSogdHJlZS1zc2EtbG9vcC5jICh0cmVlX3NzYV9sb29wX2RvbmUpOiBSZW1vdmUgY2FsbCB0bwoJY2xlYW51cF9jZmcuCgkocGFzc19sb29wX2RvbmUpOiBBZGQgVE9ET19jbGVhbnVwX2NmZy4KCSogdHJlZS1zc2EtcGhpb3B0LmMgKHBhc3NfcGhpb3B0KTogRGl0dG8uCgkodHJlZV9zc2FfcGhpb3B0KTogUmVtb3ZlIGNhbGwgdG8gY2xlYW51cF9jZmcuCgoyMDA0LTExLTE2ICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogb3B0YWJzLmMgKHZlY3Rvcl9jb21wYXJlX3J0eCk6IEZpeCBDT01QQVJJU09OX0NMQVNTX1AgdXNlLgoKMjAwNC0xMS0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cG1lZC5jLCByYS1jb2xvcml6ZS5jOiBGaXggY29tbWVudCB0eXBvcy4KCgkqIGRvYy90bS50ZXhpOiBGaXggdHlwb3MuCgoyMDA0LTExLTE2ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgoJICAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgdGFyZ2V0LzYxMjMKCSogY29uZmlnL3NvbDIuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZSBfX1BJQ19fIGFuZAoJX19waWNfXyBpZiBQSUMuCgoyMDA0LTExLTE2ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiByZWdtb3ZlLmMgKHJlZ21vdmVfb3B0aW1pemUpOiBVc2UgbG93cGFydF9zdWJyZWcgaW5zdGVhZCBvZgoJZ2VuX3J0eF9TVUJSRUcgd2l0aCBpbmNvcnJlY3Qgb2Zmc2V0IHRvIGNvbXB1dGUgU1JDX1NVQlJFRy4KCjIwMDQtMTEtMTYgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiB0cmVlLWlmLWNvbnYuYyAoY2xlYW5fcHJlZGljYXRlX2xpc3RzKTogVXBkYXRlIGdjY19hc3NlcnQgY2hlY2suCgoyMDA0LTExLTE2ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYzogVXNlIHJ0bCBfUCBwcmVkaWNhdGVzLgoJKiBjb25maWcvbWlwcy9taXBzLmg6IERpdHRvLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBEaXR0by4KCjIwMDQtMTEtMTYgIEZhcmlib3J6IEphaGFuaWFuIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChhbHRpdmVjX3ZhbmRjKTogQ2Fub25pY2FsaXplCgl0aGUgcGF0dGVybi4KCjIwMDQtMTEtMTYgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfY2NfbW9kZXNfY29tcGF0aWJsZSk6IE5ldyBmdW5jdGlvbi4KCShUQVJHRVRfQ0NfTU9ERVNfQ09NUEFUSUJMRSk6IFRhcmdldCBtYWNybyBkZWZpbmVkLgoKMjAwNC0xMS0xNiAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJUFIgdGFyZ2V0LzE4NDQ3CgkqIGNvbmZpZy9zaC9zaC5jIChwcmVwYXJlX21vdmVfb3BlcmFuZHMpOiBFbWl0IGJsb2NrYWdlIGluc25zCgliZWZvcmUgYW5kIGFmdGVyIHRoZSBpbnNucyBmb3IgZ2V0dGluZyBHT1QgYWRkcmVzcyBpbiBub24tUElDCglUTFNfTU9ERUxfSU5JVElBTF9FWEVDIHRscyBzZXF1ZW5jZSB3aGVuIHRoZSBmaXJzdCBzY2hlZHVsaW5nCglpcyBlbmFibGVkLgoKMjAwNC0xMS0xNiAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNzZS5jIChzdHJ1Y3QgY2hhbmdlX2NjX21vZGVfYXJncyk6IE5ldyBzdHJ1Y3R1cmUuCgkoY3NlX2NoYW5nZV9jY19tb2RlX2luc24pOiBOZXcgZnVuY3Rpb24uCgkoY3NlX2NoYW5nZV9jY19tb2RlKTogVXNlIHZhbGlkYXRlX2NoYW5nZSB0byBwZXJmb20gY2hhbmdlcy4KCShjc2VfY2hhbmdlX2NjX21vZGVfaW5zbnMsIGNzZV9jb25kaXRpb25fY29kZV9yZWcpOgoJQ2FsbCBjc2VfY2hhbmdlX2NjX21vZGVfaW5zbi4KCjIwMDQtMTEtMTYgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHN0YWNrLmg6IFJlbW92ZS4KCjIwMDQtMTEtMTYgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoeDg2X3NjaGVkdWxlKTogRml4IHR5cG8sIG1fSzYgaW50ZWFkIG9mIG1fSzguCgoyMDA0LTExLTE1ICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiB0cmVlLWZsb3cuaCAoYWRkX3JlZmVyZW5jZWRfdGVtcF92YXIpOiBSZW1vdmUgbmFtZSBmcm9tIHByb3RvdHlwZS4KCjIwMDQtMTEtMTUgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIHByb2ZpbGUuYyAoY29tcHV0ZV9icmFuY2hfcHJvYmFiaWxpdGllcyk6IFByZXZlbnQKCWNyYXNoIHdpdGggRUggaW4gUlRMLWJhc2VkIHByb2ZpbGluZy4KCjIwMDQtMTEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jICh2ZXJpZnlfZXhwcik6IFJlcGxhY2UgVFJFRV9PUEVSQU5EIHdpdGgKCUNPTkRfRVhQUl9DT05ELgoJKiB0cmVlLWlmLWNvbnYuYyAodHJlZV9pZl9jb252ZXJ0X2NvbmRfZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kb20uYyAodGhyZWFkX2Fjcm9zc19lZGdlKTogTGlrZXdpc2UuCgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X3RyYW5zZm9ybV9sb29wX2JvdW5kKTogUmVwbGFjZQoJVFJFRV9PUEVSQU5EIHdpdGggQ09ORF9FWFBSX0NPTkQsIENPTkRfRVhQUl9USEVOLCBvcgoJQ09ORF9FWFBSX0VMU0UuCgoJKiB0cmVlLWNmZy5jIChic2lfY29tbWl0X2VkZ2VfaW5zZXJ0cyk6IFJlbW92ZSBhbiBhcmd1bWVudC4KCSh0cmVlX2Zsb3dfY2FsbF9lZGdlc19hZGQpOiBVcGRhdGUgdGhlIGNhbGwgdG8KCWJzaV9jb21taXRfZWRnZV9pbnNlcnRzLgoJKiBsYW1iZGEtY29kZS5jIChsYW1iZGFfbG9vcG5lc3RfdG9fZ2NjX2xvb3BuZXN0KTogTGlrZXdpc2UuCgkqIHByb2ZpbGUuYyAoYnJhbmNoX3Byb2IpOiBMaWtld2lzZS4KCSogdHJlZS1tdWRmbGFwLmMgKG1mX2RlY2xfY2FjaGVfbG9jYWxzKTogTGlrZXdpc2UuCgkqIHRyZWUtc3JhLmMgKHNjYWxhcml6ZV9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLWltLmMgKGxvb3BfY29tbWl0X2luc2VydHMpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtcHJlLmMgKGZpbmlfcHJlKTogTGlrZXdpc2UuCgkqIHRyZWUtZmxvdy5oOiBVcGRhdGUgdGhlIHByb3RvdHlwZSBmb3IKCWJzaV9jb21taXRfZWRnZV9pbnNlcnRzLgoKMjAwNC0xMS0xNSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBzY2hlZC1kZXBzLmMgKHNldF9zY2hlZF9ncm91cF9wKTogRGVsZXRlLgoJKGRlbGV0ZV9hbGxfZGVwZW5kZW5jaWVzKTogTmV3IGZ1bmN0aW9uLgoJKGZpeHVwX3NjaGVkX2dyb3Vwcyk6IFVzZS4gTmV3IGZ1bmN0aW9uLgoJKHNjaGVkX2FuYWx5emVfaW5zbik6IFVzZS4KCjIwMDQtMTEtMTUgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYyAoYmluYXJ5X29wX2Vycm9yKTogRG9uJ3QgYWxsb3cgTFJPVEFURV9FWFBSLAoJUlJPVEFURV9FWFBSIG9yIHVua25vd24gY29kZS4KCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogRG9uJ3QgYWxsb3cgUlJPVEFURV9FWFBSLAoJTFJPVEFURV9FWFBSLCBNQVhfRVhQUiwgTUlOX0VYUFIsIFVOT1JERVJFRF9FWFBSLCBPUkRFUkVEX0VYUFIsCglVTkxUX0VYUFIsIFVOTEVfRVhQUiwgVU5HVF9FWFBSLCBVTkdFX0VYUFIsIFVORVFfRVhQUiwgTFRHVF9FWFBSCglvciB1bmtub3duIGNvZGUuCgoyMDA0LTExLTE1ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjLzE4NDk4CgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENhbGwgY2hlY2tfYml0ZmllbGRfdHlwZV9hbmRfd2lkdGgKCWFmdGVyIHByb2Nlc3NpbmcgdGhlIGRlY2xhcmF0b3IuCgoyMDA0LTExLTE1ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKCJhbHRpdmVjX3ZzcGx0aCIpOiBSZXdyaXRlIHdpdGgKCXZlY19kdXBsaWNhdGUuCgkoYWx0aXZlY192c3BsdGIpOiBTYW1lLgoJKGFsdGl2ZWNfdnNwbHR3KTogU2FtZS4KCShhbHRpdmVjX3ZzcGx0aXNiKTogU2FtZS4KCShhbHRpdmVjX3ZzcGx0aXNoKTogU2FtZS4KCShhbHRpdmVjX3ZzcGx0aXN3KTogU2FtZS4KCShhbHRpdmVjX3ZzcGx0aXN3X3Y0c2YpOiBTYW1lLgoJKGRlZmluZV9jb25zdGFudHMpOiBSZW1vdmUgVU5TUEVDX1ZTUExUSVNCLCBVTlNQRUNfVlNQTFRJU1csCglVTlNQRUNfVlNQTFRJU0guCglNb3ZlICJFbmQgb2YgdmVjdG9yIHhvcidzIiBjb21tZW50IHRvIHRoZSByaWdodCBwbGFjZS4KCjIwMDQtMTEtMTUgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoKm1vdnRmX2ludGVybmFsKTogVXNlIGRlc3RpbmF0aW9uX29wZXJhbmQKCWluc3RlYWQgb2Ygbm9uaW1tZWRpYXRlX29wZXJhbmQuCgoyMDA0LTExLTE1ICBNYXJrIE1pdGNoZWxsIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaTM4Ni9zb2wyLmggKEFTTV9PVVRQVVRfQ0FMTCk6IFVzZSBwcmludF9vcGVyYW5kLgoJKiBjb25maWcvc3BhcmMvc29sMi5oIChBU01fT1VUUFVUX0NBTEwpOiBMaWtld2lzZS4KCSogY29uZmlnL3NvbDIuYyAoc29sYXJpc19vdXRwdXRfaW5pdF9maW5pKTogVXBkYXRlIGNhbGxzIHRvCglBU01fT1VUUFVUX0NBTEwuICBJbmNsdWRlICJydGwuaCIuCgoyMDA0LTExLTE1ICBNYXJrIE1pdGNoZWxsIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc29sMi1jLmMgKGNtbl9lcnJfY2hhcl90YWJsZSk6IEFkZCAicCIuCgoyMDA0LTExLTE1ICBNYXJrIE1pdGNoZWxsIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc3BhcmMvc29sMi5oIChTVVBQT1JUU19JTklUX1BSSU9SSVRZKTogUmVtb3ZlLgoJKiBjb25maWcvc29sMi5oIChTVVBQT1JUU19JTklUX1BSSU9SSVRZKTogRGVmaW5lIGhlcmUuCgoyMDA0LTExLTE1ICBNYXJrIE1pdGNoZWxsIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvdC1zbGliZ2NjLXNsZCAoU0hMSUJfTElOSyk6IE1ha2Ugc3ltbGlua3MgZW50aXJlbHkKCXdpdGhpbiB0aGUgbXVsdGlsaWIgZGlyZWN0b3J5LgoKMjAwNC0xMS0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IEFkZAoJYnVpbHRpbiBhc3NlcnQgb2YgY3B1PXhzdG9ybXkxNi4KCjIwMDQtMTEtMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLXNzYS1wcmUuYyAoYml0bWFwX3ByaW50X3ZhbHVlX3NldCk6IEZpeCB1bmluaXRpYWxpemVkCgl2YXJpYWJsZS4KCjIwMDQtMTEtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgMTg0ODAKCSogY2FsbHMuYyAoc3RydWN0IGFyZ19kYXRhKTogQWRkIHBhcmFsbGVsX3ZhbHVlLgoJKHByZWNvbXB1dGVfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IFNldCBpdC4KCShsb2FkX3JlZ2lzdGVyX3BhcmFtZXRlcnMpOiBVc2UgaXQuCgkoc3RvcmVfb25lX2FyZyk6IEFsc28gc2V0IGl0IGhlcmUuCgoyMDA0LTExLTE0ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE4NDMxCgkqIGZvbGQtY29uc3QuYyAoYXNzb2NpYXRlX3RyZWVzKTogRG8gbm90IHByb2R1Y2UgeCArIDAuCgkoZm9sZF93aWRlbmVkX2NvbXBhcmlzb24sIGZvbGRfc2lnbl9jaGFuZ2VkX2NvbXBhcmlzb24pOiBOZXcgZnVuY3Rpb25zLgoJKGZvbGQpOiBVc2UgdGhlbS4KCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jICh1cHBlcl9ib3VuZF9pbl90eXBlLCBsb3dlcl9ib3VuZF9pbl90eXBlKToKCU1vdmVkIC4uLgoJKiB0cmVlLmMgKHVwcGVyX2JvdW5kX2luX3R5cGUsIGxvd2VyX2JvdW5kX2luX3R5cGUpOiBIZXJlLgoJKiB0cmVlLmggKHVwcGVyX2JvdW5kX2luX3R5cGUsIGxvd2VyX2JvdW5kX2luX3R5cGUpOiBEZWNsYXJlLgoKMjAwNC0xMS0xNCAgRXJpYyBCb3RjYXpvdSA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL3J0bC50ZXhpIChTVUJSRUcpOiBBZGp1c3QgQllURU5VTSB2YWx1ZSBpbiBleGFtcGxlLgoKMjAwNC0xMS0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNmZ3J0bC5jLCBnbG9iYWwuYywgdHJlZS1zc2EtY29weS5jLCB0cmVlLXNzYS1sb29wLWl2b3B0cy5jLAoJdmFsdWUtcHJvZi5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDQtMTEtMTQgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJQmFzaWMgQUJJIGNoYW5nZXMgZm9yIHBhc3Npbmcgc3RydWN0cyBieSB2YWx1ZSBpbiA2NC1iaXQgRGFyd2luLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZGFyd2luNjRfYWJpKTogTmV3IGZsYWcuCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBTZXQgaXQgZm9yIDY0LWJpdCBEYXJ3aW4uCgkocnM2MDAwX3BhcnNlX2FiaV9vcHRpb25zKTogQWRkIHRlc3Rpbmcgb3B0aW9ucyB0byBjaGFuZ2UgaXQuCgkocnM2MDAwX3JldHVybl9pbl9tZW1vcnkpOiBUZXN0IHdoZXRoZXIgdGhlIHR5cGUgaXMgb25lCgl0aGF0IGNhbiBiZSBwYXNzZWQgaW4gcmVnaXN0ZXJzLgoJKGRhcndpbjY0X2Z1bmN0aW9uX2FyZ19hZHZhbmNlKTogTmV3LgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogQ2FsbCBpdCwgcGx1cyBhZGQgcmVjdXJzaW9uIGRlcHRoCglhcmd1bWVudCBhbmQgdGVzdCB3aGVuIGNvdW50aW5nIG9mZiBhcmd1bWVudHMuCgkocnM2MDAwX2RhcndpbjY0X2Z1bmN0aW9uX2FyZyk6IE5ldy4KCShmdW5jdGlvbl9hcmcpOiBDYWxsIGl0LgoJKHNldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBBZGQgYXJndW1lbnQgdG8gZnVuY3Rpb25fYXJnX2FkdmFuY2UuCgkocnM2MDAwX2RhcndpbjY0X2Z1bmN0aW9uX3ZhbHVlKTogTmV3LgoJKHJzNjAwMF9mdW5jdGlvbl92YWx1ZSk6IENhbGwgaXQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEZVTkNUSU9OX0FSR19BRFZBTkNFKTogUGFzcyBkZXB0aCBhcmcuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oOiBVcGRhdGUgZGVjbCBvZgoJZnVuY3Rpb25fYXJnX2FkdmFuY2UuCgoyMDA0LTExLTE0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBjLzE3Mjc5CgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IEFzayB0aGUgYmFjay1lbmQgaWYgd2UKCXN1cHBvcnQgVEltb2RlIGJlZm9yZSBhZGRpbmcgX19pbnQxMjhfdCBhbmQgX191aW50MTI4X3QgdHlwZXMuCgoyMDA0LTExLTE0ICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHQvMTg0MDAKCSogdHJlZS12ZWN0b3JpemVyLmMgKG1ha2VfbG9vcF9pdGVyYXRlX250aW1lcyk6IFNldCBsb29wLT5uYl9pdGVyYXRpb25zLgoJKHZlY3RfdHJhbnNmb3JtX2xvb3BfYm91bmQpOiBTZXQgbG9vcC0+bmJfaXRlcmF0aW9ucy4KCjIwMDQtMTEtMTQgIERvcml0IE5haXNobG9zICA8ZG9yaXRAaWwuaWJtLmNvbT4KCSAgICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0cmVlLW9wdC8xODQyNQoJKiB0cmVlLXZlY3Rvcml6ZS5jICh2ZWN0X2J1aWxkX2xvb3Bfbml0ZXJzKTogRG8gbm90IGluc2VydAoJTlVMTCBpbnRvIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIEluaXRpYWxpemUgbmV3X2JiIHRvIE5VTEwuCgkodmVjdF91cGRhdGVfaXZzX2FmdGVyX3ZlY3Rvcml6ZXIpOiBMaWtld2lzZS4KCSh2ZWN0X2dlbl9uaXRlcnNfZm9yX3Byb2xvZ19sb29wKTogTGlrZXdpc2UuCgoyMDA0LTExLTE0ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE4NDMxCgkqIHRyZWUtZmxvdy5oIChzdG10X3JlZmVyZW5jZXNfbWVtb3J5X3ApOiBEZWNsYXJlLgoJKiB0cmVlLXNzYS1sb29wLWltLmMgKHN0bXRfY29zdCk6IFVzZSBzdG10X3JlZmVyZW5jZXNfbWVtb3J5X3AuCgkqIHRyZWUtc3NhLmMgKHN0bXRfcmVmZXJlbmNlc19tZW1vcnlfcCk6IE5ldyBmdW5jdGlvbi4KCjIwMDQtMTEtMTQgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAobGFtYmRhLWNvZGUubywgdHJlZS1sb29wLWxpbmVhci5vKTogRGVwZW5kIG9uCgkkKEVYUFJfSCkuCgoyMDA0LTExLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1jb21tb24uYyAod2Fsa19zdG10X3RyZWUpOiBSZW1vdmUuCgkqIGMtY29tbW9uLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoJKiBlbWl0LXJ0bC5jIChwdXNoX3RvX2Z1bGxfc2VxdWVuY2UpOiBSZW1vdmUuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKCSogY3NlbGliLmMsIGV4cHIuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTExLTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAocHJlY29tcHV0ZV9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogRm9yY2UgYWxsIFBBUkFMTEVMcwoJaW50byBwc2V1ZG8gcmVnaXN0ZXJzLgoJKGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IENvcHkgUEFSQUxMRUxzIGludG8gaGFyZCByZWdpc3RlcnMuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtX3NldHVwX2Jsb2NrKTogQ29weSBQQVJBTExFTFMgaW50bwoJcHNldWRvIHJlZ2lzdGVycy4gIERvIGVtaXRfZ3JvdXBfc3RvcmUgaW4gY29udmVyc2lvbl9pbnNucy4KCSogZXhwci5jIChlbWl0X2dyb3VwX2xvYWRfMSk6IFJlbmFtZSBmcm9tIGVtaXRfZ3JvdXBfbG9hZCwgdGFrZQoJdG1wcyBhcyBhbiBhcmd1bWVudC4gIE1vdmUgZmluYWwgY29weSBsb29wIC4uLgoJKGVtaXRfZ3JvdXBfbG9hZCk6IC4uLiBoZXJlLiAgTmV3IGZ1bmN0aW9uLgoJKGVtaXRfZ3JvdXBfbG9hZF9pbnRvX3RlbXBzLCBlbWl0X2dyb3VwX21vdmVfaW50b190ZW1wcyk6IE5ldy4KCSogZXhwci5oOiBEZWNsYXJlIHRoZW0uCgoyMDA0LTExLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1jZmcuYywgdHJlZS1pZi1jb252LmMsIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMsCgl0cmVlLXNzYS1sb29wLW1hbmlwLmMsIHRyZWUtdmVjdG9yaXplci5jOiBSZXBsYWNlIFRSRUVfQ0hBSU4KCXdpdGggUEhJX0NIQUlOIHdoZXJlIGFwcHJvcHJpYXRlLgoKMjAwNC0xMS0xMyAgRGFsZSBKb2hhbm5lc2VuICA8ZGFsZWpAYXBwbGUuY29tPgoKCSogdHJlZS1mbG93LmggKGJzaV9jb21taXRfb25lX2VkZ2VfaW5zZXJ0KTogUmVtb3ZlIG5hbWUgZnJvbSBwcm90b3R5cGUuCgkodHJlZV9ibG9ja19sYWJlbCk6IERpdHRvLgoJKGZsdXNoX3BlbmRpbmdfc3RtdHMpOiBEaXR0by4KCShpbnNlcnRfZWRnZV9jb3BpZXMpOiBEaXR0by4KCShleHByX2ludmFyaWFudF9pbl9sb29wX3ApOiBEaXR0by4KCShUREZfVVNFX09QUyk6IFBhcmVudGhlc2l6ZSBkZWZpbml0aW9uLgoJKFRERl9VU0VfVk9QUyk6IERpdHRvLgoKMjAwNC0xMS0xMyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9haXg1MS5oIChBU01fQ1BVX1NQRUMpOiBBZGQgOTcwIGFuZCBHNS4KCSogY29uZmlnL3JzNjAwMC9haXg1Mi5oIChBU01fQ1BVX1NQRUMpOiBTYW1lLgoJKGF0b2xsKTogRGVjbGFyZS4KCSogY29uZmlnL3JzNjAwMC90LWFpeDUyIChCT09UX0xERkxBR1MpOiBEZWZpbmUuCgoyMDA0LTExLTE0ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IE1vdmUgbG9vcCB0byBzZXQgZGVmYXVsdAoJdHVuaW5nIHRvIGNvcnJlY3QgcGxhY2UuCgoyMDA0LTExLTEzICBaYWsgS2lwbGluZyAgPHpha0B0cmFuc3ZlcnNhbC5jb20+CgoJUFIgdGFyZ2V0LzE4MzAwCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoY2xhc3NpZnlfYXJndW1lbnQpOiBGaXggaW5maW5pdGUgbG9vcCB3aGVuCglwYXNzaW5nIG9iamVjdCB3aXRoIDMgb3IgbW9yZSBiYXNlIGNsYXNzZXMgYnkgdmFsdWUuCgoyMDA0LTExLTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL21kLnRleGkgKGNvbnN0cmFpbnRzKSA8JSBtb2RpZmllcj46IE1lbnRpb24gdGhhdCBpdCBpcwoJdXNlbGVzcyB3aGVuIHRoZSB0d28gYWx0ZXJuYXRpdmVzIGFyZSBzdHJpY3RseSBpZGVudGljYWwuCgoyMDA0LTExLTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwbWVkLmMgKGV4dHJhY3Rfc3BsaXRfYml0X2ZpZWxkKTogVGVtcG9yYXJpbHkgZGlzYWJsZSBjYWxsIHRvCglleHRyYWN0X2ZvcmNlX2FsaWduX21lbV9iaXRfZmllbGQuCgoyMDA0LTExLTEzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYml0bWFwLmMsIGJpdG1hcC5oLCBleHBtZWQuYywgdHJlZS1jZmcuYzogRml4IGNvbW1lbnQKCWZvcm1hdHRpbmcuCgoJKiBjLWNwcGJ1aWx0aW4uYywgY2dyYXBoLmMsIGRvbXdhbGsuaCwgZXhjZXB0LmMsIGdpbXBsaWZ5LmMsCglsYW1iZGEtY29kZS5jLCBwb3N0cmVsb2FkLmMsIHByZWRpY3QuYywgdHJlZS1zcmEuYywKCXRyZWUtc3NhLWxvb3AtbWFuaXAuYywgdHJlZS5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDQtMTEtMTMgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChhdXRvbWFrZSk6IENvcnJlY3RseSBkb2N1bWVudCB0aGF0IGV2ZXJ5dGhpbmcgbm93Cgl3aWxsIHVzZSBhdXRvbWFrZSAxLjkuMy4KCjIwMDQtMTEtMTMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCglQUiB0YXJnZXQvMTgzNDcKCSogY29uZmlnL21taXgvbW1peC5jIChtbWl4X2Z1bmN0aW9uX291dGdvaW5nX3ZhbHVlKTogSGFuZGxlCglUSW1vZGUuICBTb3JyeSBmb3Igb3RoZXIgbm9uLWNvbXBsZXggbGFyZ2VyLXRoYW4tNjQtYml0IG1vZGVzLgoJKiBjb25maWcvbW1peC9tbWl4LmggKE1JTl9VTklUU19QRVJfV09SRCk6IERvIG5vdCBkZWZpbmUuCgoyMDA0LTExLTEzICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aSAoYXV0b21ha2UpOiBEb2N1bWVudCB0aGF0IGV2ZXJ5dGhpbmcgbm93IHVzZXMgMS45LgoKMjAwNC0xMS0xMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGNzZS5jIChjc2VfaW5zbik6IFN0b3JlcyBpbiBhIGxpYmNhbGwgc2VxdWVuY2UgY2FuIGludmFsaWRhdGUKCXByZXZpb3VzIGxvYWRzLgoKMjAwNC0xMS0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUuaDogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTExLTEzICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBjc2UuYyAoQ0hFQVBfUkVHTk8pOiBSZWRlZmluZSB1c2luZyBSRUdOT19QVFJfRlJBTUVfUCBhbmQKCUhBUkRfUkVHSVNURVJfTlVNX1AuCgoJKiBjc2VsaWIuYyAobmV3X2NzZWxpYl92YWwpOiBNYWtlIGNvbW1lbnQgY29ycmVjdCBhbmQgbW9yZSBkZXRhaWxlZC4KCSogZmxvdy5jIChtYXJrX3NldF8xKTogTGlrZXdpc2UuCgoJKiBleGNlcHQuYyAoZHVwbGljYXRlX2VoX3JlZ2lvbl8xLCBkdXBsaWNhdGVfZWhfcmVnaW9uXzIsCglkdXBsaWNhdGVfZWhfcmVnaW9ucyk6IFJlbW92ZS4KCSogZXhjZXB0LmggKGR1cGxpY2F0ZV9laF9yZWdpb25zKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogaW50ZWdyYXRlLmMgKGdldF9sYWJlbF9mcm9tX21hcCwgY29weV9ydHhfYW5kX3N1YnN0aXR1dGUsCglnbG9iYWxfY29uc3RfZXF1aXZfdmFycmF5KTogUmVtb3ZlLgoJKiBpbnRlZ3JhdGUuaCAoZ2V0X2xhYmVsX2Zyb21fbWFwLCBjb3B5X3J0eF9hbmRfc3Vic3RpdHV0ZSwKCWdsb2JhbF9jb25zdF9lcXVpdl92YXJyYXksIHNldF9sYWJlbF9pbl9tYXApOiBSZW1vdmUgcHJvdG90eXBlcywKCWV4dGVybiBkZWNsYXJhdGlvbiwgYW5kICNkZWZpbmUuCgkoTUFZQkVfRVhURU5EX0NPTlNUX0VRVUlWX1ZBUlJBWSwgU0VUX0NPTlNUX0VRVUlWX0RBVEEpOiBSZW1vdmUuCgkoc3RydWN0IGlubGluZV9yZW1hcCk6IFJlbW92ZS4KCSogdmFycmF5LmMgKHN0cnVjdCBlbGVtZW50KTogUmVtb3ZlIGVudHJ5IGZvciBjb25zdF9lcXVpdl9kYXRhLgoJKiB2YXJyYXkuaCAoc3RydWN0IGNvbnN0X2VxdWl2X2RhdGEpOiBSZW1vdmUuCgkoZW51bSB2YXJyYXlfZGF0YV9lbnVtKSA8VkFSUkFZX0RBVEFfQ09OU1RfRVFVSVY+OiBSZW1vdmUuCgkodW5pb24gdmFycmF5X2RhdGFfdGFnKSA8Y29uc3RfZXF1aXY+OiBSZW1vdmUuCgkoVkFSUkFZX0NPTlNUX0VRVUlWX0lOSVQsIFZBUlJBWV9DT05TVF9FUVVJViwKCVZBUlJBWV9QVVNIX0NPTlNUX0VRVUlWLCBWQVJSQVlfVE9QX0NPTlNUX0VRVUlWKTogUmVtb3ZlLgoKCSogcmVnc3RhY2suYyAocmVjb3JkX2xhYmVsX3JlZmVyZW5jZXMpOiBSZW1vdmUgdW51c2VkIGZ1bmN0aW9uLgoKCSogcnRsLmRlZiAoVkFMVUUpOiBVcGRhdGUgY29tbWVudC4KCShMQUJFTF9SRUYpOiBSZW1vdmUgdW51c2VkIG9wZXJhbmQgMi4KCSogcnRsLmggKHN0cnVjdCBydHhfZGVmKTogVXBkYXRlIGZvciByZW1vdmVkIGFjY2Vzc29yIG1hY3Jvcy4KCShYQ0FEVkZMQUdTLCBJTlNOX0RFQURfQ09ERV9QLCBMSU5FX05VTUJFUiwgQ09OVEFJTklOR19JTlNOLAoJUkVHX0xPT1BfVEVTVF9QKTogUmVtb3ZlLgoJKEFERFJfRElGRl9WRUNfRkxBR1MsIENTRUxJQl9WQUxfUFRSLCBMQUJFTF9ORVhUUkVGKTogQWRkIGNvbW1lbnRzLgoJKiB3ZWIuYyAoZW50cnlfcmVnaXN0ZXIpOiBEb24ndCBjb3B5IFJFR19MT09QX1RFU1RfUC4KCSogZG9jL3J0bC50ZXhpIChJTlNOX0RFQURfQ09ERV9QLCBSRUdfTE9PUF9URVNUX1ApOiBSZW1vdmUuCgoyMDA0LTExLTEzICBKYW1lcyBBLiBNb3JyaXNvbiAgPHBoeXRob25AZ2NjLmdudS5vcmc+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTgyMzAKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX3J0eF9jb3N0cyk6IEhhbmRsZSB0aGUgTkFORCB2ZWN0b3IKCXBhdHRlcm5zLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKFY2NEkpOiBOZXcgbWFjcm8gZm9yIDY0LWJpdCBtb2Rlcy4KCShWMzJJKTogTmV3IG1hY3JvIGZvciAzMi1iaXQgbW9kZXMuCgkoYW5kZGkzLCBhbmRkaV9zcDMyLCBhbmRkaV9zcDY0LCBhbmRfbm90X2RpX3NwMzIsIGFuZF9ub3RfZGlfc3A2NCwKCWlvcmRpMywgaW9yZGkzX3NwMzIsIGlvcmRpX3NwNjQsIG9yX25vdF9kaV9zcDMyLCBvcl9ub3RfZGlfc3A2NCwKCXhvcmRpMywgeG9yZGkzX3NwMzIsIHhvcmRpM19zcDY0LCB7QU5ELCBJT1IsIFhPUn0gREkgc3BsaXR0ZXIsCgl4b3Jfbm90X2RpX3NwMzIsIHhvcmRpX25vdF9kaV9zcDY0LCBvbmVfY21wbGRpMiwgb25lX2NtcGxkaV9zcDMyLAoJb25lX2NtcGxkaV9zcDY0KTogVXNlIFY2NEkgaW5zdGVhZCBvZiBESS4KCShhbmRzaTMsIGFuZHNpX3NwMzIsIGFuZHNpX3NwNjQsIGFuZF9ub3Rfc2ksIGlvcnNpMywgb3Jfbm90X3NpLAoJeG9yc2kzLCB4b3Jfbm90X3NpLCBvbmVfY21wbHNpMik6IFVzZSBWMzJJIGluc3RlYWQgb2YgU0kuCgkoYWRkdjJzaTMsIGFkZHY0aGkzLCBhZGR2MmhpMyk6IFJlbW92ZSAlIG1vZGlmaWVyLgoJKG5hbmR2NjRpX3ZpcywgbmFuZHYzMmlfdmlzKTogTmV3IHBhdHRlcm5zLgoKMjAwNC0xMS0xMiAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIGh0bWwgc3VwcG9ydC4KCSogamF2YS9NYWtlLWxhbmcuaW46IExpa2V3aXNlLgoJKiBmb3J0cmFuL01ha2UtbGFuZy5pbjogTGlrZXdpc2UuCgkqIHRyZWVsYW5nL01ha2UtbGFuZy5pbjogTGlrZXdpc2UuCgkqIGRvYy9pbnN0YWxsLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvbWFrZWZpbGUudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBMaWtld2lzZS4KCjIwMDQtMTEtMTMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDQtMTEtMTIgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogZG9jL2NwcGludGVybmFscy50ZXhpIChJbmRleCk6IEZpeCBodG1sIGdlbmVyYXRpb24gd2l0aCBtYWtlaW5mbyBieQoJcmVuYW1pbmcgdGhpcyBub2RlIHRvIENvbmNlcHQgSW5kZXguCgkqIGRvYy9nY2NpbnQudGV4aSAoSW5kZXgpOiBMaWtld2lzZS4gIEFsc28gbWlub3IgZm9ybWF0dGluZyB0d2Vha3MKCXRvIG1vcmUgY2xvc2VseSBtYXRjaCBnY2MudGV4aS4KCjIwMDQtMTEtMTIgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLWNmZy5jIChoYXNodGFiLmgpOiBJbmNsdWRlLgoJKHN0cnVjdCBlZGdlX3RvX2Nhc2VfbGVhZGVyX2VsdCk6IE5ldyBzdHJ1Y3R1cmUuCgkoZWRnZV90b19jYXNlX2xlYWRlcik6IE5ldy4KCShlZGdlX3RvX2Nhc2VfbGVhZGVyX2hhc2gpOiBOZXcgaGFzaHRhYmxlIGhhc2luZyBmdW5jdGlvbi4KCShlZGdlX3RvX2Nhc2VfbGVhZGVyX2VxKTogTmV3IGhhc2h0YWJsZSBlcXVhbGl0eSBmdW5jdGlvbi4KCShyZWNvcmRfc3dpdGNoX2VkZ2UpOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2Nhc2VfbGVhZGVyX2Zvcl9lZGdlLCBnZXRfY2FzZV9sZWFkZXJfZm9yX2VkZ2UpOiBOZXcgZnVuY3Rpb25zLgoJKG1ha2Vfc3dpdGNoX2V4cHJfZWRnZXMpOiBCdWlsZCB0aGUgZWRnZS10by1jYXNlLWxlYWRlcgoJaGFzaCB0YWJsZS4gIFRlYXIgZG93biB0aGUgaGFzaCB0YWJsZSB3aGVuIHdlJ3JlIGRvbmUuCgkoY2xlYW51cF9kZWFkX2xhYmVscyk6IFVzZSBDQVNFX0xFQURFUl9PUl9MQUJFTCBpbnN0ZWFkIG9mCglDQVNFX0xBQkVMLgoJKHRyZWVfbm9kZV9jYW5fYmVfc2hhcmVkKTogQWxsb3cgc2hhcmluZyBvZiBDQVNFX0xBQkVMX0VYUFIgbm9kZXMuCgkodHJlZV9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gsIGNhc2UgU1dJVENIX0VYUFIpOiBVcGRhdGUKCXRvIHVzZSBuZXcgY29uY2VwdCBvZiBjYXNlIGxlYWRlcnMgdG8gcmVkdWNlIG92ZXJoZWFkIG9mCglyZWRpcmVjdGluZyBvdXRnb2luZyBlZGdlcyBmcm9tIHN3aXRjaCBzdGF0ZW1lbnRzLgoJKiB0cmVlLmMgKGdldF9jYXNlX2xhYmVsKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmggKENBU0VfTEFCRUwpOiBEZWZpbmUgaW4gdGVybXMgb2YgZ2V0X2Nhc2VfbGFiZWwuCgkoQ0FTRV9MRUFERVJfT1JfTEFCRUwpOiBEZWZpbmUuCgoyMDA0LTExLTEyICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiB2YXJhc20uYyAob3V0cHV0X2FkZHJlc3NlZF9jb25zdGFudHMpOiBGb3IgQ09OU1RfREVDTHMsCglvdXRwdXQgdGhlIGluaXRpYWxpemVyIGlmIHByZXNlbnQuCgoyMDA0LTExLTEyICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oOiBGaXggY29uZnVzaW5nIHR5cG8gaW4gY29tbWVudC4KCjIwMDQtMTEtMTIgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiBvcHRhYnMuYyAodmVjdG9yX2NvbXBhcmVfcnR4KTogVXNlIENPTVBBUklTT05fQ0xBU1NfUC4KCjIwMDQtMTEtMTIgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiB0cmVlLWlmLWNvbnYuYyAoY2xlYW5fcHJlZGljYXRlX2xpc3RzKTogVXNlIGxvb3AgaGVhZGVyCglhbmQgbGF0Y2ggZGlyZWN0bHkuCgoyMDA0LTExLTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIDE3Nzc4CgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoVEFSR0VUXzk2X1JPVU5EXzUzX0xPTkdfRE9VQkxFKTogTmV3LgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmggKFNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogUmVtb3ZlLgoJKFRBUkdFVF85Nl9ST1VORF81M19MT05HX0RPVUJMRSk6IE5ldy4KCSogY29uZmlnL2kzODYvaTM4Ni1tb2Rlcy5kZWYgKFhGKTogVXNlIGl0LgoKMjAwNC0xMS0xMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAobWFjcm9fbGlzdCk6IFVzZSBtb3ZlLWlmLWNoYW5nZSB0byBhdm9pZCBzcHVyaW91cwoJcmVidWlsZHMuCgoyMDA0LTExLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xODQxNgoJKiBwYXNzZXMuYyAocmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uKTogRG8gbm90IGxvb2sgYXQgREVDTF9SVEwKCXdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBwYXNzIGEgdmFyaWFibGUgdG8KCWNncmFwaF92YXJwb29sX2ZpbmFsaXplX2RlY2wgb3IgYXNzZW1ibGVfdmFyaWFibGUuCgkqIHRvcGxldi5jIChjaGVja19nbG9iYWxfZGVjbGFyYXRpb25zKTogRG8gbm90IGNsZWFyIERFQ0xfUlRMLgoKMjAwNC0xMS0xMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtdmVjdG9yaXplci5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTExLTEyICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogZ2VuY29uZmlnLmMgKHdhbGtfaW5zbl9wYXJ0KTogTG9vayBhdCBtYXRjaF9kdXBzIGluc2lkZSBhIGxhYmVsX3JlZi4KCjIwMDQtMTEtMTIgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGFuYWx5emFibGVfY29uZGl0aW9uKTogUmVtb3ZlCglzdXBlcmZsdW91cyBUUkVFX1RISVNfVk9MQVRJTEUgY2hlY2tzIG9uIFNTQV9OQU1Fcy4KCjIwMDQtMTEtMTIgIFJhbGYgQ29yc2VwaXVzICA8cmFsZi5jb3JzZXBpdXNAcnRlbXMub3JnPgoKCSogY29uZmlnL3JzNjAwMC90LXJ0ZW1zIChNVUxUSUxJQl9ORVdfRVhDRVBUSU9OU19PTkxZKToKCVJlbW92ZSBtNTA1L3JvZSBtdWx0aWxpYiB2YXJpYW50LgoKMjAwNC0xMS0xMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGV4cHIuYyAoZW1pdF9ncm91cF9sb2FkKSA8Q09OQ0FUPjogVXNlIGV4dHJhY3RfYml0X2ZpZWxkCgl0byBsb2FkIGZyb20gdGhlIHN0YWNrLgoKMjAwNC0xMS0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5jIChmbG9vcl9sb2cyKTogUmVuYW1lIGZyb20gZmxvb3JfbG9nMl93aWRlLCB1c2UgQ0xaX0hXSS4KCShleGFjdF9sb2cyKTogUmVuYW1lIGZyb20gZXhhY3RfbG9nMl93aWRlLCB1c2UgQ1RaX0hXSS4KCSogdG9wbGV2LmggKEZMMlRfXyk6IFJlbW92ZS4KCShDTFpfSFdJKTogUmVuYW1lIGZyb20gRkwyVF9DTFpfXy4KCShDVFpfSFdJKTogTmV3LgoJKGZsb29yX2xvZzIpOiBTaW1wbGlmeS4KCShleGFjdF9sb2cyKTogTmV3LgoKMjAwNC0xMS0xMiAgU2ViYXN0aWFuIFBvcCAgPHBvcEBjcmkuZW5zbXAuZnI+CgoJKiB0cmVlLWRhdGEtcmVmLmMgKGFuYWx5emVfc3Vic2NyaXB0X2FmZmluZV9hZmZpbmUpOiBDb3JyZWN0bHkKCWNvbXB1dGUgdGhlIGZpcnN0IG92ZXJsYXBwaW5nIGl0ZXJhdGlvbnMuCgoyMDA0LTExLTEyICBTZWJhc3RpYW4gUG9wICA8cG9wQGNyaS5lbnNtcC5mcj4KCglQUiBtaWRkbGUtZW5kLzE4MDA1CgkqIHRyZWUtZGF0YS1yZWYuYyAoZXN0aW1hdGVfbml0ZXJfZnJvbV9zaXplX29mX2RhdGEpOiBFbnN1cmUKCXRoYXQgYXJndW1lbnRzIG9mIEVYQUNUX0RJVl9FWFBSIGFyZSBJTlRFR0VSX0NTVC4KCjIwMDQtMTEtMTIgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xODQxOQoJKiB0cmVlLXNzYS5jICh3YWxrX3VzZV9kZWZfY2hhaW5zXzEpOiBNYWtlIHRoZSB2aXNpdGVkIG1hcCBhCglwb2ludGVyIHNldCBpbnN0ZWFkIG9mIGEgYml0bWFwLgoJKHdhbGtfdXNlX2RlZl9jaGFpbnMpOiBDcmVhdGUsIHBhc3MgYW5kIGNsZWFuIHVwIHRoYXQgcG9pbnRlcl9zZXQuCgoJKiB0cmVlLXNzYS1hbGlhcy5jIChzdHJ1Y3QgYWxpYXNfaW5mbyk6IE1ha2UgdGhlIHNzYV9uYW1lc192aXNpdGVkCglmaWVsZCBhbiBzYml0bWFwLgoJKGluaXRfYWxpYXNfaW5mbyk6IEFsbG9jYXRlIGFuZCB6ZXJvIGl0IGhlcmUuCgkoZGVsZXRlX2FsaWFzX2luZm8pOiBEZWxldGUgaXQgaGVyZS4KCShjb2xsZWN0X3BvaW50c190b19pbmZvX2Zvcik6IFVzZSBpdC4KCjIwMDQtMTEtMTEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBhbGlhcy5jIChyZWNvcmRfYWxpYXNfc3Vic2V0LCBhZGRyX3NpZGVfZWZmZWN0X2V2YWwpOgoJTWFrZSB0aGVtIHN0YXRpYy4KCSogYWxpYXMuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIHJlY29yZF9hbGlhc19zdWJzZXQuCgkqIGV4cHIuaDogUmVtb3ZlIHRoZSBjb21tZW50ZWQtb3V0IHByb3RvdHlwZSBmb3IKCXJlY29yZF9hbGlhc19zdWJzZXQuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgYWRkcl9zaWRlX2VmZmVjdF9ldmFsLgoKCSogY2ZnbGF5b3V0LmMgKGNob29zZV9pbm5lcl9zY29wZSk6IE1ha2UgaXQgc3RhdGljLgoJKiBydGwuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZS4KCgkqIGNmZ2xvb3BtYW5pcC5jICh1cGRhdGVfc2luZ2xlX2V4aXRzX2FmdGVyX2R1cGxpY2F0aW9uLAoJdW5sb29wKTogTWFrZSB0aGVtIHN0YXRpYy4KCSogY2ZnbG9vcC5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlcy4KCgkqIGMtdHlwZWNrLmMgKGNfc2l6ZV9pbl9ieXRlcywgcmVjb3JkX21heWJlX3VzZWRfZGVjbCk6CglNYWtlIHRoZW0gc3RhdGljLgoJKiBjLXRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZXMuCgoJKiBleHBsb3cuYyAocm91bmRfcHVzaCk6IE1ha2UgaXQgc3RhdGljLgoJKiBleHByLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoJKiB2YXJhc20uYyAoZ2V0X25hbWVkX3NlY3Rpb25fZmxhZ3MsIGRlY2xfdGxzX21vZGVsKTogTWFrZQoJdGhlbSBzdGF0aWMuCgkqIG91dHB1dC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgZ2V0X25hbWVkX3NlY3Rpb25fZmxhZ3MuCgkqIHRyZWUuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIGRlY2xfdGxzX21vZGVsLgoKMjAwNC0xMS0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBSZW1vdmUgYW4gImlmIiBzdGF0ZW1lbnQKCXRoYXQgYWx3YXlzIHRyaWdnZXJzLgoJKiBzdG10LmMgKGV4cGFuZF9udWxsX3JldHVybl8xKTogTGlrZXdpc2UuCgoyMDA0LTExLTExICBKYW1lcyBFLiBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChIQVJEX1JFR05PX05SRUdTKTogSGFuZGxlIFhDbW9kZS4KCShIQVJEX1JFR05PX01PREVfT0ssIE1PREVTX1RJRUFCTEVfUCwgU0VDT05EQVJZX01FTU9SWV9ORUVERUQsCglDTEFTU19NQVhfTlJFR1MpOiBMaWtld2lzZS4KCjIwMDQtMTEtMTEgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTc3NDIKCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGZvbGxvd19zc2FfZWRnZV9pbl9yaHMpOiBIYW5kbGUKCU1JTlVTX0VYUFIgY29ycmVjdGx5LgoKMjAwNC0xMS0xMSAgU2ViYXN0aWFuIFBvcCAgPHBvcEBjcmkuZW5zbXAuZnI+CgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoZm9sbG93X3NzYV9lZGdlX2luX2NvbmRpdGlvbl9waGkpOgoJR2l2ZSB1cCBhcyBzb29uIGFzIHRoZSBldm9sdXRpb24gaXMga25vd24gbm90IGNvbXB1dGFibGUuCgoyMDA0LTExLTExICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8xNjQ1NwoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChtYXNrNjRfMl9vcGVyYW5kKTogU3R1YiB0byBjYWxsCgltYXNrNjRfMW9yMl9vcGVyYW5kLgoJKG1hc2s2NF8xb3IyX29wZXJhbmQpOiBCcm9rZW4gb3V0IG9mIG1hc2s2NF8yX29wZXJhbmQsIGFkZCBmbGFnCgl0byBzcG90IHJsd2lubSBvcHBvcnR1bml0aWVzLgoJKGFuZDY0XzJfb3BlcmFuZCk6IFVzZSBtYXNrXzFvcjJfb3BlcmFuZC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGFuZGRpMyk6IFVzZSBybHdpbm0gd2hlbiBwb3NzaWJsZS4KCjIwMDQtMTEtMTEgIERvcml0IE5haXNobG9zICA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIHRyZWUtdmVjdG9yaXplci5jICh1cGRhdGVfcGhpX25vZGVzX2Zvcl9ndWFyZCk6IENhbGwgcmV2ZXJzZV9waGlzLgoJKHZlY3RfdXBkYXRlX2l2c19hZnRlcl92ZWN0b3JpemVyKTogVXBkYXRlIGZ1bmN0aW9uIGRvY3VtZW50YXRpb24uCglBdm9pZCBxdWFkcmF0aWMgYmVoYXZpb3IgYW5kIGRpcmVjdCB3cml0ZSB0byBQSElfQVJHX0RFRi4KCjIwMDQtMTEtMTEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXJtL2FybS5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTExLTExICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYml0bWFwLmggKG5CSVRNQVBfV09SRF9CSVRTKTogUmVtb3ZlLgoJKEJJVE1BUF9XT1JEX0JJVFMpOiBGb3JjZSB1bnNpZ25lZCBieSB1c2Ugb2YgMXUuCgkoQklUTUFQX0VMRU1FTlRfV09SRFMsIEJJVE1BUF9FTEVNRU5UX0FMTF9CSVRTKTogUmVtb3ZlCgl1bm5lY2Vzc2FyeSBjYXN0cy4KCShiaXRtYXBfZmlyc3Rfc2V0X2JpdCk6IFJldHVybiB1bnNpZ25lZCwgdXNlIGN0emwuCgkoYml0bWFwX2xhc3Rfc2V0X2JpdCk6IFJlbW92ZS4KCSogYml0bWFwLmMgKGJpdG1hcF9lbGVtZW50X3plcm9wLCBiaXRtYXBfY29weSk6IE1ha2UgaXRlcmF0b3IKCXVuc2lnbmVkLgoJKGJpdG1hcF9maXJzdF9zZXRfYml0KTogUmV0dXJuIHVuc2lnbmVkLCByZXF1aXJlIG5vbi1lbXB0eSBiaXRtYXAsCglyZW1vdmUgc3BlY2lhbCBjYXNlIGNvZGUgZm9yIHR3byB3b3JkIGVsZW1lbnRzLgoJKGJpdG1hcF9sYXN0X3NldF9iaXQpOiBSZW1vdmUuCgkqIHJhLWJ1aWxkLmMgKGxpdmV0aHJvdWdoX2NvbmZsaWN0c19iYik6IFJlcGxhY2UgdW5uZWNlc3NhcnkgdXNlIG9mCgliaXRtYXBfZmlyc3Rfc2V0X2JpdCB3aXRoIGJpdG1hcF9lbXB0eV9wLgoJKiB0cmVlLW91dG9mLXNzYS5jIChhbmFseXplX2VkZ2VzX2Zvcl9iYik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1wcmUuYyAoYml0bWFwX3ByaW50X3ZhbHVlKTogVXNlIHNpbXBsZSBmbGFnIHJhdGhlciB0aGFuCgliaXRtYXBfbGFzdF9iaXRfc2V0LgoKMjAwNC0xMS0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMTY3OTYKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IEFkZCBERiAmIFNGIHJlZyBtb3ZlIHBlZXBob2xlcy4KCglQUiB0YXJnZXQvMTY0NTgKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2dlbmVyYXRlX2NvbXBhcmUpOiBHZW5lcmF0ZSBhbgoJdW5zaWduZWQgZXF1YWxpdHkgY29tcGFyZSB3aGVuIHdlIGtub3cgdGhlIG9wZXJhbmRzIGFyZSB1bnNpZ25lZC4KCjIwMDQtMTEtMTAgIFBldGVyIFMuIE1hemluZ2VyICA8cHMubUBnbXgubmV0PgoKCSogY29uZmlnL21pcHMvbGludXguaCAoTElOVVhfVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZQoJX19QSUNfXyBhbmQgX19waWNfXyBvbmx5IGlmIFRBUkdFVF9BQklDQUxMUy4KCShTVUJUQVJHRVRfQ1BQX1NQRUNTKTogRG9uJ3QgZGVmaW5lIG9yIHVuZGVmaW5lIF9fUElDX18gYW5kIF9fcGljX18uCgkoU1VCVEFSR0VUX0FTTV9TUEVDUyk6IERvbid0IHBhc3MgLW5vbl9zaGFyZWQgdG8gYXNzZW1ibGVyOyBwYXNzCgktS1BJQyBvbmx5IGlmIG5vdCAtbW5vLWFiaWNhbGxzLgoKCSogY29uZmlnL2FscGhhL2xpbnV4LmgsIGNvbmZpZy9hcm0vbGludXgtZWxmLmgsIGNvbmZpZy9wYS9wYS1saW51eC5oCgkqIGNvbmZpZy9zcGFyYy9saW51eC5oLCBjb25maWcvc3BhcmMvbGludXg2NC5oCgkoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZSBfX1BJQ19fIGFuZCBfX3BpY19fIGlmIGZsYWdfcGljLgoKCSogY29uZmlnL2FybS9saW51eC1nYXMuaCAoQ1BQX1NQRUMpOiBEb24ndCBkZWZpbmUgX19QSUNfXyBvciBfX3BpY19fLgoJKiBjb25maWcvcGEvcGEvbGludXguaCAoQ1BQX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKENQUF9TVUJUQVJHRVRfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChDUFBfU1VCVEFSR0VUX1NQRUMpOiBMaWtld2lzZS4KCjIwMDQtMTEtMTEgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fY29tcHV0ZV9zYXZlX3JlZzBfcmVnMTJfbWFzayk6IFNhdmUgUElDCglyZWdpc3RlciBpZiBjdXJyZW50X2Z1bmN0aW9uX3VzZXNfcGljX29mZnNldF90YWJsZSBpcyBzZXQuCgoyMDA0LTExLTEwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZGVmaW5lX2F0dHIgInR5cGUiKTogQWRkIHR3byBhbmQgdGhyZWUuCglDaGFuZ2UgbXVsdGktaW5zdHJ1Y3Rpb24gc2VxdWVuY2VzIHRvIG5ldyBhdHRyaWJ1dGUuCgkqIGNvbmZpZy9yczYwMDAvezQweC5tZCw0NDAubWQsNjAzLm1kLDZ4eC5tZCwKCTc0NTAubWQsN3h4Lm1kLDg1NDAubWQsbXBjLm1kLHBvd2VyNC5tZCxwb3dlcjUubWQsCglyaW9zMS5tZCxyaW9zMi5tZCxyczY0Lm1kfTogQWRkIGRlc2NyaXB0aW9ucyBmb3IgdHdvIGFuZCB0aHJlZS4KCjIwMDQtMTEtMTAgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1kYXRhLXJlZi5jIChidWlsZF9jbGFzc2ljX2Rpc3RfdmVjdG9yKTogSWYgZWl0aGVyIGxvb3AKCWlzIG91dHNpZGUgb2YgdGhlIG5lc3Qgd2UgYXNrZWQgYWJvdXQsIHRoZSBkZXBlbmRlbmNlIGNhbid0CgltYXR0ZXIuCgkoYnVpbGRfY2xhc3NpY19kaXJfdmVjdG9yKTogRGl0dG8uCgoyMDA0LTExLTEwICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoZ2V0X2FkZHJlc3NfY29zdCk6IEFkZCBhZGRyZXNzIGVsZW1lbnRzIGluCglyaWdodCBvcmRlci4KCShmb3JjZV92YXJfY29zdCk6IERldGVybWluZSBjb3N0IG9mIGFkZGl0aW9uIGFuZCBtdWx0aXBsaWNhdGlvbiBtb3JlCglwcmVjaXNlbHkuCgkoZ2V0X2NvbXB1dGF0aW9uX2Nvc3RfYXQpOiBBZGQgY29zdCBmb3IgY29tcHV0aW5nIGFkZHJlc3MgZWxlbWVudHMgdG8KCXRoZSBmaW5hbCBjb3N0LgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogQXR0ZW1wdCB0byB1c2UgcHRyX2RpZmZlcmVuY2VfY29uc3Qgd2hlbmV2ZXIKCW9uZSBvZiB0aGUgYXJndW1lbnRzIG9mIE1JTlVTX0VYUFIgaXMgYW4gYWRkcmVzcy4KCShzcGxpdF9hZGRyZXNzX3RvX2NvcmVfYW5kX29mZnNldCk6IE5ldyBmdW5jdGlvbi4KCShwdHJfZGlmZmVyZW5jZV9jb25zdCk6IEhhbmRsZSBjYXNlIHdoZW4gb25lIG9mIHRoZSBvcGVyYW5kcyBpcyBhCglwb2ludGVyLgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChkZXRlcm1pbmVfYmFzZV9vYmplY3QpOiBGb2xkICYqYWRkci4KCShwdHJfZGlmZmVyZW5jZV9jb3N0KTogUGFzcyBhZGRyZXNzZXMgaW5zdGVhZCBvZiBvYmplY3RzIHRvCglwdHJfZGlmZmVyZW5jZV9jb25zdC4KCjIwMDQtMTEtMTAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKHRyZWVfY2hlY2tfZmFpbGVkKTogRW1pdCBnZW5lcmFsIGVycm9yIGlmIHRoZSBsaXN0IG9mCglub2RlIHR5cGVzIGlzIGVtcHR5LgoKMjAwNC0xMS0xMCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChmdW5jdGlvbl9hcmdfdW5pb25fdmFsdWUpOiBOZXcgJ3Nsb3RubycKCWFyZ3VtZW50LiAgV2hlbiB0aGUgdW5pb24gaXMgcGFzc2VkIGluIHRoZSA2dGggc2xvdCwgYnVpbGQgYQoJUEFSQUxMRUwgd2l0aCBvbmx5IG9uZSBlbGVtZW50LgoJKGZ1bmN0aW9uX2FyZyk6IEFkanVzdCBjYWxsIHRvIGZ1bmN0aW9uX2FyZ191bmlvbl92YWx1ZS4KCShmdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLgoKMjAwNC0xMS0xMCAgRmFyaWJvcnogSmFoYW5pYW4gPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTc4OTIKCSogdHJlZS1zc2EtZG9tLmMgKHVuc2FmZV9hc3NvY2lhdGl2ZV9mcF9iaW5vcCk6IEFkZCB0ZXN0IGZvcgoJTUlOVVNfRVhQUiBvcGVyYXRvci4KCjIwMDQtMTEtMTAgIEphbWVzIEEuIE1vcnJpc29uICA8cGh5dGhvbkBnY2MuZ251Lm9yZz4KCglQUiB0YXJnZXQvMTgyMzAKCWNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoYWRkc2kzLCBzdWJzaTMpOiBTZXQgImZwdHlwZSIgYXR0cmlidXRlLgoJKGFkZHYyc2ksIGFkZHY0aGksIGFkZHYyaGksIHN1YnYyc2ksIHN1YnY0aGksIHN1YnYyaGkpOiBOZXcgcGF0dGVybnMuCgoyMDA0LTExLTEwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBiYXNpYy1ibG9jay5oIChYTUFMTE9DX1JFR19TRVQsIFhGUkVFX1JFR19TRVQpOiBOZXcuCgkoc3RydWN0IGJhc2ljX2Jsb2NrX2RlZik6IFJlbW92ZSBsb2NhbF9zZXQgYW5kIGNvbmRfbG9jYWxfc2V0CglmaWVsZHMuICBVcGRhdGUgY29tbWVudCBmb3IgZ2xvYmFsX2xpdmVfYXRfc3RhcnQuCgkqIGZsb3cuYyAoY2FsY3VsYXRlX2dsb2JhbF9yZWdzX2xpdmUpOiBBbGxvY2F0ZSBsb2NhbF9zZXRzIGFuZAoJY29uZF9sb2NhbF9zZXRzIGhlcmUgYXMgYXJyYXlzIG9mIGJpdG1hcHMgcHJldmlvdXNseSBzdG9yZWQgaW4KCWJiLT5sb2NhbF9zZXQgYW5kIGJiLT5jb25kX2xvY2FsX3NldC4gIFVzZSB4bWFsbG9jIGluc3RlYWQgb2YKCW9ic3RhY2sgYWxsb2NhdGVkIGJpdG1hcHMuCgoyMDA0LTExLTA5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgdGFyZ2V0LzE4MzgwCgkqIGNvbmZpZy9pYTY0L3Vud2luZC1pYTY0LmggKF9VbndpbmRfRmluZFRhYmxlRW50cnkpOiBNYXJrIGl0CgloaWRkZW4uCgoJKiB1bndpbmQtZHcyLmMgKF9VbndpbmRfRmluZFRhYmxlRW50cnkpOiBSZW1vdmVkLgoKMjAwNC0xMS0wOSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGNmZ2FuYWwuYyAoZmxvd19kZnNfY29tcHV0ZV9yZXZlcnNlX2V4ZWN1dGUpOiBBY2NlcHQgbmV3Cglhcmd1bWVudCBob2xkaW5nIGxhc3QgdW52aXNpdGVkIGJsb2NrLiAgU3RhcnQgc2VhcmNoIGZvcgoJdW52aXNpdGVkIGJsb2NrcyBhdCBMQVNUX1VOVklTSVRFRCByYXRoZXIgdGhhbiBFWElUX0JMT0NLLgoJKGNvbm5lY3RfaW5maW5pdGVfbG9vcHNfdG9fZXhpdCk6IFN1cHBseSBsYXN0IHVudmlzaXRlZCBibG9jawoJdG8gZmxvd19kZnNfY29tcHV0ZV9yZXZlcnNlX2V4ZWN1dGUuCgoyMDA0LTEwLTIyICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZml4X3RydW5jZGZzaTIpOiBIYW5kbGUgZTUwMAoJZG91Ymxlcy4KCShmbG9hdHVuc3NpZGYyKTogU2FtZS4KCShmbG9hdHNpZGYyKTogU2FtZS4KCSgiZXh0ZW5kc2ZkZjIiKTogTmV3IGV4cGFuZGVyLgoJKCpleHRlbmRzZmRmMl9mcHIpOiBSZW5hbWUuCgkoKnRydW5jZGZzZjJfZnByKTogU2FtZS4KCSgqbmVnZGYyX2Zwcik6IFNhbWUuCgkoKmFic2RmMl9mcHIpOiBTYW1lLgoJKCpuYWJzZGYyX2Zwcik6IFNhbWUuCgkoKmFkZGRmM19mcHIpOiBTYW1lLgoJKCpzdWJkZjNfZnByKTogU2FtZS4KCSgqbXVsZGYzX2Zwcik6IFNhbWUuCgkoKmRpdmRmM19mcHIpOiBTYW1lLgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKCJzcGVfZXh0ZW5kc2ZkZjIiKTogUmVtb3ZlIEZJWE1FIGNvbW1lbnQuCgkoInNwZV9maXhfdHJ1bmNkZnNpMiIpOiBTYW1lLgoJKHNwZV9mbG9hdHVuc3NpZGYyKTogU2FtZS4KCShzcGVfZmxvYXRzaWRmMik6IFNhbWUuCgoyMDA0LTExLTA5ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjLzE4MzIyCgkqIGMtY29tbW9uLmMgKGZuYW1lX2RlY2wpOiBEb24ndCB1c2UgbGluZSBudW1iZXIgb2YgZGVjbCBpbgoJZGlhZ25vc3RpYy4KCjIwMDQtMTEtMDkgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfcG9vbF9vcGVyYW5kKTogUmVtb3ZlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfcG9vbF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoczM5MF9leHRyYV9jb25zdHJhaW50X3N0cik6IEhhbmRsZSAnQicgY29uc3RyYWludHMuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoQ09OU1RSQUlOVF9MRU4pOiBIYW5kbGUgJ0InIGNvbnN0cmFpbnRzLgoJKiBjb25maWcvczM5MC9zMzkwLm1kOiBEb2N1bWVudCAnQicgY29uc3RyYWludHMuCgkoIipjbXBkaV9jY3QiLCAiKmNtcHNpX2NjdCIpOiBVc2UgJ0InIGNvbnN0cmFpbnQgaW5zdGVhZCBvZgoJczM5MF9wb29sX29wZXJhbmQgdG8gcHJldmVudCBpbnNucyB3aXRoIHR3byBsaXRlcmFsIHBvb2wKCXJlZmVyZW5jZXMuICBNYWtlIHBhdHRlcm4gY29tbXV0YXRpdmUuCgkoIipjbXBkaV9jY3UiLCAiKmNtcHNpX2NjdSIsICIqY21waGlfY2N1IiwgIipjbXBxaV9jY3UiKTogVXNlCgknQicgY29uc3RyYWludCBpbnN0ZWFkIG9mIHMzOTBfcG9vbF9vcGVyYW5kLgoKMjAwNC0xMS0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmMgKGNyZWF0ZV9iYik6IFJlbW92ZSB1bm5lY2Vzc2FyeSBtZW1zZXQuCgoyMDA0LTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKGNvcHlfcGhpc190b19ibG9jayk6IFJlbW92ZS4KCSh0aHJlYWRfYmxvY2spOiBDYWxsIGZsdXNoX3BlbmRpbmdfc3RtdCBpbnN0ZWFkIG9mCgljb3B5X3BoaXNfdG9fYmxvY2suCgoyMDA0LTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogbG9vcC1pdi5jIChpdl9udW1iZXJfb2ZfaXRlcmF0aW9ucyk6IE1ha2UgaXQgc3RhdGljLgoJKiBjZmdsb29wLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoyMDA0LTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZnVuY3Rpb24uYyAoY29tYmluZV90ZW1wX3Nsb3RzLCBhc3NpZ25fcGFybXMsCglleHBhbmRfcGVuZGluZ19zaXplcyk6IE1ha2UgdGhlbSBzdGF0aWMuCgkqIHRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZXMuCgoyMDA0LTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZW1pdC1ydGwuYyAoY29weV9tb3N0X3J0eCk6IFJlbW92ZS4KCSogcnRsLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoyMDA0LTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2ZnbG9vcC5jIChmbG93X2xvb3BzX3VwZGF0ZSk6IFJlbW92ZS4KCSogY2ZnbG9vcC5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKMjAwNC0xMS0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZsaWN0LmMgKG1hcmtfcmVnLCBjb25mbGljdF9ncmFwaF9jb21wdXRlKTogUmVtb3ZlLgoJKiBiYXNpYy1ibG9jay5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWNvbmZsaWN0X2dyYXBoX2NvbXB1dGUuCgoyMDA0LTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1pZi1jb252LmMgKGFkZF90b19kc3RfcHJlZGljYXRlX2xpc3QpOiBDaGFuZ2UgdGhlCglzZWNvbmQgYXJndW1lbnQgdG8gYmFzaWNfYmxvY2suCgkodHJlZV9pZl9jb252ZXJ0X2NvbmRfZXhwcik6IFVwZGF0ZSBjYWxsIHNpdGVzLgoKMjAwNC0xMS0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAocGVkYW50aWNfbm9uX2x2YWx1ZSk6IE1ha2UgaXQgc3RhdGljLgoJKiB0cmVlLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoyMDA0LTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogb3B0YWJzLmMgKHByZXBhcmVfb3BlcmFuZCk6IE1ha2UgaXQgc3RhdGljLgoJKiBvcHRhYnMuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZS4KCjIwMDQtMTEtMDkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiByZWxvYWQxLmMgKHJlbG9hZHNfY29uZmxpY3QsIGdlbl9yZWxvYWQpOiBNYWtlIHRoZW0gc3RhdGljLgoJKiByZWxvYWQuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZXMuCgoyMDA0LTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcmVsb2FkLmMgKHJlZmVyc190b19tZW1fZm9yX3JlbG9hZF9wLAoJcmVmZXJzX3RvX3JlZ25vX2Zvcl9yZWxvYWRfcCk6IE1ha2UgdGhlbSBzdGF0aWMuCgkqIHJlbG9hZC5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlcy4KCjIwMDQtMTEtMDkgIEphbWVzIEEuIE1vcnJpc29uICA8cGh5dGhvbkBnY2MuZ251Lm9yZz4KCSAgICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xODIzMAoJKiBkb2MvbWQudGV4aSAoU1BBUkMgY29uc3RyYWludHMpOiBEb2N1bWVudCAnWScgY29uc3RyYWludC4KCSogY29uZmlnL3NwYXJjL3NwYXJjLW1vZGVzLmRlZjogQWRkIHZlY3RvciBtb2RlcyBvZiA0IGFuZCA4IGJ5dGVzLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfdmVjdG9yX21vZGVfc3VwcG9ydGVkX3ApOiBOZXcgZnVuY3Rpb24uCgkoVEFSR0VUX1ZFQ1RPUl9NT0RFX1NVUFBPUlRFRF9QKTogU2V0IHRvIHNwYXJjX3ZlY3Rvcl9tb2RlX3N1cHBvcnRlZF9wLgoJKGZwX3plcm9fb3BlcmFuZCk6IEFjY2VwdCBNT0RFX1ZFQ1RPUl9JTlQgbW9kZXMuCgkoaW5wdXRfb3BlcmFuZCk6IEFjY2VwdCBDT05TVF9WRUNUT1Igd2l0aCBNT0RFX1ZFQ1RPUl9JTlQgbW9kZXMuCgkoc3BhcmNfY2Fubm90X2ZvcmNlX2NvbnN0X21lbSk6IFJldHVybiBmYWxzZSBmb3IgQ09OU1RfVkVDVE9SLgoJKHNwYXJjX2luaXRfbW9kZXMpOiBTZXQgc3BhcmNfbW9kZV9jbGFzcyB0byBTRl9NT0RFIG9yIERGX01PREUgZm9yCglNT0RFX1ZFQ1RPUl9JTlQgbW9kZXMuCgkoc3BhcmNfZXh0cmFfY29uc3RyYWludF9jaGVjayk6IEFkZCBuZXcgY29uc3RyYWludCAnWScuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oOiBEZWZpbmUgVU5JVFNfUEVSX1NJTURfV09SRCB0byA4IGZvciBUQVJHRVRfVklTLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKFYzMik6IE5ldyBtb2RlIG1hY3JvIGZvciAzMi1iaXQgbW9kZXMuCgkoVjY0KTogTmV3IG1vZGUgbWFjcm8gZm9yIDY0LWJpdCBtb2Rlcy4KCShtb3ZzZik6IFVzZSBWMzIgZm9yIG1vZGUgaW5zdGVhZCBvZiBTRi4KCShtb3ZzZl9pbnNuX3Zpcyk6IFVzZSBWMzIgZm9yIG1vZGUgaW5zdGVhZCBvZiBTRi4gIEFkZCAnWScgY29uc3RyYWludAoJYWxvbmdzaWRlICdHJyBjb25zdHJhaW50LgoJKG1vdmRmKTogVXNlIFY2NCBmb3IgbW9kZSBpbnN0ZWFkIG9mIERGLgoJKG1vdmRmX2luc25fdjlvbmx5X3ZpcywgbW9kZl9pbnNuX3NwNjRfdmlzKTogVXNlIFY2NCBmb3IgbW9kZSBpbnN0ZWFkCglvZiBERi4gIEFkZCAnWScgY29uc3RyYWludCBhbG9uZ3NpZGUgJ0cnIGNvbnN0cmFpbnQuCgkobXVsdGktaXNuIGFuZCBtaXNhbGlnbmVkIG1lbXMgREZtb2RlIHNwbGl0dGVycyk6IFVzZSBWNjQgZm9yIG1vZGUKCWluc3RlYWQgb2YgREYuCgoyMDA0LTExLTA5ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfc2VsZWN0X2NjbW9kZSk6IFJldHVybiBDQ0FQbW9kZSBmb3IKCWludGVnZXIgTkVHIGFuZCBBQlMuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqbmVnZGkyXzY0Iik6IEZpeCBvcF90eXBlIGF0dHJpYnV0ZS4KCSgiKm5lZ2RpMl8zMSIpOiBSZWltcGxlbWVudCB1c2luZyBhIHNwbGl0dGVyLgoJKCIqbmVnZGkyX2NjIiwgIipuZWdkaTJfY2Nvbmx5Iik6IE5ldyBpbnNucy4KCSgiKm5lZ2RpMl9zaWduIiwgIipuZWdkaTJfc2lnbl9jYyIpOiBMaWtld2lzZS4KCSgiKm5lZ3NpMl9jYyIsICIqbmVnc2kyX2Njb25seSIpOiBMaWtld2lzZS4KCSgiKm5lZ2RmMl9jYyIsICIqbmVnZGYyX2Njb25seSIpOiBMaWtld2lzZS4KCSgiKm5lZ3NmMl9jYyIsICIqbmVnc2YyX2Njb25seSIpOiBMaWtld2lzZS4KCSgiKmFic2RpMl9jYyIsICIqYWJzZGkyX2Njb25seSIpOiBOZXcgaW5zbnMuCgkoIiphYnNkaTJfc2lnbiIsICIqYWJzZGkyX3NpZ25fY2MiKTogTGlrZXdpc2UuCgkoIiphYnNzaTJfY2MiLCAiKmFic3NpMl9jY29ubHkiKTogTGlrZXdpc2UuCgkoIiphYnNkZjJfY2MiLCAiKmFic2RmMl9jY29ubHkiKTogTGlrZXdpc2UuCgkoIiphYnNzZjJfY2MiLCAiKmFic3NmMl9jY29ubHkiKTogTGlrZXdpc2UuCgkoIipuZWdhYnNkaTJfY2MiLCAiKm5lZ2Fic2RpMl9jY29ubHkiKTogTmV3IGluc25zLgoJKCIqbmVnYWJzZGkyX3NpZ24iLCAiKm5lZ2Fic2RpMl9zaWduX2NjIik6IExpa2V3aXNlLgoJKCIqbmVnYWJzc2kyX2NjIiwgIipuZWdhYnNzaTJfY2Nvbmx5Iik6IExpa2V3aXNlLgoJKCIqbmVnYWJzZGYyX2NjIiwgIipuZWdhYnNkZjJfY2Nvbmx5Iik6IExpa2V3aXNlLgoJKCIqbmVnYWJzc2YyX2NjIiwgIipuZWdhYnNzZjJfY2Nvbmx5Iik6IExpa2V3aXNlLgoKMjAwNC0xMS0wOSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2Nhbm9uaWNhbGl6ZV9jb21wYXJpc29uKTogUmV2ZXJzZSBjb25kaXRpb24KCXdoZW4gZWxpbWluYXRpbmcgYW4gVU5TUEVDX0NNUElOVC4KCShzMzkwX3NlY29uZGFyeV9pbnB1dF9yZWxvYWRfY2xhc3MpOiBGaXggdGVzdCBmb3IgQ0MgcmVnaXN0ZXIgcmVsb2FkLgoJKHMzOTBfc2Vjb25kYXJ5X291dHB1dF9yZWxvYWRfY2xhc3MpOiBMaWtld2lzZS4KCShzMzkwX2V4cGFuZF9jbXBtZW0pOiBTd2FwIG9wZXJhbmRzLiAgVXNlIGdlbl9jbXBpbnQuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqY21waW50X3NpIiwgIipjbXBpbnRfZGkiKTogUmVtb3ZlLgoJKCJjbXBpbnQiLCAiKmNtcGludF9jYyIsICIqY21waW50X3NpZ24iLCAiKmNtcGludF9zaWduX2NjIik6IE5ldwoJaW5zbiBwYXR0ZXJucyB3aXRoIHNwbGl0dGVycy4KCjIwMDQtMTEtMDkgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9ydHhfY29zdHMpOiBBZGQgRVEsIEdUVSwgYW5kIExUVS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKHNDQyk6IFNwbGl0IEdUVSBhbmQgTFRVIHBhdHRlcm5zLgoKMjAwNC0xMS0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtcGhpbm9kZXMuYyAocGhpX3JldmVyc2UpOiBOZXcuCgkqIHRyZWUtY2ZnLmMgKHRyZWVfbWFrZV9mb3J3YXJkZXJfYmxvY2ssIHRyZWVfZHVwbGljYXRlX2JiKToKCVVzZSBpdC4KCSogdHJlZS1mbG93Lmg6IEFkZCBhIHByb3RvdHlwZSBmb3IgcGhpX3JldmVyc2UuCgoyMDA0LTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYzogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNC0xMS0wOSAgSmFtZXMgQS4gTW9ycmlzb24gIDxwaHl0aG9uQGdjYy5nbnUub3JnPgoKCVBSIHBjaC8xNDk0MAoJKiBjb25maWcvaG9zdC1saW51eC5jIChUUllfRU1QVFlfVk1fU1BBQ0UpOiBBZGQgX19zcGFyY19fCglkZWZpbml0aW9ucy4KCjIwMDQtMTEtMDkgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYywgYy1jb21tb24uYywgYy1kZWNsLmMsIGMtZm9ybWF0LmM6IFNheSAiYXJndW1lbnQiCglpbnN0ZWFkIG9mICJhcmciIGluIGRpYWdub3N0aWNzLgoKMjAwNC0xMS0wOSAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBidWlsdGlucy5jLCBjLWNvbW1vbi5jLCBjLWRlY2wuYywgYy1mb3JtYXQuYywgYy1mb3JtYXQuaCwKCWMtcGFyc2UuaW4sIGMtcGNoLmMsIGMtcHJhZ21hLmMsIGNvbGxlY3QyLmMsIGZpbmFsLmMsIGdjYy5jLAoJZ2Nvdi5jLCBvcHRzLmMsIHByZXR0eS1wcmludC5oLCBwcm90b2l6ZS5jLCByZWctc3RhY2suYywgcnRsLmMsCgl0bGluay5jLCBjb25maWcvYWxwaGEvYWxwaGEuYywgY29uZmlnL2FyYy9hcmMuYywgY29uZmlnL2FybS9hcm0uYywKCWNvbmZpZy9hdnIvYXZyLmMsIGNvbmZpZy9jNHgvYzR4LmMsIGNvbmZpZy9kYXJ3aW4uYywKCWNvbmZpZy9mcnYvZnJ2LmMsIGNvbmZpZy9oODMwMC9oODMwMC5jLCBjb25maWcvaTM4Ni9pMzg2LmMsCgljb25maWcvaTM4Ni93aW5udC5jLCBjb25maWcvaWE2NC9pYTY0LmMsIGNvbmZpZy9pcDJrL2lwMmsuYywKCWNvbmZpZy9pcTIwMDAvaXEyMDAwLmMsIGNvbmZpZy9tMzJyL20zMnIuYywKCWNvbmZpZy9tNjhoYzExL202OGhjMTEuYywgY29uZmlnL202OGsvbTY4ay5jLCBjb25maWcvbTY4ay9tNjhrLmgsCgljb25maWcvbWNvcmUvbWNvcmUuYywgY29uZmlnL21pcHMvbWlwcy5jLCBjb25maWcvbW1peC9tbWl4LmMsCgljb25maWcvbnMzMmsvbnMzMmsuYywgY29uZmlnL3JzNjAwMC9ob3N0LWRhcndpbi5jLAoJY29uZmlnL3JzNjAwMC9yczYwMDAuYywgY29uZmlnL3MzOTAvczM5MC5jLCBjb25maWcvc2gvc2guYywKCWNvbmZpZy9zaC9zeW1iaWFuLmMsIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jLAoJY29uZmlnL3Y4NTAvdjg1MC5jOiBBdm9pZCAiYCIgYXMgbGVmdCBxdW90ZSwgdXNpbmcgIiciIG9yICVxLCAlPAoJYW5kICU+IGFzIGFwcHJvcHJpYXRlLiAgVXNlICUnIGFzIGFwb3N0cm9waGUgaW4gZGlhZ25vc3RpY3Mgd2hlcmUKCWFwcGxpY2FibGUuICBVc2UgJTwgYW5kICU+IGluIHBsYWNlIG9mICcnIHF1b3RlcyB3aGVyZSBhcHBsaWNhYmxlLgoJVXNlICVxcyBpbiBwbGFjZSBvZiAlPCVzJT4uICBDb25zaXN0ZW50bHkgcXVvdGUgX19idWlsdGluIGZ1bmN0aW9uCgluYW1lcy4KCjIwMDQtMTEtMDkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGdkYmluaXQuaW4gKHBiYiwgcGJtKTogTmV3IG1hY3Jvcy4KCjIwMDQtMTEtMDggSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGNmZy5jIChyZWRpcmVjdF9lZGdlX3N1Y2Nfbm9kdXApOiBVc2UgZmluZF9lZGdlIHJhdGhlciB0aGFuCglpbXBsZW1lbnRpbmcgaXQgaW5saW5lLgoKCSogY2ZnYW5hbC5jIChmaW5kX2VkZ2UpOiBTZWFyY2ggcHJlZC0+c3VjY3Mgb3Igc3VjYy0+cHJlZHMsCgl3aGljaGV2ZXIgaXMgc2hvcnRlci4KCjIwMDQtMTEtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfanVtcCk6IFJlbW92ZSBkZWFkIGNvZGUuCgoyMDA0LTExLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1jZmcuYyAodGhyZWFkX2p1bXBzKTogU3BlZWQgdXAgYnkga2VlcGluZyBhIHBvaW50ZXIgdG8KCXRoZSBsYXN0IHVzZWQgZWxlbWVudCBpbiB0aGUgd29ya2xpc3QuCgoyMDA0LTExLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1pbmxpbmUuYyAocmVtYXBfc2F2ZV9leHByKTogTWFrZSBpdCBzdGF0aWMuCgkqIHRyZWUtaW5saW5lLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoyMDA0LTExLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jICh1cHBlcl9ib3VuZF9pbl90eXBlLAoJbG93ZXJfYm91bmRfaW5fdHlwZSk6IE1ha2UgdGhlbSBzdGF0aWMuCgkqIHRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZXMuCgoyMDA0LTExLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1zc2EtbGl2ZS5jICh0cGFfaW5pdCwgcG9wX2Jlc3RfY29hbGVzY2UpOiBNYWtlIHRoZW0KCXN0YXRpYy4KCSogdHJlZS1zc2EtbGl2ZS5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlcy4KCjIwMDQtMTEtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWlmLWNvbnYuYyAodHJlZV9pZl9jb252ZXJzaW9uKTogTWFrZSBpdCBzdGF0aWMuCgkqIHRyZWUtZmxvdy5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKMjAwNC0xMS0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGJ1aWxkX3NzYV9vcGVyYW5kcyk6IE1ha2UgaXQgc3RhdGljLgoJKiB0cmVlLWZsb3cuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZS4KCjIwMDQtMTEtMDggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzE4Mjk5CgkqIHRyZWUtaW5saW5lLmMgKGNvcHlfYm9keV9yKTogQ2hhbmdlICJ0ID0gdCIgdG8gZW1wdHkKCXN0YXRlbWVudCBpbnN0ZWFkIG9mICJ0Ii4KCjIwMDQtMTEtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBtb2R1bG8tc2NoZWQuYyAoY3JlYXRlX3BhcnRpYWxfc2NoZWR1bGUsCglmcmVlX3BhcnRpYWxfc2NoZWR1bGUsIHJlc2V0X3BhcnRpYWxfc2NoZWR1bGUsCglwc19hZGRfbm9kZV9jaGVja19jb25mbGljdHMsIHJvdGF0ZV9wYXJ0aWFsX3NjaGVkdWxlKTogTWFrZQoJdGhlbSBzdGF0aWMuCgoyMDA0LTExLTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwbWVkLmMgKGV4dHJhY3RfZm9yY2VfYWxpZ25fbWVtX2JpdF9maWVsZCk6IENvcnJlY3QgaGFuZGxpbmcgYXQKCXRoZSBlbmQgb2YgYSBwYWdlLgoKMjAwNC0xMS0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHNjaGVkLWRlcHMuYyAoYWRkX2luc25fbWVtX2RlcGVuZGVuY2UpOiBNYWtlIGl0IHN0YXRpYy4KCSogc2NoZWQtaW50Lmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGVzLgoKMjAwNC0xMS0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZsb3cuYyAoYWxsb2NhdGVfYmJfbGlmZV9kYXRhKTogTWFrZSBpdCBzdGF0aWMuCgkqIGJhc2ljLWJsb2NrLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoyMDA0LTExLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2FsbHMuYyAoc3BsaXRfY29tcGxleF92YWx1ZXMsIHNwbGl0X2NvbXBsZXhfdHlwZXMpOiBNYWtlCgl0aGVtIHN0YXRpYy4KCSogZXhwci5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlcy4KCjIwMDQtMTEtMDggIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFybV9oYW5kbGVfbm90c2hhcmVkX2F0dHJpYnV0ZSk6IFdyYXAgZGVjbGFyYXRpb24gYW5kIHVzZQoJd2l0aCAjaWYgVEFSR0VUX0RMTElNUE9SVF9ERUNMX0FUVFJJQlVURVMuCgoyMDA0LTExLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1pZi1jb252LmMgKHRyZWVfaWZfY29udmVydF9jb25kX2V4cHIpOiBSZW1vdmUgdHdvICJpZiIKCXN0YXRlbWVudHMgdGhhdCBhbHdheXMgdHJpZ2dlci4KCjIwMDQtMTEtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jLCB0cmVlLWlmLWNvbnYuYywgdHJlZS1pbnRvLXNzYS5jLAoJdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMsIHRyZWUtc3NhLWxvb3AtaW0uYywKCXRyZWUtc3NhLWxvb3AtaXZvcHRzLmMsIHRyZWUtc3NhLWxvb3AtbWFuaXAuYywgdHJlZS1zc2EuYywKCXRyZWUtdmVjdG9yaXplci5jOiBSZXBsYWNlIFRSRUVfQ0hBSU4gd2l0aCBQSElfQ0hBSU4gd2hlcmUKCWFwcHJvcHJpYXRlLgoKMjAwNC0xMS0wOCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBjZ3JhcGguaCAoY2dyYXBoX2NhbGxzX3ApOiBSZW1vdmUuCgkqIGNncmFwaC5jIChjZ3JhcGhfY2FsbHNfcCk6IExpa2V3aXNlLgoKCSogdmFycmF5LmggKHZhcnJheV9jb3B5KTogUmVtb3ZlLgoJKiB2YXJyYXkuYyAodmFycmF5X2NvcHkpOiBMaWtld2lzZS4KCjIwMDQtMTEtMDcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRhcmdldC8xODI2OQoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX2luZGlyZWN0X2RhdGFfcmVmZXJlbmNlKToKCUNhbGwgZ2VuX21hY2hvX2hpZ2ggYW5kIGdlbl9tYWNob19sb3cgaW5zdGVhZCBvZgoJY2hlY2tpbmcgdGhlIG1vZGUgYW5kIGNhbGxpbmcgZ2VuX21hY2hvX2hpZ2hfZGkgZGlyZWN0bHkuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X21vdmUpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IE1vdmUgbW9zdCBvZiBUQVJHRVRfTUFDSE8gZXhwYW5kL2luc25zCgl0byBkYXJ3aW4ubWQuCgkobW92ZGZfbG93LCBtb3ZzZl9sb3csIG1vdnNmX2xvd19zdCwgbW92c2lfbG93LCBtYWNob19jb3JyZWN0X3BpYywKCWxvYWRfbWFjaG9fcGljYmFzZSwgbWFjaG9fbG93LCBtYWNob19oaWdoKTogUmVtb3ZlZC4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcik6IENhbGwgZ2VuX21hY2hvX2hpZ2ggYW5kCglnZW5fbWFjaG9fbG93IGluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIG1vZGUgYW5kIGNhbGxpbmcKCWdlbl9tYWNob19oaWdoX2RpIGRpcmVjdGx5LgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5tZCAobG9hZF9tYWNob19waWNiYXNlX2RpKTogVXNlIHRoZSBNRCBjb25zdGFudC4KCShtb3ZkZl9sb3dfc2ksIG1vdnNmX2xvd19zaSwgbW92c2ZfbG93X3N0X3NpLCBtb3ZzaV9sb3dfc3QpOgoJTW92ZWQgZnJvbSByczYwMDAubWQuCgkobWFjaG9faGlnaCk6IE5ldyBleHBhbmRlci4KCShtYWNob19oaWdoX3NpKTogUmVuYW1lZCB2ZXJzaW9uIG9mIG1hY2hvX2hpZ2ggZnJvbSByczYwMDAubWQuCgkobWFjaG9fbG93KTogTmV3IGV4cGFuZGVyLgoJKG1hY2hvX2xvd19zaSk6IFJlbmFtZWQgdmVyc2lvbiBvZiBtYWNob19sb3cgZnJvbSByczYwMDAubWQuCgkobG9hZF9tYWNob19waWNiYXNlKTogTmV3IGV4cGFuZGVyLgoJKGxvYWRfbWFjaG9fcGljYmFzZV9zaSk6IFJlbmFtZWQgdmVyc2lvbiBvZiBsb2FkX21hY2hvX3BpY2Jhc2UKCWZyb20gcnM2MDAwLm1kLgoJKG1hY2hvX2NvcnJlY3RfcGljKTogTmV3IGV4cGFuZGVyLgoJKG1hY2hvX2NvcnJlY3RfcGljX3NpKTogUmVuYW1lZCB2ZXJzaW9uIG9mIG1hY2hvX2NvcnJlY3RfcGljCglmcm9tIHJzNjAwMC5tZC4KCjIwMDQtMTEtMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKGZpbmlzaF9zdHJ1Y3QpOiBVc2UgY29tcGxldGUgc2VudGVuY2VzIGZvciBkaWFnbm9zdGljCglmb3Igc3RydWN0dXJlcyBvciB1bmlvbnMgd2l0aCBubyBtZW1iZXJzIG9yIG5hbWVkIG1lbWJlcnMuCgoyMDA0LTExLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogUmVwbGFjZSB1bnJlYWNoYWJsZSBkaWFnbm9zdGljIGZvcgoJdGFraW5nIGFkZHJlc3Mgb2YgYml0LWZpZWxkIGJ5IGFzc2VydGlvbi4KCjIwMDQtMTEtMDYgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKGF0dHJpYnV0ZSAib3BfdHlwZSIpOiBEZWZhdWx0IHRvICJOTiIuCgkoYXR0cmlidXRlICJhdHlwZSIpOiBEZWZhdWx0IHRvICJhZ2VuIi4KCShhdHRyaWJ1dGUgImxlbmd0aCIpOiBEZWZhdWx0IHRvIDYuCgkoZGVmaW5lX2FzbV9hdHRpYnV0ZXMpOiBSZW1vdmUuCgkoIm1vdnRpIiwgIiptb3ZkaV82NCIsICIqbW92ZGlfMzEiLCAiKm1vdnNpX3phcmNoIiwgIiptb3ZzaV9lc2EiLAoJIiptb3ZoaSIsICIqbW92cWkiLCAiKm1vdmRmXzY0IiwgIiptb3ZkZl8zMSIsICJtb3ZzZiIsCgkiKmNsYyIsICIqbXZjIiwgIipuYyIsICIqb2MiLCAiKnhjIiwgIip4Y196ZXJvIik6CglEbyBub3Qgc2V0IHR5cGUgYXR0cmlidXRlIHRvICJjcyIgd2hlcmUgYWxyZWFkeSBkZWZhdWx0LgoJKCIqY21waW50X3NpIiwgIipjbXBpbnRfZGkiLCAiZml4X3RydW5jZGZzaTJfaWJtIiwgImZsb2F0c2lkZjJfaWJtIiwKCSIqbmVnZGkyXzMxIik6CglEbyBub3Qgc2V0IHR5cGUgYXR0cmlidXRlIHRvICJvdGhlciIgd2hlcmUgYWxyZWFkeSBkZWZhdWx0LgoJKCJtb3Z0aSIsICIqbW92ZGlfNjQiLCAiKm1vdmRpXzMxIiwgIiptb3ZkZl8zMSIsCgkiKnN0cmxlbmRpIiwgIipzdHJsZW5zaSIsCgkiKm1vdm1lbV9sb25nXzY0IiwgIiptb3ZtZW1fbG9uZ18zMSIsCgkiKmNscm1lbV9sb25nXzY0IiwgIipjbHJtZW1fbG9uZ18zMSIsCgkiKmNtcG1lbV9sb25nXzY0IiwgIipjbXBtZW1fbG9uZ18zMSIsCgkiKmNtcGludF9zaSIsICIqY21waW50X2RpIiwKCSJhZGR0aTMiLCAiKmFkZGRpM18zMXoiLCAiKmFkZGRpM18zMSIsCgkic3VidGkzIiwgIipzdWJkaTNfMzF6IiwgIipzdWJkaTNfMzEiLCAiKm5lZ2RpMl8zMSIsCgkiKnNjb25kZGkiLCAiKnNjb25kc2kiLCAiKnNjb25kZGlfbmVnIiwgIipzY29uZHNpX25lZyIsCgkiZml4X3RydW5jZGZzaTJfaWJtIiwgImZsb2F0c2lkZjJfaWJtIiwgImV4dGVuZHNmZGYyX2libSIsCgkiKnBvb2xfZW50cnkiLCAicG9vbF9hbGlnbiIsICJwb29sX3NlY3Rpb25fc3RhcnQiLAoJInBvb2xfc2VjdGlvbl9lbmQiLCAibWFpbl9wb29sIiwgInJlbG9hZF9iYXNlXzMxIiwgInBvb2wiKToKCURvIG5vdCBzZXQgb3BfdHlwZSBhdHRyaWJ1dGUgdG8gIk5OIiB3aGVyZSBhbHJlYWR5IGRlZmF1bHQuCgkoIipleHRyYWN0cWkiLCAiKmV4dHJhY3RoaSIsICIqemVyb19leHRlbmRoaXNpMl8zMSIsCgkiKnplcm9fZXh0ZW5kcWlzaTJfMzEiLCAiKnplcm9fZXh0ZW5kcWloaTJfMzEiLAoJImZpeF90cnVuY2Rmc2kyX2libSIsICJmbG9hdHNpZGYyX2libSIpOgoJRG8gbm90IHNldCBhdHlwZSBhdHRyaWJ1dGUgdG8gImFnZW4iIHdoZXJlIGFscmVhZHkgZGVmYXVsdC4KCSgiKm1vdm1lbV9zaG9ydCIsICIqY2xybWVtX3Nob3J0IiwgIipjbXBtZW1fc2hvcnQiKTogRG9uJ3Qgc2V0IG9wX3R5cGUuCgoyMDA0LTExLTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy90LWlyaXM2ICh0cC1iaXQuYyk6IEZpeCB0YXJnZXQgZmlsZW5hbWUuCgoyMDA0LTExLTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE2ODMwCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEb24ndCBkZWZpbmUgdGhlCglSMzAwMCBhbmQgUjQwMDAgbWFjcm9zIG9uIElSSVguCgoyMDA0LTExLTA2ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCVBSIHRhcmdldC8xNjI4NgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMuaDogUmVwbGFjZSBib29sIGJ5IF9fYm9vbCBhbmQgcGl4ZWwgYnkKCV9fcGl4ZWwuCgoyMDA0LTExLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1zc2EtY29weXJlbmFtZS5jIChyZW5hbWVfc3NhX2NvcGllcyk6IE1ha2UgaXQgc3RhdGljLgoKMjAwNC0xMS0wNiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvMjA2NC5tZCAoInpfaW50IiwgInpfYWdlbiIpOiBFbnN1cmUgdGhlIGNvbmRpdGlvbgoJbWF0Y2hlcyBubyBpbnNucyBhbHJlYWR5IG1hdGNoZWQgYnkgb3RoZXIgcmVzZXJ2YXRpb25zLgoJKiBjb25maWcvczM5MC8yMDg0Lm1kICgieF9pbnQiLCAieF9hZ2VuIik6IEVuc3VyZSB0aGUgY29uZGl0aW9uCgltYXRjaGVzIG5vIGluc25zIGFscmVhZHkgbWF0Y2hlZCBieSBvdGhlciByZXNlcnZhdGlvbnMuCgkoInhfc3MiKTogUmVtb3ZlLCByZXBsYWNlIGJ5IC4uLgoJKCJ4X2NzIik6IC4uLiB0aGlzIG5ldyByZXNlcnZhdGlvbi4gIENoZWNrIHR5cGUgaW5zdGVhZCBvZiBvcF90eXBlLgoJVXBkYXRlIGJ5cGFzc2VzIHRvIHVzZSB4X2NzIGluc3RlYWQgb2YgeF9zcy4KCSgieF9ubiIpOiBSZW1vdmUsIHJlcGxhY2UgYnkgLi4uCgkoInhfb3RoZXIiKTogLi4uIHRoaXMgbmV3IHJlc2VydmF0aW9uLiAgQ2hlY2sgdHlwZSBpbnN0ZWFkIG9mIG9wX3R5cGUuCglBZGQgeF9vdGhlciBhbmQgeF9icmFuY2ggdG8gYnlwYXNzZXMuCgkoInhfdnMiKTogTmV3IHJlc2VydmF0aW9uLgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChhdHRyaWJ1dGUgInR5cGUiKTogRGVmYXVsdCBhY2NvcmRpbmcgdG8gb3BfdHlwZS4KCSgiKmV4ZWN1dGUiKTogU2V0IHR5cGUgdG8gImNzIi4KCjIwMDQtMTEtMDYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKG5vbl9sdmFsdWUpOiBEb24ndCBjb25zdHJ1Y3QgTk9OX0xWQUxVRV9FWFBSCglpZiB3ZSBhcmUgaW4gR0lNUExFLgoKMjAwNC0xMS0wNiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTc5MzMKCSogcnRsYW5hbC5jIChkZWFkX29yX3NldF9yZWdub19wKTogQnJlYWsgb3V0IGNvbW1vbiBjb2RlIHRvLi4uCgkoY292ZXJzX3JlZ25vX3ApOiBOZXcgZnVuY3Rpb24uICBIYW5kbGUgU0VUcyBvZiBQQVJBTExFTCwKCWFuZCBkZWZlciB0aGUgcmVzdCB0by4uLgoJKGNvdmVyc19yZWdub19ub19wYXJhbGxlbF9wKTogTmV3IGZ1bmN0aW9uLgoKMjAwNC0xMS0wNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzEpOiBTa2lwCglmaWVsZHMgd2l0aCB6ZXJvIGxlbmd0aC4KCShmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzIpOiBMaWtld2lzZS4KCShmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzMpOiBVc2Ugc21hbGxlc3RfbW9kZV9mb3Jfc2l6ZQoJaW5zdGVhZCBvZiBtb2RlX2Zvcl9zaXplLgoJKGZ1bmN0aW9uX2FyZ191bmlvbl92YWx1ZSk6IFJldHVybiBuYWtlZCByZWdpc3RlciBmb3IgdW5pb25zCgl3aXRoIHplcm8gbGVuZ3RoLgoKMjAwNC0xMS0wNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzY2FuX3JlY29yZF90eXBlKTogSGFuZGxlIHZlY3RvciB0eXBlcy4KCShmdW5jdGlvbl9hcmdfc2xvdG5vKTogSGFuZGxlIHZlY3RvciB0eXBlcyBzcGVjaWFsbHkuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8xKTogU3BsaXQgZmllbGRzIHdpdGggdmVjdG9yIHR5cGUgYW5kCglCTEttb2RlIGludG8gdGhlaXIgc3VicGFydHMuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8yKTogTGlrZXdpc2UuICBCZSBwcmVwYXJlZCB0byBoYW5kbGUKCW1vcmUgdGhhbiAyIHJlZ2lzdGVycyBwZXIgZmllbGQuCgkoZnVuY3Rpb25fYXJnX3VuaW9uX3ZhbHVlKTogSW5jcmVtZW50IHJlZ25vIGluc2lkZSB0aGUgbG9vcC4KCShmdW5jdGlvbl9hcmdfdmVjdG9yX3ZhbHVlKTogTmV3IGZ1bmN0aW9uLgoJKGZ1bmN0aW9uX2FyZyk6IFVzZSBpdCB0byBzcGxpdCBmaWVsZHMgd2l0aCB2ZWN0b3IgdHlwZSBhbmQKCUJMS21vZGUgaW50byB0aGVpciBzdWJwYXJ0cyBhbmQgYnVpbGQgYSBQQVJBTExFTC4gIFRyZWF0CglvdGhlciB2ZWN0b3IgdHlwZXMgbGlrZSBmbG9hdHMuCgkoZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCShzcGFyY19wYXNzX2J5X3JlZmVyZW5jZSk6IEhhbmRsZSB2ZWN0b3IgdHlwZXMuCgkoc3BhcmNfcmV0dXJuX2luX21lbW9yeSk6IExpa2V3aXNlLgoKMjAwNC0xMS0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmMgKGZpbmRfdGFrZW5fZWRnZV9jb25kX2V4cHIpOiBSZW1vdmUgYW4gImlmIgoJc3RhdGVtZW50IHRoYXQgbmV2ZXIgdHJpZ2dlcnMuCgoyMDA0LTExLTA2ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC8yMDY0Lm1kICgiel9vMiIsICJ6X28zIik6IFJlbW92ZS4KCSogY29uZmlnL3MzOTAvMjA4NC5tZCAoInhfbzIiLCAieF9vMyIpOiBSZW1vdmUuCgkoInhfZmRpdmQiKTogVXNlIGFsc28gZm9yIGZzcXJ0ZCB0eXBlLgoJKCJ4X2ZkaXZzIik6IFVzZSBhbHNvIGZvciBmc3FydHMgdHlwZS4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoYXR0cmlidXRlICJ0eXBlIik6IFJlbW92ZSAibzIiIGFuZCAibzMiIHR5cGVzLgoJKCJmaXhfdHJ1bmNkZnNpMl9pZWVlIik6IFNldCB0eXBlIHRvICJmdG9pIi4KCSgiZml4X3RydW5jZGZzaTJfaWJtIik6IFNldCB0eXBlIHRvICJvdGhlciIuCgkoImZsb2F0ZGlkZjIiLCAiZmxvYXRkaXNmMiIpOiBEbyBub3QgY2xvYmJlciBDQy4KCSgiZmxvYXRzaWRmMiIsICJmbG9hdHNpZGYyX2llZWUiKTogTGlrZXdpc2UuCgkoImZsb2F0c2lzZjIiLCAiZmxvYXRzaXNmMl9pZWVlIik6IExpa2V3aXNlLgoJKCJ0cnVuY2Rmc2YyIiwgInRydW5jZGZzZjJfaWVlZSIpOiBPbmx5IGFsbG93ICJyZWdpc3Rlcl9vcGVyYW5kIi4KCSgidHJ1bmNkZnNmMl9pYm0iKTogT25seSBhbGxvdyAibm9uaW1tZWRpYXRlX29wZXJhbmQiLiAgVXNlIExFUgoJaW5zdGVhZCBvZiBMUkVSLgoJKCJleHRlbmRzZmRmMl9pYm0iKTogRG8gbm90IHNldCBhdHlwZS4gIFNldCB0eXBlIHRvICJmbG9hZHMiLgoJKCJzcXJ0ZGYyIik6IFNldCB0eXBlIHRvICJmc3FydGQiLgoJKCJzcXJ0c2YyIik6IFNldCB0eXBlIHRvICJmc3FydHMiLgoKMjAwNC0xMS0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtcGhpbm9kZXMuYyAocmVtb3ZlX2FsbF9waGlfbm9kZXNfZm9yKTogU3BlZWQgdXAgdXNpbmcgYQoJcG9pbnRlciB0byB0aGUgbGFzdCBQSEkgbm9kZSBpbiB0aGUgbmV3IFBISSBjaGFpbi4KCjIwMDQtMTEtMDYgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmMgKHByZXBhcmVfbW92ZV9vcGVyYW5kcyk6IEVtaXQgYSB1c2Ugb2YgcjEyCglmb3Igbm9uLVBJQyBUTFNfTU9ERUxfSU5JVElBTF9FWEVDIGNhc2UuCgoyMDA0LTExLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZXhwbWVkLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDQtMTEtMDYgIEFhcm9uIFcuIExhRnJhbWJvaXNlICA8YWFyb25hdmF5NjJAYWFyb253bC5jb20+CgoJUFIgdGFyZ2V0LzE4MTA2CgkqIGNvbmZpZy9pMzg2L2N5Z21pbmcuaAoJW0hBVkVfR0FTX1dFQUtdIChBU01fV0VBS0VOX0xBQkVMKTogTWFjcm8gZGVmaW5lZC4KCjIwMDQtMTEtMDYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvc2gvc2g0YS5tZDogRml4IGNvcHlyaWdodC4KCjIwMDQtMTEtMDYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5tZCwgY29uZmlnL3NoL3NoNGEubWQ6IFJlcGxhY2UgR05VIENDCgl3aXRoIEdDQy4KCjIwMDQtMTEtMDUgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChzY2MgcGF0dGVybnMpOiBSZXBsYWNlIHN1YmZjIHdpdGggc3ViZgoJd2hlbiBjYXJyeSBub3QgdXNlZC4gIFN1Z2dlc3RlZCBieSBUb3Jiam9ybiBHcmFubHVuZC4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X21vdmUpOiBEb24ndCBmb3JjZV9yZWcKCW9wZXJhbmRbMV0gdW5uZWNlc3NhcmlseS4gIFN1Z2dlc3RlZCBieSBFcmljIENocmlzdG9waGVyLgoJKHJzNjAwMF9hZGp1c3RfY29zdCk6IEluY3JlYXNlIGxhdGVuY3kgb2Ygc3RvcmUgdG8gd2lkZXIgbG9hZC4KCShyczYwMDBfcnR4X2Nvc3RzKTogbXVsbGkgb25seSBhbGxvd3MgMTYtYml0IGNvbnN0YW50cy4KCjIwMDQtMTEtMDUgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChtYWNob3BpY19vdXRwdXRfc3R1Yik6IE91dHB1dAoJbGR1IGluc3RlYWQgb2YgbHd6dSBmb3IgNjQtYml0IHN0dWJzLgoKMjAwNC0xMS0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9leHBhbmRfdW5hbGlnbmVkX2xvYWQpOiBTcGVjaWFsIGNhc2UKCXNpemUgMiB3aXRoIEJXWC4KCShhbHBoYV9leHBhbmRfdW5hbGlnbmVkX3N0b3JlKTogTGlrZXdpc2UuCgoyMDA0LTExLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwbWVkLmMgKGV4dHJhY3RfZm9yY2VfYWxpZ25fbWVtX2JpdF9maWVsZCk6IE5ldy4KCShleHRyYWN0X3NwbGl0X2JpdF9maWVsZCk6IENhbGwgaXQuCgoyMDA0LTExLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaWE2NC5tZCAoVU5TUEVDX1NIUlApOiBOZXcuCgkoZHNoaWZ0X2NvdW50X29wZXJhbmQpOiBOZXcuCgkoYXNocnRpMywgYXNocnRpM19pbnRlcm5hbCwgbHNocnRpMywgbHNocnRpM19pbnRlcm5hbCwgc2hycCk6IE5ldy4KCSogaWE2NC5jIChydHhfbmVlZHNfYmFycmllcik6IEhhbmRsZSBVTlNQRUNfU0hSUC4KCjIwMDQtMTEtMDUgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogYy10eXBlY2suYyAob3V0cHV0X2luaXRfZWxlbWVudCk6IFJldHVybiBlYXJseSBpZiB2YWx1ZSBpcwoJZXJyb3JfbWFya19ub2RlLgoKMjAwNC0xMS0wNSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogaW52b2tlLnRleGkgKC1mbm8tZ3Vlc3MtYnJhbmNoLXByb2JhYmlsaXR5KTogUmV3cml0ZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAocnR4X25lZWRzX2JhcnJpZXIsIGNhc2UgVU5TUEVDX0dSX1NQSUxMKTogQ2hhbmdlCgkxIHRvIFVOU1BFQ19HUl9TUElMTC4KCjIwMDQtMTEtMDUgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZml4ZWRfY29uZGl0aW9uX2NvZGVfcmVncyk6IE5ldyBmdW5jdGlvbi4KCShUQVJHRVRfRklYRURfQ09ORElUSU9OX0NPREVfUkVHUyk6IE1hY3JvIGRlZmluZWQuCgoyMDA0LTExLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYml0bWFwLmggKGVudW0gYml0bWFwX2JpdHMpOiBSZW1vdmUuCgkoYml0bWFwX29wZXJhdGlvbik6IFJlbW92ZS4KCShiaXRtYXBfYW5kLCBiaXRtYXBfYW5kX2ludG8sIGJpdG1hcF9hbmRfY29tcGwsCgliaXRtYXBfYW5kX2NvbXBsX2ludG8sIGJpdG1hcF9pb3IsIGJpdG1hcF9pb3JfaW50bywgYml0bWFwX3hvciwKCWJpdG1hcF94b3JfaW50byk6IFByb3RvdHlwZS4KCSogYml0bWFwLmMgKGJpdG1hcF9lbHRfaW5zZXJ0X2FmdGVyLCBiaXRtYXBfZWx0X2NsZWFyX2Zyb20pOiBOZXcuCgkoYml0bWFwX29wZXJhdGlvbik6IFJlbW92ZS4KCShiaXRtYXBfYW5kLCBiaXRtYXBfYW5kX2ludG8sIGJpdG1hcF9hbmRfY29tcGwsCgliaXRtYXBfYW5kX2NvbXBsX2ludG8sIGJpdG1hcF9pb3IsIGJpdG1hcF9pb3JfaW50bywgYml0bWFwX3hvciwKCWJpdG1hcF94b3JfaW50byk6IE5ldy4KCShiaXRtYXBfaW9yX2FuZF9jb21wbCwgYml0bWFwX2lvcl9hbmRfY29tcGxfaW50byk6IEFkanVzdC4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xODMwNwoJKiB0cmVlLXNzYS1hbGlhcy5jIChtZXJnZV9wb2ludGVkX3RvX2luZm8pOiBQcm90ZWN0ZWQgYWdhaW5zdCBERVNUCglhbmQgT1JJRyBiZWluZyB0aGUgc2FtZSBub2RlLgoKMjAwNC0xMS0wNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZGlzdGNsZWFuKTogRG9uJ3QgZGVsZXRlIG5vbmV4aXN0ZW50IGZpeGluYy8gZGlyZWN0b3J5LgoJKGluc3RhbGwtbWtoZWFkZXJzKTogSW5zdGFsbCB0aGUgdmVyc2lvbiBidWlsdCBmb3IgdGhlCglob3N0LCBub3QgZm9yIHRoZSBidWlsZCBtYWNoaW5lLgoJKiBjb25maWd1cmUuYWM6IEFsd2F5cyBydW4gZml4aW5jbHVkZXMuCgkoYWxsX291dHB1dHMpOiBSZW1vdmUgbWtoZWFkZXJzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGZpeGluYy5pbjogTW92ZSB0byBmaXhpbmNsdWRlcy8uCgkqIG1rZml4aW5jLnNoOiBMaWtld2lzZS4KCSogbWtoZWFkZXJzLmluOiBMaWtld2lzZS4KCSogUkVBRE1FLWZpeGluYzogTGlrZXdpc2UuCgoyMDA0LTExLTA1ICBSYW1hbmEgUmFkaGFrcmlzaG5hbiAgPHJhbWFuYS5yYWRoYWtyaXNobmFuQGNvZGl0by5jb20+CgoJUFIgdGFyZ2V0LzE4MjYzCgkqIGNvbmZpZy9hcmMvbGliMWZ1bmNzLmFzbSAoX19fdW11bHNpZGkzKTogQ2hhbmdlIHVzZSBvZiBjbXAgdG8gdGhlCgllcXVpdmFsZW50IG9uIHRoZSBBNC4KCjIwMDQtMTEtMDUgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2MtdHJlZS50ZXhpLCBkb2MvY2ZnLnRleGksIGRvYy9jb250cmliLnRleGksIGRvYy9jcHAudGV4aSwKCWRvYy9jcHBvcHRzLnRleGksIGRvYy9leHRlbmQudGV4aSwgZG9jL2ZyYWdtZW50cy50ZXhpLAoJZG9jL2Zyb250ZW5kcy50ZXhpLCBkb2MvZ2Nvdi50ZXhpLCBkb2MvaG9zdGNvbmZpZy50ZXhpLAoJZG9jL2ltcGxlbWVudC1jLnRleGksIGRvYy9pbnN0YWxsLnRleGksIGRvYy9pbnZva2UudGV4aSwKCWRvYy9saWJnY2MudGV4aSwgZG9jL21kLnRleGksIGRvYy9wYXNzZXMudGV4aSwKCWRvYy9wb3J0YWJpbGl0eS50ZXhpLCBkb2MvcnRsLnRleGksIGRvYy9zb3VyY2VidWlsZC50ZXhpLAoJZG9jL3N0YW5kYXJkcy50ZXhpLCBkb2MvdG0udGV4aSwgZG9jL3RyZWUtc3NhLnRleGksCglkb2MvdHJvdWJsZS50ZXhpOiBDb3JyZWN0IGVuZC1vZi1zZW50ZW5jZSBtYXJrdXAgYW5kIG1hcmt1cCBvZgoJImV0Yy4iLCAiZS5nLiIgYW5kICJpLmUuIi4gIFVzZSBAY29kZSBpbiB2YXJpb3VzIHBsYWNlcyB3aGVyZQoJYXBwcm9wcmlhdGUuCgoyMDA0LTExLTA1ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9jLXRyZWUudGV4aSwgZG9jL2NmZy50ZXhpLCBkb2MvZXh0ZW5kLnRleGksIGRvYy9ndHkudGV4aSwKCWRvYy9pbnN0YWxsLnRleGksIGRvYy9pbnZva2UudGV4aSwgZG9jL21kLnRleGksIGRvYy9wYXNzZXMudGV4aSwKCWRvYy9ydGwudGV4aSwgZG9jL3RtLnRleGksIGRvYy90cmVlLXNzYS50ZXhpOiBSZW1vdmUgdHJhaWxpbmcKCXdoaXRlc3BhY2UuCgoyMDA0LTExLTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2hhbmRsZV9ub3RzaGFyZWRfYXR0cmlidXRlKTogTmV3IGZ1bmN0aW9uLgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50ICJub3RzaGFyZWQiIGF0dHJpYnV0ZS4KCjIwMDQtMTEtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXBoaW5vZGVzLmMgKG1ha2VfcGhpX25vZGUpOiBNYWtlIGl0IHN0YXRpYy4KCSogdHJlZS5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZXMgZm9yIG1ha2VfcGhpX25vZGUuCgoyMDA0LTExLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc3RtdC5jIChleHBhbmRfYXNtLCBleHBhbmRfYXNtX29wZXJhbmRzKTogTWFrZSB0aGVtIHN0YXRpYy4KCSogdHJlZS5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZXMgZm9yIGV4cGFuZF9hc20gYW5kCglleHBhbmRfYXNtX29wZXJhbmRzLgoKMjAwNC0xMS0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHBhc3Nlcy5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogTWFrZSBpdCBzdGF0aWMuCgkqIHRvcGxldi5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgcmVzdF9vZl9jb21waWxhdGlvbi4KCjIwMDQtMTEtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBqdW1wLmMgKGNsZWFudXBfYmFycmllcnMpOiBVc2UgZGVsZXRlX2luc24gaW5zdGVhZCBvZgoJZGVsZXRlX2JhcnJpZXIuCgkoZGVsZXRlX2JhcnJpZXIpOiBSZW1vdmUuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKMjAwNC0xMS0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cHIuYyAobW9zdGx5X3plcm9fcCk6IE1ha2UgaXQgc3RhdGljLgoJKiB0cmVlLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBtb3N0bHlfemVyb3NfcC4KCjIwMDQtMTEtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjZmdydGwuYyAoZm9yY2Vfbm9uZmFsbHRocnVfYW5kX3JlZGlyZWN0KTogTWFrZSBpdCBzdGF0aWMuCgoyMDA0LTExLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fcmV0dXJuX2FkZHIsCglleHBhbmRfYnVpbHRpbl9sb25nam1wLCBleHBhbmRfYnVpbHRpbl90cmFwKTogTWFrZSB0aGVtIHN0YXRpYy4KCSogZXhwci5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZXMgZm9yIGV4cGFuZF9idWlsdGluX2xvbmdqbXAgYW5kCglleHBhbmRfYnVpbHRpbl90cmFwLgoJKiB0cmVlLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBleHBhbmRfYnVpbHRpbl9yZXR1cm5fYWRkci4KCjIwMDQtMTEtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jIChmaW5kX3Rha2VuX2VkZ2UpOiBSZWplY3QgVkFMIGJlZ2luIE5VTEwuCgkqIHRyZWUtc3NhLWNjcC5jICh2aXNpdF9jb25kX3N0bXQpOiBEb24ndCBjYWxsIGZpbmRfdGFrZW5fZWRnZQoJd2l0aCBWQUwgYmVpbmcgTlVMTC4KCjIwMDQtMTEtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjZmdob29rcy5jIChkZWxldGVfYmFzaWNfYmxvY2spOiBSZW1vdmUgY29kZSB0byB0cnVuY2F0ZQoJZWRnZSB2ZWN0b3JzLgoKMjAwNC0xMS0wNCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBmbG93LmMgKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBDaGFuZ2UgdGhlIHR5cGUgb2YgaSB0bwoJdW5zaWduZWQuCgoyMDA0LTExLTA0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTgxODQKCSogYy10eXBlY2suYyAoY29tcHR5cGVzKTogRG8gbm90IHRyZWF0IHBvaW50ZXJzIG9mIGRpZmZlcmVudAoJbW9kZXMgb3IgYWxpYXMtYWxsIGZsYWdzIGFzIGVxdWl2YWxlbnQuCgkqIHRyZWUtc3NhLmMgKHRyZWVfc3NhX3VzZWxlc3NfdHlwZV9jb252ZXJzaW9uXzEpOiBMaWtld2lzZS4KCjIwMDQtMTEtMDQgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2d0eS50ZXhpLCBkb2MvbWFrZWZpbGUudGV4aSwgZG9jL3NvdXJjZWJ1aWxkLnRleGk6IERvbid0CglyZWZlcmVuY2Ugc3BlY2lmaWMgQyBwYXJzZXIgZmlsZXMgaW4gZXhhbXBsZXMuCgoyMDA0LTExLTA0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE1MzQyCgkqIHJlZ3JlbmFtZS5jIChzY2FuX3J0eCk6IFRyZWF0IHRoZSBkZXN0aW5hdGlvbnMgb2YgU0VUcyBhbmQgQ0xPQkJFUnMKCWFzIE9QX0lOT1VUIGlmIHRoZSBpbnN0cnVjdGlvbiBpcyBwcmVkaWNhdGVkLgoKMjAwNC0xMS0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGJpdG1hcC5oOiBGaXggYSBjb21tZW50IHR5cG8uICBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIHRyZWUtdmVjdG9yaXplci5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTExLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc2Rib3V0LmMgKFNEQl9HRU5FUkFURV9GQUtFKTogUmVtb3ZlLgoJKGdlbl9mYWtlX2xhYmVsKTogRG9uJ3QgdXNlIFNEQl9HRU5FUkFURV9GQUtFLgoJKiBzeXN0ZW0uaDogUG9pc29uIFNEQl9HRU5FUkFURV9GQUtFLgoJKiBkb2MvdG0udGV4aSAoU0RCX0dFTkVSQVRFX0ZBS0UpOiBSZW1vdmUuCgoyMDA0LTExLTA0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmFkZHNpM19zaWduIik6IFVzZSBjYW5vbmljYWwgUlRMLgoKMjAwNC0xMS0wNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvdGhlci8xODI3NwoJKiBndGhyLXBvc2l4LmggKF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfaW5pdF9mdW5jdGlvbik6IFJldmVydAoJMjAwNC0xMC0yOSBwYXRjaAoKMjAwNC0xMS0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHByZWRpY3QuYyAocHJvcGFnYXRlX2ZyZXEpOiBNYWtlIGJpdG5vIHVuc2lnbmVkLiBNb3ZlCglucHJlZGVjZXNzb3JzIHVwZGF0ZSBvdXQgb2YgbG9vcC4KCgkqIGJpdG1hcC5oIChiaXRtYXBfaXRlcmF0b3IpOiBSZW1vdmUgd29yZF9iaXQgYW5kIGJpdAoJZmllbGRzLiBSZW5hbWUgb3RoZXJzLgoJKGJtcF9pdGVyX2NvbW1vbl9uZXh0XzEsIGJtcF9pdGVyX3NpbmdsZV9uZXh0XzEsCglibXBfaXRlcl9zaW5nbGVfaW5pdCwgYm1wX2l0ZXJfZW5kX3AsIGJtcF9pdGVyX3NpbmdsZV9uZXh0LAoJYm1wX2l0ZXJfYW5kX25vdF9uZXh0XzEsIGJtcF9pdGVyX2FuZF9ub3RfaW5pdCwKCWJtcF9pdGVyX2FuZF9ub3RfbmV4dCwgYm1wX2l0ZXJfYW5kX25leHRfMSwgYm1wX2l0ZXJfYW5kX2luaXQsCglibXBfaXRlcl9hbmRfbmV4dCk6IFJlbW92ZS4KCShibXBfaXRlcl9zZXRfaW5pdCwgYm1wX2l0ZXJfYW5kX2luaXQsIGJtcF9pdGVyX2FuZF9jb21wbF9pbml0LAoJYm1wX2l0ZXJfbmV4dCwgYm1wX2l0ZXJfc2V0LCBibXBfaXRlcl9hbmQsIGJtcF9pdGVyX2FuZF9jb21wbCk6CglOZXcuCgkoRVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQLCBFWEVDVVRFX0lGX0FORF9JTl9CSVRNQVAsCglFWEVDVVRFX0lGX0FORF9DT01QTF9JTl9CSVRNQVApOiBBZGp1c3QuCgoJKiBiaXRtYXAuaCAoYml0bWFwX2Ffb3JfYiwgYml0bWFwX2FfYW5kX2IpOiBSZW1vdmUuCgkqIGRmLmMgKGRhdGFmbG93X3NldF9hX29wX2IpOiBVc2UgYml0bWFwX2FuZCwgYml0bWFwX2lvciwKCWJpdG1hcF9hbmRfaW50bywgYml0bWFwX2lvcl9pbnRvIGFzIGFwcHJvcHJpYXRlLgoJKiBleGNlcHQuYyAocmVtb3ZlX2VoX2hhbmRsZXIpOglMaWtld2lzZS4KCSogZ2xvYmFsLmMgKG1vZGlmeV9iYl9yZWdfcGF2LCBtYWtlX2FjY3VyYXRlX2xpdmVfYW5hbHlzaXMpOiBMaWtld2lzZS4KCSogdHJlZS1kZmEuYyAobWFya19uZXdfdmFyc190b19yZW5hbWUpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAobWVyZ2VfcG9pbnRlZF90b19pbmZvKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxpdmUuaCAobGl2ZV9tZXJnZV9hbmRfY2xlYXIpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoZmluZF9iZXN0X2NhbmRpZGF0ZSwgdHJ5X2FkZF9jYW5kX2Zvcik6CglMaWtld2lzZS4KCgkqIGJpdG1hcC5jIChiaXRtYXBfcHJpbnQpOiBNYWtlIGJpdG5vIHVuc2lnbmVkLgoJKiBidC1sb2FkLmMgKGNsZWFyX2J0cl9mcm9tX2xpdmVfcmFuZ2UsCglidHJfZGVmX2xpdmVfcmFuZ2UpOiBMaWtld2lzZS4KCSogY2FsbGVyLXNhdmUuYyAoc2F2ZV9jYWxsX2Nsb2JiZXJlZF9yZWdzKTogTGlrZXdpc2UuCgkqIGNmZ2FuYWwuYyAoY29tcHV0ZV9kb21pbmFuY2VfZnJvbnRpZXJzXzEpOiBMaWtld2lzZS4KCSogY2ZnY2xlYW51cC5jICh0aHJlYWRfanVtcCk6IExpa2V3aXNlLgoJKiBjZmdydGwuYyAoc2FmZV9pbnNlcnRfaW5zbl9vbl9lZGdlKTogTGlrZXdpc2UuCgkqIGNvbmZsaWN0LmMgKGNvbmZsaWN0X2dyYXBoX2NvbXB1dGUpOiBMaWtld2lzZS4KCSogZGRnLmMgKGFkZF9kZXBzX2Zvcl91c2UpOiBMaWtld2lzZS4KCSogZGYuYyAoZGZfcmVmc191cGRhdGUpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKHJlbW92ZV9laF9oYW5kbGVyKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAodmVyaWZ5X2xvY2FsX2xpdmVfYXRfc3RhcnQsIHVwZGF0ZV9saWZlX2luZm8sCglpbml0aWFsaXplX3VuaW5pdGlhbGl6ZWRfc3VicmVncywgcHJvcGFnYXRlX29uZV9pbnNuLAoJZnJlZV9wcm9wYWdhdGVfYmxvY2tfaW5mbywgcHJvcGFnYXRlX2Jsb2NrLCBmaW5kX3VzZV9hc19hZGRyZXNzLAoJcmVnX3NldF90b19oYXJkX3JlZ19zZXQpOiBMaWtld2lzZS4KCSogZ2NzZS5jIChjbGVhcl9tb2RpZnlfbWVtX3RhYmxlcyk6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2NvbmZsaWN0cywgYnVpbGRfaW5zbl9jaGFpbik6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChkZWFkX29yX3ByZWRpY2FibGUpOiBMaWtld2lzZS4KCSogbG9jYWwtYWxsb2MuYyAodXBkYXRlX2VxdWl2X3JlZ3MpOiBMaWtld2lzZS4KCSogbG9vcC5jIChsb2FkX21lbXMpOiBMaWtld2lzZS4KCSogcmEtYnVpbGQuYyAobGl2ZXRocm91Z2hfY29uZmxpY3RzX2JiLCBjb25mbGljdHNfYmV0d2Vlbl93ZWJzKToKCUxpa2V3aXNlLgoJKiByYS1yZXdyaXRlLmMgKHJlbG9hZHNfdG9fbG9hZHMsIHJld3JpdGVfcHJvZ3JhbTIsIGFjdHVhbF9zcGlsbCk6CglMaWtld2lzZS4KCSogcmVsb2FkMS5jIChvcmRlcl9yZWdzX2Zvcl9yZWxvYWQsIGZpbmlzaF9zcGlsbHMpOiBMaWtld2lzZS4KCSogc2NoZWQtZGVwcy5jIChzY2hlZF9hbmFseXplX2luc24sIGZyZWVfZGVwcyk6IExpa2V3aXNlLgoJKiBzY2hlZC1yZ24uYyAocHJvcGFnYXRlX2RlcHMKCSogdHJlZS1jZmcuYyAodHJlZV9wdXJnZV9hbGxfZGVhZF9laF9lZGdlcyk6IExpa2V3aXNlLgoJKiB0cmVlLWRmYS5jIChkdW1wX2RmYV9zdGF0cwoJdHJlZS1pbnRvLXNzYS5jIChjb21wdXRlX2dsb2JhbF9saXZlaW4sIGluc2VydF9waGlfbm9kZXMsCglpbnNlcnRfcGhpX25vZGVzX2ZvciwgZGVidWdfZGVmX2Jsb2Nrc19yLCBpbnZhbGlkYXRlX25hbWVfdGFncyk6CglMaWtld2lzZS4KCSogdHJlZS1vdXRvZi1zc2EuYyAoY29hbGVzY2Vfc3NhX25hbWUsIGNvYWxlc2NlX3ZhcnMsCglmcmVlX3RlbXBfZXhwcl90YWJsZSwgZmluZF9yZXBsYWNlYWJsZV9leHBycyk6IExpa2V3aXNlLgoJKiB0cmVlLXNyYS5jIChzY2FuX2Z1bmN0aW9uLCBzY2FsYXJpemVfcGFybXMpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAoaW5pdF9hbGlhc19pbmZvLAoJY29tcHV0ZV9wb2ludHNfdG9fYW5kX2FkZHJfZXNjYXBlLAoJY29tcHV0ZV9mbG93X3NlbnNpdGl2ZV9hbGlhc2luZywgbWF5YmVfY3JlYXRlX2dsb2JhbF92YXIpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtZGNlLmMgKG1hcmtfY29udHJvbF9kZXBlbmRlbnRfZWRnZXNfbmVjZXNzYXJ5KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxpdmUuYyAobmV3X3RyZWVfbGl2ZV9pbmZvLCBsaXZlX3dvcmtsaXN0LAoJY2FsY3VsYXRlX2xpdmVfb25fZW50cnksIGNhbGN1bGF0ZV9saXZlX29uX2V4aXQsIGNvbXBhcmVfcGFpcnMsCglzb3J0X2NvYWxlc2NlX2xpc3QsIGJ1aWxkX3RyZWVfY29uZmxpY3RfZ3JhcGgsIGR1bXBfbGl2ZV9pbmZvCgl0cmVlLXNzYS1sb29wLW1hbmlwLmMgKGFkZF9leGl0X3BoaXNfdmFyKTogTGlrZXdpc2UuCgl0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfYXNtX2V4cHJfb3BlcmFuZHMsIGFkZF9jYWxsX2Nsb2JiZXJfb3BzLAoJYWRkX2NhbGxfcmVhZF9vcHMpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtcHJlLmMgKGJpdG1hcF9wcmludF92YWx1ZV9zZXQsIGluc2VydF9hdXgpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbGl2ZS5oIChudW1fdmFyX3BhcnRpdGlvbnMpOiBSZXR1cm4gdW5zaWduZWQuCgoyMDA0LTExLTAzICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTgwMDkKCSogdHJlZS12ZWN0b3JpemVyLmggKGVudW0gZHJfYWxpZ25tZW50X3N1cHBvcnQpOiBOZXcgdHlwZS4KCShNQVhfTlVNQkVSX09GX1VOQUxJR05FRF9EQVRBX1JFRlMpOiBSZW1vdmVkLgoJKExPT1BfVU5BTElHTkVEX0RSKTogcmVwbGFjZWQgd2l0aCBMT09QX1ZJTkZPX1VOQUxJR05FRF9EUiBhbmQgaG9sZHMgYQoJc2luZ2xlIGRhdGFfcmVmZXJlbmNlIChpbnN0ZWFkIG9mIGEgdmFycmF5IG9mIHJlZmVyZW5jZXMpLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAobmV3X2xvb3BfdmVjX2luZm8pOiBMaWtld2lzZS4KCSh2ZWN0X2dlbl9uaXRlcnNfZm9yX3Byb2xvZ19sb29wKTogTGlrZXdpc2UuCgkodmVjdF91cGRhdGVfaW5pdHNfb2ZfZHJzKTogTGlrZXdpc2UuCgoJKHZlY3RfdXBkYXRlX2luaXRzX29mX2Rycyk6IFNldHRpbmcgb2YgRFJfTUlTQUxJR05NRU5UIG1vdmVkIHRvCgl2ZWN0X2VuaGFuY2VfZGF0YV9yZWZzX2FsaWdubWVudC4KCSh2ZWN0X2RvX3BlZWxpbmdfZm9yX2FsaWdubWVudCk6IExpa2V3aXNlLgoJKHZlY3RfZW5oYW5jZV9kYXRhX3JlZnNfYWxpZ25tZW50KTogRGVjaWRlIGlmIGFuZCBieSBob3cgbXVjaCB0byBwZWVsOwoJdGhpcyBmdW5jdGlvbmFsaXR5IHVzZWQgdG8gYmUgaW4gdmVjdF9hbmFseXplX2RhdGFfcmVmc19hbGlnbm1lbnQuCglBbHNvIHVwZGF0ZSBEUl9NSVNBTElHTk1FTlQgZHVlIHRvIHBlZWxpbmc7IHRoaXMgZnVuY3Rpb25hbGl0eSB1c2VkIHRvCgliZSBpbiB2ZWN0X3VwZGF0ZV9pbml0c19vZl9kcnMgYW5kIHZlY3RfZG9fcGVlbGluZ19mb3JfYWxpZ25tZW50KS4KCSh2ZWN0X2FuYWx5emVfZGF0YV9yZWZzX2FsaWdubWVudCk6IERlY2lzaW9uIG9uIHdoZXRoZXIgYW5kIGJ5IGhvdyBtdWNoCgl0byBwZWVsIG1vdmVkIHRvIHZlY3RfZW5oYW5jZV9kYXRhX3JlZnNfYWxpZ25tZW50LiBDYWxsCgl2ZWN0X3N1cHBvcnRhYmxlX2RyX2FsaWdubWVudC4KCgkodmVjdF9jb21wdXRlX2RhdGFfcmVmX2FsaWdubWVudCk6IFNldCBTVE1UX1ZJTkZPX1ZFQ1RZUEUuCgkodmVjdF9jb21wdXRlX2RhdGFfcmVmc19hbGlnbm1lbnQpOiBSZXR1cm4gYm9vbC4gQ29uc2lkZXIgcmV0dXJuIHZhbHVlCglvZiB2ZWN0X2NvbXB1dGVfZGF0YV9yZWZfYWxpZ25tZW50IGFuZCByZXR1cm4gdHJ1ZS9mYWxzZSBhY2NvcmRpbmdseS4KCSh2ZWN0X2VuaGFuY2VfZGF0YV9yZWZzX2FsaWdubWVudCk6IENvbnNpZGVyIHJldHVybiB2YWx1ZSBvZgoJdmVjdF9jb21wdXRlX2RhdGFfcmVmc19hbGlnbm1lbnQgYW5kIHJldHVybiB0cnVlL2ZhbHNlIGFjY29yZGluZ2x5LgoKCSh2ZWN0X3N1cHBvcnRhYmxlX2RyX2FsaWdubWVudCk6IE5ldyBmdW5jdGlvbi4KCSh2ZWN0b3JpemFibGVfc3RvcmUpOiBDYWxsIHZlY3Rfc3VwcG9ydGFibGVfZHJfYWxpZ25tZW50LgoJKHZlY3Rvcml6YWJsZV9sb2FkKTogQ2FsbCB2ZWN0X3N1cHBvcnRhYmxlX2RyX2FsaWdubWVudC4gQWxpZ25tZW50CglzdXBwb3J0IGNoZWNrcyBtb3ZlZCBmcm9tIGhlcmUgdG8gdmVjdF9zdXBwb3J0YWJsZV9kcl9hbGlnbm1lbnQuCgoJKHZlY3RfdHJhbnNmb3JtX2xvb3ApOiBBdm9pZCA4MCBjb2x1bW5zIG92ZXJmbG93LgoKMjAwNC0xMS0wMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB0aW1ldmFyLmMgKHRpbWV2YXJfZW5hYmxlKTogQ2hhbmdlIGZyb20KCXN0YXRpYy4KCSh0aW1ldmFyX3B1c2gpOiBSZW5hbWUgdG8gLi4uCgkodGltZXZhcl9wdXNoXzEpOiB0aGlzIGFuZCByZW1vdmUgdGhlCgllbmFibGVkIGNoZWNrLgoJKHRpbWV2YXJfcG9wKTogUmVuYW1lIHRvIC4uLgoJKHRpbWV2YXJfcG9wXzEpOiB0aGlzIGFuZCByZW1vdmUgdGhlCgllbmFibGVkIGNoZWNrLgoJKiB0aW1ldmFyLmggKFBPUF9USU1FVkFSX0FORF9SRVRVUk4pOiBVc2UgZG8vd2hpbGUgbG9vcHMuCgkodGltZXZhcl9wb3ApOiBOZXcgbWFjcm8uCgkodGltZXZhcl9wdXNoKTogTmV3IG1hY3JvLgoJKHRpbWV2YXJfZW5hYmxlKTogRGVjbGFyZS4KCjIwMDQtMTEtMDMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL2Rhcndpbi5oIChSRUFMX0xJQkdDQ19TUEVDKTogRGVmaW5lIHRvIHVzZSBzaGFyZWQKCWxpYmdjYyBmb3Igc2hhcmVkIGxpYnJhcmllcy4KCjIwMDQtMTEtMDMgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfc3BsaXRfYWNjZXNzX3JlZyk6IEFkZCBwcm90b3R5cGUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9zcGxpdF9hY2Nlc3NfcmVnKTogTmV3IGZ1bmN0aW9uLgoJKHJlZ2NsYXNzX21hcCk6IEFkZCBhY2Nlc3MgcmVnaXN0ZXJzLgoJKGdldF90aHJlYWRfcG9pbnRlcik6IFVzZSBhY2Nlc3MgcmVnaXN0ZXIgaW5zdGVhZCBvZiBVTlNQRUNfVFAuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogU2V0IHRvIDM4LgoJKEFDQ0VTU19SRUdOT19QLCBBQ0NFU1NfUkVHX1ApOiBOZXcgbWFjcm9zLgoJKFRQX1JFR05VTSk6IE5ldyBkZWZpbmUuCgkoRklYRURfUkVHSVNURVJTLCBDQUxMX1VTRURfUkVHSVNURVJTLCBDQUxMX1JFQUxMWV9VU0VEX1JFR0lTVEVSUywKCVJFR19BTExPQ19PUkRFUik6IEFkZCBhY2Nlc3MgcmVnaXN0ZXJzLgoJKEhBUkRfUkVHTk9fTlJFR1MsIEhBUkRfUkVHTk9fTU9ERV9PSywgQ0xBU1NfTUFYX05SRUdTLAoJQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogU3VwcG9ydCBhY2Nlc3MgcmVnaXN0ZXJzLgoJKGVudW0gcmVnX2NsYXNzKTogQWRkIEFDQ0VTU19SRUdTLgoJKFJFR19DTEFTU19OQU1FUywgUkVHX0NMQVNTX0NPTlRFTlRTKTogTGlrZXdpc2UuCgkoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogQWRkICd0JyBjb25zdHJhaW50LgoJKFJFR0lTVEVSX05BTUVTKTogQWRkIGFjY2VzcyByZWdpc3RlcnMuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKFVOU1BFQ19UUCk6IFJlbW92ZS4KCSgiKm1vdmRpXzY0Iik6IEFkZCBhY2Nlc3MgcmVnaXN0ZXIgYWx0ZXJuYXRpdmVzLiAgUHJvdmlkZSBzcGxpdHRlcnMKCXRvIHNwbGl0IERJbW9kZSBhY2Nlc3MgcmVnaXN0ZXIgPC0+IEdQUiBtb3ZlcyBpbnRvIFNJbW9kZSBtb3Zlcy4KCSgiKm1vdnNpX3phcmNoIiwgIiptb3ZzaV9lc2EiKTogQWRkIGFjY2VzcyByZWdpc3RlciBhbHRlcm5hdGl2ZXMuCgkoIm1vdnN0cmljdHNpIik6IExpa2V3aXNlLgoJKCJnZXRfdHBfNjQiLCAiZ2V0X3RwXzMxIik6IFJlaW1wbGVtZW50IHVzaW5nIGFjY2VzcyByZWdpc3RlcnMuCgkoInNldF90cF82NCIsICJzZXRfdHBfMzEiKTogTGlrZXdpc2UuCgkoIipzZXRfdHAiKTogTmV3IGluc24uCgoyMDA0LTExLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1waGlub2Rlcy5jIChyZXNpemVfcGhpX25vZGUpOiBDb3B5IG9ubHkgYSBwb3J0aW9uIG9mCgl0aGUgUEhJIG5vZGUgY3VycmVudGx5IGluIHVzZS4KCjIwMDQtMTEtMDMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzE4MjMxCgkqIHRyZWUuYyAoc3RhdGljcCkgPGNhc2UgRlVOQ1RJT05fREVDTD46IE5lc3RlZCBmdW5jdGlvbnMgYXJlIHN0YXRpYwoJYWxzby4KCjIwMDQtMTEtMDMgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xODI3MAoJKiB0cmVlLW91dG9mLXNzYS5jIChhbmFseXplX2VkZ2VzX2Zvcl9iYik6IElmIGEgYmxvY2sgaGFzIGluY29taW5nCglhYm5vcm1hbCBlZGdlcywgY29tbWl0IGFsbCBwZW5kaW5nIHN0bXRzIG9uIGluY29taW5nIGVkZ2VzLgoKMjAwNC0xMS0wMyAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoZ2V0X2FkZHJlc3NfY29zdCk6IE9mZnNldCB6ZXJvIGRvZXMgbm90CgljYXVzZSBleHRyYSBjb3N0cy4gIEdlbmVyYXRlIGNhbm9uaWNhbCBSVEwuCgoyMDA0LTExLTAyICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGxhbWJkYS1jb2RlLmMgKGxhbWJkYV9jb21wdXRlX2F1eGlsbGFyeV9zcGFjZSk6IFVwZGF0ZSBjb21tZW50cy4KCShsYW1iZGFfY29tcHV0ZV90YXJnZXRfc3BhY2UpLiBEaXR0by4KCSogbGFtYmRhLmggKGxhbWJkYV90cmFuc19tYXRyaXgpOiBEaXR0by4KCShsYW1iZGFfbGluZWFyX2V4cHJlc3Npb24pOiBEaXR0by4KCShsYW1iZGFfYm9keV92ZWN0b3IpOiBEaXR0by4KCShsYW1iZGFfbG9vcG5lc3QpOiBEaXR0by4KCSogdHJlZS1sb29wLWxpbmVhci5jIChnYXRoZXJfaW50ZXJjaGFuZ2Vfc3RhdHMpOiBDb21iaW5lIHRlc3RzLAoJdXBkYXRlIGNvbW1lbnRzLCBhbmQgcmVtb3ZlIHBvaW50bGVzcyBhZGRpdGlvbiBvZiAwLgoJKGxpbmVhcl90cmFuc2Zvcm1fbG9vcHMpOiBVcGRhdGUgY29tbWVudHMuCgoyMDA0LTExLTAzICBTZWJhc3RpYW4gUG9wICA8cG9wQGNyaS5lbnNtcC5mcj4KCgkqIHRyZWUuYyAodHJlZV9mb2xkX2djZCk6IFVzZSBGTE9PUl9NT0RfRVhQUiBpbnN0ZWFkIG9mCglDRUlMX01PRF9FWFBSLgoKMjAwNC0xMS0wMyBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogcHJlZGljdC5jIChzdHJ1Y3QgYmxvY2tfaW5mb19kZWYpOiBLaWxsICJ0b3Zpc2l0IiBmaWVsZC4KCShwcm9wYWdhdGVfZnJlcSk6IEFjY2VwdCBuZXcgInRvdmlzaXQiIHBhcmFtZXRlci4gIENoYW5nZQoJcmVhZC93cml0ZSBhY2Nlc3MgbWV0aG9kcyBmb3IgInRvdmlzaXQiIHRvIGNoZWNrIHRoZSAidG92aXNpdCIKCWJpdG1hcCBpbnN0ZWFkIG9mIGEgYml0IGluIGJsb2NrX2luZm9fZGVmLgoJKGVzdGltYXRlX2xvb3BzX2F0X2xldmVsKTogQWxsb2NhdGUgInRvdmlzaXQiIGJpdG1hcC4gIFBhc3MKCWl0IHRvIHByb3BhZ2F0ZV9mcmVxLgoKCSogc3RtdC5jIChleHBhbmRfY2FzZSk6IFNwZWVkIHVwIGNvZGUgdG8gZGV0ZWN0IGR1cGxpY2F0ZSBjYXNlCglsYWJlbCB0YXJnZXRzIGFuZCBjb3VudCB1bmlxdWUgY2FzZSBsYWJlbCB0YXJnZXRzLgoKMjAwNC0xMS0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNwcGRlZmF1bHQuYywgY3BwZGVmYXVsdC5oLCB0aW1ldmFyLmg6IFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA0LTExLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYml0bWFwLmgsIGRieG91dC5jLCB0cmVlLW11ZGZsYXAuYzogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCjIwMDQtMTEtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jIChmaW5kX3Rha2VuX2VkZ2UpOiBBYm9ydCBpZiB3ZSBhcmUgZ2l2ZW4gYQoJc3RhdGVtZW50IHRoYXQgaXMgbmVpdGhlciBDT05EX0VYUFIgbm9yIFNXSVRDSF9FWFBSLgoKMjAwNC0xMS0wMiAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IFJlYXNzb2NpYXRlIGFsc28gKHggLSBtdWx0KSArIG11bHQgYW5kCgkobXVsdCAtIHgpICsgbXVsdC4gIENhc3Qgb3BlcmFuZHMgb2YgZXhwcmVzc2lvbiBhZnRlciBhcHBseWluZwoJZGlzdHJpYnV0aXZlIGxhdyB0byB0aGUgY29ycmVjdCB0eXBlcy4gIEFwcGx5IGRpc3RyaWJ1dGl2ZSBsYXcKCXRvIGEgKiBjIC0gYiAqIGMgZm9yIGFsbCBub24tZmxvYXQgdHlwZXMuCgoyMDA0LTExLTAyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogRG9uJ3QgY2xlYXIgU1RNUF9GSVhJTkMgb3IgU1RNUF9GSVhQUk9UTyBqdXN0CgliZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcnVuIHRoZW0gbm93OyBpbnN0ZWFkLCBzZXQgdGhlbSB0bwoJc3RtcC1pbnN0YWxsLWZpeHByb3RvIG9yIHN0bXAtaW5zdGFsbC1maXhpbmMuCgkqIE1ha2VmaWxlLmluIChzdG1wLWluc3RhbGwtZml4cHJvdG8pOiBOZXcuCgkoc3RtcC1pbnN0YWxsLWZpeGluYyk6IE5ldy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0xMS0wMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZsb3cuYyAoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IFVzZSBiaXRtYXBfZW1wdHlfcCBvbiByZXN1bHQKCW9mIGJpdG1hcF94b3IuCgoyMDA0LTExLTAyICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19UWVBFU19DT01QQVRJQkxFX1ApOiBSZW1vdmUuCgkoY190eXBlc19jb21wYXRpYmxlX3ApOiBNb3ZlIGZ1bmN0aW9uIGRlZmluaXRpb24uLi4KCSogYy1vYmpjLWNvbW1vbi5jIChjX3R5cGVzX2NvbXBhdGlibGVfcCk6IC4uLmhlcmUuCgkqIGMtb2JqYy1jb21tb24uaCAoTEFOR19IT09LU19UWVBFU19DT01QQVRJQkxFX1ApOiBNb3ZlZCBoZXJlIGZyb20KCWMtbGFuZy5jLgoKMjAwNC0xMS0wMiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY2ZnbG9vcC5oIChzdHJ1Y3QgbG9vcCk6IFVwZGF0ZSBjb21tZW50LgoJKiBjc2UuYyAoY3NlX21haW4pOiBSZW1vdmUgb2Jzb2xldGUgY29tbWVudC4KCgkqIGV4cHIuaCAoZ2VuX2NvbmRfdHJhcCk6IE1vdmUgcHJvdG90eXBlIHVuZGVyIGZ1bmN0aW9ucyBwcm92aWRlZAoJYnkgb3B0YWJzLmMuCgkoY2Fub25pY2FsaXplX2NvbmRpdGlvbiwgZ2V0X2NvbmRpdGlvbik6IE1vdmUgdG8uLi4KCSogcnRsLmggKGNhbm9uaWNhbGl6ZV9jb25kaXRpb24sIGdldF9jb25kaXRpb24pOiAuLi5oZXJlLgoJKGJyYW5jaF90YXJnZXRfbG9hZF9vcHRpbWl6ZSk6IEFkZCBjb21tZW50IHRoYXQgdGhpcyBmdW5jdGlvbiBpcwoJaW4gYnQtbG9hZC5jLgoJKiBsb29wLmMgKGNhbm9uaWNhbGl6ZV9jb25kaXRpb24sIGdldF9jb25kaXRpb24pOiBNb3ZlIHRvLi4uCgkqIHJ0bGFuYWwuYyAoY2Fub25pY2FsaXplX2NvbmRpdGlvbiwgZ2V0X2NvbmRpdGlvbik6IC4uLmhlcmUuCgkqIHNjaGVkLWRlcHMuYyAoZ2V0X2NvbmRpdGlvbik6IFJlbmFtZSB0byBzY2hlZF9nZXRfY29uZGl0aW9uLgoJKGFkZF9kZXBlbmRlbmNlKTogVXBkYXRlIHRoaXMgY2FsbGVyLgoKMjAwNC0xMS0wMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHQvMTY4MDgKCSogdHJlZS1zc2EuYyAocmVwbGFjZV9pbW1lZGlhdGVfdXNlcyk6IElmIHdlIGNhbGwgZm9sZF9zdG10LCBtYWtlIHN1cmUKCXRoYXQgdGhlIHZvcHMgZ2V0IG1hcmtlZCBmb3IgcmVuYW1pbmcuCgoyMDA0LTExLTAyICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIm1vdmNjIik6IFNldCB0eXBlIGF0dHJpYnV0ZS4KCjIwMDQtMTEtMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXBoaW5vZGVzLmMgKGFkZF9waGlfYXJnKTogQWRkIGFuIGFzc2VydGlvbiB0aGF0IHRoZQoJZWRnZSBhbHJlYWR5IGV4aXN0cy4KCjIwMDQtMTEtMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXBoaW5vZGVzLmMgKHJlbW92ZV9waGlfYXJnX251bSk6IERvIG5vdCB6ZXJvIHRoZQoJZWxlbWVudCB0aGF0J3MgYmVpbmcgcmVtb3ZlZC4KCjIwMDQtMTEtMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAoY29weV9waGlzX3RvX2Jsb2NrKTogSW5zdGFsbCBQSEkKCWFyZ3VtZW50cyB1c2luZyBQRU5ESU5HX1NUTVQuCgkodGhyZWFkX2Jsb2NrKTogQ2FsbCBjb3B5X3BoaXNfdG9fYmxvY2sgYWZ0ZXIgcmVkaXJlY3RpbmcgYW4KCWVkZ2UuCgoyMDA0LTExLTAyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYml0bWFwLmggKGJpdG1hcF9hbmQsIGJpdG1hcF9hbmRfaW50bywgYml0bWFwX2FuZF9jb21wbCwKCWJpdG1hcF9hbmRfY29tcGxfaW50bywgYml0bWFwX2lvciwgYml0bWFwX2lvdF9pbnRvLAoJYml0bWFwX2lvcl9jb21wbCwgYml0bWFwX3hvciwgYml0bWFwX3hvcl9pbnRvKTogUHJvZHVjZSB2b2lkLgoJKGJpdG1hcF9pb3JfYW5kX2NvbXBsX2ludG8pOiBQcm9kdWNlIGJvb2wuCgkoYml0bWFwX3VuaW9uX29mX2RpZmYpOiBSZW5hbWUgdG8gLi4uCgkoYml0bWFwX2lvcl9hbmRfY29tcGwpOiAuLi4gaGVyZS4gUHJvZHVjZSBib29sLgoJKiBiaXRtYXAuYyAoYml0bWFwX2lvcl9hbmRfY29tcGxfaW50byk6IFJldHVybiBib29sLiBVc2UKCWJpdG1hcF9vcGVyYXRpb24gZGlyZWN0bHkuCgkoYml0bWFwX3VuaW9uX29mX2RpZmYpOiBSZW5hbWUgdG8gLi4uCgkoYml0bWFwX2lvcl9hbmRfY29tcGwpOiAuLi4gaGVyZS4gUmV0dXJuIGJvb2wsIHVzZQoJYml0bWFwX29wZXJhdGlvbiBkaXJlY3RseS4KCSogZGYuYyAoZGZfcmRfdHJhbnNmZXJfZnVuY3Rpb24pOiBVc2UgYml0bWFwX2lvcl9hbmRfY29tcGwuCgkoZGZfcnVfdHJhbnNmZXJfZnVuY3Rpb24sIGRmX2xyX3RyYW5zZmVyX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGdsb2JhbC5jIChtb2RpZnlfYmJfcmVnX3Bhdik6IExpa2V3aXNlLgoKCSogYml0bWFwLmggKGJpdG1hcF9lcXVhbF9wKTogUmV0dXJuIGJvb2wuCgkoYml0bWFwX2ludGVyc2VjdF9wLCBiaXRtYXBfaW50ZXJzZWN0X2NvbXBsX3ApOiBEZWNsYXJlLgoJKiBiaXRtYXAuYyAoYml0bWFwX2VxdWFsX3ApOiBSZXR1cm4gYm9vbC4gQ29tcGFyZSBkaXJlY3RseS4KCShiaXRtYXBfaW50ZXJzZWN0X3AsIGJpdG1hcF9pbnRlcnNlY3RfY29tcGxfcCk6IE5ldy4KCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IFVzZSBiaXRtYXBfaW50ZXJzZWN0X3AgYW5kCgliaXRtYXBfaW50ZXJzZWN0X2NvbXBsX3AuCgkqIGlmY3Z0IChkZWFkX29yX3ByZWRpY2FibGUpOiBMaWtld2lzZS4KCjIwMDQtMTEtMDIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xNzEwNAoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9tb3ZlKTogRG9uJ3Qgd3JhcCBzbWFsbAoJbG9hZHMgaW4gemVyb19leHRlbmQuCgoyMDA0LTExLTAyICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGRlYnVnLzE4MjQyCgkqIHRvcGxldi5jIChkZWJ1Z190eXBlX25hbWVzKTogUmVtb3ZlICJkd2FyZi0xIi4KCjIwMDQtMTEtMDIgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogdGltZXZhci5oICh0aW1ldmFyX2dldCk6IFJlbW92ZS4KCSogdGltZXZhci5jICh0aW1ldmFyX2dldCk6IFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24uCgoyMDA0LTExLTAyICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbmNsdWRlL3RleGluZm8udGV4OiBVcGRhdGUgZnJvbSBUZXhpbmZvIENWUy4KCjIwMDQtMTEtMDIgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY3BwZGVmYXVsdC5oIChjcHBfU1lTUk9PVCk6IFJlbW92ZS4KCSogY3BwZGVmYXVsdC5jIChjcHBfU1lTUk9PVCk6IExpa2V3aXNlLgoKMjAwNC0xMS0wMSAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE2NDQ3CgkqIHRyZWUtY2ZnLmMgKGJzaV9jb21taXRfb25lX2VkZ2VfaW5zZXJ0KTogUmVuYW1lIGZyb20KCWJzaV9jb21taXRfZWRnZV9pbnNlcnRzXzEsIGFuZCBtYWtlIGZ1bnRpb24gZXh0ZXJuYWwuICBSZXR1cm4gbmV3IGJsb2NrLgoJKGJzaV9jb21taXRfZWRnZV9pbnNlcnRzKTogVXNlIHJlbmFtZWQgYnNpX2NvbW1pdF9vbmVfZWRnZV9pbnNlcnQuCgkqIHRyZWUtb3B0aW1pemUuYyAocGFzc19jbGVhbnVwX2NmZ19wb3N0X29wdGltaXppbmcpOiBFbmFibGUgbGlzdGluZy4KCSogdHJlZS1mbG93LmggKGJzaV9jb21taXRfb25lX2VkZ2VfaW5zZXJ0KTogRXh0ZXJuIGRlY2wuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKHJld3JpdGVfdHJlZXMpOiBEb24ndCBjb21taXQgZWRnZXMgaGVyZS4KCShzYW1lX3N0bXRfbGlzdF9wKTogTmV3LiAgUmV0dXJuIFRSVUUgaWYgZWRnZSBpcyB0byBiZSBmb3J3YXJkZWQuCgkoaWRlbnRpY2FsX2NvcGllc19wKTogTmV3LiAgUmV0dXJuIHRydWUgaXMgdHdvIGNvcGllcyBhcmUgdGhlIHNhbWUuCgkoaWRlbnRpY2FsX3N0bXRfbGlzdHNfcCk6IE5ldy4gIFJldHVybiB0cnVlIGlmIHN0bXQgbGlzdHMgYXJlIHRoZSBzYW1lLgoJKGFuYWx5emVfZWRnZXNfZm9yX2JiKTogTmV3LiAgRGV0ZXJtaW5lIGhvdyBiZXN0IHRvIGluc2VydCBlZGdlIHN0bXRzCglmb3IgYSBiYXNpYyBibG9jay4KCShwZXJmb3JtX2VkZ2VfaW5zZXJ0cyk6IE5ldy4gIERldGVybWluZSB3aGF0IHRvIGRvIHdpdGggYWxsIHN0bXRzIHRoYXQKCWhhdmUgYmVlbiBpbnNlcnRlZCBvbiBlZGdlcy4KCShyZW1vdmVfc3NhX2Zvcm0pOiBBbmFseXplIGFuZCBjb21taXQgZWRnZXMgZnJvbSBoZXJlLgoKMjAwNC0xMS0wMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYm9vdHN0cmFwLzE4MjMyCgkqIGJpdG1hcC5oIChibXBfaXRlcl9lbmRfcCk6IFRha2UgYSBjb25zdCBwb2ludGVyIGluc3RlYWQgb2YgYSBzdHJ1Y3QuCgkoRVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQKTogVXBkYXRlIGNhbGwgdG8gYm1wX2l0ZXJfZW5kX3AuCgkoRVhFQ1VURV9JRl9BTkRfQ09NUExfSU5fQklUTUFQKTogTGlrZXdpc2UuCgkoRVhFQ1VURV9JRl9BTkRfSU5fQklUTUFQKTogTGlrZXdpc2UuCgoyMDA0LTExLTAxICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjLzE4MjM5CgkqIGMtZGVjbC5jIChnZXRfcGFybV9pbmZvKTogQWxsb3cgRlVOQ1RJT05fREVDTHMgdG8gYXBwZWFyIGFtb25nc3QKCXBhcmFtZXRlciBkZWNsYXJhdGlvbnMuCgoyMDA0LTExLTAxICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChyZWdjbGFzc19tYXApOiBQdXQgcmVnIDMzIChjYykgdG8gQ0NfUkVHUyBncm91cC4KCShzMzkwX3NlY29uZGFyeV9pbnB1dF9yZWxvYWRfY2xhc3MpCgkoczM5MF9zZWNvbmRhcnlfb3V0cHV0X3JlbG9hZF9jbGFzcyk6IFVzZSBHRU5FUkFMX1JFR1MgdG8gcmVsb2FkIGEgY2MKCXJlZ2lzdGVyLgoJKHMzOTBfZXhwYW5kX2NtcG1lbSk6IEVuYWJsZSBjbXBtZW0gaW1wbGVtZW50YXRpb24uCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAocmVnX2NsYXNzLCBSRUdfQ0xBU1NfTkFNRVMsIFJFR19DTEFTU19DT05URU5UUyk6CglBZGRlZCB0aHJlZSBuZXcgY2xhc3NlczogQ0NfUkVHUywgQUREUl9DQ19SRUdTLCBHRU5FUkFMX0NDX1JFR1MuCgkoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogTmV3IGNvbnN0cmFpbnQgJ2MnIGFkZGVkLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgibW92Y2MiKTogTmV3IGluc24gcGF0dGVybi4KCSogZG9jL21kLnRleGk6IERvY3VtZW50ICdjJyBjb25zdHJhaW50IGZvciBzMzkwLgoKMjAwNC0xMS0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTgwNjQKCSogZG9jL2V4dGVuZC50ZXhpIChEZXByZWNhdGVkIEZlYXR1cmVzKTogRGVwcmVjYXRlIEcrKyBjb3ZhcmlhbnQKCWV4dGVuc2lvbi4KCjIwMDQtMTAtMTYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8xNzY3MgoJRml4IFBSIHRyZWUtb3B0aW1pemF0aW9uLzE4MTY4CgoJKiBsYW1iZGEtY29kZS5jIChsYW1iZGFfbGF0dGljZV9jb21wdXRlX2Jhc2UpOiBGaXggcmV2ZXJzZWQKCWFzc2VydCB0ZXN0LgoJKGdjY190cmVlX3RvX2xpbmVhcl9leHByZXNzaW9uKTogQWRkIGV4dHJhIHRvIGV4aXN0aW5nIGNvbnN0YW50LgoJKGRlcHRoX29mX25lc3QpOiBGYWN0b3Igb3V0IGZ1bmN0aW9uIHVzZWQgaW4gdmFyaW91cyBwbGFjZXMuCgkoZ2NjX2xvb3BfdG9fbGFtYmRhX2xvb3ApOiBDbGVhbiB1cCBjb2RlIGEgbGl0dGxlIGJpdC4gTm8KCWZ1bmN0aW9uYWwgY2hhbmdlcy4KCShmaW5kX2luZHVjdGlvbl92YXJfZnJvbV9leGl0X2NvbmQpOiBTdG9wIGd1ZXNzaW5nLCBhbmQganVzdAoJZ2V0IHRoZSByaWdodCBhbnN3ZXIgOikuCgkoZ2NjX2xvb3BuZXN0X3RvX2xhbWJkYV9sb29wbmVzdCk6IFJlbW92ZSB1c2VsZXNzIHByZS1hbGxvY2F0aW9uLgoJUHJpbnQgb3V0IG1lc3NhZ2UgYWJvdXQgcmVzdWx0IG9mIGF0dGVtcHQgdG8gY3JlYXRlIHBlcmZlY3QgbmVzdC4KCShsYnZfdG9fZ2NjX2V4cHJlc3Npb24pOiBBZGQgdHlwZSBhcmd1bWVudCwgdXNlIGl0IHRvIGRvIG1hdGgKCWFuZCBpbmR1Y3Rpb24gdmFyaWFibGUgY3JlYXRpb24uCgkobGxlX3RvX2djY19leHByZXNzaW9uKTogRGl0dG8uCgkobGFtYmRhX2xvb3BuZXN0X3RvX2djY19sb29wbmVzdCk6IENyZWF0ZSBuZXcgaXYgd2l0aCBzYW1lIHR5cGUgYXMKCW9sZGl2LiBQYXNzIHR5cGUgYXJndW1lbnQgdG8gbGxlX3RvX2djY19leHByZXNzaW9uIGFuZAoJbGJ2X3RvX2djY19leHByZXNzaW9uLgoJUmVzZXQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgYWZ0ZXIgdHJhbnNmb3JtYXRpb24uCgkocGVyZmVjdF9uZXN0aWZ5KTogUmVtb3ZlIHVzZWxlc3MgcHJlLWFsbG9jYXRpb24sIGFuZCBjbGVhbnVwCglhIHNtYWxsIGFtb3VudC4KCgkqIHRyZWUtZGF0YS1yZWYuYyAoYnVpbGRfY2xhc3NpY19kaXN0X3ZlY3Rvcik6IFJldHVybiBmYWxzZSBmb3IKCWRlcGVuZGVuY2VzIGNvbXBsZXRlbHkgb3V0c2lkZSBvZiB0aGUgbG9vcCBuZXN0IHdlIGFza2VkIGFib3V0LgoJKGJ1aWxkX2NsYXNzaWNfZGlyX3ZlY3Rvcik6IERpdHRvLgoJKGNvbXB1dGVfZGF0YV9kZXBlbmRlbmNlc19mb3JfbG9vcCk6IE9ubHkgYWRkIGRlcGVuZGVuY2UgcmVsYXRpb25zCglpbnNpZGUgdGhlIGxvb3Agd2UgYXNrZWQgYWJvdXQuCgoJKiB0cmVlLWxvb3AtbGluZWFyLmMgKGxpbmVhcl90cmFuc2Zvcm1fbG9vcHMpOiBVc2UgRERSX1NJWkVfVkVDVC4KCUNvbXB1dGUgaW1tZWRpYXRlIHVzZXMuCgoJKiB0cmVlLW9wdGltaXplLmM6IE1vdmUgbGluZWFyX3RyYW5zZm9ybV9sb29wcyB0byBiZWZvcmUgaXZjYW5vbi4KCjIwMDQtMTEtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jICh0aHJlYWRfanVtcHMpOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTExLTAxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1jZmcuYyAodGhyZWFkX2p1bXBzKTogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNC0xMC0zMSAgTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgoKCSogY29uZmlnL2FybS9pZWVlNzU0LXNmLlMgKGZsb2F0ZGlzZik6IEZpeCByZWdyZXNzaW9uIHdpdGgKCXZhbHVlcyBzbWFsbGVyIHRoYW4gMl4zMi4KCjIwMDQtMTAtMzEgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGNmZ2xvb3AuaCAoc3RydWN0IGxvb3ApOiBSZW1vdmUgdW51c2VkICJub2RlcyIgZmllbGQuCgkqIHRpbWV2YXIuZGVmIChUVl9UUkVFX0xPT1BfQk9VTkRTKTogTmV3LgoJKiB0cmVlLWRhdGEtcmVmLmMgKGZpbmRfZGF0YV9yZWZlcmVuY2VzX2luX2xvb3ApOiBVc2UgZ2V0X2xvb3BfYm9keQoJaW5zdGVhZCBvZiBjYWxsaW5nIGZsb3dfYmJfaW5zaWRlX2xvb3BfcCBmb3IgZXZlcnkgYmFzaWMgYmxvY2sKCWluIHRoZSBmdW5jdGlvbi4KCSogdHJlZS1zc2EtbG9vcC5jIChwYXNzX3JlY29yZF9ib3VuZHMpOiBVc2UgVFZfVFJFRV9MT09QX0JPVU5EUy4KCjIwMDQtMTAtMzEgIEdyYWhhbSBTdG90dCA8Z3JhaGFtLnN0b3R0QGJ0aW50ZXJuZXQuY29tPgoKCSogY29uZmlnL3BhL3BhLm1kOiAocHJlZmV0Y2hfNjQsIHByZWZldGNoXzMyKTogRml4IHR5cG8uICBVc2UKCUlOVF81X0JJVFMgaW5zdGVhZCBvZiBWQUxfNV9CSVRTX1AuCgoyMDA0LTEwLTMxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzE0NTIxCgkqIHRyZWUtaW5saW5lLmMgKGlubGluZV9mb3JiaWRkZW5fcF8xKTogVXNlICVxRiBpbnN0ZWFkIG9mICclRicKCWZvciBjb25zaXN0ZW50IHF1b3RpbmcgaW4gZGlhZ25vc3RpYyBtZXNzYWdlcy4KCShleHBhbmRfY2FsbF9pbmxpbmUpOiBMaWtld2lzZS4KCSogdHJlZS1vcHRpbWl6ZS5jICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCSogdHJlZS1zc2EuYyAod2Fybl91bmluaXRpYWxpemVkX3Zhcik6IExpa2V3aXNlLgoJKHdhcm5fdW5pbml0aWFsaXplZF9waGkpOiBMaWtld2lzZS4KCjIwMDQtMTAtMzEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MpOiBVc2UgYSBzdHJpY3RlcgoJbW9kZSBjaGVjay4KCjIwMDQtMTAtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWNvbW1vbi5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTEwLTMxICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzE3NTI2CgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9tZW1fcmhzKTogQWxzbyByZXF1aXJlIGEgdmFsIGZvcgoJYWdncmVnYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBCTEttb2RlLgoKMjAwNC0xMC0zMCAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogYy1jb21tb24uaCAob2JqY19sb29rdXBfaXZhcik6IEFkZCBzZWNvbmQgcGFyYW1ldGVyIHRvCglwcm90b3R5cGUuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2V4dGVybmFsX3JlZik6IEFmdGVyIGxvb2tpbmcgdXAgc3ltYm9sLAoJcGFzcyBpdCB0byBvYmpjX2xvb2t1cF9pdmFyKCkgdG8gZGVjaWRlIHdoZXRoZXIgaXQgb3IgdGhlCglpdmFyIHNob3VsZCBiZSB1c2VkLCByYXRoZXIgdGhhbiBkZWNpZGluZyB0aGUgaXNzdWUgbG9jYWxseS4KCSogc3R1Yi1vYmpjLmMgKG9iamNfbG9va3VwX2l2YXIpOiBBZGQgYW4gT1RIRVIgcGFyYW1ldGVyLAoJd2hpY2ggaXMgc2ltcGx5IHJldHVybmVkIGluIHRoZSBub24tT2JqQyBjYXNlLgoKMjAwNC0xMC0zMCAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHNkYm91dC5jIChzZGJvdXRfc3ltYm9sKTogRG8gbm90IG91dHB1dCB0eXBlIC5kZWYgc3RhdGVtZW50cwoJZm9yIGJ1aWx0aW4gdHlwZXMuCgoyMDA0LTEwLTMwICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGMtY29tbW9uLmMgKGNhdGVuYXRlX3N0cmluZ3MpOiBOZXcuCgkoY19wYXJzZV9lcnJvcik6IFVzZSBpdC4gIERvbid0IG92ZXItZXNjYXBlLgoKMjAwNC0xMC0zMCAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvc2guYyAoY2FsY19saXZlX3JlZ3MpOiBEZWNsYXJlIHJlZyBhcyB1bnNpZ25lZCBhbmQKCW1vZGlmeSB0aGUgZm9yIGxvb3AgZXhwcmVzc2lvbnMgZm9yIGl0LiAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNhc3RzLgoJKHNoX2V4cGFuZF9wcm9sb2d1ZSk6IERlY2xhcmUgcmVnIGFzIHVuc2lnbmVkLgoJKHNoX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogSW5pdGluYWxpemUgbGFiX292ZXIuCgkoc2hfaGFuZGxlX3NwX3N3aXRjaF9hdHRyaWJ1dGUpOiBBZGQgY29uc3QgcXVhbGlmaWVyIGFwcHJvcHJpYXRlbHkuCgoyMDA0LTEwLTMwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoRGFyd2luIE9wdGlvbnMpOiBJbXByb3ZlIGRlc2NyaXB0aW9uIG9mCglob3cgdGhlIHN1YnR5cGUgaXMgY2hvc2VuLgoKMjAwNC0xMC0zMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xODA5NgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9hbGxvY2F0ZV9zdGFjayk6IENoZWNrIHRoYXQKCXRoZSBzdGFjayBhZGp1c3RtZW50LCAic2l6ZSIsIGlzIHZhbGlkIGZvciBQbW9kZS4gIElmIHRoZSBzdGFjawoJZnJhbWUgaXMgdG9vIGxhcmdlLCBnZW5lcmF0ZSBhIHRyYXAgaW5zbiBhbmQgaXNzdWUgYSB3YXJuaW5nLgoKMjAwNC0xMC0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtc3NhLWRvbS5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDQtMTAtMzAgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmMgKHByZXBhcmVfbW92ZV9vcGVyYW5kcyk6IFVzZSBvcGVyYW5kc1swXQoJZm9yIHRoZSBvdXRwdXQgcnRsIGlmIG5vX25ld19wc2V1ZG9zIGlzIHNldC4gIFJlbW92ZSByZWR1bmRhbnQKCWxpbmUuCgoyMDA0LTEwLTMwICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjLzE2NjY2CgkqIGMtZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IERvbid0IGNoZWNrIGZvciBERUNMX0JVSUxUX0lOIHdoZW4KCWRldGVybWluaW5nIHdoZXRoZXIgdG8gY29weSBwYXJhbWV0ZXIgdHlwZXMgZnJvbSBhIHByZXZpb3VzCglwcm90b3R5cGUgZGVjbGFyYXRpb24uCgoyMDA0LTEwLTI5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE3NTgxCgkqIGNzZWxpYi5jIChjc2VsaWJfcHJvY2Vzc19pbnNuKTogVGhlIGxhc3QgaW5zdHJ1Y3Rpb24gb2YgYSBsaWJjYWxsCglibG9jaywgd2l0aCB0aGUgUkVHX1JFVFZBTCBub3RlLCBzaG91bGQgYmUgY29uc2lkZXJlZCBpbiB0aGUgbGliY2FsbC4KCSogZ2NzZS5jIChkb19sb2NhbF9jcHJvcCk6IEFsbG93IGNvbnN0YW50cyB0byBiZSBwcm9wYWdhdGVkIG91dHNpZGUKCW9mIGxpYmNhbGwgYmxvY2tzLgoJKGFkanVzdF9saWJjYWxsX25vdGVzKTogVXNlIHNpbXBsaWZ5X3JlcGxhY2VfcnR4IGluc3RlYWQgb2YKCXJlcGxhY2VfcnR4IHRvIGF2b2lkIGNyZWF0aW5nIGludmFsaWQgUlRMIGluIFJFR19SRVRWQUwgbm90ZXMuCgoyMDA0LTEwLTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1waGlub2Rlcy5jIChjcmVhdGVfcGhpX25vZGUpOiBEb24ndCB6ZXJvIFBISV9SRVdSSVRURU4uCgoyMDA0LTEwLTI5IEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1kb20uYyAoc3RydWN0IGVkZ2VfaW5mbyk6IE5ldyBzdHJ1Y3R1cmUgaG9sZGluZwoJZWRnZSBlcXVpdmFsZW5jZXMgYW5kIGVkZ2UgcmVkaXJlY3Rpb24gaW5mb3JtYXRpb24uCgkoZ2V0X2VxX2V4cHJfdmFsdWUsIHJlY29yZF9kb21pbmF0aW5nX2NvbmRpdGlvbnMpOiBLaWxsLgoJKHByb3BhZ2F0ZV90b19vdXRnb2luZ19lZGdlcyk6IFJlbmFtZWQgZnJvbSBjcHJvcF9pbnRvX3BoaXMuCglDYWxsIHJlY29yZF9lZGdlX2luZm8uCgkoYWxsb2NhdGVfZWRnZV9pbmZvLCBmcmVlX2VkZ2VfaW5mbyk6IE5ldy4KCSh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBVc2UgcHJvcGFnYXRlX3RvX291dGdvaW5nX2VkZ2VzCglyYXRoZXIgdGhhbiBjcHJvcF9pbnRvX3BoaXMuICBGcmVlIGFsbCBlZGdlIGluZm9zIGJlZm9yZSB0aHJlYWRpbmcKCWp1bXBzLgoJKHRocmVhZF9hY3Jvc3NfZWRnZSk6IEFsbG9jYXRlIG5ldyBlZGdlIGluZm8gc3RydWN0dXJlcyBhcyBuZWVkZWQKCWFuZCBzdG9yZSB0aGUgcmVkaXJlY3Rpb24gdGFyZ2V0IGludG8gdGhlIGVkZ2UgaW5mbyBzdHJ1Y3R1cmUKCWluc3RlYWQgb2YgdGhlIGVkZ2UncyBBVVggZmllbGQuCgkoZG9tX29wdF9pbml0aWFsaXplX2Jsb2NrKTogTWFyayB1bnVzZWQgYXJndW1lbnQgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKHJlY29yZF9lcXVpdmFsZW5jZV9mcm9tX2luY29taW5nX2VkZ2UpOiBMb3NlIHVubmVjZXNzYXJ5IGFyZ3VtZW50LgoJUmV2YW1wIGNvZGUgd2hpY2ggZmluZHMgYW5kIHJlY29yZHMgZXF1aXZhbGVuY2VzIGFzc29jaWF0ZWQgd2l0aAoJZWRnZXMgdG8gdXNlIHNhdmVkIGRhdGEgaW4gdGhlIGVkZ2VfaW5mbyBzdHJ1Y3R1cmUuCgkocmVjb3JkX2VxdWl2YWxlbmNzX2Zyb21fcGhpcyk6IFNpbWlsYXJseS4KCShkb21fb3B0X2ZpbmFsaXplX2Jsb2NrKTogUmV2YW1wIGNvZGUgd2hpY2ggZmluZHMgYW5kIHJlY29yZHMKCWVxdWl2YWxlbmNlcyBhc3NvY2lhdGVkIHdpdGggZWRnZXMgdG8gdXNlIHNhdmVkIGRhdGEgaW4gdGhlCgllZGdlX2luZm8gc3RydWN0dXJlLgoJKGJ1aWxkX2FuZF9yZWNvcmRfbmV3X2NvbmQpOiBOZXcgZnVuY3Rpb24uCgkocmVjb3JkX2NvbmRpdGlvbnMpOiBVc2UgYnVpbGRfYW5kX3JlY29yZF9uZXdfY29uZCB0byByZWNvcmQKCWRvbWluYXRpbmcgY29uZGl0aW9ucy4KCShyZWNvcmRfZWRnZV9pbmZvKTogTmV3IGZ1bmN0aW9uLgoJKHJlY29yZF9yYW5nZSk6IFRpZ2h0ZW4gdGVzdCBmb3IgY29uZGl0aW9ucyB3aGljaCBjcmVhdGUKCXVzZWZ1bCByYW5nZSByZWNvcmRzLgoKMjAwNC0xMC0yOSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoQVNNX1NQRUMpOiBTaW1wbGlmeS4KCShTVUJUQVJHRVRfRVhUUkFfU1BFQ1MpOiBBZGQgZGFyd2luX3N1YmFyY2ggc3BlYy4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoREFSV0lOX1NVQkFSQ0hfU1BFQyk6IE5ldy4KCShTVUJUQVJHRVRfRVhUUkFfU1BFQ1MpOiBBZGQgZGFyd2luX3N1YmFyY2ggc3BlYy4KCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX0NPTU1BTkRfU1BFQyk6IERvbid0IHBhc3MgLWFyY2ggaGVyZS4KCShMSU5LX1NQRUMpOiBEbyBwYXNzIC1hcmNoIGhlcmUuICBIYW5kbGUgLWZvcmNlX2NwdXN1YnR5cGVfQUxMCglpbiBhbGwgY2FzZXMuICBQYXNzIHRoZSByaWdodCAtYXJjaCBvciAtYXJjaF9vbmx5IGJhc2VkIG9uIC1tY3B1LgoJKEFTTV9TUEVDKTogSGFuZGxlIC1mb3JjZV9jcHVzdWJ0eXBlX0FMTC4KCSogZG9jL2ludm9rZS50ZXhpIChEYXJ3aW4gT3B0aW9ucyk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3IKCURhcndpbiBsaW5rZXIgKGFuZCBsaWJ0b29sKSBzd2l0Y2hlcy4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLWZhbGxiYWNrLmM6IEluY2x1ZGUgPG1hY2gvdGhyZWFkX3N0YXR1cy5oPi4KCjIwMDQtMTAtMjkgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi10cmFtcC5hc206IE1ha2UgbW9yZSA2NC1iaXQtZnJpZW5kbHkuCgoyMDA0LTEwLTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1waGlub2Rlcy5jIChhbGxvY2F0ZV9waGlfbm9kZSk6IE5ldy4KCShtYWtlX3BoaV9ub2RlLCByZXNpemVfcGhpX25vZGUpOiBVc2UgaXQuCgoyMDA0LTEwLTI5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKFRBUkdFVF9QT1dFUik6IERlZmluZSBhcyAwLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChUQVJHRVRfUE9XRVIpOiBEZWZpbmUgYXMgMC4KCjIwMDQtMTAtMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXBoaW5vZGVzLmMgKG1ha2VfcGhpX25vZGUsIHJlc2l6ZV9waGlfbm9kZSk6IERvbid0IHplcm8KCXRoZSB3aG9sZSBQSEkgbm9kZS4KCSogdHJlZS5oICh0cmVlX3BoaV9ub2RlKTogVGVsbCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgdG8gY2hhc2UKCW51bV9hcmdzIGFyZ3VtZW50cy4KCjIwMDQtMTAtMjkgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IExvd2VyIHRoZSBjcm9zc2p1bXAgdGhyZXNob2xkIGZvciAtT3MuCgoyMDA0LTEwLTI5ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfc3NhX25hbWUpOiBSZW1vdmUgZmllbGQgJ2VxdWl2Jy4KCjIwMDQtMTAtMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiaXRtYXAuaCAoYml0bWFwX2VtcHR5X3ApOiBOZXcuCgkoYml0bWFwX2FuZCwgYml0bWFwX2FuZF9pbnRvLCBiaXRtYXBfYW5kX2NvbXBsLAoJYml0bWFwX2FuZF9jb21wbF9pbnRvLCBiaXRtYXBfaW9yLCBiaXRtYXBfaW9yX2ludG8sCgliaXRtYXBfaW9yX2NvbXBsLCBiaXRtYXBfeG9yLCBiaXRtYXBfeG9yX2ludG8pOiBOZXcgYml0bWFwCglvcGVyYXRpb24gbWFjcm9zLgoJKGJpdG1hcF9pb3JfYW5kX2NvbXBsKTogUmVuYW1lIHRvIC4uLgoJKGJpdG1hcF9pb3JfYW5kX2NvbXBsX2ludG8pOiAuLi4gaGVyZS4KCSogYml0bWFwLmMgKGJpdG1hcF9lcXVhbF9wKTogVXNlIGJpdG1hcF94b3IuCgkoYml0bWFwX2lvcl9hbmRfY29tcGwpOiBSZW5hbWUgdG8gLi4uCgkoYml0bWFwX2lvcl9hbmRfY29tcGxfaW50byk6IC4uLiBoZXJlLiBBZGp1c3QuIFJldHVybiBjaGFuZ2VkCglmbGFnLgoJKGJpdG1hcF91bmlvbl9vZl9kaWZmKTogVXNlIHJlbmFtZWQgYml0bWFwIGZ1bmN0aW9ucy4KCSogYmFzaWMtYmxvY2suaCAoQU5EX1JFR19TRVQsIEFORF9DT01QTF9SRUdfU0VULCBJT1JfUkVHX1NFVCwKCVhPUl9SRUdfU0VULCBJT1JfQU5EX0NPTVBMX1JFR19TRVQpOiBMaWtld2lzZS4KCSogY2ZncnRsLmMgKHNhZmVfaW5zZXJ0X2luc25fb25fZWRnZSk6IExpa2V3aXNlLgoJKiBkZi5jIChkZl9iYl9yZF9sb2NhbF9jb21wdXRlKQoJKiBmbG93LmMgKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlLAoJaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChmaW5kX2lmX2Nhc2VfMSwgZmluZF9pZl9jYXNlXzIsCglkZWFkX29yX3ByZWRpY2FibGUpOiBMaWtld2lzZS4KCSogcmEtYnVpbGQuYyAodW5pb25fd2ViX3BhcnRfcm9vdHMsIGxpdmV0aHJvdWdoX2NvbmZsaWN0c19iYiwKCXJlc2V0X2NvbmZsaWN0cywgY29uZmxpY3RzX2JldHdlZW5fd2Vicyk6IExpa2V3aXNlLgoJKiByYS1yZXdyaXRlLmMgKHJlbG9hZHNfdG9fbG9hZHMsIHJld3JpdGVfcHJvZ3JhbTIsCglkZXRlY3Rfd2ViX3BhcnRzX3RvX3JlYnVpbGQpOiBMaWtld2lzZS4KCSogc2NoZWQtZWJiLmMgKGNvbXB1dGVfanVtcF9yZWdfZGVwZW5kZW5jaWVzKTogTGlrZXdpc2UuCgkqIHRyZWUtaW50LXNzYS5jIChpbnNlcnRfcGhpX25vZGVzX2ZvciwgcmV3cml0ZV9pbnRvX3NzYSk6IExpa2V3aXNlLgoJKiB0cmVlLXNyYS5jIChkZWNpZGVfaW5zdGFudGlhdGlvbnMpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAoY3JlYXRlX25hbWVfdGFncywKCW1lcmdlX3BvaW50ZWRfdG9faW5mbyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kb20uYyAodHJlZV9zc2FfZG9taW5hdG9yX29wdGltaXplKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtaW0uYyAobW92ZV9jb21wdXRhdGlvbnMpOiBMaWtld2lzZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2NhbGxfZXhwcl9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1wcmUuYyAoZmluaV9wcmUpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EuYyAodmVyaWZ5X2Zsb3dfc2Vuc2l0aXZlX2FsaWFzX2luZm8pOiBMaWtld2lzZS4KCSogdHJlZS1zc2FuYW1lcy5jIChhbnlfbWFya2VkX2Zvcl9yZXdyaXRlX3ApOiBMaWtld2lzZS4KCSogdHJlZS12ZWN0b3JpemVyLmMgKHZlY3Rvcml6ZV9sb29wcyk6IExpa2V3aXNlLgoKMjAwNC0xMC0yOSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgljb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogV2hlbgoJYWRkaW5nIHRoZSBQSUMgcmVnaXN0ZXIgdG8gdGhlIGZpeGVkX3JlZ3MgYXJyYXksIGFsc28gYWRkIGl0Cgl0byB0aGUgY2FsbF91c2VkX3JlZ3MgYXJyYXkuCgoyMDA0LTEwLTI5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZ3Roci1wb3NpeC5oIChfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2luaXRfZnVuY3Rpb24pOiBHdWFyZAoJd2l0aCAjaWZkZWYgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUvI2VuZGlmIHBhaXJzLgoKMjAwNC0xMC0yOCAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLWludG8tc3NhLmMgKHJld3JpdGVfdmlydHVhbF9waGlfYXJndW1lbnRzKTogTmV3IGZ1bmN0aW9uLgoJKHJld3JpdGVfYmxvY2tzKTogTW9kaWZ5IGFyZ3VtZW50LCBhbmQgdXNlIGl0IHRvIGRlY2lkZSB3aGljaAoJZnVuY3Rpb24gdG8gY2FsbC4KCShyZXdyaXRlX2RlZl9kZWZfY2hhaW5zKTogQ2FsbCByZXdyaXRlX2Jsb2NrcyB3aXRoIHRydWUgaGVyZS4KCShyZXdyaXRlX2ludG9fc3NhKTogYW5kIGNhbGwgaXQgd2l0aCBmYWxzZSBoZXJlLgoKMjAwNC0xMC0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtcGhpbm9kZXMuYyAoYWRkX3BoaV9hcmcpOiBUdXJuIGFuICJpZiIgdGhhdCBhbHdheXMKCXRyaWdnZXJzIGludG8gZ2NjX2Fzc2VydC4KCjIwMDQtMTAtMjggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE2NzI4CgkqIHRyZWUtZmxvdy5oIChnZXRfcHRyX2luZm8pOiBEZWNsYXJlLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChnZXRfcHRyX2luZm8pOiBNYWtlIGV4dGVybi4KCSogdHJlZS1zc2EtY29weS5jIChtZXJnZV9hbGlhc19pbmZvKTogTWVyZ2UgZmxvdy1zZW5zaXRpdmUKCWFsaWFzIGluZm9ybWF0aW9uLgoKMjAwNC0xMC0yOCAgU3RhbiBTaGVicyAgPHNoZWJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKFNVQlRBUkdFVF9FWFRSQV9TUEVDUyk6IEhhbmRsZSAtbTY0LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZGFyd2luX2ZpbGVfc3RhcnQpOiBBZGQgcHBjNjQKCWNhc2UuCgoyMDA0LTEwLTI4ICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUByZWRoYXQuY29tPgoKCSogdHJlZS1tdWRmbGFwLmMgKG11ZGZsYXBfaW5pdCk6IE1hcmsgY2FjaGUtbG9va3VwIGRlY2xzIHRvCglwcmV2ZW50IHRoZWlyIGxhdGVyIHVubmVjZXNzYXJ5IHJlZ2lzdHJhdGlvbi4KCShtZl9idWlsZF9jaGVja19zdGF0ZW1lbnRfZm9yKTogUmVtb3ZlICJhZGRyIiBhcmd1bWVudCwgYW5kCglyZWxhdGVkICJfX21mX3ZhbHVlIiBnZW5lcmF0ZWQgY29kZS4gIFVwZGF0ZSBjYWxsZXJzLgoJKG1mX2RlY2xfZWxpZ2libGVfcCk6IE5ldyBmdW5jdGlvbiwgZmFjdG9yZWQgZnJvbSBteF9yZWdpc3Rlcl9kZWNscy4KCShteF9yZWdpc3Rlcl9kZWNscyk6IENhbGwgaXQuCgkobWZfeGZvcm1fZGVyZWZzXzEpOiBSZXdyaXRlIENPTVBPTkVOVF9SRUYgYW5kIEFSUkFZX1JFRiBjYXNlcwoJdG8gcmVzdG9yZSBzdXBwb3J0IGZvciBjb21wbGV4IG5lc3RlZCBleHByZXNzaW9ucy4KCShtdWRmbGFwX2VucXVldWVfZGVjbCk6IFNpbXBsaWZ5LiAgTW92ZSByZWdpc3RyYXRpb24gY2FsbCBlbWlzc2lvbgoJb3V0IC4uLgoJKG11ZGZsYXBfZmluaXNoX2ZpbGUpOiAuLi4gdG8gaGVyZS4KCShtdWRmbGFwX2VucXVldWVfY29uc3RhbnQpOiBSZW1vdmUgZHVtcCBjb2RlLgoKMjAwNC0xMC0yOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiAxODE5OQoJKiBkYnhvdXQuYyAoZGJ4b3V0X2JlZ2luX2NvbXBsZXhfc3RhYnNfbm9mb3JjZXRleHQpOiBOZXcgZnVuY3Rpb24uCgkoREJYX0ZJTklTSF9TVEFCUyk6IEFkZCAodW51c2VkIGJ5IGRlZmF1bHQpIFNZTSBwYXJhbWV0ZXIuCgkoZGJ4b3V0X2ZpbmlzaF9jb21wbGV4X3N0YWJzKTogVXBkYXRlIHRvIG1hdGNoLgoJKGRieG91dF9zeW1ib2xfbG9jYXRpb24pOiBDYWxsIGVtaXRfcGVuZGluZ19iaW5jbHNfaWZfcmVxdWlyZWQKCWFuZCBGT1JDRV9URVhUIGJlZm9yZSBEQlhfU1RBVElDX0JMT0NLX1NUQVJULiAgVXNlCglkYnhvdXRfYmVnaW5fY29tcGxleF9zdGFic19ub2ZvcmNldGV4dC4KCSogeGNvZmZvdXQuaCAoREJYX0ZJTklTSF9TVEFCUyk6IFJlc3RvcmUgc3BlY2lhbCBjYXNlIGZvcgoJTl9HU1lNLCB1c2luZyBuZXcgU1lNIHBhcmFtZXRlci4gIENvcnJlY3QgbG9naWMgZm9yIHNwZWNpYWwKCWNhc2VzIGZvciBOX0ZVTi4KCgkqIHZhcmFzbS5jIChmdW5jdGlvbl9zZWN0aW9uKTogSWYgREVDTCBpcyBOVUxMX1RSRUUsIGRvbid0IHRyeQoJdG8gZG8gYW55dGhpbmcgZWxzZS4gIERvIG5vdCBjYWxsIGdldF9pbnNucyBpZiBjZnVuIG9yCgljZnVuLT5lbWl0IGFyZSBOVUxMLgoKMjAwNC0xMC0yOCAgQWRhbSBOZW1ldCAgPGFuZW1ldEBsbnh3LmNvbT4KCglQUiBtaWRkbGUtZW5kLzE4MTYwCgkqIGMtdHlwZWNrLmMgKGNfbWFya19hZGRyZXNzYWJsZSk6IElzc3VlIGVycm9yIGlmIGFkZHJlc3Mgb2YgYQoJcmVnaXN0ZXIgdmFyaWFibGUgaXMgdGFrZW4uICBVc2UgIiVxRCIgdG8gcHJpbnQgREVDTF9OQU1FLgoKMjAwNC0xMC0yOCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBvcHRzLmMgKGRlY29kZV9vcHRpb25zKTogRG9uJ3QgcnVuIFBSRSBhdCAtT3MuCgoyMDA0LTEwLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChtb3ZxaWNjX2ludGVybmFsKTogQWxsb3cgZXhhY3RseSBvbmUKCXplcm8gaW4gdGhlIGNvbmRpdGlvbmFsLgoJKG1vdmhpY2NfaW50ZXJuYWwsIG1vdnNpY2NfaW50ZXJuYWwsIG1vdmRpY2NfaW50ZXJuYWwpOiBMaWtld2lzZS4KCjIwMDQtMTAtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjc2UuYyAobWVtb3J5X2V4dGVuZF9ydHgpOiBSZW1vdmUuCgkoY3NlX21haW4pOiBEb24ndCBzZXQgaXQuCgkoY3NlX2luc24pOiBVc2UgYSBsb2NhbCBidWZmZXIgaW5zdGVhZC4KCjIwMDQtMTAtMjggIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBwcm9maWxlLmMgKGJyYW5jaF9wcm9iKTogQ2FsbCB0byBpbml0X2VkZ2VfcHJvZmlsZXIgYWRkZWQuCgkqIHJ0bC1wcm9maWxlLmMgKHJ0bF9pbml0X2VkZ2VfcHJvZmlsZXIpOiBOZXcgZnVuY3Rpb24uCgkocnRsX2dlbl9lZGdlX3Byb2ZpbGVyKTogUmVwbGFjZWQgY2FsbCB0byBpbnNlcnRfaW5zbl9vbl9lZGdlIHdpdGgKCWNhbGwgdG8gc2FmZV9pbnNlcnRfaW5zbl9vbl9lZGdlLgoJKHJ0bF9wcm9maWxlX2hvb2tzKTogcnRsX2luaXRfZWRnZV9wcm9maWxlciBhZGRlZC4KCSogdHJlZS1wcm9maWxlLmMgKHRyZWVfaW5pdF9lZGdlX3Byb2ZpbGVyKTogTmV3IGZ1bmN0aW9uLgoJKHRyZWVfcHJvZmlsZV9ob29rcyk6IHRyZWVfaW5pdF9lZGdlX3Byb2ZpbGVyIGFkZGVkLgoJKiB2YWx1ZS1wcm9mLmggKHByb2ZpbGVfaG9va3MpIGluaXRfZWRnZV9wcm9maWxlciBwcm90b3R5cGUgYWRkZWQuCgoyMDA0LTEwLTI4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuYyAoaXEyMDAwX2V4cGFuZF9lcGlsb2d1ZSk6IFVzZQoJZW1pdF9qdW1wX2luc24oKSB0byBnZW5lcmF0ZSB0aGUgcmV0dXJuIGluc3RydWN0aW9uLgoKMjAwNC0xMC0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtcGhpbm9kZXMuYzogUmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UuCgoyMDA0LTEwLTI4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYzogRml4IGEgY29tbWVudCB0eXBvLgoJKiBkb2MvaW52b2tlLnRleGk6IEZpeCBhIHR5cG8uCgoyMDA0LTEwLTI4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogTWFrZWZpbGUuaW4gKE9CSlMtY29tbW9uKTogUmVtb3ZlIGR1cGxpY2F0ZXMuCgoyMDA0LTEwLTI4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogbGFtYmRhLWNvZGUuYyAobmVzdGlmeV91cGRhdGVfcGVuZGluZ19zdG10cyk6IFJlbW92ZS4KCShwZXJmZWN0X25lc3RpZnkpOiBVc2UgZmx1c2hfcGVuZGluZ19zdG10cyBpbnN0ZWFkIG9mCgluZXN0aWZ5X3VwZGF0ZV9wZW5kaW5nX3N0bXRzLgoJKiB0cmVlLWNmZy5jICh0cmVlX21ha2VfZm9yd2FyZGVyX2Jsb2NrKTogVXNlCglmbHVzaF9wZW5kaW5nX3N0bXRzLgoJKiB0cmVlLWZsb3cuaDogQWRkIGEgcHJvdG90eXBlIGZvciBmbHVzaF9wZW5kaW5nX3N0bXRzLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmMgKHRyZWVfZHVwbGljYXRlX2xvb3BfdG9faGVhZGVyX2VkZ2UpOgoJVXNlIGZsdXNoX3BlbmRpbmdfc3RtdHMuCgkobHZfdXBkYXRlX3BlbmRpbmdfc3RtdHMpOiBSZW1vdmUuCgkodHJlZV9zc2FfbG9vcF92ZXJzaW9uKTogVXNlIGZsdXNoX3BlbmRpbmdfc3RtdHMgaW5zdGVhZCBvZgoJbHZfdXBkYXRlX3BlbmRpbmdfc3RtdHMuCgkqIHRyZWUtc3NhLmMgKGZsdXNoX3BlbmRpbmdfc3RtdHMpOiBOZXcuCgoyMDA0LTEwLTI4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJUFIgdGFyZ2V0LzE1Mjg2CgkqIGZpbmFsLmMgKGFsdGVyX3N1YnJlZyk6IENvbXB1dGUgY29ycmVjdCBvZmZzZXQgdG8gdXNlIHdpdGgKCXBhcmFkb3hpY2FsIFNVQlJFR3Mgb2YgbWVtb3J5IG9wZXJhbmRzLgoJKiByZWNvZy5jIChnZW5lcmFsX29wZXJhbmQpOiBBbGxvdyBwYXJhZG94aWNhbCBTVUJSRUdzIG9mCgltZW1vcnkgb3BlcmFuZHMgYWZ0ZXIgcmVsb2FkLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfZ2VuX3N1YnJlZyk6IEZhaWwgaWYgc2ltcGxpZnlfc3VicmVnCgloYXMgZmFpbGVkIHdoZW4gcGFzc2VkIGEgaGFyZCByZWdpc3Rlci4KCjIwMDQtMTAtMjggIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtX3NldHVwX2Jsb2NrKTogSGFuZGxlIHBhcmFsbGVscyBjb3JyZWN0bHkuCgoyMDA0LTEwLTI4ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGZpbmFsLmMgKHNob3J0ZW5fYnJhbmNoZXMpOiBJbml0aWFsaXplIGZsYWdzIHN0cnVjdHVyZS4KCjIwMDQtMTAtMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKGludF9jc3Rfbm9kZSwgaW50X2NzdF9oYXNoX3RhYmxlKTogTmV3IHZhcmlhYmxlcy4KCShpbml0X3R0cmVlKTogSW5pdGlhbGl6ZSB0aGVtLgoJKGludF9jc3RfaGFzaF9oYXNoLCBpbnRfY3N0X2hhc2hfZXEpOiBOZXcgaGFzaGluZyBmdW5jdGlvbnMuCgkoYnVpbGRfaW50X2NzdF93aWRlKTogVXNlIGhhc2ggdGFibGUgZm9yIG92ZXJzaXplZCBpbnRlZ2Vycy4KCjIwMDQtMTAtMjggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTMyci9tMzJyLmggKERCWF9PVVRQVVRfU09VUkNFX0xJTkUpOiBEZWZpbmUKCWJlZ2luX2xhYmVsLgoKMjAwNC0xMC0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzE4MTYzCgkqIGV4cHIuYyAoZW1pdF9ncm91cF9sb2FkKTogRG9uJ3QgZ28gZm9yY2UgdGVtcG9yYXJ5IGZvciBtZW1vcnkKCW9yIGNvbmNhdCBzb3VyY2UuCgkoZW1pdF9ncm91cF9zdG9yZSk6IFNpbWlsYXJseS4KCjIwMDQtMTAtMjcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG90aGVyLzE4MTg2CgkqIGNvbW1vbi5vcHQgKC0tcGFyYW0pOiBGaXggc3BlbGxpbmcgb2YgcGFyYW1ldGVyLgoKMjAwNC0xMC0yNyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHQvMTc1MjkKCSogdHJlZS1jZmcuYyAocmVtb3ZlX3VzZWxlc3Nfc3RtdHNfMSkgPGNhc2UgU1dJVENIX0VYUFI+OgoJRG9uJ3QgZm9sZCBzdGF0ZW1lbnQuCgk8Y2FzZSBBU01fRVhQUj46IEZvbGQgdGhlIHN0YXRlbWVudC4KCjIwMDQtMTAtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXNzYS1kY2UuYyAobWFya19zdG10X2lmX29idmlvdXNseV9uZWNlc3NhcnkpCgk8Q09ORF9FWFBSPjogVXNlIEVER0VfQ09VTlQgaW5zdGVhZCBvZiBHT1RPX0RFU1RJTkFUSU9OLgoKMjAwNC0xMC0yOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvY29udHJpYi50ZXhpLCBkb2MvY3BwLnRleGksIGRvYy9jcHBvcHRzLnRleGksCglkb2MvZXh0ZW5kLnRleGksIGRvYy9nY292LnRleGksIGRvYy9pbnN0YWxsLnRleGksIGRvYy9pbnZva2UudGV4aSwKCWRvYy9saWJnY2MudGV4aSwgZG9jL21kLnRleGksIGRvYy9wYXNzZXMudGV4aSwKCWRvYy9zb3VyY2VidWlsZC50ZXhpLCBkb2MvdG0udGV4aTogSW1wcm92ZSBUZXhpbmZvIGZvcm1hdHRpbmcuCgoyMDA0LTEwLTI4ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9jLXRyZWUudGV4aSwgZG9jL2NwcC50ZXhpLCBkb2MvaW1wbGVtZW50LWMudGV4aSwKCWRvYy9pbnZva2UudGV4aSwgZG9jL21kLnRleGksIGRvYy9wYXNzZXMudGV4aSwgZG9jL3RtLnRleGk6IFB1dAoJcHVuY3R1YXRpb24gb3V0c2lkZSBxdW90ZXMuCgoyMDA0LTEwLTI3ICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCSAgICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJUFIgdGFyZ2V0LzEzMTU4CgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBTZXQgUlRYX0ZSQU1FX1JFTEFURURfUCBvbgoJc2liY2FsbCBhbGxvYyBpbnN0cnVjdGlvbi4KCShwcm9jZXNzX3NldCk6IEhhbmRsZSBzaWJjYWxsIGFsbG9jIGluc3RydWN0aW9uLgoKMjAwNC0xMC0yNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfYXR0cmlidXRlX3RhYmxlKTogQWRkCglTVUJUQVJHRVRfQVRUUklCVVRFX1RBQkxFLgoJKiBjb25maWcvZGFyd2luLmggKEFTTV9XRUFLRU5fREVDTCk6IEhhbmRsZSB3ZWFrX2ltcG9ydC4KCShTVUJUQVJHRVRfQVRUUklCVVRFX1RBQkxFKTogRGVmaW5lLgoJKiBjb25maWcvZGFyd2luLmMgKGRhcndpbl9oYW5kbGVfd2Vha19pbXBvcnRfYXR0cmlidXRlKTogTmV3LgoJKEhBVkVfREVBRF9TVFJJUCk6IERlbGV0ZS4KCShub19kZWFkX3N0cmlwKTogRG9uJ3QgdGVzdCBIQVZFX0RFQURfU1RSSVAuCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmggKGRhcndpbl9oYW5kbGVfd2Vha19pbXBvcnRfYXR0cmlidXRlKToKCVByb3RvdHlwZS4KCgkqIGRvYy90bS50ZXhpIChVU0VfU0VMRUNUX1NFQ1RJT05fRk9SX0ZVTkNUSU9OUyk6IERvY3VtZW50LgoKCSogY29uZmlnL2Rhcndpbi5oIChHVEhSRUFEX1VTRV9XRUFLKTogRGVmaW5lLgoKMjAwNC0xMC0yOCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBwYXJhbXMuZGVmIChQQVJBTV9TUkFfTUFYX1NUUlVDVFVSRV9TSVpFKTogTmV3LgoJKFBBUkFNX1NSQV9GSUVMRF9TVFJVQ1RVUkVfUkFUSU8pOiBMaWtld2lzZS4KCSogcGFyYW1zLmggKFNSQV9NQVhfU1RSVUNUVVJFX1NJWkUpOiBOZXcuCgkoU1JBX0ZJRUxEX1NUUlVDVFVSRV9SQVRJTyk6IExpa2V3aXNlLgoJKiB0cmVlLXNyYS5jOiBJbmNsdWRlICJwYXJhbXMuaCIuCgkoZGVjaWRlX2Jsb2NrX2NvcHkpOiBVc2UgbmV3IHBhcmFtZXRlcnMuCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW1pemUgT3B0aW9ucyk6IERvY3VtZW50IG5ldyBTUkEgcGFzcwoJcGFyYW1ldGVycyBzcmEtbWF4LXN0cnVjdHVyZS1zaXplIGFuZCBzcmEtZmllbGQtc3RydWN0dXJlLXJhdGlvLgoKMjAwNC0xMC0yNyAgTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgoKCSogY29uZmlnL2FybS9pZWVlNzU0LWRmLlMgKGZsb2F0ZGlkZik6IEZpeCByZWdyZXNzaW9uIHdpdGggYmlnIHZhbHVlcy4KCjIwMDQtMTAtMjcgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTgwNDgKCSogZm9sZC1jb25zdC5jICh0cnlfbW92ZV9tdWx0X3RvX2luZGV4KTogTmV3IGZ1bmN0aW9uLgoJKGZvbGQpOiBVc2UgdHJ5X21vdmVfbXVsdF90b19pbmRleC4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAodHJ5X2FkZF9jYW5kX2Zvcik6IFByZWZlciBjb21tb24gY2FuZGlkYXRlcy4KCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChudW1iZXJfb2ZfaXRlcmF0aW9uc19jb25kKTogUHJvZHVjZQoJYW4gYWxsLW9uZXMgdW5zaWduZWQgY29uc3RhbnQgd2l0aG91dCBleHRyYSBiaXRzLgoJKiB0cmVlLmMgKGJ1aWxkX2xvd19iaXRzX21hc2spOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuaCAoYnVpbGRfbG93X2JpdHNfbWFzayk6IERlY2xhcmUuCgoyMDA0LTEwLTI3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJUFIgdGFyZ2V0LzE3OTU2CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtYXhzZjMpOiBBZGQgIWZsYWdfdHJhcHBpbmdfbWF0aCB0bwoJZmluYWwgY29uZGl0aW9uLgoJKG1pbnNmMyk6IFNhbWUuCgkobWF4ZGYzKTogU2FtZS4KCShtaW5kZjMpOiBTYW1lLgoKMjAwNC0xMC0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmMgKHRocmVhZF9qdW1wcyk6IFNwZWVkIHVwIGJ5IHJlb3JkZXJpbmcgdGhlIHR3bwoJY29uZGl0aW9ucyBmb3IgZW50ZXJpbmcgYmFzaWMgYmxvY2tzIGludG8gd29ya2xpc3QuCgoyMDA0LTEwLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1jZmcuYyAodGhyZWFkX2p1bXBzKTogU3BlZWQgdXAgYnkgcHJldGVuZGluZyB0byBoYXZlCglFTlRSWV9CTE9DS19QVFIgaW4gd29ya2xpc3QuCgoyMDA0LTEwLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1zc2EtZGNlLmMgKG1hcmtfc3RtdF9pZl9vYnZpb3VzbHlfbmVjZXNzYXJ5KQoJPEdPVE9fRVhQUj46IERvbid0IGxldCBhbiBleHBsaWNpdCBHT1RPX0VYUFIgc2xpcCB0aHJvdWdoLgoKMjAwNC0xMC0yNyAgRGFuaWVsIEJlcmxpbiA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMTcxMzMKCgkqIHRyZWUtY2ZnLmMgKHJld3JpdGVfdG9fbmV3X3NzYV9uYW1lc19iYik6IEFsc28gcmV3cml0ZSBtdXN0CglkZWYga2lsbCBvcGVyYW5kLgoKCSogdHJlZS1mbG93LWlubGluZS5oOiBWX01VU1RfREVGX09QIGJlY2FtZSBWX01VU1RfREVGX1JFU1VMVC4KCShnZXRfdl9tdXN0X2RlZl9yZXN1bHRfcHRyKTogTW9kaWZ5IGZvciBuZXcgc3RydWN0dXJlIG9mCgl2X211c3RfZGVmcyBhcnJheS4KCShnZXRfdl9tdXN0X2RlZl9raWxsX3B0cik6IE5ldy4KCShvcF9pdGVyX25leHRfdXNlKTogQWRkIHN1cHBvcnQgZm9yIHRoZSBraWxsIHRoYXQgb2NjdXJzIGluIFZfTVVTVF9ERUZzLgoJKG9wX2l0ZXJfbmV4dF90cmVlKTogRGl0dG8uIEFsc28gVl9NQVlfREVGX09QIGJlY2FtZSBWX01BWV9ERUZfUkVTVUxULgoJKG9wX2l0ZXJfbmV4dF9kZWYpOiBWX01BWV9ERUZfT1AgYmVjYW1lIFZfTUFZX0RFRl9SRVNVTFQuCgkob3BfaXRlcl9pbml0KTogSW5pdGlhbGl6ZSBuZXcgbXVzdHUgbWVtYmVycy4KCShvcF9pdGVyX25leHRfbXVzdGRlZik6IE5ldyBmdW5jdGlvbi4KCShvcF9pdGVyX2luaXRfbXVzdGRlZik6IERpdHRvLgoKCSogdHJlZS1mbG93LmggKHJld3JpdGVfZGVmX2RlZl9jaGFpbnMpOiBOZXcgZnVuY3Rpb24uCgoJKiB0cmVlLWludG8tc3NhLmMgKG1hcmtfZGVmX3NpdGVzKTogSGFuZGxlIG11c3RkZWZraWxsIG9wZXJhbmRzLgoJKHNzYV9tYXJrX2RlZl9zaXRlcyk6IERpdHRvLgoJKHJld3JpdGVfc3RtdCk6IERpdHRvLgoJKHNzYV9yZXdyaXRlX3N0bXQpOiBEaXR0by4KCShyZXdyaXRlX2Jsb2Nrcyk6IEZhY3RvciBvdXQgZnJvbSByZXdyaXRlX2ludG9fc3NhLgoJKG1hcmtfZGVmX2Jsb2NrX3NpdGVzKTogRGl0dG8uCgkocmV3cml0ZV9kZWZfZGVmX2NoYWlucyk6IE5ldyBmdW5jdGlvbiwganVzdCByZXdyaXRlcyBkZWYtZGVmCgljaGFpbnMgd2l0aG91dCBwaGkgbm9kZSBpbnNlcnRpb24uCgoJKiB0cmVlLXBhc3MuaCAoVE9ET19maXhfZGVmX2RlZl9jaGFpbnMpOiBOZXcgdG9kbyBmbGFnLgoKCSogdHJlZS1vcHRpbWl6ZS5jIChleGVjdXRlX3RvZG8pOiBIYW5kbGUgVE9ET19maXhfZGVmX2RlZl9jaGFpbnMuCgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX3ZvcHMpOiBQcmludCBvdXQgTVVTVF9ERUYncyBzbyB0aGF0Cgl0aGV5IGluY2x1ZGUgdGhlIHJocyBub3cuCgoJKiB0cmVlLXNzYS1jY3AuYyAodmlzaXRfYXNzaWdubWVudCk6IFZfTVVTVF9ERUZfT1AgYmVjYW1lCglWX01VU1RfREVGX1JFU1VMVC4KCgkqIHRyZWUtc3NhLWRjZS5jIChtYXJrX29wZXJhbmRfbmVjZXNzYXJ5KTogQWRkIHBoaW9ubHkgYXJndW1lbnQuCglVcGRhdGUgY2FsbGVycy4KCShtYXJrX3JlYWxseV9uZWNlc3Nhcnlfa2lsbF9vcGVyYW5kX3BoaXMpOiBOZXcgZnVuY3Rpb24uCgkocGVyZm9ybV90cmVlX3NzYV9kY2UpOiBDYWxsIGl0LgoJKHBhc3NfZGNlKTogQWRkIFRPRE9fZml4X2RlZl9kZWZfY2hhaW5zLgoJKHBhc3NfY2RfZGNlKTogRGl0dG8uCgoJKiB0cmVlLXNzYS1sb29wLWltLmMgKGRldGVybWluZV9tYXhfbW92ZW1lbnQpOiBMb29rIGF0IGtpbGxzIGFzCgl3ZWxsLgoJKHJld3JpdGVfbWVtX3JlZnMpOiBEaXR0by4KCgkqIHRyZWUtc3NhLWxvb3AtbWFuaXAuYyAoZmluZF91c2VzX3RvX3JlbmFtZV9zdG10KTogTG9vayBhdCBraWxscwoJYXMgd2VsbC4KCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFsbG9jYXRlX3ZfbWF5X2RlZl9vcHR5cGUpOgoJdl9tYXlfZGVmX29wZXJhbmRfdHlwZV90IGJlY2FtZSB2X2RlZl91c2Vfb3BlcmFuZF90eXBlX3QuCgkoYWxsb2NhdGVfdl9tdXN0X2RlZl9vcHR5cGUpIERpdHRvLgoJKGZpbmFsaXplX3NzYV92X211c3RfZGVmcyk6IFVwZGF0ZSBmb3IgbmV3IG9wZXJhbmQgdHlwZSwgYXMgd2VsbAoJYXMgc2V0dGluZyB0aGUgdXNlIHBvcnRpb24gYXMgd2VsbC4KCShjb3B5X3ZpcnR1YWxfb3BlcmFuZHMpOiBDb3B5IHRoZSBraWxsIG9wZXJhbmQgYXMgd2VsbC4KCShjcmVhdGVfc3NhX2FydGZpY2lhbF9sb2FkX3N0bXQpOiBWX01VU1RfREVGX09QIGJlY2FtZQoJVl9NVVNUX0RFRl9SRVNVTFQuCgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5oICh2X21heV9kZWZfb3BlcmFuZF90eXBlKTogUmVuYW1lZCB0bwoJdl9kZWZfdXNlX29wZXJhbmRfdHlwZS4KCSh2X211c3RfZGVmX29wdHlwZV9kKTogVXNlIHZfZGVmX3VzZV9vcGVyYW5kX3R5cGUuCgkoVl9NVVNUX0RFRl9PUF8qKTogUmVuYW1lZCB0byBWX01VU1RfREVGX1JFU1VMVF8qCgkoVl9NVVNUX0RFRl9LSUxMXyopOiBOZXcgbWFjcm9zLgoJKHN0cnVjdCBzc2Ffb3BlcmFuZF9pdGVyYXRvcl9kKTogQWRkIG51bV92X211c3R1IGFuZCB2X211c3R1X2kKCW1lbWJlcnMuCglSZW5hbWUgZXhpc3RpbmcgbXVzdF9pIGFuZCBudW1fdl9tdXN0IG1lbWJlcnMgdG8gbXVzdGRfaSBhbmQKCW51bV92X211c3RkLgoJKFNTQV9PUF9WTVVTVERFRktJTEwpOiBOZXcgZmxhZy4KCShTU0FfT1BfVklSVFVBTF9LSUxMUyk6IE5ldyBmbGFnLgoJKFNTQV9PUF9BTExfT1BFUkFORFMpOiBBZGQgaW4gU1NBX09QX0FMTF9LSUxMUy4KCShTU0FfT1BfQUxMX0tJTExTKTogTmV3IGZsYWcuCgkoRk9SX0VBQ0hfU1NBX01VU1RERUZfT1BFUkFORCk6IE5ldyBtYWNyby4KCgkqIHRyZWUtc3NhLmMgKHZlcmlmeV9zc2EpOiBWZXJpZnkgdmlydHVhbCBraWxscyBhcyB3ZWxsLgoKCSogdHJlZS12ZWN0b3JpemVyLmMgKHZlY3RfY3JlYXRlX2RhdGFfcmVmX3B0cik6IFZfTVVTVF9ERUZfT1AKCWJlY2FtZSBWX01VU1RfREVGX1JFU1VMVC4KCShyZW5hbWVfdmFyaWFibGVzX2luX2JiKTogUmVuYW1lIGtpbGwgcG9pbnRlciBhcyB3ZWxsLgoKCSogdHJlZS1kZmEuYyAoY29tcHV0ZV9pbW1lZGlhdGVfdXNlc19mb3Jfc3RtdCk6IEFkZCBraWxscyBpbnRvIHRoZQoJaW1tZWRpYXRlIHVzZXMuCgoyMDA0LTEwLTI3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3NvdXJjZV9saW5lKTogTW92ZSBkZWNsYXJhdGlvbiBvZiBiZWdpbl9sYWJlbCB0bwoJdGhlIGJsb2NrIHRoYXQgbmVlZHMgaXQuCgoyMDA0LTEwLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGJ4b3V0LmMgKGRieG91dF9maW5pc2hfY29tcGxleF9zdGFicyk6IE1hcmsgJ2xpbmUnIHZhcmlhYmxlCglBVFRSSUJVVEVfVU5VU0VELgoKMjAwNC0xMC0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtbGV4LmMgKGNiX2RlZl9wcmFnbWEpOiBDbGVhbiB1cCBjb2RlIGZvciBtYWtpbmcgbG9jYXRpb24KCXBhbGF0YWJsZSB0byBkaWFnbm9zdGljLmMuCgoyMDA0LTEwLTI3ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTc3NTcKCSogdHJlZS1waGlub2Rlcy5jIChyZW1vdmVfcGhpX2FyZ19udW0pOiBEb24ndCByZW1vdmUgUEhJcwoJd2l0aG91dCBhbnkgUEhJIGFyZ3VtZW50cyBsZWZ0LiAgTWFrZSBzdXJlIHRoZSBhcmd1bWVudCB0aGF0Cgl3ZSdyZSBzdXBwb3NlZCB0byByZW1vdmUgZXhpc3RzIGF0IGFsbC4KCjIwMDQtMTAtMjcgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWM6IERvbid0IHRlc3QgZm9yIFtidWlsZF0gX19jeGFfYXRleGl0IHdoZW4gYnVpbGRpbmcgYQoJY3Jvc3MgY29tcGlsZXIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMTAtMjcgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVvc3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWM6IFVzZSBidWlsZF9leGVleHQgbm90IGhvc3RfZXhlZXh0IHdoZW4gbG9va2luIGZvcgoJdGFyZ2V0IHRvb2xzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTEwLTI3ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIipzdWJkZjNfY2MiKTogUmVwbGFjZWQgcGx1cyBieSBtaW51cy4KCjIwMDQtMTAtMjcgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgkgICAgcGF0Y2ggb3JpZ2luYWxseSBjcmVhdGVkIGJ5IEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJUFIgbWlkZGxlLWVuZC8xNDY4NAoJKiBvcHRzLmMgKE9QVF9mcHJvZmlsZV9nZW5lcmF0ZSk6IERlZmF1bHQgdG8gLWZ1bnJvbGwtbG9vcHMKCXRvIG1hdGNoIC1mcHJvZmlsZS11c2UuCgoyMDA0LTEwLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNC0xMC0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoREJYX09VVFBVVF9TT1VSQ0VfTElORSk6IEluY3JlbWVudCBsaW5lCgljb3VudGVyLgoKMjAwNC0xMC0yNyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIHZhcmFzbS5jIChkZWZhdWx0X3N0YWJzX2FzbV9vdXRfZGVzdHJ1Y3Rvcik6IE1hcmsgc3ltYm9sIGFzCgl1bnVzZWQuCgkoZGVmYXVsdF9zdGFic19hc21fb3V0X2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgoyMDA0LTEwLTI2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl91bm9yZGVyZWRfY21wKTogQWx3YXlzIGJyaW5nIGJvdGgKCW9wZXJhbmRzIHRvIHRoZSBzYW1lIHR5cGUuCgoyMDA0LTEwLTI2ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJUFIgdGFyZ2V0LzE4MDEwCgkqIGVtaXQtcnRsLmMgKGVtaXRfY29weV9vZl9pbnNuX2FmdGVyKTogQ29weSBSVFhfRlJBTUVfUkVMQVRFRF9QLgoKMjAwNC0xMC0yNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRieG91dC5jOiBJbmNsdWRlIG9ic3RhY2suaC4KCShBU01fU1RBQlNfT1ApOiBUYWtlIFhDT0ZGX0RFQlVHR0lOR19JTkZPIGludG8gYWNjb3VudCBpbgoJZGVmYXVsdCBkZWZpbml0aW9uLgoJKEFTTV9TVEFCRF9PUCwgTk9fREJYX01BSU5fU09VUkNFX0RJUkVDVE9SWSwgREJYX0NPTlRJTl9DSEFSKToKCURlZmF1bHQtZGVmaW5lIGhlcmUuCgkoREJYX0NPTlRJTl9MRU5HVEgpOiBNb3ZlIGRlZmluaXRpb24gd2l0aCBvdGhlcnMuCgkoREJYX0ZJTklTSF9TVEFCUyk6IE5ldyB0YXJnZXQgbWFjcm8uCgkoY3VycmVudF9zeW1fY29kZSwgY3VycmVudF9zeW1fdmFsdWUsIGN1cnJlbnRfc3ltX2FkZHIpCgkoY3VycmVudF9zeW1fbmNoYXJzLCBDSEFSUywgZGJ4b3V0X2NvbnRpbnVlKQoJKHByaW50X2ludF9jc3Rfb2N0YWwsIHByaW50X29jdGFsLCBwcmludF93aWRlX2ludCkKCShkYnhvdXRfcHJlcGFyZV9zeW1ib2wsIGRieG91dF9maW5pc2hfc3ltYm9sKTogRGVsZXRlLgoJKHN0YWJzdHJfb2IsIHN0YWJzdHJfbGFzdF9jb250aW5fcG9pbnQpOiBOZXcgdmFyaWFibGVzLgoJKE5VTUJFUl9GTVRfTE9PUCk6IE5ldyBpbXByb3BlciBtYWNyby4KCShkYnhvdXRfaW50LCBkYnhvdXRfc3RhYl92YWx1ZV96ZXJvLCBkYnhvdXRfc3RhYl92YWx1ZV9sYWJlbCkKCShkYnhvdXRfc3RhYl92YWx1ZV9sYWJlbF9kaWZmLCBkYnhvdXRfc3RhYl92YWx1ZV9pbnRlcm5hbF9sYWJlbCkKCShkYnhvdXRfc3RhYl92YWx1ZV9pbnRlcm5hbF9sYWJlbF9kaWZmLCBkYnhvdXRfc3RhYmQpCgkoZGJ4b3V0X2JlZ2luX3N0YWJuLCBkYnhvdXRfYmVnaW5fc3RhYm5fc2xpbmUpCgkoZGJ4b3V0X2JlZ2luX3NpbXBsZV9zdGFicywgZGJ4b3V0X2JlZ2luX3NpbXBsZV9zdGFic19kZXNjKQoJKGRieG91dF9iZWdpbl9jb21wbGV4X3N0YWJzLCBkYnhvdXRfZmluaXNoX2NvbXBsZXhfc3RhYnMpCgkoc3RhYnN0cl9DLCBzdGFic3RyX1MsIHN0YWJzdHJfSSwgc3RhYnN0cl9ELCBzdGFic3RyX1UsIHN0YWJzdHJfTykKCShzdGFic3RyX2NvbnRpbnVlLCBERUNMX0FDQ0VTU0lCSUxJVFlfQ0hBUikKCU5ldyBmdW5jdGlvbnMgYW5kL29yIHByb3BlciBmdW5jdGlvbi1saWtlIG1hY3Jvcy4KCShDT05USU4pOiBVc2Ugc3RhYnN0cl9jb250aW51ZSwgdW5jb25kaXRpb25hbGx5LgoJKGdldF9sYW5nX251bWJlcik6IERlZmluZSB1bmNvbmRpdGlvbmFsbHksIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShkYnhvdXRfaW5pdCk6IEluaXRpYWxpemUgc3RhYnN0cl9vYi4gIENoZWNrCglOT19EQlhfTUFJTl9TT1VSQ0VfRElSRUNUT1JZLiAgT25seSB3cml0ZSBvdXQgdGhlIEx0ZXh0IGxhYmVsCglpZiBpdCB3YXMgdXNlZC4gIFVzZSB0aGUgbmV3IGludGVyZmFjZXMuCgkoZGJ4b3V0X3NvdXJjZV9maWxlKTogUmVtb3ZlIGZpbGUgYXJndW1lbnQ7IGFsd2F5cyB3cml0ZSB0bwoJYXNtX291dF9maWxlLiAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlcy4KCShkYnhvdXRfdHlwZV9tZXRob2RfMSk6IFJlbW92ZSBzZWNvbmQgYXJndW1lbnQgd2hpY2ggaXMgYWx3YXlzCglERUNMX0FTU0VNQkxFUl9OQU1FIG9mIHRoZSBmaXJzdCBhcmd1bWVudC4gIFVzZSB0aGUgbmV3IGludGVyZmFjZXMuCgkoZGJ4b3V0X3R5cGVfbWV0aG9kcyk6IFJlbW92ZSB3cml0ZS1vbmx5IHZhcmlhYmxlcy4gIFVzZSB0aGUKCW5ldyBpbnRlcmZhY2VzLgoJKGRieG91dF9wYXJtcyk6IFJlZmFjdG9yIHRvIHJlbW92ZSBjb2RlIGR1cGxpY2F0ZWQgaW4gZWFjaCBvZgoJc2V2ZXJhbCBzdWNjZXNzaXZlIGlmLWVsc2UtaWYgYmxvY2tzLiAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlcy4KCShkYnhvdXRfZnVuY3Rpb25fZW5kLCBlbWl0X2JpbmNsX3N0YWIsIGRieG91dF9lbmRfc291cmNlX2ZpbGUpCgkoZGJ4b3V0X3NvdXJjZV9saW5lLCBkYnhvdXRfZmluaXNoLCBkYnhvdXRfdHlwZV9pbmRleCkKCShkYnhvdXRfdHlwZV9maWVsZHMsIGRieG91dF9yYW5nZV90eXBlLCBkYnhvdXRfdHlwZSwgZGJ4b3V0X3R5cGVfbmFtZSkKCShkYnhvdXRfY2xhc3NfbmFtZV9xdWFsaWZpZXJzLCBkYnhvdXRfc3ltYm9sLCBkYnhvdXRfc3ltYm9sX2xvY2F0aW9uKQoJKGRieG91dF9zeW1ib2xfbmFtZSwgZGJ4b3V0X3JlZ19wYXJtcywgZGJ4b3V0X2FyZ3MpCgkoZGJ4X291dHB1dF9sYnJhYywgZGJ4X291dHB1dF9yYnJhYywgZGJ4b3V0X2Jsb2NrKToKCVVzZSB0aGUgbmV3IGludGVyZmFjZXMuCgkqIE1ha2VmaWxlLmluIChkYnhvdXQubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoJKiBkZWZhdWx0cy5oOiBEb24ndCBkZWZpbmUgQVNNX1NUQUJEX09QLgoJKiBvdXRwdXQuaDogUHJvdG90eXBlIG5ldyBkYnhvdXRfKiBpbnRlcmZhY2VzLgoJKiBzeXN0ZW0uaDogUG9pc29uIERCWF9PVVRQVVRfR0NDX01BUktFUiBhbmQgREJYX0ZJTklTSF9TWU1CT0wuCgkqIHZhcmFzbS5jOiBEb24ndCBkZWZpbmUgQVNNX1NUQUJTX09QLgoJKGRlZmF1bHRfc3RhYnNfYXNtX291dF9jb25zdHJ1Y3RvciwgZGVmYXVsdF9zdGFic19hc21fb3V0X2Rlc3RydWN0b3IpOgoJVXNlIHRoZSBuZXcgZGJ4b3V0LmMgaW50ZXJmYWNlcy4gIENhbGwgc29ycnkgaWYgbmVpdGhlcgoJREJYX0RFQlVHR0lOR19JTkZPIG5vciBYQ09GRl9ERUJVR0dJTkdfSU5GTyBpcyBkZWZpbmVkLgoKCSogeGNvZmZvdXQuaDogRG9uJ3QgZGVmaW5lIEFTTV9TVEFCU19PUC4KCShEQlhfRklOSVNIX1NZTUJPTCk6IFJld3JpdGUgYW5kIHJlbmFtZSBEQlhfRklOSVNIX1NUQUJTLgoJKERCWF9PVVRQVVRfTUFJTl9TT1VSQ0VfRElSRUNUT1JZLCBEQlhfT1VUUFVUX0dDQ19NQVJLRVIpOiBEZWxldGUuCgkoTk9fREJYX01BSU5fU09VUkNFX0RJUkVDVE9SWSwgTk9fREJYX0dDQ19NQVJLRVIpOiBEZWZpbmUuCgkoREJYX09VVFBVVF9NQUlOX1NPVVJDRV9GSUxFX0VORCk6IENoYW5nZSBiYXJlIGJsb2NrIHRvCglkbyB7IC4uLiB9IHdoaWxlICgwKSBpZGlvbS4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChudW1fc291cmNlX2ZpbGVuYW1lcyk6IEV4cG9ydC4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKG51bV9zb3VyY2VfZmlsZW5hbWVzKTogRGVjbGFyZS4KCShEQlhfT1VUUFVUX1NPVVJDRV9MSU5FKTogVXNlIG5ldyBpbnRlcmZhY2VzLgoJKFNEQl9PVVRQVVRfU09VUkNFX0xJTkUpOiBBZGQgbWlzc2luZyBuZXdsaW5lLgoJKiBjb25maWcvbTMyci9tMzJyLmggKERCWF9PVVRQVVRfU09VUkNFX0xJTkUpOiBVc2UgbmV3IGludGVyZmFjZXMuCglBbHdheXMgdXNlIC5kZWJ1Z3N5bS4gIFVwZGF0ZSBjb21tZW50YXJ5LgoJKiBjb25maWcvbWlwcy9taXBzLmggKERCWF9PVVRQVVRfU09VUkNFX0xJTkUpOiBVc2UgbmV3IGludGVyZmFjZXMuCgkoU0RCX09VVFBVVF9TT1VSQ0VfTElORSk6IEFkZCBtaXNzaW5nIG5ld2xpbmUuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChEQlhfT1VUUFVUX1NPVVJDRV9MSU5FLCBEQlhfT1VUUFVUX0JSQUMpOgoJVXNlIG5ldyBpbnRlcmZhY2VzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBJZiBUQVJHRVRfTUFDSE8sIGluY2x1ZGUgZ3N0YWIuaC4KCShtYWNob19icmFuY2hfaXNsYW5kcyk6IFVzZSBuZXcgaW50ZXJmYWNlcy4KCgkqIGRvYy90bS50ZXhpOiBVcGRhdGUuCgoyMDA0LTEwLTI2ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGVtaXRfZ3JvdXBfc3RvcmUpOiBEbyBub3QgdHJlYXQgZmxvYXRzIGFzIEJMS21vZGUuCgkoZW1pdF9ncm91cF9sb2FkKTogU2FtZS4KCjIwMDQtMTAtMjYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1wYXJzZS5pbiAoZGF0YWRlZik6IFVzZSBwZWR3YXJuIHJhdGhlciB0aGFuIGVycm9yIGFuZCB3YXJuaW5nCglmb3IgZGlhZ25vc3RpYyBpbiBjYXNlIG9mIG5vIGRlY2xhcmF0aW9uIHNwZWNpZmllcnMuCgoyMDA0LTEwLTI2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgYm9vdHN0cmFwLzE1NzQ3CgkqIGRvYy9pbnN0YWxsLnRleGkgKG1pcHMtc2dpLWlyaXg1KTogRG9jdW1lbnQgdGhhdCAvYmluL3NoIGhhcyBiZWVuCglyZXBvcnRlZCB0byBoYW5nIGR1cmluZyBib290c3RyYXAgYW5kIHRoYXQgQ09ORklHX1NIRUxMPS9iaW4va3NoCgljYW4gYmUgdXNlZCB0byB3b3JrIGFyb3VuZCB0aGlzLgoKMjAwNC0xMC0yNiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoTUVNQkVSX1RZUEVfRk9SQ0VTX0JMSyk6IEFkanVzdCBmb3IgZTUwMAoJZG91Ymxlcy4KCjIwMDQtMTAtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzdG10LmMgKGV4cGFuZF9jYXNlKTogVXBkYXRlIGEgY29tbWVudC4KCjIwMDQtMTAtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzdG10LmMgKGV4cGFuZF9jYXNlKTogUHV0IGFuIGFzc2VydGlvbiB0aGF0IGluZGV4X2V4cHIgaXMKCW5ldmVyIElOVEVHRVJfQ1NULiAgRG9uJ3Qgc3BlY2lhbCBjYXNlIGZvciBjb25zdGFudAoJaW5kZXhfZXhwci4KCjIwMDQtMTAtMjYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIDE4MTYyCgkqIGMtcGFyc2UuaW4gKGRlc2lnbmF0b3IpOiBGaW5pc2ggd2l0aCBhIHNlbWktY29sb24uCgoyMDA0LTEwLTI2ICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChhbmRzaTNfaW50ZXJuYWw4KTogU2V0IENSIHdoZW4gc3BsaXR0aW5nCglpbnRvIHJvdGxzaTMuCgoyMDA0LTEwLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc3RtdC5jIChleHBhbmRfY2FzZSk6IFJlbW92ZSBjb2RlIHRvIGhhbmRsZSBTV0lUQ0hfRVhQUiB3aXRoCglhIGRlZmF1bHQgY2FzZSBvbmx5LgoKMjAwNC0xMC0yNiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3MpOiBBZGp1c3QgZm9yCgllNTAwIGRvdWJsZXMuCgkoc3BlX2J1aWxkX3JlZ2lzdGVyX3BhcmFsbGVsKTogTmV3LgoJKHJzNjAwMF9zcGVfZnVuY3Rpb25fYXJnKTogSGFuZGxlIGU1MDAgZG91Ymxlcy4KCShmdW5jdGlvbl9hcmcpOiBTYW1lLgoJKHNwZV9mdW5jX2hhc182NGJpdF9yZWdzX3ApOiBTYW1lLgoJKHJzNjAwMF9mdW5jdGlvbl92YWx1ZSk6IFNhbWUuCgkocnM2MDAwX2xpYmNhbGxfdmFsdWUpOiBTYW1lLgoJKGxlZ2l0aW1hdGVfbG9fc3VtX2FkZHJlc3NfcCk6IFJldHVybiBmYWxzZSBmb3IgZTUwMCBkb3VibGVzLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoTE9DQUxfQUxJR05NRU5UKTogQWRqdXN0IGZvciBlNTAwCglkb3VibGVzLgoJKERBVEFfQUxJR05NRU5UKTogU2FtZS4KCShDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpOiBTYW1lLgoKMjAwNC0xMC0yNiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogZXhwci5jIChlbWl0X2dyb3VwX2xvYWQpOiBIYW5kbGUgZmxvYXRzLgoJKGVtaXRfZ3JvdXBfc3RvcmUpOiBTYW1lLgoKMjAwNC0xMC0yNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtbGV4LmMgKGdldF9ub25wYWRkaW5nX3Rva2VuKTogUmVtb3ZlLgoJKGNfbGV4X3dpdGhfZmxhZ3MpOiBQdXNoIHRpbWV2YXIgYW5kIGVhdCBwYWRkaW5nIGhlcmUuICBJbXByb3ZlCglzdHJheSB0b2tlbiBkaWFnbm9zdGljLgoJKGxleF9zdHJpbmcpOiBSZXBsYWNlIGxvZ2ljIHdpdGggc3dpdGNoIHN0YXRlbWVudCwgZWF0IHBhZGRpbmcKCXRva2VuIGhlcmUuCgoyMDA0LTEwLTI2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCglQUiAxODE0OQoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoQVNNX1NQRUMpOiBVbmRlZiBpdCBiZWZvcmUgZGVmaW5pbmcuCgoyMDA0LTEwLTI1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uaCAoTElOS19TUEVDKTogRGVmYXVsdCB3ZWFrX3JlZmVyZW5jZV9taXNtYXRjaGVzCgl0byAnbm9uLXdlYWsnLgoJKE1BS0VfREVDTF9PTkVfT05MWSk6IFNldCBERUNMX1dFQUsuCgkoQVNNX01BS0VfTEFCRUxfTElOS09OQ0UpOiBEZWxldGUuCgkoQVNNX1dFQUtFTl9ERUNMKTogTmV3LgoJKEFTTV9ERUNMQVJFX09CSkVDVF9OQU1FKTogTG9vayBhdCBERUNMX1dFQUsgbm90IERFQ0xfT05FX09OTFkuCgkoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IExpa2V3aXNlLgoJKFRFWFRfU0VDVElPTl9BU01fT1ApOiBBZGQgYSB0YWIuCgkoREFUQV9TRUNUSU9OX0FTTV9PUCk6IExpa2V3aXNlLgoJKFNFQ1RJT05fRlVOQ1RJT04pOiBBZGQgYSB0YWIuICBVc2UgZnB1dHMuICBEb24ndCBjYWxsCglkYXRhX3NlY3Rpb24gb24gZXZlcnkgc2VjdGlvbiBjaGFuZ2UuCgkoRVhUUkFfU0VDVElPTlMpOiBBZGQgYSBidW5jaCBvZiBuZXcgZXh0cmEgc2VjdGlvbnMuCgkoRVhUUkFfU0VDVElPTl9GVU5DVElPTlMpOiBMaWtld2lzZS4KCShVU0VfU0VMRUNUX1NFQ1RJT05fRk9SX0ZVTkNUSU9OUyk6IERlZmluZS4KCShKQ1JfU0VDVElPTl9OQU1FKTogRGVmaW5lLgoJKFRBUkdFVF9TRUNUSU9OX1RZUEVfRkxBR1MpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZGFyd2luX2VuY29kZV9zZWN0aW9uX2luZm8pOiBBIHN5bWJvbCBpcyBkZWZpbmVkCglpbiB0aGlzIGZpbGUgaWYgaXQgaXMgbm90IHdlYWsuCgkodGV4dGNvYWxfc2VjdGlvbik6IERlbGV0ZS4KCShkYXRhY29hbF9zZWN0aW9uKTogRGVsZXRlLgoJKGRhcndpbl9tYWtlX2RlY2xfb25lX29ubHkpOiBEZWxldGUuCgkobWFjaG9waWNfc2VsZWN0X3NlY3Rpb24pOiBIYW5kbGUgZnVuY3Rpb25zLgoJKGRhcndpbl9hc21fbmFtZWRfc2VjdGlvbik6IEFkZCBhIHRhYi4KCShkYXJ3aW5fc2VjdGlvbl90eXBlX2ZsYWdzKTogRGVsZXRlLgoJKGRhcndpbl91bmlxdWVfc2VjdGlvbik6IERlbGV0ZSBjb250ZW50cy4KCShkYXJ3aW5fZW1pdF91bndpbmRfbGFiZWwpOiBBZGQgYSB0YWIuICBNYWtlIGRlY2xzIHdlYWsgaWYKCURFQ0xfV0VBSyBpcyBzZXQuCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmggKGRhcndpbl9zZWN0aW9uX3R5cGVfZmxhZ3MpOiBEZWxldGUuCgkoZGFyd2luX21ha2VfZGVjbF9vbmVfb25seSk6IERlbGV0ZS4KCSh0ZXh0X2NvYWxfc2VjdGlvbik6IE5ldy4KCSh0ZXh0X3VubGlrZWx5X3NlY3Rpb24pOiBOZXcuCgkodGV4dF91bmxpa2VseV9jb2FsX3NlY3Rpb24pOiBOZXcuCgkoY29uc3RfY29hbF9zZWN0aW9uKTogTmV3LgoJKGRhdGFfY29hbF9zZWN0aW9uKTogTmV3LgoJKGNvbnN0X2RhdGFfY29hbF9zZWN0aW9uKTogTmV3LgoJKiB2YXJhc20uYyAoZnVuY3Rpb25fc2VjdGlvbik6IEhvbm91cgoJVVNFX1NFTEVDVF9TRUNUSU9OX0ZPUl9GVU5DVElPTlMuCgkqIGR3YXJmMm91dC5jIChvdXRwdXRfY2FsbF9mcmFtZV9pbmZvKTogTG9vayBhdCBERUNMX1dFQUsgd2hlbgoJVEFSR0VUX1VTRVNfV0VBS19VTldJTkRfSU5GTyBpcyBpbiBlZmZlY3QuCgkqIGRieG91dC5jIChkYnhvdXRfc291cmNlX2ZpbGUpOiBEb24ndCBjaGFuZ2Ugc2VjdGlvbnMgd2hpbGUKCWEgZnVuY3Rpb24gaXMgYmVpbmcgb3V0cHV0LgoKMjAwNC0xMC0yNSAgRGF2aWQgQXllcnMgIDxkLmF5ZXJzQGlub2RlLmF0PgoKCSogYy1jb21tb24uaDogUmVtb3ZlIFJJRF9JRC4KCSogYy1wYXJzZS5pbjogUmVtb3ZlIE9CSkVDVE5BTUUgYW5kIHJlZmVyZW5jZXMgdG8gUklEX0lELgoJKHR5cGVzcGVjX3Jlc2VydmVkX2F0dHIpOiBBZGQgcnVsZSBmb3IgVFlQRU5BTUUKCW5vbl9lbXB0eV9wcm90b2NvbHJlZnMuCgkoeXlsZXhuYW1lKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgb2YgUklEX0lELgoKMjAwNC0xMC0yNSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpICgtZmNyb3NzanVtcGluZyk6IE5vdCBlbmFibGVkIGF0IC1PLgoKMjAwNC0xMC0yNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xNjY2NwoJKiBjLXBhcnNlLmluIChhcnJheV9kZXNpZ25hdG9yKTogTmV3LgoJKGRlc2lnbmF0b3IpOiBVc2UgaXQuCgkoaW5pdGVsdCk6IE9ubHkgcGVybWl0IGFycmF5X2Rlc2lnbmF0b3Igd2l0aG91dCAnPScsIG5vdCAiLmZvbyIuCgoyMDA0LTEwLTI1ICBLZW5uZXRoIFphZGVjayA8emFkZWNrQG5hdHVyYWxicmlkZ2UuY29tPgoJKiBNYWtlZmlsZS5pbjogcmVtb3ZlZCBnZ2MgZm9yIGNncmFwaHVuaXQuCgkqIGNncmFwaC5jLmR1bXBfY2dyYXBoX25vZGU6IHJlbW92ZWQgc3RhdGljIHZhciBhbmFseXNpcy4KCSogY2dyYXBoLmg6IHJlbW92ZWQgc3RhdGljIHZhciBhbmFseXNpcyBkYXRhIHN0cnVjdHVyZXMgYW5kIGNhbGxzLgoJKiBjZ3JhcGh1bml0LmM6CgljZ3JhcGhfbWFya19sb2NhbF9hbmRfZXh0ZXJuYWxfZnVuY3Rpb25zOmNoYW5nZWQgbmFtZSB0bwoJCWNncmFwaF9tYXJrX2xvY2FsX2Z1bmN0aW9ucwoJKHByaW50X29yZGVyLGNvbnZlcnRfVUlEc19pbl9iaXRtYXAsbmV3X3N0YXRpY192YXJzX2luZm8sCgljZ3JhcGhfcmVzZXRfc3RhdGljX3Zhcl9tYXBzLGdldF9nbG9iYWxfc3RhdGljX3ZhcnNfaW5mbywKCWdldF9nbG9iYWxfc3RhdGljc19ub3RfcmVhZCxnZXRfZ2xvYmFsX3N0YXRpY3Nfbm90X3dyaXR0ZW4sc2VhcmNoYywKCWNncmFwaF9yZWR1Y2VkX2lub3JkZXIsaGFzX3Byb3Blcl9zY29wZV9mb3JfYW5hbHlzaXMsY2hlY2tfcmhzX3ZhciwKCWNoZWNrX2xoc192YXIsZ2V0X2FzbV9leHByX29wZXJhbmRzLHByb2Nlc3NfY2FsbF9mb3Jfc3RhdGljX3ZhcnMsCglzY2FuX2Zvcl9zdGF0aWNfcmVmcyxjZ3JhcGhfY2hhcmFjdGVyaXplX3N0YXRpY3NfbG9jYWwsCgljbGVhcl9zdGF0aWNfdmFyc19tYXBzLGNncmFwaF9wcm9wYWdhdGVfYml0cyxjZ3JhcGhfY2hhcmFjdGVyaXplX3N0YXRpY3MpOgoJcmVtb3ZlZC4KCShjZ3JhcGhfb3B0aW1pemUsaW5pdF9jZ3JhcGgpOiByZW1vdmVkIGNhbGxzIHRvIHN0YXRpYyB2YXJzIGFuYWx5c2lzCgkqIHRyZWUtZGZhLmMgZmluZF9yZWZlcmVuY2VkX3ZhcnM6IHJlbW92ZWQgY2FsbCB0byBzdGF0aWMgdmFycwoJYW5hbHlzaXMKCSogdHJlZS1mbG93Lmggc3RhdGljX3ZhcnNfaW5mbzogcmVtb3ZlZAoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfY2FsbF9jbG9iYmVyX29wcyxhZGRfY2FsbF9yZWFkX29wcyk6CglyZW1vdmVkIGNhbGxzIHRvIHN0YXRpYyB2YXJzIGFuYWx5c2lzLgoJZ2V0X2NhbGxfZXhwcl9vcGVyYW5kczogcmVtb3ZlZCBjYWxsZWUgdmFyaWFibGUuCgoyMDA0LTEwLTI1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2ZnLmMgKHVuY2hlY2tlZF9tYWtlX2VkZ2UsIHJlZGlyZWN0X2VkZ2Vfc3VjYywKCXJlZGlyZWN0X2VkZ2VfcHJlZCk6IFVzZSBWRUNfc2FmZV9wdXNoIGluc3RlYWQgb2YKCVZFQ19zYWZlX2luc2VydC4KCSogY2ZncnRsLmMgKGZvcmNlX25vbmZhbGx0aHJ1X2FuZF9yZWRpcmVjdCk6IExpa2V3aXNlLgoKMjAwNC0xMC0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNmZ2xvb3BtYW5pcC5jIChsb29waWZ5KTogVGFrZSB0d28gbW9yZSBhcmd1bWVudHMgdHJ1ZV9lZGdlCglhbmQgZmFsc2VfZWRnZS4KCSogY2ZnbG9vcC5oOiBBZGp1c3QgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoJKiBsb29wLXVuc3dpdGNoLmMgKHVuc3dpdGNoX2xvb3ApOiBBZGp1c3QgYSBjYWxsIHRvIGxvb3BpZnkuCgkqIHRyZWUtc3NhLWxvb3AtbWFuaXAuYyAodHJlZV9zc2FfbG9vcF92ZXJzaW9uKTogTGlrZXdpc2UuCgoyMDA0LTEwLTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChydGxfZm9yX2RlY2xfbG9jYXRpb24pOiBBdm9pZCBzZWdmYXVsdCBpZgoJREVDTF9JTkNPTUlOR19SVEwgaXMgTlVMTC4KCjIwMDQtMTAtMjUgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHRpbWV2YXIuZGVmIChUVl9GSU5EX1JFRkVSRU5DRURfVkFSUyk6IE5ldy4KCSogdHJlZS1kZmEuYyAocGFzc19yZWZlcmVuY2VkX3Zhcik6IFVzZSBpdC4KCjIwMDQtMTAtMjUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBjc2UuYzogQ2hhbmdlIGVuY29kaW5nIG9mIHF1YW50aXR5IG51bWJlcnMgdG8gYXZvaWQgdW5kZWZpbmVkCglwb2ludGVyIGFyaXRobWV0aWMgb24gcXR5X3RhYmxlLgoJKFJFR05PX1FUWV9WQUxJRF9QKTogQSBxdWFudGl0eSBpcyBub3cgdmFsaWQgaWYgaXQgaXNuJ3QgbmVnYXRpdmUuCgkoZ2V0X2NzZV9yZWdfaW5mbyk6IEluaXRpYWxpemUgcmVnX3F0eSB0byBhIHVuaXF1ZSBuZWdhdGl2ZSB2YWx1ZS4KCShuZXdfYmFzaWNfYmxvY2spOiBBc3NpZ24gInJlYWwiIHF1YW50aXR5IG51bWJlcnMgZnJvbSB6ZXJvLgoJKGRlbGV0ZV9yZWdfZXF1aXYpOiBEbyBub3RoaW5nIGlmIHF1YW50aXR5IGlzIGludmFsaWQuICBSZXNldCB0aGUKCVJFR19RVFkgdG8gaXRzIHVuaXF1ZSBuZWdhdGl2ZSB2YWx1ZS4KCShtZXJnZV9lcXVpdl9jbGFzc2VzKTogQ2FsY3VsYXRlIG5lZWRfcmVoYXNoIGlmIHF1YW50aXR5IGlzIHZhbGlkLgoJKGNzZV9tYWluKTogRG9uJ3QgaW5jbHVkZSBtYXhfcmVnIHdoZW4gZGV0ZXJtaW5pbmcgbWF4X3F0eS4KCShjc2VfYmFzaWNfYmxvY2spOiBBdm9pZCBzdWJ0cmFjdGluZyBhIGxhcmdlIG9mZnNldCBmcm9tIHF0eV90YWJsZSwKCXdoaWNoIGNhdXNlcyB1bmRlZmluZWQgQzk5IGJlaGF2aW91ci4gIE9ubHkgYWxsb2NhdGUgbmVlZGVkIG1lbW9yeS4KCjIwMDQtMTAtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzdG10LmMgKGV4cGFuZF9jYXNlKTogUmVtb3ZlIGFuIG9ic29sZXRlIGNvbW1lbnQuCgoyMDA0LTEwLTI1ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzE3NDA3CgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcikgPGNhc2UgY2RrX2FycmF5PjogUmVtb3ZlIHRoZSBjYWxsCglsYXlvdXRfdHlwZSBhcyBpdCBpcyBhbHJlYWR5IGRvbmUgYnkgYnVpbGRfYXJyYXlfdHlwZS4KCSogdHJlZS5jIChidWlsZF9hcnJheV90eXBlKTogTGF5b3V0IHRoZSB0eXBlIGV2ZW4KCjIwMDQtMTAtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9saW51eC5oIChUQVJHRVRfQzk5X0ZVTkNUSU9OUyk6IERlZmluZSB0byAwLgoKMjAwNC0xMC0yNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5tZCAobW92ZGksIG1vdmRmKTogSGFuZGxlIHdpZGUtY29uc3RhbnQgc3BsaXRzCgl3aXRoIHdpZGVyLXRoYW4tMzItYml0IEhPU1RfV0lERV9JTlRzLgoKMjAwNC0xMC0yNSAgRGF2aWQgQmlsbGluZ2h1cnN0IDxEYXZpZC5CaWxsaW5naHVyc3RAcmlvdGludG8uY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jKG1pcHNfb3V0cHV0X2ZpbGVuYW1lKTogUmVtb3ZlIHVudXNlZAoJYXJyYXkgbHRleHRfbGFiZWxfbmFtZQoKMjAwNC0xMC0yNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BnZW9mZmsub3JnPgoKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoQkxPQ0tfUkVHX1BBRERJTkcpOiBEZWZpbmUuCgoyMDA0LTEwLTI1ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNmZ2NsZWFudXAuYyAob3V0Z29pbmdfZWRnZXNfbWF0Y2gpOiBGaXggdHlwbyBpbiBkdW1wIG91dHB1dC4KCjIwMDQtMTAtMjMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogcHJlZGljdC5jIChwcmVkaWN0X2xvb3BzKTogQ2FsbCBzY2V2X2ZpbmFsaXplIGluc3RlYWQgb2YKCXNjZXZfcmVzZXQuCgoyMDA0LTEwLTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2RieGNvZmYuaCwgY29uZmlnL2RieGVsZi5oLCBjb25maWcvbGliZ2xvc3MuaCwKCWNvbmZpZy9vcGVuYnNkLmgsIGNvbmZpZy9taXBzL3IzOTAwLmgsIGNvbmZpZy9wZHAxMS9wZHAxMS5tZCwKCWNvbmZpZy9zaC91c2htZWRpYS5oLCBjb25maWcvc3BhcmMvZWxmLmgsCgljb25maWcvc3BhcmMvc3A2NC1lbGYuaDogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDQtMTAtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzdG10LmMgKGV4cGFuZF9jYXNlKTogSGFuZGxlIHRoZSBkZWZhdWx0IGxhYmVsIG91dHNpZGUgb2YKCXRoZSBmb3IgbG9vcC4gIFJlbW92ZSBjb2RlIHRvIGhhbmRsZSBhIG1pc3NpbmcgZGVmYXVsdCBsYWJlbC4KCjIwMDQtMTAtMjMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkYnhvdXQuYyAoZGJ4b3V0X2Z1bmN0aW9uX2RlY2wpOiBEb24ndCB1c2UKCURCWF9PVVRQVVRfRlVOQ1RJT05fRU5ELgoJKiBzeXN0ZW0uaDogUG9pc29uIERCWF9PVVRQVVRfRlVOQ1RJT05fRU5ELgoJKiBkb2MvdG0udGV4aSAoREJYX09VVFBVVF9GVU5DVElPTl9FTkQpOiBSZW1vdmUuCgoyMDA0LTEwLTIzICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzE3OTY3CgkqIHRyZWUtY2ZnLmMgKHJlbW92ZV91c2xlc3Nfc3RtdHNfY29uZCk6IERvbid0IEZvbGQgc3RhdGVtZW50LgoKMjAwNC0xMC0yMyAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1kb20uYyAocmVjb3JkX2VxdWFsaXR5KTogVXNlIGxvb3AgZGVwdGggdG8gZGV0ZXJtaW5lCgl3aGljaCB3YXkgdG8gcmVjb3JkIHRoZSBlcXVhbGl0eSBhcyB3ZWxsLgoJKGxvb3BfZGVwdGhfb2ZfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCjIwMDQtMTAtMjMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgbWlkZGxlLWVuZC8xNzc5MwoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9hZGRyX2V4cHIpIDxWSUVXX0NPTlZFUlRfRVhQUj46IExvb2sKCXRocm91Z2ggdGhlIG9wZXJhbmQgaWYgaXQgaXMgYSB1c2VsZXNzIHR5cGUgY29udmVyc2lvbi4KCjIwMDQtMTAtMjMgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY2ZnLmMgKHJlbW92ZV9lZGdlKTogVXNlIFZFQ191bm9yZGVyZWRfcmVtb3ZlLgoJKHJlZGlyZWN0X2VkZ2Vfc3VjYyk6IExpa2V3aXNlLgoJKHJlZGlyZWN0X2VkZ2VfcHJlZCk6IExpa2V3aXNlLgoJKiBjZmdydGwuYyAoZm9yY2Vfbm9uZmFsbHRocnVfYW5kX3JlZGlyZWN0KTogTGlrZXdpc2UuCgoyMDA0LTEwLTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc2JpdG1hcC5oIChFWEVDVVRFX0lGX1NFVF9JTl9TQklUTUFQKTogRG9uJ3QgYWNjZXNzIFBUUgoJYmV5b25kIGl0cyBlbmQuCgoyMDA0LTEwLTIyICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHNldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBBbGlnbiBERm1vZGUKCXNhdmVzLgoKMjAwNC0xMC0yMiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKHNwZV9leHRlbmRzZmRmMik6IE5ldy4KCShtb3ZkZl9lNTAwX2RvdWJsZSk6IE5ldy4KCShzcGVfdHJ1bmNkZnNmMik6IE5ldy4KCShzcGVfYWJzZGYyKTogTmV3LgoJKHNwZV9uYWJzZGYyKTogTmV3LgoJKHNwZV9uZWdkZjIpOiBOZXcuCgkoc3ViX2FkZGRmMyk6IE5ldy4KCShzcGVfc3ViZGYzKTogTmV3LgoJKHNwZV9tdWxkZjMpOiBOZXcuCgkoc3BlX2Zsb2F0c2lkZjIpOiBOZXcuCgkoc3BlX2Zsb2F0dW5zc2lkZjIpOiBOZXcuCgkoZml4X3RydW5jZGZzaTIpOiBOZXcuCgkoc3BlX2ZpeHVuc190cnVuY2Rmc2kyKTogTmV3LgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKHRydW5jZGZzZjIpOiBDaGFuZ2UgdG8gZXhwYW5kZXIuCgkoZnByX3RydW5jZGZzZjIpOiBOZXcuCgkobmVnZGYyKTogQ2hhbmdlIHRvIGV4cGFuZGVyLgoJKGZwcl9uZWdkZjIpOiBOZXcuCgkoZnByX25hYnNkZjIpOiBOYW1lIHBhdHRlcm4uCgkoYWRkZGYzKTogQ2hhbmdlIHRvIGV4cGFuZGVyLgoJKGZwcl9hZGRkZjMpOiBOZW0uCgkoc3ViZGYzKTogQ2hhbmdlIHRvIGV4cGFuZGVyLgoJKGZwcl9zdWJkZjMpOiBOZXcuCgkobXVsZGYzKTogQ2hhbmdlIHRvIGV4cGFuZGVyLgoJKGZwcl9tdWxkZjMpOiBOZXcuCgkoZGl2ZGYzKTogQ2hhbmdlIHRvIGV4cGFuZGVyLgoJKGZwcl9kaXZkZjMpOiBOZXcuCgkobW92ZGZfc29mdGZsb2F0MzIpOiBDaGFuZ2UgIVRBUkdFVF9GUFJTIHRvIFRBUkdFVF9FNTAwX1NJTkdMRS4KCShjbXBkZik6IEFsbG93IGZvciBUQVJHRVRfRTUwMF9ET1VCTEUuCgoyMDA0LTEwLTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1zZW1hbnRpY3MuYyAocmVfcHVzaF9zdG10X2xpc3QpOiBSZW1vdmUuCgkqIGMtY29tbW9uLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoyMDA0LTEwLTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc3RtdC5jIChhc21fb3BfaXNfbWVtX2lucHV0KTogUmVtb3ZlLgoJKiB0cmVlLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoyMDA0LTEwLTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX2NvbnN0cnVjdG9yX2VsdCk6IFJlbW92ZS4KCSogdHJlZS1naW1wbGUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZS4KCjIwMDQtMTAtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB2YXJhc20uYyAoZ2V0X3Bvb2xfbW9kZV9mb3JfZnVuY3Rpb24sIGdldF9wb29sX29mZnNldCk6CglSZW1vdmUuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlcy4KCjIwMDQtMTAtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jICh0aHJlYWRfanVtcHNfZnJvbV9iYik6IFNwZWVkIHVwIGJ5IGV4dHJhY3RpbmcKCWVkZ2UgaW5mb3JtYXRpb24gd2hlbiB3ZSBjb21taXQgb3Vyc2VsdmVzIHRvIHRocmVhZGluZyBhCglwYXJ0aWN1bGFyIGp1bXAuCgoyMDA0LTEwLTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1jZmcuYyAodGhyZWFkX2p1bXBzKTogU3BlZWQgdXAgYnkgcHV0dGluZyBiYXNpYyBibG9ja3MKCWludG8gd29ya2xpc3QgaW5zdGVhZCBvZiB0aGVpciBpbmRleGVzLgoKMjAwNC0xMC0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGFsaWFzLmMsIGJhc2ljLWJsb2NrLmgsIGNncmFwaHVuaXQuYywgY29tYmluZS5jLCBkb213YWxrLmgsCglmaW5hbC5jLCBnZW5ndHlwZS5jLCBnZW5wcmVkcy5jLCBnZ2MtcGFnZS5jLCBpbnNuLW5vdGVzLmRlZiwKCWxhbWJkYS1jb2RlLmMsIGxvb3AtdW5yb2xsLmMsIG1vZHVsby1zY2hlZC5jLCBwb2ludGVyLXNldC5jLAoJcHJldHR5LXByaW50LmMsIHJhLWNvbG9yaXplLmMsIHNiaXRtYXAuYywgdHJlZS1jb21wbGV4LmMsCgl0cmVlLWRhdGEtcmVmLmMsIHRyZWUtZGZhLmMsIHRyZWUtaW5saW5lLmMsIHRyZWUtaW50by1zc2EuYywKCXRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jLCB0cmVlLXNzYS1kb20uYywKCXRyZWUtc3NhLWxvb3AtbWFuaXAuYywgdHJlZS1zc2EtbG9vcC1uaXRlci5jLAoJdHJlZS1zc2EtcGhpb3B0LmMsIHRyZWUtc3NhLXByZS5jLCB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYywKCXRyZWUtdmVjdG9yaXplci5jLCB2ZWMuaDogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCjIwMDQtMTAtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkd2FyZi5oLCBndGhyLWRjZS5oLCBndGhyLXNpbmdsZS5oLCBndGhyLXNvbGFyaXMuaCwgZ3Roci5oLAoJbGliZnVuY3MuaCwgbGliZ2NjMi5oLCBzdGFiLmRlZiwgdHN5c3RlbS5oOiBVcGRhdGUgY29weXJpZ2h0LgoKMjAwNC0xMC0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9wdHg0LmgsIGNvbmZpZy9tY29yZS9tY29yZS1wZS5oLAoJY29uZmlnL3JzNjAwMC9lYWJpLmgsIGNvbmZpZy92YXgvZWxmLmg6IFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA0LTEwLTIyICBQZXRlciBCYXJhZGEgPHBldGVyQHRoZS1iYXJhZGFzLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoSEFSRF9SRUdOT19SRU5BTUVfT0spOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19oYXJkIHJlZ25vX3JlbmFtZV9vayk6IERpc2FsbG93CglyZW5hbWluZyBvZiBub24tbGl2ZSByZWdpc3RlcnMgaW4gaW50ZXJydXB0IGZ1bmN0aW9ucy4KCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaCAobTY4a19oYXJkX3JlZ25vX3JlbmFtZV9vayk6IEFkZCBwcm90b3R5cGUuCgoyMDA0LTEwLTIyICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChpbnZlcnNlKTogQ291bnQgaW4gSE9TVF9XSURFX0lOVCBpZiBwb3NzaWJsZS4KCVVzZSBpbnRlZ2VyIGZvciBsb29wIGNvdW50ZXIuCgkobnVtX2VuZGluZ196ZXJvcyk6IE5ldyBmdW5jdGlvbi4KCShudW1iZXJfb2ZfaXRlcmF0aW9uc19jb25kKTogVXNlIG51bV9lbmRpbmdfemVyb3MuCgoyMDA0LTEwLTIxICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjOiBBZGQgc3VwcG9ydCBmb3IgLS1lbmFibGUtZTUwMF9kb3VibGUuCgoJKiBjb25maWcvcnM2MDAwL2U1MDAtZG91YmxlLmg6IE5ldyBmaWxlLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogRGVmaW5lIFRBUkdFVF9FNTAwX1NJTkdMRSBhbmQKCVRBUkdFVF9FNTAwX0RPVUJMRS4KCgkqIGNvbmZpZy9yczYwMDAvZWFiaS5oOiBEZWZpbmUgVEFSR0VUX0U1MDBfU0lOR0xFIGFuZAoJVEFSR0VUX0U1MDBfRE9VQkxFLgoKCSogY29uZmlnL3JzNjAwMC9saW51eHNwZS5oOiBTYW1lLgoKCSogZG9jL2ludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSk6IERvY3VtZW50IG5ldyBvcHRpb25zIGZvcgoJbWZsb2F0LWdwcnMuCgkoUlMvNjAwMCBhbmQgUG93ZXJQQyBPcHRpb25zKTogU2FtZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9wYXJzZV9mbG9hdF9ncHJzX29wdGlvbik6IE5ldwoJZnVuY3Rpb24uCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBVc2UgaXQuICBVc2UKCVNVQjNUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUy4KCUFkZCA4NTQ4IHRvIHByb2Nlc3Nvcl90YXJnZXRfdGFibGUuCgkocnM2MDAwX2xlZ2l0aW1hdGVfYWRkcmVzcyk6IEhhbmRsZSBlNTAwIGRvdWJsZXMuCgkocnM2MDAwX2xlZ2l0aW1pemVfYWRkcmVzcyk6IFNhbWUuCgkocnM2MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MpOiBTYW1lLgoJKHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzKTogU2FtZS4KCShzcGVfZnVuY19oYXNfNjRiaXRfcmVnc19wKTogU2FtZS4KCShlbWl0X2ZyYW1lX3NhdmUpOiBTYW1lLgoJKGdlbl9mcmFtZV9tZW1fb2Zmc2V0KTogU2FtZS4KCShyczYwMDBfZHdhcmZfcmVnaXN0ZXJfc3Bhbik6IFNhbWUuCgkocnM2MDAwX2dlbmVyYXRlX2NvbXBhcmUpOiBTYW1lLgoJKGVhc3lfZnBfY29uc3RhbnQpOiBTYW1lLgoJKGxlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCk6IFNhbWUuCgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZDogKGNtZGZlcV9ncHIpOiBOZXcuCgkodHN0ZGZlcV9ncHIpOiBOZXcuCgkoY21wZGZndF9ncHIpOiBOZXcuCgkodHN0ZGZndF9ncHIpOiBOZXcuCgkodHN0ZGZndF9ncHIpOiBOZXcuCgkoY21wZGZsdF9ncHIpOiBOZXcuCgkodHN0ZGZsdF9ncHIpOiBOZXcuCglBZGQgbmV3IGNvbnN0YW50cy4KCjIwMDQtMTAtMjEgIEdpb3Zhbm5pIEJham8gIDxnaW92YW5uaWJham9AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvYXJjL2xpYjFmdW5jcy5hc20gKF9fX3VtdWxzaWRpMyk6IEZpeCB0eXBvLgoKMjAwNC0xMC0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRieG91dC5jOiBSZW1vdmUgdW5uZWNlc3NhcnkgI3VuZGVmcy4KCShHREJfSU5WX1JFRl9SRUdQQVJNX1NUQUJTX0xFVFRFUiwgREJYX01FTVBBUk1fU1RBQlNfTEVUVEVSKQoJKEZJTEVfTkFNRV9KT0lORVIsIFNUQUJTX0dDQ19NQVJLRVIpOiBSZW1vdmU7IGZvbGQgc29sZQoJZGVmaW5pdGlvbiBpbnRvIHVzZSBzaXRlcy4KCShjd2QpOiBNYWtlIGxvY2FsIHRvIGRieG91dF9pbml0LgoJKGRieG91dF9pbml0KTogUmVzdHJ1Y3R1cmUgY3dkLXVzaW5nIGxvZ2ljIGZvciBjbGFyaXR5LiAgVXNlCglJU19ESVJfU0VQQVJBVE9SLgoJKiB4Y29mZm91dC5oIChEQlhfT1VUUFVUX0dDQ19NQVJLRVIpOiBEZWZpbml0aW9uIG9mCglTVEFCU19HQ0NfTUFSS0VSIGZvbGRlZCBpbiBoZXJlLgoJKiBzeXN0ZW0uaDogUG9pc29uIG5vdy11bnVzZWQgbWFjcm9zLgoJKiBkb2MvdG0udGV4aTogUmVtb3ZlIGRvY3VtZW50YXRpb24gb2Ygbm93LXVudXNlZCBtYWNyb3MuCgoyMDA0LTEwLTIxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBjLzE3NTM4CgkqIGMtb3B0cy5jIChwdXNoX2NvbW1hbmRfbGluZV9pbmNsdWRlKTogVXNlIHRoZSBjdXJyZW50IGZpbGUKCW5hbWUgaW5zdGVhZCBvZiB0aGUgbWFpbiBvbmUuCgoyMDA0LTEwLTIxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBvYmpjLzE3OTIzCgkqIHRyZWUuYyAoc3RhdGljcCk6IEEgQ09OU1RfREVDTCBoYXMgc3RhdGljIHN0b3JhZ2UgaWYgZWl0aGVyCglUUkVFX1NUQVRJQyBvciBERUNMX0VYVEVSTkFMIGlzIHNldC4KCSogYy1kZWNsLmMgKHB1c2hkZWNsX3RvcF9sZXZlbCk6IEFjY2VwdCBDT05TVF9ERUNMcyB3aGljaCBjYW4KCWhhdmUgbnVsbCBuYW1lcy4KCjIwMDQtMTAtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBSZW1vdmUgZG9udF9zdG9yZV90YXJnZXQuCgoyMDA0LTEwLTIxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1jZmcuYyAodGhyZWFkX2p1bXBzKTogU3BlZWQgdXAgYnkgdXNpbmcgYSB3b3JrbGlzdC4KCjIwMDQtMTAtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jICh0aHJlYWRfanVtcHMpOiBNb3ZlIGEgcGFydCBvZiBpdCB0byAuLi4KCSh0aHJlYWRfanVtcHNfZnJvbV9iYik6IC4uLiBoZXJlLgoKMjAwNC0xMC0yMSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZGJ4b3V0LmMgKERCWF9GSU5JU0hfU1lNQk9MKTogQWRkIGFzbV9vdXRfZmlsZSBhcmd1bWVudC4KCSogeGNvZmZvdXQuaCAoREJYX0ZJTklTSF9TWU1CT0wpOiBDaGFuZ2UgYXNtZmlsZSB0byAoQVNNRklMRSkuCgoyMDA0LTEwLTIxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZXhwci5jIChzdG9yZV9leHByKTogQ2xlYW4gdXAgYnkgcmVuYW1pbmcgd2FudF92YWx1ZSB0bwoJY2FsbF9wYXJhbV9wLgoKMjAwNC0xMC0yMSAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvbGludXgtdW53aW5kLmggKHNoX2ZhbGxiYWNrX2ZyYW1lX3N0YXRlKTogRG9uJ3QKCWZpeHVwIHBjIGhlcmUuCgoyMDA0LTEwLTIxICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJUFIgMTgwMDQuCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBQYXNzIG9yaWdpbmFsICd2YWx1ZScgYmVmb3JlCglyZWN1cnNpbmcuCgoyMDA0LTEwLTIxICBOaWNvbGFzIFBpdHJlIDxuaWNvQGNhbS5vcmc+CgoJKiBjb25maWcvYXJtL2llZWU3NTQtc2YuUzogTGFyZ2Ugc3BlZWQgaW1wcm92ZW1lbnRzLiBGaXggTkFOIGhhbmRsaW5nLgoJKiBjb25maWcvYXJtL2llZWU3NTQtZGYuUzogRGl0dG8uCgoyMDA0LTEwLTIwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGJ4b3V0LmMgKGFzbWZpbGUpOiBEZWxldGUuICBBbGwgdXNlcyBjaGFuZ2VkIHRvIGFzbV9vdXRfZmlsZS4KCShEQlhfQkxPQ0tTX0ZVTkNUSU9OX1JFTEFUSVZFLCBEQlhfTElORVNfRlVOQ1RJT05fUkVMQVRJVkUpOgoJRGVmYXVsdCB0byAwLgoJKGRieG91dF9zb3VyY2VfbGluZSk6IFVzZSBEQlhfT1VUUFVUX1NPVVJDRV9MSU5FIHdoZW4gZGVmaW5lZC4KCVdoZW4gaXQgaXMgbm90LCBidXQgREJYX0xJTkVTX0ZVTkNUSU9OX1JFTEFUSVZFIGlzIHRydWUsIGVtaXQKCWFuIGludGVybmFsIGxhYmVsIGFuZCBhbiBOX1NMSU5FIC5zdGFibiB3aG9zZSB2YWx1ZSBpcyB0aGUKCWRpZmZlcmVuY2UgYmV0d2VlbiB0aGF0IGxhYmVsIGFuZCB0aGUgZnVuY3Rpb24gZW50cnkgbGFiZWwuCgkoZGJ4b3V0X2ZpbmlzaCk6IElmIERCWF9PVVRQVVRfTUFJTl9TT1VSQ0VfRklMRV9FTkQgaXMgbm90IGRlZmluZWQsCglidXQgREJYX09VVFBVVF9OVUxMX05fU09fQVRfTUFJTl9TT1VSQ0VfRklMRV9FTkQgaXMsIGVtaXQgYQoJbGFiZWwgYW5kIGFuIE5fU08gc3RhYiB3aXRoIGFuIGVtcHR5IHN0cmluZyByZWZlcnJpbmcgdG8gaXQuCgkoZGJ4X291dHB1dF9sYnJhYywgZGJ4X291dHB1dF9yYnJhYyk6IFVzZSBpZiBzdGF0ZW1lbnQgaW5zdGVhZAoJb2YgI2lmZGVmIGRpcmVjdGl2ZSB0byB0ZXN0IERCWF9CTE9DS1NfRlVOQ1RJT05fUkVMQVRJVkUuCgkoZGJ4b3V0X3R5cGVfbWV0aG9kcywgZGJ4b3V0X3N5bWJvbCk6IFJlbW92ZSAjaWYgMCBibG9jay4KCShkYnhvdXRfcHJlcGFyZV9zeW1ib2wpOiBSZW1vdmUgI2lmZGVmIFdJTk5JTkdfR0RCIGJsb2NrLCB0aGlzCgltYWNybyBpcyBuZXZlciBkZWZpbmVkLgoJKiBzZGJvdXQuYyAoc2Rib3V0X3NvdXJjZV9saW5lX2NvdW50ZXIpOiBEZWxldGUuCgkoUFVUX1NEQl9TUkNfRklMRSk6IERlbGV0ZS4gIFVzZXMgcmVwbGFjZWQgd2l0aCBzb2xlIGRlZmluaXRpb24uCgkoc2Rib3V0X3NvdXJjZV9saW5lKTogVXNlIFNEQl9PVVRQVVRfU09VUkNFX0xJTkUsIHdoaWNoIHRha2VzCglvbmx5IHR3byBhcmd1bWVudHMuCgkqIHhjb2Zmb3V0LmMgKEFTTV9PVVRQVVRfU09VUkNFX0xJTkUpOiBSZW5hbWUgQVNNX09VVFBVVF9MSU5FLgoKCSogY29uZmlnL2RieGNvZmYuaCwgY29uZmlnL2RieGVsZi5oOiBSZW1vdmUgdW5uY2Vzc2FyeSAjdW5kZWZzLgoJKiBjb25maWcvYzR4L2M0eC5oLCBjb25maWcvcGEvcGEuaDogUmVtb3ZlIHVubmVjZXNzYXJ5IG1hY3JvCglkZWZpbml0aW9ucyAoaWRlbnRpY2FsIHRvIGRlZmF1bHQpLgoJKiBjb25maWcvZGFyd2luLmgsIGNvbmZpZy9kYnhjb2ZmLmgsIGNvbmZpZy9kYnhlbGYuaCwgY29uZmlnL3B0eDQuaAoJKiBjb25maWcvaDgzMDAvY29mZi5oLCBjb25maWcvcGEvc29tLmgsIGNvbmZpZy9zaC9lbGYuaDoKCURlZmluZSBEQlhfT1VUUFVUX05VTExfTl9TT19BVF9NQUlOX1NPVVJDRV9GSUxFX0VORCwgbm90CglEQlhfT1VUUFVUX01BSU5fU09VUkNFX0ZJTEVfRU5ELgoJKiBjb25maWcvZGJ4Y29mZi5oLCBjb25maWcvZGJ4ZWxmLmgsIGNvbmZpZy9wdHg0LmgKCSogY29uZmlnL21jb3JlL21jb3JlLXBlLmgsIGNvbmZpZy9wYS9zb20uaCwgY29uZmlnL3NoL2VsZi5oOgoJRGVmaW5lIERCWF9MSU5FU19GVU5DVElPTl9SRUxBVElWRSwgbm90IEFTTV9PVVRQVVRfU09VUkNFX0xJTkUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaDogRG9uJ3QgcHJvdG90eXBlIGFscGhhX291dHB1dF9saW5lbm8uCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jOiBNb3ZlIGRlY2xhcmF0aW9uIG9mIG51bV9zb3VyY2VfZmlsZW5hbWVzIHVwLgoJKGFscGhhX3N0YXJ0X2Z1bmN0aW9uKTogVXNlIFNEQl9PVVRQVVRfU09VUkNFX0xJTkUuCgkoc3ltX2xpbmVubyk6IERlbGV0ZS4KCShhbHBoYV9vdXRwdXRfZmlsZW5hbWUpOiBEbyBub3QgZW1pdCBOX1NPTCBzdGFicyBoZXJlLiAgUmVtb3ZlCglub3ctdW51c2VkIHZhcmlhYmxlLgoJKGFscGhhX291dHB1dF9saW5lbm8pOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmg6IERvbid0IHByb3RvdHlwZSBtaXBzX291dHB1dF9saW5lbm8uCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19vdXRwdXRfZmlsZW5hbWUpOiBEb24ndCB1c2UKCUFTTV9PVVRQVVRfRklMRU5BTUUuIERvbid0IGVtaXQgTl9TT0wgc3RhYnMgaGVyZS4KCShtaXBzX291dHB1dF9saW5lbm8pOiBEZWxldGUuCgkobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWU6IFVzZSBTREJfT1VUUFVUX1NPVVJDRV9MSU5FLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaDogRGVmaW5lIERCWF9PVVRQVVRfU09VUkNFX0xJTkUgYW5kCglTREJfT1VUUFVUX1NPVVJDRV9MSU5FLCBub3QgQVNNX09VVFBVVF9TT1VSQ0VfTElORS4KCSogY29uZmlnL21pcHMvbWlwcy5oOiBMaWtld2lzZS4gIERvbid0IGRlZmluZSBBU01fT1VUUFVUX0ZJTEVOQU1FLgoJKiBjb25maWcvbWlwcy9zZGIuaDogVXNlIFNEQl9PVVRQVVRfU09VUkNFX0xJTkUuCgkqIGNvbmZpZy9hdnIvYXZyLmg6IERvbid0IGRlZmluZSBBU01fT1VUUFVUX1NPVVJDRV9MSU5FLgoJKiBjb25maWcvbW1peC9tbWl4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvbW1peC9tbWl4LmMgKG1taXhfYXNtX291dHB1dF9zb3VyY2VfbGluZSk6IERlbGV0ZS4KCSogY29uZmlnL21taXgvbW1peC1wcm90b3MuaDogRG9uJ3QgcHJvdG90eXBlIGl0LgoJKiBjb25maWcvYWxwaGEvdW5pY29zbWsuaDogQWxzbyAjdW5kZWYgUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFOwoJbm8gbmVlZCB0byAjdW5kZWYgQVNNX09VVFBVVF9TT1VSQ0VfTElORS4KCSogY29uZmlnL2FybS9hb3V0Lmg6IFJlbW92ZSBSSVNDaVgtc3BlY2lmaWMgZGVmaW5pdGlvbiBvZgoJREJYX09VVFBVVF9NQUlOX1NPVVJDRV9GSUxFTkFNRS4KCSogY29uZmlnL20zMnIvbTMyci5oOiBEZWZpbmUgREJYX09VVFBVVF9TT1VSQ0VfTElORSwgbm90CglBU01fT1VUUFVUX1NPVVJDRV9MSU5FLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoQVNNX09VVFBVVF9TT1VSQ0VfTElORSk6IFJlbmFtZSB0bwoJREJYX09VVFBVVF9TT1VSQ0VfTElORS4gIERvbid0IHVzZSBjdXJyZW50X2Z1bmN0aW9uX2Z1bmNfYmVnaW5fbGFiZWwuCgkqIGNvbmZpZy92YXgvZWxmLmg6IE5vIG5lZWQgdG8gZGVmaW5lIERCWF9PVVRQVVRfRlVOQ1RJT05fRU5ELgoKCSogZG9jL3RtLnRleGk6IFVwZGF0ZS4KCjIwMDQtMTAtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNyYS5jIChpbnN0YW50aWF0ZV9lbGVtZW50KTogQ29weSBERUNMX0lHTk9SRURfUCBhbHNvLgoKMjAwNC0xMC0yMCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogUmV2ZXJ0IG15IHByZXZpb3VzIHBhdGNoLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTEwLTIwICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMKCShyczYwMDBfdmFfc3RhcnQpOiBVc2UgYnVpbGRfdmFfYXJnX2luZGlyZWN0X3JlZi4KCShyczYwMDBfZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCgoyMDA0LTEwLTIwICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNTU3NQoJKiBjb25maWd1cmUuYWM6IERlY2xhcmUgQU1fTEFOR0lORk9fQ09ERVNFVC4KCSogYWNsb2NhbC5tNDogRGVmaW5lIEFNX0xBTkdJTkZPX0NPREVTRVQuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoKMjAwNC0xMC0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cHIuYyAoc3RvcmVfZXhwcik6IFJlbW92ZSBjb2RlIHRoYXQgaXMgcnVuIHdoZW4KCXdhbnRfdmFsdWUgJiAxIGlzIG5vbnplcm8uCgoyMDA0LTEwLTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ3Roci1wb3NpeC5oIChfX2d0aHJlYWRfYWN0aXZlX3ApOiBVc2UgX19leHRlbnNpb25fXyBhcm91bmQgY2FzdAoJZnJvbSBmdW5jdGlvbiBwb2ludGVyIHRvIHZvaWQgKi4KCjIwMDQtMTAtMjAgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8xODAzMgoJKiBjb25maWcvc2gvc2guYyAoc2hfZXhwYW5kX2VwaWxvZ3VlKTogRW1pdCBhIGJsb2NrYWdlIGluc24gYmVmb3JlCgl0aGUgZnJhbWUgcG9pbnRlciBhZGp1c3RtZW50IHdoZW4gZXhjZXB0aW9uIGhhbmRsaW5nIGlzIGVuYWJsZWQuCgoyMDA0LTEwLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc3Rvci1sYXlvdXQuYzogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNC0xMC0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cHIuYyAoc3RvcmVfZmllbGQpOiBSZW1vdmUgdHdvIGFyZ3VtZW50cyB2YWx1ZV9tb2RlIGFuZAoJdW5zaWduZWRwLgoJKGV4cGFuZF9hc3NpZ25tZW50LCBzdG9yZV9jb25zdHJ1Y3Rvcl9maWVsZCwKCWV4cGFuZF9leHByX3JlYWxfMSk6IEFkanVzdCBjYWxscyB0byBzdG9yZV9maWVsZC4KCjIwMDQtMTAtMTggIFJhbWFuYSBSYWRoYWtyaXNobmFuICA8cmFtYW5hLnJhZGhha3Jpc2huYW5AY29kaXRvLmNvbT4KCgkqIGNvbmZpZy9hcmMvbGliMWZ1bmNzLmFzbSAoX19fdW11bHNpZGkzKTogQ29ycmVjdCB1c2FnZSBvZiBmbGFncy4KCglQUiB0YXJnZXQvMTczMTcKCSogY29uZmlnL2FyYy9hcmMuaCAoUkVHTk9fT0tfRk9SX0JBU0VfUCxSRUdOT19PS19GT1JfSU5ERVhfUCwKCVJFR19PS19GT1JfQkFTRSwgUkVHX09LX0ZPUl9JTkRFWCk6IENvbnNpZGVyIGJsaW5rKHIzMSkgYXMgYSB2YWxpZAoJYmFzZSBhbmQgaW5kZXggcmVnaXN0ZXIgZm9yIGxvYWRzLgoKCSogY29uZmlnL2FyYy90LWFyYzogRml4IG11bHRpbGliIGhhbmRsaW5nLgoKMjAwNC0xMC0yMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogY2ZncnRsLmMgKHJ0bF92ZXJpZnlfZmxvd19pbmZvXzEpOiBXaGVuIGNoZWNraW5nIGluc25zIGluIGEgYmIsCglkb24ndCBpbnNwZWN0IEJMT0NLX0ZPUl9JTlNOIGZvciBiYXJyaWVycy4KCSogZW1pdC1ydGwuYyAoZW1pdF9iYXJyaWVyX2JlZm9yZSk6IFJldmVydCBsYXN0IGNoYW5nZS4KCShlbWl0X2JhcnJpZXJfYWZ0ZXIsIGVtaXRfYmFycmllcik6IERpdHRvLgoKCSogZG9jL2V4dGVuZC50ZXhpIChFeHRlbmRlZCBBc20pOiBXYXJuIGFuZCBwcm92aWRlIGV4YW1wbGUKCXNvbHV0aW9uIGZvciB1c2luZyBhIGNhbGwtY2xvYmJlcmVkIGFzbSByZWdpc3Rlci4KCShMb2NhbCBSZWcgVmFycyk6IFNpbWlsYXIuICBDcm9zcy1yZWZlcmVuY2UgZXhhbXBsZS4KCjIwMDQtMTAtMTkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogdHJlZS1jZmcuYyAoZ3JvdXBfY2FzZV9sYWJlbHMpOiBMb29rIGF0IHRoZSBzZWNvbmQgdG8gbGFzdAoJY2FzZSBzdGF0ZW1lbnQgZm9yIGNvbWJpbmcgd2l0aCB0aGUgZGVmYXVsdCBjYXNlLgoKMjAwNC0xMC0xOSAgUmljaGFyZCBIZW5kZXNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIDE3OTYyCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF90eXBlKTogU2V0IFRZUEVfQUxJR04gZm9yIHZlY3RvcnMuCgoyMDA0LTEwLTE5ICBSaWNoYXJkIEhlbmRlc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1tb3ZlKTogSWYgZm9sZF9idWlsdGluX21lbW1vdmUKCXN1Y2NlZWRzLCBvbmx5IGV4cGFuZCB0aGUgcmVzdWx0LgoKMjAwNC0xMC0xOSAgUmljaGFyZCBIZW5kZXNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTc4ODUKCSogdHJlZS5jIChyZWNvbXB1dGVfdHJlZV9pbnZhcmFudF9mb3JfYWRkcl9leHByKTogQWx3YXlzIHBvbGwgYWRkcmVzcwoJb2YgSU5ESVJFQ1RfUkVGLgoKMjAwNC0xMC0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmMgKHRocmVhZF9qdW1wcyk6IFVzZSBhIGRvLXdoaWxlIGxvb3AgaW5zdGVhZCBvZiBhCglsb29wIHdpdGggZ290by4KCjIwMDQtMTAtMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50KTogUmVtb3ZlIHRoZSBsYXN0IGFyZ3VtZW50LgoJQ2hhbmdlIHRoZSByZXR1cm4gdHlwZSB0byB2b2lkLgoJKiBleHByLmg6IFVwZGF0ZSB0aGUgcHJvdG90eXBlIG9mIGV4cGFuZF9hc3NpZ25tZW50LgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybV9zZXR1cF9yZWcpOiBVcGRhdGUgYSBjYWxsIHRvCglleHBhbmRfYXNzaWdubWVudC4KCSogc3RtdC5jIChleHBhbmRfYXNtX2V4cHIpOiBMaWtld2lzZS4KCjIwMDQtMTAtMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSkgPE1PRElGWV9FWFBSPjogUmVtb3ZlCgl1bm5lY2Vzc2FyeSBhc3NpZ25tZW50cyB0byB0ZW1wLiAgUmV0dXJuIGNvbnN0MF9ydHguCgoyMDA0LTEwLTE5ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5jIChzaDVfc2NoZWR1bGVfc2F2ZXMpOiBGaXggdHlwby4KCjIwMDQtMTAtMTggIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuYWMgKHBvd2VycGMtKi1kYXJ3aW4qKTogUmVxdWlyZSBhc3NlbWJsZXIgdG8gc3VwcG9ydAoJLm1hY2hpbmUgZGlyZWN0aXZlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTEwLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcmVsb2FkMS5jIChpb3JfaGFyZF9yZWdfc2V0KTogUmVtb3ZlLgoJKGZpbmlzaF9zcGlsbHMpOiBVc2UgSU9SX0hBUkRfUkVHX1NFVCBpbnN0ZWFkIG9mCglpb3JfaGFyZF9yZWdfc2V0LgoKMjAwNC0xMC0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHNiaXRtYXAuaCAoRVhFQ1VURV9JRl9TRVRfSU5fU0JJVE1BUCk6IFNwZWVkIHVwIGJ5IHNoaWZ0aW5nCgl0aGUgY3VycmVudGx5IHZpc2l0ZWQgd29yZCB0byByaWdodC4KCjIwMDQtMTAtMTggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgbWlkZGxlLWVuZC8xODA0NQoJKiBleHBtZWQuYyAoZXhwYW5kX3Ntb2RfcG93Mik6IEhhbmRsZSBtb2RlcyB3aG9zZSBzaXplCglpcyBncmVhdGVyIHRoYW4gdGhhdCBvZiBIT1NUX1dJREVfSU5ULgoKMjAwNC0xMC0xOCAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogYy1wYXJzZS5pbiAocmVzZXJ2ZWR3b3Jkcyk6IEFkZCBPQkpDX1RZUEVfUVVBTCBhcyBhbHRlcm5hdGl2ZS4KCjIwMDQtMTAtMTggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgkgICAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNzgxMwoJKiBkb2p1bXAuYyAoZGlzY2FyZF9wZW5kaW5nX3N0YWNrX2FkanVzdCk6IE5ldyBmdW5jdGlvbi4KCShjbGVhcl9wZW5kaW5nX3N0YWNrX2FkanVzdCk6IENhbGwgaXQuCgkqIGV4cHIuaCAoZGlzY2FyZF9wZW5kaW5nX3N0YWNrX2FkanVzdCk6IERlY2xhcmUgaXQuCgkqIGV4cGxvdy5jIChlbWl0X3N0YWNrX3NhdmUpOiBFbWl0IHBlbmRpbmcgc3RhY2sgYWRqdXN0bWVudHMKCWJlZm9yZSBzYXZpbmcgdGhlIHN0YWNrIHBvaW50ZXIuCgkoZW1pdF9zdGFja19yZXN0b3JlKTogRGlzY2FyZCBwZW5kaW5nIHN0YWNrIGFkanVzdG1lbnRzIGJlZm9yZQoJcmVzdG9yaW5nIHRoZSBzdGFjayBwb2ludGVyLgoKMjAwNC0xMC0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGhhbmRsZV9tb2RlX2F0dHJpYnV0ZSk6IEFsbG93IHNjYWxhci0+dmVjdG9yCgl0eXBlIGNoYW5nZXMgeWV0LgoKMjAwNC0xMC0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKSBbTU9ESUZZX0VYUFJdOiBEb24ndCByZXF1ZXN0IGEKCXZhbHVlIHRvIGV4cGFuZF9hc3NpZ25tZW50LgoKMjAwNC0xMC0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmMgKGNsZWFudXBfdHJlZV9jZmcpOiBEb24ndCBpdGVyYXRlIG9uCgl0aHJlYWRfanVtcHMuCgkodGhyZWFkX2p1bXBzKTogSXRlcmF0ZSB1bnRpbCBubyBuZXcgZm9yd2FyZGVyIGJsb2NrIGFyaXNlcy4KCjIwMDQtMTAtMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jICh0cmVlX2ZvcndhcmRlcl9ibG9ja19wKTogRG9uJ3Qgc2V0IGZvcndhcmRhYmxlLgoJKHRocmVhZF9qdW1wcyk6IFVzZSBmb3J3YXJkYWJsZSBhcyBjYWNoZSBvZgoJdHJlZV9mb3J3YXJkZXJfYmxvY2tfcCB0aHJvdWdob3V0IHRoZSBmdW5jdGlvbi4KCjIwMDQtMTAtMTggIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjZmcuYyAoZHVtcF9mbG93X2luZm8pOiBSZW1vdmUgcmVkdW5kYW50IGR1bXAgb2YgcmVnIGxpZmUgaW5mby4KCjIwMDQtMTAtMTggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMTUwMTQKCVBSIG1pZGRsZS1lbmQvMTY5NzMKCSogdHJlZS1jZmcuYyAocmVtb3ZlX2JiKTogSWYgd2UgaGF2ZSBhIGxhYmVsIGV4cHJlc3Npb24gaW4gdGhlCgliYXNpYyBibG9jayBhbmQgdGhlIGxhYmVsIHdlIGhhdmUgdGFrZW4gdGhlIGFkZHJlc3MsIG1vdmUgdGhlCglsYWJlbCBleHByZXNzaW9uIHRvIHRoZSBiYXNpYyBibG9jayB3aGljaCBpcyBwcmV2aW91cyBpbiB0aGUKCWxpbmtlZCBsaXN0LgoJKHRyZWVfdmVyaWZ5X2Zsb3dfaW5mbyk6IEZpeCBwcmludGluZyBvdXQgdGhlIGxhYmVsIG5hbWUgb2YgdGhlCglwcm9ibGVtYXRpYyBsYWJlbCBleHByZXNzaW9uLgoKMjAwNC0xMC0xOCAgUGF0IEhhdWdlbiAgPHB0aGF1Z2VuQHVzLmlibS5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xODAwMgoJKiBzaW1wbGlmeS1ydHguYyAobW9kZV9zaWduYml0X3ApOiBFeHRlcm5hbGl6ZSBmdW5jdGlvbi4uLgoJKiBydGwuaCAobW9kZV9zaWduYml0X3ApOiAuLi4gdG8gaGVyZS4KCSogY29tYmluZS5jIChzaW1wbGlmeV9zaGlmdF9jb25zdCk6IFJlY29nbml6ZSBQTFVTIHNpZ25iaXQgYXMKCWNhbm9uaWNhbCBmb3JtIG9mIFhPUiBzaWduYml0IGFuZCBtb3ZlIHRvIG91dGVyIG9wLgoKMjAwNC0xMC0xOCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLWNmZy5jIChic2lfZm9yX3N0bXQpOiBSZW5hbWUgZnJvbSBzdG10X2Zvcl9ic2kuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkqIHRyZWUtc3NhLmMgKHJlcGxhY2VfaW1tZWRpYXRlX3VzZXMpOiBDYWxsIGJzaV9mb3Jfc3RtdC4KCURvbid0IGNhbGwgZm9sZF9zdG10IG1vcmUgdGhhbiBvbmNlLCB1c2UgYnNpX3JlcGxhY2UuCgoyMDA0LTEwLTE4ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNzY1NgoJKiB0cmVlLXNzYS5jIChyZXBsYWNlX2ltbWVkaWF0ZV91c2VzKTogV2hlbiByZXBsYWNpbmcgYQoJY29uc3RhbnQsIGlmIHRoZSBjYWxsIHRvIGZvbGRfc3RtdCBwcm9kdWNlZCBhIGRpZmZlcmVudAoJc3RhdGVtZW50LCBnZXQgYW4gYXBwcm9wcmlhdGUgc3RhdGVtZW50IHBvaW50ZXIgYnkgc2Nhbm5pbmcKCVNUTVQncyBiYXNpYyBibG9jay4KCjIwMDQtMTAtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBwb2ludGVyLXNldC5jIChoYXNoMSk6IERvbid0IHVzZSBsaWJtIGZ1bmN0aW9ucyBpbiBmYWxsYmFjayBjYXNlLgoKMjAwNC0xMC0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIGJvb3RzdHJhcC8xNzY4NAoJKiBNYWtlZmlsZS5pbiAoY2xlYW4pOiBSZW1vdmUgbGliZ2NjX3MkKFNITElCX0VYVCkuMS5zdGFnZT8uCgkoc3RhZ2UxLXN0YXJ0KTogUmVtb3ZlIGFuZCBjb3B5IGxpYnVud2luZC5hIGFuZAoJbGlidW53aW5kKiQoU0hMSUJfRVhUKSBpbnN0ZWFkIG9mIGxpYnVud2luZCouCgkoc3RhZ2UyLXN0YXJ0KTogTGlrZXdpc2UuCgkoc3RhZ2UzLXN0YXJ0KTogTGlrZXdpc2UuCgkoc3RhZ2U0LXN0YXJ0KTogTGlrZXdpc2UuCgkoc3RhZ2Vwcm9maWxlLXN0YXJ0KTogTGlrZXdpc2UuCgkoc3RhZ2VmZWVkYmFjay1zdGFydCk6IExpa2V3aXNlLgoKCSogY29uZmlnL2FscGhhL3Qtb3NmNCAoU0hMSUJfTElOSyk6IFVzZSBhIHRlbXBvcmFyeSBmaWxlIGZvcgoJdGhlIHNoYXJlZCBsaWJyYXJ5IHRvIGJlIGNyZWF0ZWQgYW5kIGRvbid0IHJlbW92ZSB0aGUgZXhpc3RpbmcKCXNoYXJlZCBsaWJyYXJ5LgoJKiBjb25maWcvYXJtL3QtbmV0YnNkIChTSExJQl9MSU5LKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3QtbndsZCAoU0hMSUJfTElOSyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy90LXNsaWJnY2MtaXJpeCAoU0hMSUJfTElOSyk6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvdC1ocHV4LXNobGliIChTSExJQl9MSU5LKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC90LWxpbnV4IChTSExJQl9MSU5LKTogTGlrZXdpc2UuCgkqIGNvbmZpZy90LWxpYnVud2luZC1lbGYgKFNITElCVU5XSU5EX0xJTkspOiBMaWtld2lzZS4KCSogY29uZmlnL3Qtc2xpYmdjYy1kYXJ3aW4gKFNITElCX0xJTkspOiBMaWtld2lzZS4KCSogY29uZmlnL3Qtc2xpYmdjYy1lbGYtdmVyIChTSExJQl9MSU5LKTogTGlrZXdpc2UuCgkqIGNvbmZpZy90LXNsaWJnY2Mtc2xkIChTSExJQl9MSU5LKTogTGlrZXdpc2UuCgoJKiBta2xpYmdjYy5pbiAobGliZ2NjLXN0YWdlLXN0YXJ0KTogQWxzbyBtb3ZlICIqJHtvYmpleHR9cyIKCWZpbGVzLgoKMjAwNC0xMC0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGJhc2ljLWJsb2NrLmggKHJlZ19zZXRfaXRlcmF0b3IpOiBOZXcuCgkoRVhFQ1VURV9JRl9TRVRfSU5fUkVHX1NFVCk6IE1ha2UgaXQgaXRlcmF0b3Igc3R5bGUuCgkoRVhFQ1VURV9JRl9BTkRfQ09NUExfSU5fUkVHX1NFVCk6IExpa2V3aXNlLgoJKEVYRUNVVEVfSUZfQU5EX0lOX1JFR19TRVQpOiBMaWtld2lzZS4KCSogY2FsbGVyLXNhdmUuYyAoc2F2ZV9jYWxsX2Nsb2JiZXJlZF9yZWdzKTogQWRqdXN0IHRvIHRoZSBuZXcKCXN0eWxlLgoJKiBjZmdjbGVhbnVwLmMgKHRocmVhZF9qdW1wKTogTGlrZXdpc2UuCgkqIGNmZ3J0bC5jIChzYWZlX2luc2VydF9pbnNuX29uX2VkZ2UpOiBMaWtld2lzZS4KCSogY29uZmxpY3QuYyAoY29uZmxpY3RfZ3JhcGhfY29tcHV0ZSk6IExpa2V3aXNlLgoJKiBmbG93LmMgKHZlcmlmeV9sb2NhbF9saXZlX2F0X3N0YXJ0LCB1cGRhdGVfbGlmZV9pbmZvLAoJaW5pdGlhbGl6ZV91bmluaXRpYWxpemVkX3N1YnJlZ3MsIHByb3BhZ2F0ZV9vbmVfaW5zbiwKCWluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8sIGZyZWVfcHJvcGFnYXRlX2Jsb2NrX2luZm8sCglwcm9wYWdhdGVfYmxvY2ssIGR1bXBfcmVnc2V0KTogTGlrZXdpc2UuCgkqIGdsb2JhbC5jIChnbG9iYWxfY29uZmxpY3RzKTogTGlrZXdpc2UuCgkqIGdyYXBoLmMgKHN0YXJ0X2JiKTogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmMgKHVwZGF0ZV9lcXVpdl9yZWdzKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAobG9hZF9tZW1zKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoY29tcHV0ZV91c2VfYnlfcHNldWRvcywgb3JkZXJfcmVnc19mb3JfcmVsb2FkLAoJZmluZF9yZWcsIGZpbmlzaF9zcGlsbHMpOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYyAobWFya190YXJnZXRfbGl2ZV9yZWdzKTogTGlrZXdpc2UuCgkqIHNjaGVkLWRlcHMuYyAoc2NoZWRfYW5hbHl6ZV9pbnNuKTogTGlrZXdpc2UuCgkqIHNjaGVkLXJnbi5jIChzY2hlZC1yZ24uYyk6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfaWZjdnRfbW9kaWZ5X3Rlc3RzKTogTGlrZXdpc2UuCgoyMDA0LTEwLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGFkZHFpXzFfc2xwKTogVGVzdCBmb3IgaW5jZGVjX29wZXJhbmQKCW9wZXJhbmQgMSBpbnN0ZWFkIG9mIDIKCjIwMDQtMTAtMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBsb29wLXVucm9sbC5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDQtMTAtMTggIFJldml0YWwgRXJlcyAgPGVyZXNAaWwuaWJtLmNvbT4KCgkqIE1ha2VmaWxlLmluIChsb29wLXVucm9sbC5vKTogQWRkIFZBUlJBWV9IIGRlcGVuZGVuY3kuCgkqIGxvb3AtdW5yb2xsLmM6IEluY2x1ZGUgdmFycmF5LmguCgkoc3RydWN0IHZhcl90b19leHBhbmQsIHN0cnVjdCBvcHRfaW5mbyk6IFJlbmFtZSBzcGxpdF9pdnNfaW5mbyB0bwoJb3B0X2luZm8gYW5kIGV4cGFuZCBpdCB0byBzdXBwb3J0IHZhcmlhYmxlIGV4cGFuc2lvbi4KCShhbmFseXplX2luc25zX2luX2xvb3ApOiBSZW5hbWUgYW5hbHl6ZV9pdnNfdG9fc3BsaXQgYW5kCglleHBhbmQgaXQgdG8gc3VwcG9ydCB2YXJpYWJsZSBleHBhbnNpb24uCgkocHRfaW5mb19zdGFydF9kdXBsaWNhdGlvbik6IFJlbmFtZSBzaV9pbmZvX3N0YXJ0X2R1cGxpY2F0aW9uLgoJKGFwcGx5X29wdF9pbl9jb3BpZXMpOiBSZW5hbWUgc3BsaXRfaXZzX2luX2NvcGllcyBhbmQgYWRkIHN1cHBvcnQKCXRvIHRoZSB2YXJpYWJsZSBleHBhbnNpb24gb3B0aW1pemF0aW9uLgoJKGZyZWVfb3B0X2luZm8pOiBSZW5hbWUgZnJlZV9zaV9pbmZvLgoJKGFuYWx5emVfaW5zbl90b19leHBhbmRfdmFyLCByZWZlcmVuY2VkX2luX29uZV9pbnNuX2luX2xvb3BfcCwKCWV4cGFuZF92YXJfZHVyaW5nX3Vucm9sbGluZywgaW5zZXJ0X3Zhcl9leHBhbnNpb25faW5pdGlhbGl6YXRpb24sCgljb21iaW5lX3Zhcl9jb3BpZXNfaW5fbG9vcF9leGl0LCByZWxlYXNlX3Zhcl9jb3BpZXMsCglnZXRfZXhwYW5zaW9uKTogTmV3IGZ1bmN0aW9ucy4KCShwZWVsX2xvb3BfY29tcGxldGVseSwgdW5yb2xsX2xvb3BfY29uc3RhbnRfaXRlcmF0aW9ucywKCXVucm9sbF9sb29wX3J1bnRpbWVfaXRlcmF0aW9ucywgcGVlbF9sb29wX3NpbXBsZSwKCXVucm9sbF9sb29wX3N0dXBpZCk6IENoYW5nZSB1c2VzIG9mIHN0cnVjdCBzaV9pbmZvCgl0byBzdHJ1Y3Qgb3B0X2luZm8KCWFuZCBhZGQgdXNlcyBvZiBmdmFyaWFibGUtZXhwYW5zaW9uLWluLXVucm9sbGVyIGZsYWcuCgkqIHBhcmFtcy5kZWY6IEFkZCBwYXJhbWV0ZXIgdG8gcmVzdHJpY3QgdGhlIG51bWJlciBvZiBleHBhbnNpb25zLgoJKiBwYXJhbXMuaDogKE1BWF9WQVJJQUJMRV9FWFBBTlNJT05TKTogTmV3IGRlZmluZSB0byByZXN0cmljdAoJdGhlIG51bWJlciBvZiBleHBhbnNpb25zLgoJKiBjb21tb24ub3B0OiAoZnZhcmlhYmxlLWV4cGFuc2lvbi1pbi11bnJvbGxlcik6IE5ldyBmbGFnLgoJKiBkb2MvaW52b2tlLnRleGk6IChmdmFyaWFibGUtZXhwYW5zaW9uLWluLXVucm9sbGVyKTogRG9jdW1lbnQuCgoyMDA0LTEwLTE4ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvY3lnbWluZy5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogRGVmaW5lCglfX0dYWF9NRVJHRURfVFlQRUlORk9fTkFNRVMgdG8gMC4KCjIwMDQtMTAtMTcgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGNmZ3J0bC5jIChydGxfdmVyaWZ5X2Zsb3dfaW5mb18xKTogV2hlbiBjaGVja2luZyBpbnNucyBpbiBhIGJiLAoJaGFuZGxlIGJhcnJpZXJzIGluIGEgYmIgYnkgY2hlY2tpbmcgdGhhdCBpdCBwb2ludHMgdG8gYSBOVUxMIGJiLgoJKiBlbWl0LXJ0bC5jIChlbWl0X2JhcnJpZXJfYmVmb3JlKTogU2V0IEJMT0NLX0ZPUl9JTlNOIHRvIE5VTEwuCgkoZW1pdF9iYXJyaWVyX2FmdGVyLCBlbWl0X2JhcnJpZXIpOiBEaXR0by4KCjIwMDQtMTAtMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZG9jL2V4dGVuZC50ZXhpIChBdHRyaWJ1dGUgU3ludGF4KTogQ2xhcmlmeSBkZXRhaWxzIG9mCglhdHRyaWJ1dGVzIG9uIHBhcmFtZXRlcnMuCgoyMDA0LTEwLTE3ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAodHJlZV9zc2FfaXZfb3B0aW1pemUpOiBNb3ZlIGNoZWNraW5nIG91dCBvZgoJbG9vcC4KCjIwMDQtMTAtMTcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVJldmVydDoKCTIwMDQtMTAtMTcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogYy10eXBlY2suYyAoZGVmYXVsdF9mdW5jdGlvbl9hcnJheV9jb252ZXJzaW9uKTogQWx3YXlzIGNyZWF0ZQoJJmFbMF0gZm9yIGFycmF5IHR5cGVzLgoJKGJ1aWxkX3VuYXJ5X29wKTogRG8gbm90IGZvbGQgJmFbeF0gaW50byBhICsgeC4KCjIwMDQtMTAtMTcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMTc5MjUKCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfY29uZF9leHByKTogRW1pdCBsaW5lIG5vdGVzIGZvciBuZXh0IGJhc2ljCglibG9jayBpZiB0aGVyZSBpcyBhIGdvdG8gd2l0aCBhIGxvY3VzLgoKMjAwNC0xMC0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9lbGZvcy5oLCBjb25maWcvZ29mYXN0LmgsIGNvbmZpZy9pbnRlcml4LmgsCgljb25maWcvbmV0YnNkLmgsIGNvbmZpZy9zdnIzLmgsIGNvbmZpZy92eHdvcmtzLmgsCgljb25maWcvYWxwaGEvYWxwaGEtbW9kZXMuZGVmLCBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmgsCgljb25maWcvYWxwaGEvZXY0Lm1kLCBjb25maWcvYWxwaGEvZXY1Lm1kLCBjb25maWcvYWxwaGEvZXY2Lm1kLAoJY29uZmlnL2FscGhhL25ldGJzZC5oLCBjb25maWcvYXJtL2FybS1tb2Rlcy5kZWYsCgljb25maWcvYXJtL3Vua25vd24tZWxmLmgsIGNvbmZpZy9jNHgvYzR4LW1vZGVzLmRlZiwKCWNvbmZpZy9jcmlzL2FvdXQuaCwgY29uZmlnL2Zydi9mcnYtbW9kZXMuZGVmLAoJY29uZmlnL2kzODYvYmVvcy1lbGYuaCwgY29uZmlnL2kzODYvZ2FzLmgsCgljb25maWcvaTM4Ni9pMzg2LWNvZmYuaCwgY29uZmlnL2kzODYvaTM4Ni1tb2Rlcy5kZWYsCgljb25maWcvaTM4Ni9saW51eC5oLCBjb25maWcvaTM4Ni9saW51eDY0LmgsCgljb25maWcvaTM4Ni9taW5ndzMyLmgsIGNvbmZpZy9pMzg2L25ldGJzZC1lbGYuaCwKCWNvbmZpZy9pMzg2L25ldGJzZDY0LmgsIGNvbmZpZy9pMzg2L3NjbzUuaCwKCWNvbmZpZy9pMzg2L3NvbDIuaCwgY29uZmlnL2kzODYvdXdpbi5oLCBjb25maWcvaTg2MC9pODYwLm1kLAoJY29uZmlnL2lhNjQvaWE2NC1tb2Rlcy5kZWYsIGNvbmZpZy9pYTY0L2l0YW5pdW0xLm1kLAoJY29uZmlnL2lhNjQvaXRhbml1bTIubWQsIGNvbmZpZy9tNjhrL202OGstbW9kZXMuZGVmLAoJY29uZmlnL21pcHMvbWlwcy1tb2Rlcy5kZWYsIGNvbmZpZy9taXBzL3NkYi5oLAoJY29uZmlnL21pcHMvdnIuaCwgY29uZmlnL21pcHMvdnh3b3Jrcy5oLAoJY29uZmlnL3BhL3BhLWhwdXgxMC5oLCBjb25maWcvcGEvcGEtaHB1eDExLmgsCgljb25maWcvcGEvcGEzMi1saW51eC5oLCBjb25maWcvcnM2MDAwLzQweC5tZCwKCWNvbmZpZy9yczYwMDAvNzQ1MC5tZCwgY29uZmlnL3JzNjAwMC84NTQwLm1kLAoJY29uZmlnL3JzNjAwMC9saW51eHNwZS5oLCBjb25maWcvcnM2MDAwL3Bvd2VyNC5tZCwKCWNvbmZpZy9yczYwMDAvcnM2MDAwLW1vZGVzLmRlZiwgY29uZmlnL3JzNjAwMC9ydGVtcy5oLAoJY29uZmlnL3JzNjAwMC9zcGUuaCwgY29uZmlnL3MzOTAvMjA2NC5tZCwgY29uZmlnL3MzOTAvbGludXguaCwKCWNvbmZpZy9zMzkwL3MzOTAtbW9kZXMuZGVmLCBjb25maWcvc2gvZWxmLmgsCgljb25maWcvc2gvc2gtbW9kZXMuZGVmLCBjb25maWcvc2gvc2g2NC5oLAoJY29uZmlnL3NwYXJjL3VsdHJhMV8yLm1kLCBjb25maWcvc3BhcmMvdWx0cmEzLm1kLAoJY29uZmlnL3N0b3JteTE2L3N0b3JteTE2Lm1kLCBjb25maWcvdjg1MC92ODUwLXByb3Rvcy5oLAoJY29uZmlnL3ZheC92YXgubWQ6IFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA0LTEwLTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBSZW1vdmUgYW4gb2Jzb2xldGUgY29tbWVudC4KCjIwMDQtMTAtMTcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogYy10eXBlY2suYyAoZGVmYXVsdF9mdW5jdGlvbl9hcnJheV9jb252ZXJzaW9uKTogQWx3YXlzIGNyZWF0ZQoJJmFbMF0gZm9yIGFycmF5IHR5cGVzLgoJKGJ1aWxkX3VuYXJ5X29wKTogRG8gbm90IGZvbGQgJmFbeF0gaW50byBhICsgeC4KCjIwMDQtMTAtMTcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogcG9pbnRlci1zZXQuYyAoaGFzaDEpOiBVc2UgaW50ZWdlciBwYXJ0IG9mIDJeNjQgLyBwaGkKCWluc3RlYWQgMl4zMiAvIHBoaSBpZiBsb25nIGlzIDY0LWJpdC4KCjIwMDQtMTAtMTcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1jb21tb24uaCAoZW51bSByaWQpOiBSZW1vdmUgUklEX1BUUkJBU0UsIFJJRF9QVFJFWFRFTlQgYW5kCglSSURfUFRSVkFMVUUuCgkqIGMtcGFyc2UuaW4gKFBUUl9WQUxVRSwgUFRSX0JBU0UsIFBUUl9FWFRFTlQpOiBSZW1vdmUgJXRva2VuCglkZWNsYXJhdGlvbnMuCgkocmVzd29yZHMpOiBSZW1vdmUgX19wdHJiYXNlLCBfX3B0cmJhc2VfXywgX19wdHJleHRlbnQsCglfX3B0cmV4dGVudF9fLCBfX3B0cnZhbHVlIGFuZCBfX3B0cnZhbHVlX18uCgkocmlkX3RvX3l5KTogUmVtb3ZlIFJJRF9QVFJCQVNFLCBSSURfUFRSRVhURU5UIGFuZCBSSURfUFRSVkFMVUUKCWVudHJpZXMuCgoyMDA0LTEwLTE2ICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9nZXRfYWxpYXNfc2V0KTogVXNlIEdHQyBmb3IgdHlwZV9oYXNoX3RhYmxlLgoKMjAwNC0xMC0xNiAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNzc2NgoJKiBiYXNpYy1ibG9jay5oIChlbnVtIGRvbV9zdGF0ZSk6IERPTV9DT05TX09LIHJlbW92ZWQuCgkoZG9tX2luZm9fYXZhaWxhYmxlX3ApOiBEZWNsYXJlLgoJKiBjZmdob29rcy5jIChzcGxpdF9ibG9jaywgbWFrZV9mb3J3YXJkZXJfYmxvY2spOiBVc2UKCWRvbV9pbmZvX2F2YWlsYWJsZV9wLgoJKiBkb21pbmFuY2UuYyAoY29tcHV0ZV9kb21fZmFzdF9xdWVyeSwgY2FsY3VsYXRlX2RvbWluYW5jZV9pbmZvLAoJZnJlZV9kb21pbmFuY2VfaW5mbywgdmVyaWZ5X2RvbWluYXRvcnMpOiBEaXR0by4KCShkb21faW5mb19hdmFpbGFibGVfcCk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS1jZmcuYyAoY2xlYW51cF9jb250cm9sX2V4cHJfZ3JhcGgpOiBGcmVlIGRvbWluYW5jZSBpbmZvcm1hdGlvbi4KCSh0aHJlYWRfanVtcHMpOiBVc2UgZG9tX2luZm9fYXZhaWxhYmxlX3AuCgkqIHRyZWUtY29tcGxleC5jIChleHBhbmRfY29tcGxleF9kaXZfd2lkZSk6IERpdHRvLgoJKiB0cmVlLW11ZGZsYXAuYyAobWZfYnVpbGRfY2hlY2tfc3RhdGVtZW50X2Zvcik6IERpdHRvLgoKMjAwNC0xMC0xNiAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKHN0cnVjdCBpdm9wdHNfZGF0YSk6IE5ldyBmaWVsZCBpbXBvcnRhbnRfY2FuZGlkYXRlcy4KCShmaW5kX2Jlc3RfY2FuZGlkYXRlKTogVGFrZSBhbHNvIGltcG9ydGFudCBjYW5kaWRhdGVzIGludG8gYWNjb3VudC4KCShmaW5kX29wdGltYWxfaXZfc2V0KTogSW5pdGlhbGl6ZSBpbXBvcnRhbnRfY2FuZGlkYXRlcyBiaXRtYXAuCgoyMDA0LTEwLTE2ICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE3NTYwCgkqIHByZWRpY3QuYyAodHJlZV9lc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IE1hcmsgaXJyZWR1Y2libGUKCWxvb3BzLgoKMjAwNC0xMC0xNiAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE3NzIzCgkqIGNmZ2NsZWFudXAuYyAobWVyZ2VfbWVtYXR0cnMpOiBIYW5kbGUgY2FzZSB3aGVuCglNRU1fU0laRSA9PSBOVUxMX1JUWC4KCjIwMDQtMTAtMTUgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogdG9wbGV2LmMgKGR1bXBfZmlsZV9uYW1lKTogQ2hhbmdlIHR5cGUgdG8gYmUgY29uc3QuCgoyMDA0LTEwLTE1ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NvbXBvdW5kX2V4cHIsIGJ1aWxkX2NfY2FzdCk6IERvbid0IHRyeSB0byB1c2UKCW5vbl9sdmFsdWUgdG8gc3RvcCBzb21ldGhpbmcgYmVpbmcgYSBudWxsIHBvaW50ZXIgY29uc3RhbnQuCgoyMDA0LTEwLTE1ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChGVU5DVElPTl9BUkdfUkVHTk9fUCk6IEZQUnMgYXJlIG9ubHkKCWF2YWlsYWJsZSBmb3IgVEFSR0VUX0ZQUlMuCgkoRlVOQ1RJT05fVkFMVUVfUkVHTk9fUCk6IFNhbWUuCgoyMDA0LTEwLTE1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoUlMvNjAwMCBhbmQgUG93ZXJQQyBPcHRpb25zKTogRG9jdW1lbnQKCS1tYWx0aXZlYyBpbiBzYW1lIHN0eWxlIGFzIG90aGVyIElTQSBvcHRpb25zLgoKMjAwNC0xMC0xNSAgSm9uIEdyaW1tIDxqZ3JpbW0yQHVzLmlibS5jb20+CgoJKiBjb25maWcvaG9zdC1saW51eC5jIChUUllfRU1QVFlfVk1fU1BBQ0UpOiBBZGQgX19wb3dlcnBjX18KCWRlZmluaXRpb24uCgoyMDA0LTEwLTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYml0bWFwLmMsIGJpdG1hcC5oLCBidWlsdGluLWF0dHJzLmRlZiwgY2ZnbGF5b3V0LmgsCgljb2xsZWN0Mi5oLCBjb25mbGljdC5jLCBjb3JldHlwZXMuaCwgY292ZXJhZ2UuaCwgZXJyb3JzLmgsCglnY2MuaCwgZ2Nvdi1kdW1wLmMsIGdlbi1wcm90b3MuYywgZ2VuY2hlY2suYywgZ2VuY29kZXMuYywKCWdlbmNvbnN0YW50cy5jLCBnZW5nZW5ydGwuYywgZ2VubW9kZXMuYywgZ2VucGVlcC5jLAoJZ2Vuc3VwcG9ydC5oLCBncmFwaC5oLCBndGhyLWduYXQuYywgZ3Roci1nbmF0LmgsIGd0aHItcG9zaXguYywKCWd0aHItcG9zaXguaCwgaGFyZC1yZWctc2V0LmgsIGh3aW50LmgsIGludGVncmF0ZS5oLCBsaWJnY2MyLmMsCglsaXN0cy5jLCBtYWNobW9kZS5kZWYsIG1pcHMtdGR1bXAuYywgb3B0cy5oLCBwYXJhbXMuYywKCXByZWRpY3QuZGVmLCBwcmVkaWN0LmgsIHByb3RvaXplLmMsIHJlbG9hZC5oLCByZXNvdXJjZS5oLAoJcnRsLWVycm9yLmMsIHNiaXRtYXAuYywgc2JpdG1hcC5oLCBzcmVhbC5jLCB0bGluay5jLAoJdHJlZS1kdW1wLmgsIHRyZWUtaW5saW5lLmgsIHVud2luZC1kdzItZmRlLmMsIHVud2luZC1kdzIuYywKCXVud2luZC1zamxqLmMsIHZhbHVlLXByb2YuaDogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDQtMTAtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBwb2ludGVyLXNldC5jLCB0cmVlLXZlY3Rvcml6ZXIuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTEwLTE1ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtb3B0aW1pemUuYyAoZXhlY3V0ZV9vbmVfcGFzcyk6IFN0b3AgdGltZXIgcmlnaHQgYWZ0ZXIKCWV4ZWN1dGluZyB0aGUgcGFzcy4KCjIwMDQtMTAtMTQgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVJldmVydDoKCTIwMDQtMTAtMTQgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoJUFIgbWlkZGxlLWVuZC8xNzk2NwoJUmV2ZXJ0OgoJCSogdHJlZS1jZmcuYyAocmVtb3ZlX3VzbGVzc19zdG10c19jb25kKTogRm9sZCBzdGF0ZW1lbnQuCgkJKHJlbW92ZV91c2VsZXNzX3N0bXRzXzEpOiBGb2xkIHRyZWVzIHdlIGtub3cgaG93IHRvIGZvbGQuCgoyMDA0LTEwLTE0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWd1cmUuYWM6IEFkZCAubWFjaGluZSBwb3dlcjQgZGlyZWN0aXZlIHdoZW4gdGVzdGluZyBmb3IKCW1mY3IgZmllbGQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMTAtMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oIChKVU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04pOiBEb24ndCBkZWZpbmUuCgoyMDA0LTEwLTE0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X3RyYW5zZm9ybV9sb29wKTogRGVjbGFyZSB2ZWN0b3JpemF0aW9uX2ZhY3RvcgoJYWx3YXlzLgoKMjAwNC0xMC0xNCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IFJldHVybiBOT19SRUdTCglmb3IgJ2YnIGlmICFUQVJHRVRfRlBSUy4KCjIwMDQtMTAtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgZGVidWcvMTQ0OTIKCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZV8xKTogSGFuZGxlIEZJWF8qX0VYUFIuCgoyMDA0LTEwLTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMvMTcwMjMKCSogYy1kZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHNfb2xkc3R5bGUpOiBDYXJlIGZvciBwYXJhbWV0ZXIgdHlwZQoJYXMgZXJyb3JfbWFya19ub2RlLgoJKiBjLXBhcnNlLmluIChjb21wc3RtdF9wcmltYXJ5X3N0YXJ0KTogQ2hlY2sgY3VyX3N0bXRfbGlzdCBub24tbnVsbAoJaW5zdGFlZCBvZiBjdXJyZW50X2Z1bmN0aW9uX2RlY2wgbm9uLW51bGwuCgoyMDA0LTEwLTE0ICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCgkqIHBvaW50ZXItc2V0LmM6IE5ldyBmaWxlLCBzcGVjaWFsLXB1cnBvc2UgaGFzaCB0YWJsZS4KCSogcG9pbnRlci1zZXQuaDogTmV3IGZpbGUuCgkqIHRyZWUuaCAoc3RydWN0IHBvaW50ZXJfc2V0X3QpOiBEZWNsYXJlIGFzIG9wYXF1ZSB0eXBlLgoJKHRyZWVfd2Fsayk6IExhc3QgYXJndW1lbnQgaXMgcG9pbnRlcl9zZXRfdCogbm93LgoJKiB0cmVlLWlubGluZS5jIChXQUxLX1NVQlRSRUUpOiBDb252ZXJ0IGZyb20gaHRhYiB0byBwc2V0LgoJKHdhbGtfdHlwZV9maWVsZHMpOgoJKHdhbGtfdHJlZSk6IENvbnZlcnQgZnJvbSBodGFiX3QgdG8gcG9pbnRlcl9zZXRfdCBmb3Iga2VlcGluZwoJdHJhY2sgb2Ygd2hpY2ggbm9kZXMgaGF2ZSBhbHJlYWR5IGJlZW4gdmlzaXRlZC4KCSh3YWxrX3RyZWVfd2l0aG91dF9kdXBsaWNhdGVzKTogQ29udmVydCBmcm9tIGh0YWJfdCB0byBwb2ludGVyX3NldF90LgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9jcmVhdGVfZWRnZXMpOiBMaWtld2lzZS4KCShjZ3JhcGhfY2hhcmFjdGVyaXplX3N0YXRpY3NfbG9jYWwpOiBMaWtld2lzZS4KCSogdHJlZS1kZmEuYyAoY29sbGVjdF9kZmFfc3RhdHMpOiBMaWtld2lzZS4KCSogbGFuZ2hvb2tzLWRlZi5oIChsaGRfdHJlZV9pbmxpbmluZ193YWxrX3N1YnRyZWVzKTogTGFzdCBhcmcgaXMKCXBvaW50ZXJfc2V0X3QqIG5vdy4KCSogbGFuZ2hvb2tzLmMgKGxoZF90cmVlX2lubGluaW5nX3dhbGtfc3VidHJlZXMpOiBMaWtld2lzZS4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzX2Zvcl90cmVlX2lubGluaW5nKTogTGFzdCBhcmcgdHlwZQoJb2Ygd2Fsa19zdWJ0cmVlcyBpcyBwb2ludGVyX3NldF90KiBub3cuCgkqIE1ha2VmaWxlLmluIChPQkpTLWNvbW1vbik6IGFkZCBwb2ludGVyLXNldC5vCgkodHJlZS1pbmxpbmUubyk6IERlcGVuZHMgb24gcG9pbnRlci1zZXQuaAoJKHRyZWUtZGZhLm8pOiBMaWtld2lzZQoJKGNncmFwaHVuaXQubyk6IExpa2V3aXNlCgoyMDA0LTEwLTE0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKEFTTV9TUEVDKTogRGVsZXRlLgoJKFRBUkdFVF9BU01fRklMRV9TVEFSVCk6IERlZmluZS4KCSogY29uZmlnL2Rhcndpbi5oIChBU01fU1BFQyk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC90LWRhcndpbiAoVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTKTogRG9uJ3Qgc3VwcGx5CgktbWxvbmctZG91YmxlLTEyOCwgaXQncyB0aGUgZGVmYXVsdC4gIFVwZGF0ZSBjb21tZW50IGFib3V0IHJlYXNvbgoJZm9yIGZvcmNlX2NwdXN1YnR5cGVfQUxMLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi12ZWNzYXZlLmFzbTogU3VwcGx5IC5tYWNoaW5lLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi13b3JsZC5hc206IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZGFyd2luX2ZpbGVfc3RhcnQpOiBOZXcuCgkoc3ltYm9saWNfb3BlcmFuZCk6IERlbGV0ZSAjaWYgMGVkIGNvZGUuCgoyMDA0LTEwLTE0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHN0bXQuYyAoYWRkX2Nhc2Vfbm9kZSk6IE1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgaW50ZWdlcgoJY29uc3RhbnQgYmVmb3JlIGNhbGxpbmcgdHJlZV9pbnRfY3N0X2NvbXBhcmUuCgoyMDA0LTEwLTE0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzE3OTY3CglSZXZlcnQ6CgkJKiB0cmVlLWNmZy5jIChyZW1vdmVfdXNsZXNzX3N0bXRzX2NvbmQpOiBGb2xkIHN0YXRlbWVudC4KCQkocmVtb3ZlX3VzZWxlc3Nfc3RtdHNfMSk6IEZvbGQgdHJlZXMgd2Uga25vdyBob3cgdG8gZm9sZC4KCjIwMDQtMTAtMTQgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9lYWJpc3BlLmggKFNVQlNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKSwKCWNvbmZpZy9yczYwMDAvbGludXhzcGUuaCAoU1VCU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBEaXNhbGxvdwoJLW02NC4KCjIwMDQtMTAtMTQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMpOiBXaGVuIHJlbG9hZGluZyBhIFBMVVMgd2l0aCBjb25zdGFudAoJb3BlcmFuZCwgbWFrZSBzdXJlIHRoZSBjb25zdGFudCBpcyBwdXNoZWQgdG8gdGhlIGNvbnN0YW50IHBvb2wKCWlmIHJlcXVpcmVkLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfc2Vjb25kYXJ5X2lucHV0X3JlbG9hZF9jbGFzcyk6IFJlbW92ZQoJcmVsb2FkIGJ1ZyB3b3JrYXJvdW5kLgoJKHMzOTBfZXhwYW5kX3BsdXNfb3BlcmFuZCk6IExpa2V3aXNlLgoKMjAwNC0xMC0xNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbik6IERvIG5vdCBlbmFibGUKCWZsYWdfc3BlY3VsYXRpdmVfcHJlZmV0Y2hpbmcgZm9yIC1mcHJvZmlsZS1nZW5lcmF0ZS91c2UuCgoyMDA0LTEwLTE0ICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCVBSIDE3NjM1CgkqIHRyZWUtaWYtY29udi5jIChwcm9jZXNzX3BoaV9ub2Rlcyk6IFByb2Nlc3MgbGF0Y2ggYmxvY2suCgkoY29tYmluZV9ibG9ja3MpOiBQcm9jZXNzIGxhdGNoIGJsb2NrIGFuZCB1cGRhdGUgbG9vcCBzdHJ1Y3R1cmUuCgoyMDA0LTEwLTE0ICBPbGdhIEdvbG92YW5ldnNreSAgPG9sZ2FAaWwuaWJtLmNvbT4KCgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X2dlbmVyYXRlX3RtcHNfb25fcHJlaGVhZGVyKToKCSh2ZWN0X3VwZGF0ZV9pdnNfYWZ0ZXJfdmVjdG9yaXplcik6CgkodmVjdF90cmFuc2Zvcm1fZm9yX3Vua25vd25fbG9vcF9ib3VuZCk6CgkodHJlZV9kdXBsaWNhdGVfbG9vcF90b19lZGdlKToKCShhbGxvY2F0ZV9uZXdfbmFtZXMpOgoJKHJlbmFtZV91c2Vfb3ApOgoJKHJlbmFtZV9kZWZfb3ApOgoJKHJlbmFtZV92YXJpYWJsZXNfaW5fYmIpOgoJKGZyZWVfbmV3X25hbWVzKToKCShyZW5hbWVfdmFyaWFibGVzX2luX2xvb3ApOgoJKGNvcHlfcGhpX25vZGVzKToKCSh1cGRhdGVfcGhpc19mb3JfZHVwbGljYXRlX2xvb3ApOgoJKHVwZGF0ZV9waGlfbm9kZXNfZm9yX2d1YXJkKToKCShtYWtlX2xvb3BfaXRlcmF0ZV9udGltZXMpOgoJKHRyZWVfZHVwbGljYXRlX2xvb3BfdG9fZWRnZV9jZmcpOgoJKGFkZF9sb29wX2d1YXJkKToKCSh2ZWN0X2FuYWx5emVfbG9vcF93aXRoX3N5bWJvbGljX251bV9vZl9pdGVycyk6CgkodmVyaWZ5X2xvb3BfZm9yX2R1cGxpY2F0aW9uKToKCSh2ZWN0X2dlbl9uaXRlcnNfZm9yX3Byb2xvZ19sb29wKToKCSh2ZWN0X3VwZGF0ZV9uaXRlcnNfYWZ0ZXJfcGVlbGluZyk6CgkodmVjdF91cGRhdGVfaW5pdHNfb2ZfZHIpOgoJKHZlY3RfdXBkYXRlX2luaXRzX29mX2Rycyk6CgkodmVjdF9idWlsZF9sb29wX25pdGVycyk6CgkodmVjdF9kb19wZWVsaW5nX2Zvcl9hbGlnbm1lbnQpOiBOZXcgZnVuY3Rpb25zLgoJKHZlY3RfdHJhbnNmb3JtX2xvb3ApOiBBZGQgdW5rbm93biBhbmQga25vd24gYnV0IGluZGl2aXNpYmxlIGxvb3AKCWJvdW5kIHN1cHBvcnQ7IGFkZCBwZWVsaW5nIGZvciB1bmFsaWdubWVudCBzdXBwb3J0LgoJKHZlY3RfYW5hbHl6ZV9sb29wX2Zvcm0pOiBTdXBwb3J0IHN5bWJvbGljIG51bWJlciBvZiBpdGVyYXRpb25zLgoJKHZlY3RfdHJhbnNmb3JtX2xvb3BfYm91bmQpOiBOZXcgaW5wdXQgcGFyYW1ldGVyLgoJKHZlY3RfZ2V0X2xvb3Bfbml0ZXJzKTogQ2hhbmdlIGlucHV0IHBhcmFtZXRlciB0eXBlLgoJKG5ld19sb29wX3ZlY19pbmZvKTogTE9PUF9WSU5GT19OSVRFUlMgaXMgdHJlZSBub3cuCgkodmVjdG9yaXphYmxlX3N0b3JlKTogQWxsb3cgdW5hbGlnbmVkIGFjY2Vzcy4KCSh2ZWN0b3JpemVfbG9vcHMpOiBBZGQgcmV3cml0ZV9pbnRvX2xvb3BfY2xvc2VkX3NzYS4KCSh2ZWN0X2FuYWx5emVfZGF0YV9yZWZzX2FsaWdubWVudCk6IEFsbG93ZWQgb25lIHVuYWxpZ25lZAoJc3RvcmUuCgkqIHRyZWUtdmVjdG9yaXplci5oIChMT09QX1ZJTkZPX05JVEVSU19LTk9XTl9QKTogUmVkZWZpbmVkCgl0byB1c2UgdHJlZS4KCShMT09QX1ZJTkZPX0lOVF9OSVRFUlMpOiBOZXcgbWFjcm8uCgkoTUFYX05VTUJFUl9PRl9VTkFMSUdORURfREFUQV9SRUZTKTogTmV3IGRlZmluZS4KCShkb19wZWVsaW5nX2Zvcl9hbGlnbm1lbnQpOgoJKHVuYWxpZ25lZF9kcnMpOiBOZXcgbWVtYmVycyBvZiBfbG9vcF92ZWNfaW5mby4KCShMT09QX0RPX1BFRUxJTkdfRk9SX0FMSUdOTUVOVCk6IE5ldyBtYWNyby4KCjIwMDQtMTAtMTQgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCSogdHJlZS5oIChUUkVFX1NUUklOR19QT0lOVEVSKTogV3JhcCBpbiAiY29uc3QgY2hhciAqIi4KCShzdHJ1Y3QgdHJlZV9zdHJpbmcpOiBSZW1vdmUgImNvbnN0IiBxdWFsaWZpZXIgZm9yICJzdHIiLgoKMjAwNC0xMC0xNCAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0b3JpemVyLmMgKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZnMpOiBDYWxsCgl2ZWN0X2dldF9iYXNlX2FuZF9iaXRfb2Zmc2V0IHRvIGdldCBtZW1vcnkgdGFnIGZvciBhcnJheSByZWYuCgkodmVjdF9jcmVhdGVfYWRkcl9iYXNlX2Zvcl92ZWN0b3JfcmVmKTogUmVtb3ZlIHJlZHVuZGFudCBjaGVja3MuCgoyMDA0LTEwLTE0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogVXNlICRMTl9TIGZvciBjcmVhdGluZyBzeW1saW5rcyAobm90ICRMTikuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMTAtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKCotKi1zb2xhcmlzMiopOiBVcGRhdGUgd2l0aCBpbmZvIGFib3V0IGtlcm5lbAoJcGF0Y2hlcyB0byBzb2x2ZSBzcHVyaW91cyB0ZXN0c3VpdGUgZmFpbHVyZXMuCgoyMDA0LTEwLTE0ICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmJpbS5jb20+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoZ2V0X3ZlY3R5cGVfZm9yX3NjYWxhcl90eXBlKTogQWRkZWQgZGVidWcgcHJpbm91dHMuCglBZGRlZCBjaGVjayB0aGF0IHZlY3R5cGUgaXMgVkVDVE9SX01PREVfUCwgaW5zdGVhZCBvZiBjaGVjayBmb3IgQkxLbW9kZS4KCSh2ZWN0X2FuYWx5emVfb3BlcmF0aW9ucyk6IE1ha2Ugc3VyZSB0aGUgdmVjdG9yaXphdGlvbiBmYWN0b3IgPiAxLiBBZGQKCWdjY19hc3NlcnQgdW5kZXIgRU5BQkxFX0NIRUNLSU5HLgoJKHZlY3Rvcml6YWJsZV9vcGVyYXRpb24pOiBSZW1vdmUgY2hlY2sgZm9yIFZFQ1RPUl9NT0RFX1AgKG1vdmVkIHRvCglnZXRfdmVjdHlwZV9mb3Jfc2NhbGFyX3R5cGUpLgoKCSh2ZWN0X2dldF92ZWNfZGVmX2Zvcl9vcGVyYW5kKTogUmVtb3ZlIHJlZHVuZGFudCB2YXJpYWJsZXMuCgkodmVjdF90cmFuc2Zvcm1fbG9vcCk6IExpa2V3aXNlLgoKMjAwNC0xMC0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBNYWtlIHIxMSBmaXhlZCBhbmQKCWdsb2JhbCBmb3IgLW1jYWxsZXItc3VwZXItaW50ZXJ3b3JraW5nLgoJKENBTExFUl9JTlRFUldPUktJTkdfU0xPVF9TSVpFKTogTmV3IG1hY3JvLgoJKiBjb25maWcvYXJtL2FybS5jICh0aHVtYl9jb21wdXRlX3NhdmVfcmVnX21hc2spOiBTYXZlIHIxMSBpZgoJQ0FMTEVSX0lOVEVSV09SS0lOR19TTE9UX1NJWkUgaXMgbm9uemVybyBhbmQgdGhlIGZ1bmN0aW9uIGRvZXMKCW5vdCBuZWVkIGEgZnJhbWUgcG9pbnRlci4KCShhcm1fZ2V0X2ZyYW1lX29mZnNldHMpOiBBZGQgQ0FMTEVSX0lOVEVSV09SS0lOR19TTE9UX1NJWkUgYnl0ZXMgdG8KCXRoZSBzb2Z0IGZyYW1lIHBvaW50ZXIgb2Zmc2V0LgoJKHRodW1iX2V4cGFuZF9wcm9sb2d1ZSk6IFNldCB1cCByMTEgZm9yIC1tY2FsbGVyLXN1cGVyLWludGVyd29ya2luZy4KCSogY29uZmlnL2FybS9hcm0ubWQgKCpjYWxsX3JlZ190aHVtYiwgKmNhbGxfdmFsdWVfcmVnX3RodW1iKTogVXNlCglfaW50ZXJ3b3JrX3tyNyxyMTF9X2NhbGxfdmlhX3JOIGlmIHNvbWUgYXJndW1lbnRzIGFyZSBwYXNzZWQgb24KCXRoZSBzdGFjay4gIFVzZSBmcmFtZV9wb2ludGVyX25lZWRlZCB0byBjaG9vc2UgYmV0d2VlbiB0aGVtLgoJKiBjb25maWcvYXJtL2xpYjFmdW5jcy5hc20gKF9hcm1fcmV0dXJuX3tyNyxyMTF9KTogTmV3IGZ1bmN0aW9ucy4KCShpbnRlcndvcmtfd2l0aF9mcmFtZSk6IE5ldyBtYWNyby4KCShpbnRlcndvcmspOiBBZGQgX2ludGVyd29ya197cjcscjExfV9jYWxsX3ZpYV9yTigpLgoKMjAwNC0xMC0xNCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJUFIgb3RoZXIvMTc5MDAKCSogZGlhZ25vc3RpYy5jICh0cmltX2ZpbGVuYW1lKTogRml4IGxvZ2ljIGJ1ZyBpbiB3YWxraW5nIGJhY2t3YXJkcwoJdXAgdGhlIGZpbGVuYW1lIGxvb2tpbmcgZm9yIGEgcHJldmlvdXMgZGlyZWN0b3J5IHNlcGFyYXRvci4KCjIwMDQtMTAtMTQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10cmVlLmggKGVudW0gY190eXBlc3BlY19raW5kLCBzdHJ1Y3QgY190eXBlc3BlYywKCXBhcnNlcl94cmVmX3RhZyk6IE5ldy4KCShzdHJ1Y3QgY19kZWNsc3BlY3MpOiBBZGQgdGFnX2RlZmluZWRfcC4gIEFkanVzdCBkZWZpbml0aW9uIG9mCgl0eXBlZGVmX3AuCgkoZGVjbHNwZWNzX2FkZF90eXBlKTogQWRqdXN0IHByb3RvdHlwZXMuCgkqIGMtcGFyc2UuaW4gKCV1bmlvbik6IEFkZCB0c3R5cGUuCgkodHlwZXNwZWNfbm9uYXR0ciwgdHlwZXNwZWNfYXR0ciwgdHlwZXNwZWNfcmVzZXJ2ZWRfbm9uYXR0ciwKCXR5cGVzcGVjX3Jlc2VydmVkX2F0dHIsIHR5cGVzcGVjX25vbnJlc2VydmVkX25vbmF0dHIsCglzdHJ1Y3RzcF9hdHRyLCBzdHJ1Y3RzcF9ub25hdHRyKTogQ2hhbmdlIHRvIHRzdHlwZS4gIFVwZGF0ZQoJYWN0aW9ucy4KCSogYy1kZWNsLmMgKGJ1aWxkX251bGxfZGVjbHNwZWNzKTogSW5pdGlhbGl6ZSB0YWdfZGVmaW5lZF9wLgoJKGRlY2xzcGVjc19hZGRfdHlwZSk6IFVwZGF0ZSB0byB0YWtlIHN0cnVjdCBjX3R5cGVzcGVjIGFyZ3VtZW50LgoJU2V0IHRhZ19kZWZpbmVkX3AgYW5kIHR5cGVkZWZfcCBhcyBhcHByb3ByaWF0ZS4KCSh4cmVmX3RhZyk6IFJlbmFtZSB0byBwYXJzZXJfeHJlZl90YWcgYW5kIHJlcGxhY2UgYnkgd3JhcHBlci4KCVVwZGF0ZSB0byByZXR1cm4gc3RydWN0IGNfdHlwZXNwZWMuCgkoc2hhZG93X3RhZ193YXJuZWQpOiBEb24ndCBsZXQgZW1wdHkgZGVjbGFyYXRpb25zIHdpdGggcXVhbGlmaWVycwoJb3Igc3RvcmFnZSBjbGFzcyBzcGVjaWZpZXJzIHJlZGVjbGFyZSBhIHRhZyBpZiBhIHByZXZpb3VzCglkZWNsYXJhdGlvbiBpcyB2aXNpYmxlLgoKMjAwNC0xMC0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBkZWJ1Zy8xNTg2MAoJKiBkd2FyZjJvdXQuYyAocnRsX2Zvcl9kZWNsX2xvY2F0aW9uKTogQXBwbHkgYmlnLWVuZGlhbiBjb3JyZWN0aW9uCglmb3IgREVDTF9JTkNPTUlOR19SVEwuCgoyMDA0LTEwLTE0ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCglQUiB0YXJnZXQvMTc5ODQKCSogY29uZmlnL2NyaXMvY3Jpcy5tZCAoYXNyYW5kYiwgYXNyYW5kdywgbHNyYW5kYiwgbHNyYW5kdyk6IEFwcGx5Cgl0cnVuY19pbnRfZm9yX21vZGUgZm9yIGNvbnN0YW50cyB1c2VkIGluIHNob3J0ZW5lZCBtb2RlLgoKMjAwNC0xMC0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBjLzE3Mzg0CgkqIGMtY29tbW9uLmMgKGhhbmRsZV9tb2RlX2F0dHJpYnV0ZSk6IERpc2FsbG93IG1vZGUgY2hhbmdlcyB0aGF0CglhbHRlciB0aGUgQ09ERSBvZiB0aGUgdG9wLWxldmVsIHR5cGUuCgoJKiBjcnRzdHVmZi5jIChfX0ZSQU1FX0VORF9fKTogUmVtb3ZlIG1vZGUgYXR0cmlidXRlLiAgRmluZCAzMi1iaXQKCWludGVnZXIgZnJvbSBpbnRlcm5hbCBsaW1pdHMgbWFjcm9zLgoJKiBjb25maWcvaTM4Ni9tbTNkbm93LmggKF9fdjJzZik6IEZpeCBiYXNlIHR5cGUuCgoyMDA0LTEwLTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGRlYnVnLzEzODQxCgkqIGZ1bmN0aW9uLmMgKGluc3RhbnRpYXRlX2RlY2wpOiBSZWN1cnNlIGZvciBDT05DQVQuCgoyMDA0LTEwLTEzICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoYW5kc2kzKTogQWRkIGF0dHJpYnV0ZSAiY29tcGFyZSIgZm9yCglhbmRpLi9hbmRpcy4KCShhbmRkaTMpOiBTYW1lLgoJKGV4dHp2ZGlfaW50ZXJuYWwxKTogQWRkIGF0dHJpYnV0ZSAiY29tcGFyZSIuCgkoZXh0enZkaV9pbnRlcm5hbDIpOiBTYW1lLgoKMjAwNC0xMC0xMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZG9jL21kLnRleGkgKEluc24gQ2Fub25pY2FsaXphdGlvbnMpOiBSZW1vdmVkIGV4dHJhbmVvdXMgcXVvdGUuCgoyMDA0LTEwLTEzICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKEV4dGVuZGVkIEFzbSk6IFJld3JpdGUgYXNtIHZvbGF0aWxlIGRlc2NyaXB0aW9uLgoKMjAwNC0xMC0xMyAgRnJhbmsgQ2guIEVpZ2xlciAgPGZjaGVAcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5jIChjb21waWxlX2ZpbGUpOiBDYWxsIG11ZGZsYXBfZmluaXNoX2ZpbGUgZnJvbSBoZXJlIC4uLgoJKiBjLWRlY2wuYyAoY193cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zKTogLi4uIGluc3RlYWQgb2YgaGVyZSAuLi4KCSogY3AvZGVjbC5jIChjcF9maW5pc2hfZmlsZSk6IC4uLiBhbmQgaGVyZS4KCSogdHJlZS1tdWRmbGFwLmMgKG11ZGZsYXBfZW5xdWV1ZV9kZWNsKTogUmV3b3JkIGEgd2FybmluZyBtZXNzYWdlLgoKMjAwNC0xMC0xMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB0cmVlLXNzYS1kb20uYyAocmVjb3JkX3JhbmdlKTogRnJlZSB0aGUgZWxlbWVudCBpZiB3ZSBhcmUgbm90Cglnb2luZyB0byB1c2UgaXQuCgoyMDA0LTEwLTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNTU3ODoKCSogZ2NjLmMgKG9wdGlvbl9tYXApOiBBZGRlZCAtLWV4dGRpcnMgYW5kIC0tZW5jb2RpbmcuCgoyMDA0LTEwLTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xNDQ1NAoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoVEFSR0VUX0FTTV9DQU5fT1VUUFVUX01JX1RIVU5LKTogU2V0IHRvCglzcGFyY19jYW5fb3V0cHV0X21pX3RodW5rLgoJKHNwYXJjX291dHB1dF9taV90aHVuayk6IFNpbXBsaWZ5IGhhbmRsaW5nIG9mIGRlbHRhIG9mZnNldC4gIEFkZAoJaGFuZGxpbmcgb2YgdmNhbGwgb2Zmc2V0LgoJKHNwYXJjX2Nhbl9vdXRwdXRfbWlfdGh1bmspOiBOZXcgcHJlZGljYXRlLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0FTTV9PVVRQVVRfTUlfVEhVTkspOiBEb2N1bWVudCBWQ0FMTF9PRkZTRVQuCgkoVEFSR0VUX0FTTV9PVVRQVVRfTUlfVkNBTExfVEhVTkspOiBEZWxldGUuCgkoVEFSR0VUX0FTTV9DQU5fT1VUUFVUX01JX1RIVU5LKTogTmV3IHRhcmdldCBob29rLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGVtaXRfYW5kX3ByZXNlcnZlKTogUHJlc2VydmUgc3RhY2sgYWxpZ25tZW50LgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChtb3ZkaSk6IFJlbW92ZSByZWR1bmRhbnQgdGVzdC4KCjIwMDQtMTAtMTMgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiB0cmVlLWR1bXAuYyAoZHVtcF9vcHRpb25zKTogUmVtb3ZlIFRERl9UUkVFLCBUREZfUlRMLAoJVERGX0lQQSBmcm9tIC1mZHVtcC10cmVlLSotYWxsLgoKMjAwNC0xMC0xMyAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhcm1fbG9hZF9waWNfcmVnaXN0ZXIpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBjb25maWcvYXJtL2FybS5jICh0aHVtYl9maW5kX3dvcmtfcmVnaXN0ZXIpOiBVcGRhdGUgY29tbWVudHMuCgkoYXJtX2xvYWRfcGljX3JlZ2lzdGVyKTogQWRkIGFyZ3VtZW50IGZvciBzY3JhdGNoIHJlZ2lzdGVyLgoJKGFybV9leHBhbmRfcHJvbG9ndWUsIHRodW1iX2V4cGFuZF9wcm9sb2d1ZSk6IFBhc3MgZXh0cmEgYXJndW1lbnQuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChidWlsdGluX3NldGptcF9yZWNlaXZlcik6IERpdHRvLgoKMjAwNC0xMC0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtZGF0YS1yZWYuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTEwLTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSAgICBaZGVuZWsgRHZvcmFrICA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE3NzI0CgkqIHRyZWUtY2ZnLmMgKHRyZWVfcHVyZ2VfZGVhZF9laF9lZGdlcyk6IEZyZWUgZG9taW5hbmNlIGluZm8uCgoyMDA0LTEwLTEzICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmlibS5jb20+CgoJKiByczYwMDAuYyAoYWx0aXZlY19idWlsdGluX21hc2tfZm9yX2xvYWQpOiBNYWRlIHN0YXRpYyBHVFkoKCkpLgoJKGFsdGl2ZWNfYnVpbHRpbl9tYXNrX2Zvcl9zdG9yZSk6IExpa2V3aXNlLgoJKGFsdGl2ZWNfaW5pdF9idWlsdGlucyk6IFVzZSBsYW5nX2hvb2tzLmJ1aWx0aW5fZnVuY3Rpb24gdG8KCWNyZWF0ZSB0aGUgZGVjbHMgZm9yIGJ1aWx0aW5fYWx0aXZlY19tYXNrX2Zvcl9sb2FkL3N0b3JlLgoKMjAwNC0xMC0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9jNHgvYzR4LmM6IFJlbW92ZSBpbmNsdXNpb24gb2YgbG9vcC5oLgoKMjAwNC0xMC0xMiAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChlZGdlX2l0ZXJhdG9yKTogS2VlcCB0aGUgYWRkcmVzcyBvZiBWRUMoZWRnZSkgKi4KCShlaV9jb250YWluZXIpOiBOZXc7IHJlbmFtZWQuCgkoZWlfc3RhcnQsIGVpX2xhc3QpOiBOZXcgbWFjcm9zLgoJKGVpX3N0YXJ0XzEsIGVpX2xhc3RfMSk6IFJlbmFtZWQgZnJvbSBlaV9zdGFydC4KCShlaV9sYXN0XzEsIGVpX2VuZF9wKTogVXNlIGVpX2NvbnRhaW5lcigpIHdoZXJlIGFwcGxpY2FibGUuCgkoZWlfb25lX2JlZm9yZV9lbmRfcCwgZWlfbmV4dCwgZWlfZWRnZSk6IExpa2V3aXNlLgoJKiBnY3NlLmMgKHJlbW92ZV9yZWFjaGFibGVfZXF1aXZfbm90ZXMpOiBVc2UgZWlfY29udGFpbmVyKCkuCgoyMDA0LTEwLTExICBTZWJhc3RpYW4gUG9wICA8cG9wQGNyaS5lbnNtcC5mcj4KCgkqIE1ha2VmaWxlLmluICh0cmVlLXNzYS1sb29wLW5pdGVyLm8pOiBEZXBlbmRzIG9uIHRyZWUtZGF0YS1yZWYuaC4KCSogY2ZnbG9vcC5jIChpbml0aWFsaXplX2xvb3BzX3BhcmFsbGVsX3ApOiBOZXcuCgkoZmxvd19sb29wc19maW5kKTogSW5pdGlhbGl6ZSB0aGUgcGFyYWxsZWxfcCBmaWVsZCB0byB0cnVlIGZvciBhbGwKCXRoZSBsb29wcy4KCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jOiBJbmNsdWRlICJ0cmVlLWRhdGEtcmVmLmgiLgoJKGVzdGltYXRlX251bWJlcnNfb2ZfaXRlcmF0aW9uc19sb29wKTogSW5mZXJzIHRoZSBsb29wIGJvdW5kcyBmcm9tCgl0aGUgc2l6ZSBvZiB0aGUgZGF0YSBhY2Nlc3NlZCBpbiB0aGUgbG9vcC4KCShzdHJ1Y3QgbmJfaXRlcl9ib3VuZCk6IE1vdmVkLi4uCgkqIGNmZ2xvb3AuaCAoc3RydWN0IG5iX2l0ZXJfYm91bmQpOiAuLi4gaGVyZS4KCShlc3RpbWF0ZWRfbmJfaXRlcmF0aW9ucywgcGFyYWxsZWxfcCk6IE5ldyBmaWVsZHMgaW4gc3RydWN0IGxvb3AuCgkocmVjb3JkX2VzdGltYXRlKTogRGVjbGFyZSBleHRlcm4gaGVyZS4KCSogdHJlZS1jaHJlYy5jOiBGaXggY29tbWVudHMuCgkobmJfdmFyc19pbl9jaHJlYyk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS1jaHJlYy5oIChuYl92YXJzX2luX2NocmVjKTogRGVjbGFyZWQgaGVyZS4KCSogdHJlZS1kYXRhLXJlZi5jOiBEb24ndCBpbmNsdWRlIGxhbWJkYS5oLCB0aGF0IGlzIGFscmVhZHkgaW5jbHVkZWQKCWluIHRyZWUtZGF0YS1yZWYuaC4KCSh0cmVlX2ZvbGRfZGl2aWRlc19wKTogRG9uJ3QgY2hlY2sgZm9yIGludGVnZXJfb25lcC4KCSh0cmVlX2ZvbGRfYmV6b3V0KTogUmVtb3ZlZC4KCShnY2QpOiBOZXcgc3RhdGljIGR1cGxpY2F0ZWQgZnVuY3Rpb24uCgkoaW50X2RpdmlkZXNfcCwgZHVtcF9zdWJzY3JpcHQpOiBOZXcuCgkoZHVtcF9kYXRhX2RlcGVuZGVuY2VfcmVsYXRpb24pOiBVc2UgZHVtcF9zdWJzY3JpcHQuCgkoZHVtcF9kaXN0X2Rpcl92ZWN0b3JzLCBkdW1wX2RkcnMsIGNvbXB1dGVfZXN0aW1hdGVkX25iX2l0ZXJhdGlvbnMsCgllc3RpbWF0ZV9uaXRlcl9mcm9tX3NpemVfb2ZfZGF0YSk6IE5ldy4KCShhbmFseXplX2FycmF5X2luZGV4ZXMsIGFuYWx5emVfYXJyYXkpOiBDYWxsCgllc3RpbWF0ZV9uaXRlcl9mcm9tX3NpemVfb2ZfZGF0YSBkdXJpbmcJdGhlIGRldGVjdGlvbiBvZiBhcnJheQoJcmVmZXJlbmNlcy4gIFBhc3MgaW4gYSBwb2ludGVyIHRvIHRoZSBzdGF0ZW1lbnQgdGhhdCBjb250YWlucyB0aGUKCWFycmF5IHJlZmVyZW5jZS4KCShhbGxfY2hyZWNzX2VxdWFsX3ApOiBOZXcuCgkoY29tcHV0ZV9kaXN0YW5jZV92ZWN0b3IpOiBSZW5hbWVkIGNvbXB1dGVfc3Vic2NyaXB0X2Rpc3RhbmNlLgoJRGVhbCB3aXRoIG11bHRpdmFyaWF0ZSBjb25mbGljdCBmdW5jdGlvbnMuCgkoaW5pdGlhbGl6ZV9kYXRhX2RlcGVuZGVuY2VfcmVsYXRpb24pOiBJbml0aWFsaXplIEREUl9BRkZJTkVfUCwKCUREUl9TSVpFX1ZFQ1QsIEREUl9ESVNUX1ZFQ1QsIGFuZCBERFJfRElSX1ZFQ1QuCgkobm9uX2FmZmluZV9kZXBlbmRlbmNlX3JlbGF0aW9uKTogTmV3LgoJKGFuYWx5emVfeml2X3N1YnNjcmlwdCwgYW5hbHl6ZV9zaXZfc3Vic2NyaXB0X2NzdF9hZmZpbmUsCglhbmFseXplX3Npdl9zdWJzY3JpcHQsIGFuYWx5emVfbWl2X3N1YnNjcmlwdCwKCWFuYWx5emVfb3ZlcmxhcHBpbmdfaXRlcmF0aW9ucywgc3Vic2NyaXB0X2RlcGVuZGVuY2VfdGVzdGVyKToKCUluaXRpYWxpemUgYW5kIHJldHVybiBsYXN0X2NvbmZsaWN0cyBmdW5jdGlvbi4KCShpbml0aWFsaXplX21hdHJpeF9BLCBGTE9PUiwgY29tcHV0ZV9vdmVybGFwX3N0ZXBzX2Zvcl9hZmZpbmVfdW5pdmFyLAoJY29tcHV0ZV9vdmVybGFwX3N0ZXBzX2Zvcl9hZmZpbmVfMV8yKTogTmV3LgoJKGFuYWx5emVfc2l2X3N1YnNjcmlwdF9hZmZpbmVfY3N0KTogUmVtb3ZlZC4KCShhbmFseXplX3N1YnNjcmlwdF9hZmZpbmVfYWZmaW5lKTogRGlzcHJvdmUgZGVwZW5kZW5jZXMgYmFzZWQgb24gdGhlCglpdGVyYXRpb24gZG9tYWlucy4gIFNvbHZlIHRoZSB1bml2YXJpYXRlIGRlcGVuZGVuY2UgY2FzZSBhcyBiZWZvcmUsCglidXQgdXNlIGxhbWJkYV9tYXRyaXhfcmlnaHRfaGVybWl0ZSBpbnN0ZWFkIG9mIHRyZWVfZm9sZF9iZXpvdXQuCglJbXBsZW1lbnQgdGhlIG11bHRpdmFyaWF0ZSBjYXNlIG9mIDIgdmVyc3VzIDEgdmFyaWFibGVzLgoJKGJ1aWxkX2NsYXNzaWNfZGlzdF92ZWN0b3IsIGJ1aWxkX2NsYXNzaWNfZGlyX3ZlY3Rvcik6IEltcGxlbWVudCBzb21lCgl1bmhhbmRsZWQgY2FzZXMuCgkoZmluZF9kYXRhX3JlZmVyZW5jZXNfaW5fbG9vcCk6IENvbXB1dGUgYW5kIGluaXRpYWxpemUKCWxvb3AtPmVzdGltYXRlZF9uYl9pdGVyYXRpb25zIGFuZCBsb29wLT5wYXJhbGxlbF9wLgoJKGFuYWx5emVfYWxsX2RhdGFfZGVwZW5kZW5jZXMpOiBNb2RpZnkgdGhlIGRlYnVnIGR1bXAgb3JkZXIuCgkqIHRyZWUtZGF0YS1yZWYuaCAoU1VCX0xBU1RfQ09ORkxJQ1RfSU5fQSwgU1VCX0xBU1RfQ09ORkxJQ1RfSU5fQiwKCXN1YnNjcmlwdC0+bGFzdF9jb25mbGljdF9pbl9hLCBzdWJzY3JpcHQtPmxhc3RfY29uZmxpY3RfaW5fYik6IFJlbW92ZWQuCgkoU1VCX0xBU1RfQ09ORkxJQ1QsIHN1YnNjcmlwdC0+bGFzdF9jb25mbGljdCwKCWRhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbi0+YWZmaW5lX3AsIGRhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbi0+c2l6ZV92ZWN0LAoJRERSX0FGRklORV9QLCBERFJfU0laRV9WRUNUKTogTmV3LgoJKGZpbmRfZGF0YV9yZWZlcmVuY2VzX2luX2xvb3AsIGluaXRpYWxpemVfZGF0YV9kZXBlbmRlbmNlX3JlbGF0aW9uLAoJZHVtcF9zdWJzY3JpcHQsIGR1bXBfZGRycywgZHVtcF9kaXN0X2Rpcl92ZWN0b3JzKTogRGVjbGFyZWQgaGVyZS4KCjIwMDQtMTAtMTIgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTEwLTEyICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCglQUiAxNzg5MgoJKiB0cmVlLXNzYS1kb20uYyAodW5zYWZlX2Fzc29jaWF0aXZlX2ZwX2Jpbm9wKTogTmV3IGZ1bmN0aW9uLgoJKHNpbXBsaWZ5X3Joc19hbmRfbG9va3VwX2F2YWlsX2V4cHIpOiBEaXNhbGxvdyBhc3NvY2lhdGl2aXR5CglhbmQgY29uc3RhbnQgZm9sZGluZyBvZiBmbG9hdGluZyBwb2ludCBNVUxUX0VYUFIvUExVU19FWFBSCglleHByZXNzaW9ucy4KCjIwMDQtMTAtMTIgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF92YV9zdGFydCk6IFVzZSBidWlsZF92YV9hcmdfaW5kaXJlY3RfcmVmLgoJKHMzOTBfZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCgoyMDA0LTEwLTEyICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBkZWJpYW4ub3JnPgoKCSogZGVmYXVsdHMuaCAoUkVHTk9fTU9ERV9PS19GT1JfQkFTRV9QLCBSRUdfTU9ERV9PS19GT1JfQkFTRV9QKQoJKE1PREVfQkFTRV9SRUdfUkVHX0NMQVNTLCBSRUdOT19NT0RFX09LX0ZPUl9SRUdfQkFTRV9QKQoJKFJFR19NT0RFX09LX0ZPUl9SRUdfQkFTRV9QKTogUHJvdmlkZSBkZWZhdWx0IGRlZmluaXRpb25zLgoJKiByZWdjbGFzcy5jIChyZWNvcmRfYWRkcmVzc19yZWdzKTogUmVtb3ZlIGlmZGVmLiAgVXNlCglSRUdfTU9ERV9PS19GT1JfUkVHX0JBU0VfUCBhbmQgTU9ERV9CQVNFX1JFR19SRUdfQ0xBU1MuCgkqIHJlZ3JlbmFtZS5jIChSRUdfTU9ERV9PS19GT1JfQkFTRV9QKTogUmVtb3ZlIHVubmVjZXNzYXJ5CglkZWZpbml0aW9uLgoJKHNjYW5fcnR4X2FkZHJlc3MsIHJlcGxhY2Vfb2xkZXN0X3ZhbHVlX2FkZHIpOiBVc2UKCVJFR19NT0RFX09LX0ZPUl9SRUdfQkFTRV9QIGFuZCBNT0RFX0JBU0VfUkVHX1JFR19DTEFTUy4KCSogcmVsb2FkLmMgKFJFR05PX01PREVfT0tfRk9SX0JBU0VfUCwgUkVHX01PREVfT0tfRk9SX0JBU0VfUCk6IFJlbW92ZQoJdW5uZWNlc3NhcnkgZGVmaW5pdGlvbnMuCgkoZmluZF9yZWxvYWRzX2FkZHJlc3NfMSk6IFN1cHBvcnQgUkVHX01PREVfT0tfRk9SX1JFR19CQVNFX1AKCWFuZCBNT0RFX0JBU0VfUkVHX1JFR19DTEFTUy4KCSogY29uZmlnL2FybS9hcm0uaCAoTU9ERV9CQVNFX1JFR19DTEFTUyk6IERvbid0IGNoZWNrIHJlbG9hZF9jb21wbGV0ZWQuCgkoTU9ERV9CQVNFX1JFR19SRUdfQ0xBU1MpOiBEZWZpbmUuCgkoUkVHTk9fTU9ERV9PS19GT1JfUkVHX0JBU0VfUCk6IERlZmluZS4KCShSRUdfTU9ERV9PS19GT1JfUkVHX0JBU0VfUCk6IERlZmluZS4KCSogZG9jL3RtLnRleGkgKFJlZ2lzdGVyIENsYXNzZXMpOiBEb2N1bWVudCBNT0RFX0JBU0VfUkVHX1JFR19DTEFTUywKCVJFR19NT0RFX09LX0ZPUl9SRUdfQkFTRV9QLCBhbmQgUkVHTk9fTU9ERV9PS19GT1JfUkVHX0JBU0VfUC4KCjIwMDQtMTAtMTIgIERhbmllbCBCZXJsaW4gPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1hbGlhcy5jICh2ZXJpZnlfbmFtZV90YWdzKTogTmV3IGZ1bmN0aW9uLgoJKHZlcmlmeV9mbG93X3NlbnNpdGl2ZV9hbGlhc19pbmZvKTogUmVtb3ZlIGNvZGUgdGhhdCB1c2VkIHRvIGNoZWNrIG5hbWUgdGFncy4KCSh2ZXJpZnlfYWxpYXNfaW5mbyk6IENhbGwgdmVyaWZ5X25hbWVfdGFncy4KCjIwMDQtMTAtMTIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xNzkzMQoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfcnR4X2Nvc3RzKTogSGFuZGxlIENPTVBBUkUgd2l0aAoJWkVST19FWFRSQUNUIGluIGl0LgoKMjAwNC0xMC0xMiAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoYXJtX3ByaW50X29wZXJhbmQpOiBVc2Ugb3V0cHV0X29wZXJhbmRfbG9zc2FnZSB3aGVyZSBwb3NzaWJsZQoJcmF0aGVyIHRoYW4gYWJvcnRpbmcuCgoyMDA0LTEwLTEyICBQYXVsIEJyb29rICA8cGF1bEBjb3VkZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2M6IEFkZCBhcm12NntrLHosemt9CgkqIGNvbmZpZy9hcm0vYXJtLWNvcmVzLmRlZjogQWRkIGFybTExNzYgYW5kIG1wY29yZS4KCSogY29uZmlnL2FybS90dW5lLm1kOiBSZWdlbmVyYXRlLgoJKiBjb25maWcvYXJtL2FybS5jIChGTF9GT1JfQVJDSDZLLCBGTF9GT1JfQVJDSDZaLCBGTF9GT1JfQVJDSDZaSyk6CglEZWZpbmUuCgkoYWxsX2FyY2hpdGVjdHVyZXMpOiBBZGQgYXJtdjZrLCBhcm12NnosIGFybXY2emsuCgkqIGNvbmZpZy9hcm0vbGliMWZ1bmNzLmFzbTogUmVjb2duaXNlIG5ldyBhcm0gYXJjaXRlY3R1cmVzLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IG5ldyBhcmNoIGFuZCBjcHUgdmFsdWVzLgoKMjAwNC0xMC0xMiAgUGF1bCBCcm9vayAgPHBhdWxAY29vZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2JwYWJpLmggKFNVQlRBUkdFVF9FWFRSQV9BU01fU1BFQyk6IENoYW5nZSBtZWFiaT0zIHRvCgltZWFiaT00LgoKMjAwNC0xMC0xMiAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChhZGRzaTNfY2JyYW5jaF9zY3JhdGNoKTogQ29ycmVjdCBjb25zdHJhaW50cy4KCUhhbmRsZSBuZWdhdGl2ZSBjb25zdGFudHMuCgoyMDA0LTEwLTEyICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzE3MzAxCgkqIGMtdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBpZiB0aGVyZQoJYXJlIHRvbyBmZXcgYXJndW1lbnRzLgoJKGJ1aWxkX2Z1bmN0aW9uX2NhbGwpOiBIYW5kbGUgZXJyb3JfbWFya19ub2RlIHJldHVybiBmcm9tCgljb252ZXJ0X2FyZ3VtZW50cy4KCjIwMDQtMTAtMDYgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWd1cmUuYWMgKHN5bWJvbGljX2xpbmspOiBSZXBsYWNlIHdpdGggJExOX1MuCgkoQXNzZW1ibGVyL0xpbmtlcik6IEhhcmQgbGluayBmcm9tIGdhcyBhbmQgYmludXRpbHMgdHJlZXMuCgkqIGFjbG9jYWwubTQgKGdjY19BQ19QUk9HX0xOX1MpOiBUcnkgImNwIC1wIiBiZWZvcmUgY3AuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMTAtMTIgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWM6IERvbid0IGxvb2sgZm9yIGhvc3QgYXNzZW1ibGVyIHdoZW4gYnVpbGRpbmcgYSBjYW5hZGlhbgoJY3Jvc3MuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMTAtMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG90aGVyLzE3MzYxCgkqIGMtb3B0cy5jIChwZXJtaXRfZm9ydHJhbl9vcHRpb25zKTogRGVsZXRlL29ic29sZXRlIGdsb2JhbCB2YXJpYWJsZS4KCShjX2NvbW1vbl9pbml0X29wdGlvbnMpOiBSZW1vdmUgI2lmZGVmIENMX0Y3NyBjb2RlLiAgU2NhbiBjb21tYW5kCglsaW5lIG9wdGlvbnMgZm9yICItbGFuZy1hc20iIGFuZCBpZiBmb3VuZCBhbGxvdyBhbnkgb2YgdGhlIEMtZmFtaWx5Cglmcm9udC1lbmQgb3B0aW9ucy4KCShjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogUmVtb3ZlIGxhc3QgdXNlIG9mIHBlcm1pdF9mb3J0cmFuX29wdGlvbnMuCgoyMDA0LTEwLTExICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHByaW50X29wZXJhbmQpOiBTdXBwb3J0ICdTJyBmb3JtYXQgZmxhZy4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIip0bXFpX21lbSIpOiBVc2UgJ1MnIGZvcm1hdCBmbGFnLgoJKCIqdHN0c2kiLCAiKnRzdHNpX2Njb25seSIsICIqdHN0c2lfY2Nvbmx5MiIpOiBMaWtld2lzZS4KCSgiKnRzdGhpQ0NUIiwgIip0c3RoaUNDVF9jY29ubHkiLCAiKnRzdGhpIiwgIip0c3RoaV9jY29ubHkiKTogTGlrZXdpc2UuCgkoIip0c3RxaUNDVCIsICIqdHN0cWlDQ1RfY2Nvbmx5IiwgIip0c3RxaSIsICIqdHN0cWlfY2Nvbmx5Iik6IExpa2V3aXNlLgoJKCIqY21waGlfY2N1IiwgIipjbXBxaV9jY3UiLCAiKmNsYyIpOiBMaWtld2lzZQoJKCJtb3Z0aSIsICIqbW92ZGlfMzEiLCAiKm1vdnFpIiwgIiptb3ZkZl8zMSIsICIqbXZjIik6IExpa2V3aXNlLgoJKCIqbW92c3RyaWN0aGkiKTogTGlrZXdpc2UuCgkoIipsb2FkX211bHRpcGxlX2RpIiwgIipsb2FkX211bHRpcGxlX3NpIik6IExpa2V3aXNlLgoJKCIqc3RvcmVfbXVsdGlwbGVfZGkiLCAiKnN0b3JlX211bHRpcGxlX3NpIik6IExpa2V3aXNlLgoJKCIqc2V0aGlxaXNpIiwgIipzZXRoaWhpc2kiKTogTGlrZXdpc2UuCgkoIipzZXRoaXFpZGlfNjQiLCAiKnNldGhpcWlkaV8zMSIpOiBMaWtld2lzZS4KCSgiKmFuZHFpM196YXJjaCIsICIqYW5kcWkzX2VzYSIsICIqbmMiKTogTGlrZXdpc2UuCgkoIippb3JxaTNfemFyY2giLCAiKmlvcnFpM19lc2EiLCAiKm9jIik6IExpa2V3aXNlLgoJKCIqeG9ycWkzIiwgIip4YyIsICIqeGNfemVybyIpOiBMaWtld2lzZS4KCSgiZ2V0X3RwXzY0IiwgImdldF90cF8zMSIsICJzZXRfdHBfNjQiLCAic2V0X3RwXzMxIik6IExpa2V3aXNlLgoKCSgiKnRtaGlfZnVsbCIpOiBGaXggaW5jb3JyZWN0IG9wX3R5cGUgYXR0cmlidXRlLgoKCSgiKmFkZGRpM19hbGNfY2MiLCAiKmFkZGRpM19hbGMiKTogUmVtb3ZlIGRvdWJsZSBiYWNrc2xhc2guCgkoIipzdWJkaTNfc2xiX2NjIiwgIipzdWJkaTNfc2xiIik6IExpa2V3aXNlLgoJKCIqYWRkc2kzX2FsY19jYyIsICIqYWRkc2kzX2FsYyIpOiBMaWtld2lzZS4KCSgiKnN1YnNpM19zbGJfY2MiLCAiKnN1YnNpM19zbGIiKTogTGlrZXdpc2UuCgoyMDA0LTEwLTExICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdQoKCVBSIG1pZGRsZS1lbmQvMTYyNjYKCSogZnVuY3Rpb24uYyAodGVtcF9zbG90c19hdF9sZXZlbCk6IEZpeCB0eXBvIHdoaWNoIGNyZWF0ZXMgdG9vCgltYW55IHRlbXAgc3RhY2sgc2xvdHMgbGV2ZWxzLgoKMjAwNC0xMC0xMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX3RyYW1wb2xpbmVfdGVtcGxhdGUpOiBHZW5lcmF0ZSBzaG9ydGVyCgl0cmFtcG9saW5lIGNvZGUuCgkoczM5MF90cmFtcG9saW5lX2luc3RhbnRpYXRlKTogQWRhcHQuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoVFJBTVBPTElORV9TSVpFKTogQWRhcHQgdG8gbmV3IGNvZGUuCgoyMDA0LTEwLTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzE3NjU3CgkqIHN0bXQuYyAoYWRkX2Nhc2Vfbm9kZSk6IEFkZCBhZGRpdGlvbmFsIHR5cGUgYXJndW1lbnQuICBEZWNsYXJlCglhcyBzdGF0aWMgdG8gbWF0Y2ggcHJvdG90eXBlLiAgQ29udmVydCB0aGUgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcwoJdG8gdGhlIHNwZWNpZmllZCBpbmRleCB0eXBlLiAgT3B0aW1pemUgYXdheSBjYXNlIHJhbmdlcy92YWx1ZXMKCXRoYXQgYXJlIG91dHNpZGUgdGhlIGluZGV4IHR5cGUncyBib3VuZHMuICBUcnVuY2F0ZSBjYXNlIHJhbmdlcwoJdGhhdCBzcGFuIHRoZSBpbmRleCB0eXBlJ3MgYm91bmRzLgoJKGV4cGFuZF9jYXNlKTogQXZvaWQgdW5uZXNzYXJ5IGNvbXB1dGF0aW9uIGFuZCBtZW1vcnkgYWxsb2NhdGlvbgoJd2hlbiBpbmRleCB0eXBlIGlzIGVycm9yX21hcmtfbm9kZS4gIFBhc3MgaW5kZXhfdHlwZSBhcyByZXF1aXJlZAoJYnkgY2hhbmdlIHRvIGFkZF9jYXNlX25vZGUgQVBJLiAgTm8gbmVlZCB0byBjb252ZXJ0IGNhc2UgcmFuZ2UKCWJvdW5kcyB0byBpbmRleF90eXBlLCB0aGlzIGlzIG5vdyBkb25lIGJ5IGFkZF9jYXNlX25vZGUuCgoyMDA0LTEwLTExICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX29mZnNldF9wKTogQWRkIHByb3RvdHlwZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX29mZnNldF9wKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmNtcGRpX2NjdCIsICIqY21wc2lfY2N0IiwgIipjbXBkaV9jY3UiLAoJIipjbXBzaV9jY3UiLCAiKmNtcGhpX2NjdSIsICIqY21wcWlfY2N1Iik6IFVzZSBzcGxpdHRlciB0bwoJdHJhbnNmb3JtIFEtPlEgYWx0ZXJuYXRpdmVzIHRvICpjbGMgcGF0dGVybi4KCSgiKmNsYyIpOiBNb3ZlLgoJKCJtb3Z0aSIsICIqbW92ZGlfNjQiLCAiKm1vdmRpXzMxIiwgIiptb3ZzaV96YXJjaCIsICIqbW92c2lfZXNhIiwKCSIqbW92aGkiLCAiKm1vdnFpIiwgIiptb3ZkZl82NCIsICIqbW92ZGZfMzEiLCAibW92c2YiKTogVXNlIHNwbGl0dGVyCgl0byB0cmFuc2Zvcm0gUS0+USBhbHRlcm5hdGl2ZXMgdG8gKm12YyBwYXR0ZXJuLgoJKCIqbXZjIik6IE1vdmUuICBBZGQgcGVlcGhvbGUgdG8gbWVyZ2UgYWRqYWNlbnQgTVZDcy4KCSgiKmFuZGRpMyIsICIqYW5kc2kzX3phcmNoIiwgIiphbmRzaTNfZXNhIiwgIiphbmRoaTNfemFyY2giLAoJIiphbmRoaTNfZXNhIiwgIiphbmRxaTNfemFyY2giLCAiKmFuZHFpM19lc2EiKTogVXNlIHNwbGl0dGVyIHRvCgl0cmFuc2Zvcm0gUS0+USBhbHRlcm5hdGl2ZXMgdG8gKm5jIHBhdHRlcm4uCgkoIipuYyIpOiBOZXcgaW5zbi4gIE5ldyBwZWVwaG9sZSB0byBtZXJnZSBhZGphY2VudCBOQ3MuCgkoIippb3JkaTMiLCAiKmlvcnNpM196YXJjaCIsICIqaW9yc2kzX2VzYSIsICIqaW9yaGkzX3phcmNoIiwKCSIqaW9yaGkzX2VzYSIsICIqaW9ycWkzX3phcmNoIiwgIippb3JxaTNfZXNhIik6IFVzZSBzcGxpdHRlciB0bwoJdHJhbnNmb3JtIFEtPlEgYWx0ZXJuYXRpdmVzIHRvICpvYyBwYXR0ZXJuLgoJKCIqb2MiKTogTmV3IGluc24uICBOZXcgcGVlcGhvbGUgdG8gbWVyZ2UgYWRqYWNlbnQgT0NzLgoJKCIqeG9yZGkzIiwgIip4b3JzaTMiLCAiKnhvcmhpMyIsICIqeG9ycWkzIik6IFVzZSBzcGxpdHRlciB0bwoJdHJhbnNmb3JtIFEtPlEgYWx0ZXJuYXRpdmVzIHRvICp4YyBwYXR0ZXJuLgoJKCIqeGMiKTogTmV3IGluc24uICBOZXcgcGVlcGhvbGUgdG8gbWVyZ2UgYWRqYWNlbnQgWENzLgoJKCIqeGNfemVybyIpOiBNb3ZlLiAgQWRkIHBlZXBob2xlIHRvIG1lcmdlIGFkamFjZW50IFhDcy4KCjIwMDQtMTAtMTEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogZ2ltcGxpZnkuYyAoZ2ltcGxlX3B1c2hfY29uZGl0aW9uKTogTWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QKCWhhdmUgYW55IHNhdmVkIGNvbmRpdGlvbiBjbGVhbnVwIGlmIHdlIHdlcmUgYXQgdGhlIHRvcCBsZXZlbC4KCjIwMDQtMTAtMTEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2Lm1kICgqYWRkZGkzX2ludGVybmFsKTogQ2hhbmdlIG5hbWUgdG8uLi4KCShhZGRkaTMpOiAuLi5yZXBsYWNpbmcgdGhlIGV4aXNpdGluZyBkZWZpbmVfZXhwYW5kLiAgQ29tYmluZQoJYWx0ZXJuYXRpdmVzLiAgRml4IHRoZSByYW5nZSBvZiB0aGUgY29uc3RhbnQgY29uc3RyYWludHMgKCdKJyBpbnN0ZWFkCglvZiAnTk9QJykuICBSZW1vdmUgYm9ndXMgb3BlcmFuZHNbMl0gY2hlY2suICBVc2Ugc2ltcGxpZnlfZ2VuX3N1YnJlZwoJdG8gZXh0cmFjdCB0aGUgbG93ZXIgYW5kIHVwcGVyIGhhbHZlcyBvZiB0aGUgREltb2RlIG9wZXJhbmRzLgoJQWx3YXlzIHVzZSBhZGRpM19sb3dlciBhbmQgYWRkZGkzX3VwcGVyLCBub3QgdGhlIHN1YmRpMyBmb3Jtcy4KCShhZGRkaTNfbG93ZXIpOiBGaXggdGhlIHJhbmdlIG9mIHRoZSBjb25zdGFudCBjb25zdHJhaW50cyBhbmQKCXJlbW92ZSB0aGUgYm9ndXMgb3BlcmFuZHNbMl0gY2hlY2suCgkoYWRkZGkzX3VwcGVyKTogVXNlIGdwcl9vcl9pbnQxMF9vcGVyYW5kIGFzIHRoZSBwcmVkaWNhdGUgZm9yCglvcGVyYW5kIDIuICBVc2UgYWRkeGkgdG8gaGFuZGxlIGNvbnN0YW50IG9wZXJhbmRzLgoJKHN1YmRpM19sb3dlciwgc3ViZGkzX3VwcGVyKTogRG9uJ3QgaGFuZGxlIGNvbnN0YW50IG9wZXJhbmRzLgoKMjAwNC0xMC0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbmd0eXBlLWxleC5sOiBBZGQgY29tbWVudGVkIH0gJiApIGNoYXJhY3RlcnMgdG8gdW5jb25mdXNlCgllZGl0b3IncyBwYXJlbiBtYXRjaGluZy4gQWxsb3cgI2RlZmluZSBpbnNpZGUgYSBzdHJ1Y3QuCgoyMDA0LTEwLTEwICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzE3NzAzCglwYXJ0IG9mIFBSIGMrKy8xNzY1NwoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYnVpbGRfY2xlYW51cF9wb2ludF9leHByKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmggKGZvbGRfYnVpbGRfY2xlYW51cF9wb2ludF9leHByKTogUHJvdG90eXBlLgoKMjAwNC0xMC0xMCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYzogTW92ZSBhdHRyaWJ1dGUgdG8gc3VicHJvZ3JhbSBkZWNsYXJhdGlvbgoJaW5zdGVhZCBvZiBzdWJyb3V0aW5lIHR5cGUuCgoyMDA0LTEwLTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYmFzaWMtYmxvY2suaDogUmVtb3ZlIHRoZSBwcm90b3R5cGVzIGZvciBjYW5faG9pc3RfaW5zbl9wLAoJaG9pc3RfaW5zbl9hZnRlciwgYW5kIGhvaXN0X2luc25fdG9fZWRnZS4KCSogcnRsLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlcyBmb3IgcmVnX3JlZmVyZW5jZWRfYmV0d2Vlbl9wLAoJbm9fanVtcHNfYmV0d2Vlbl9wLCBhbmQgaW5zbl9kZXBlbmRlbnRfcC4KCSogcnRsYW5hbC5jIChub19qdW1wc19iZXR3ZWVuX3AsIHJlZ19yZWZlcmVuY2VkX2JldHdlZW5fcCwKCWluc25fZGVwZW5kZW50X3AsIGluc25fZGVwZW5kZW50X3BfMSwgaG9pc3RfdGVzdF9zdG9yZSwKCWNhbl9ob2lzdF9pbnNuX3AsIGhvaXN0X3VwZGF0ZV9zdG9yZSwgaG9pc3RfaW5zbl9hZnRlciwKCWhvaXN0X2luc25fdG9fZWRnZSk6IFJlbW92ZS4KCjIwMDQtMTAtMTAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvMTc4ODEKCSogYy1kZWNsLmMgKGdyb2twYXJtcyk6IERvbid0IHdhcm4gZm9yIHBhcmFtZXRlcnMgb2YgaW5jb21wbGV0ZQoJdHlwZSBpbiBkZWNsYXJhdGlvbnMgdGhhdCBhcmUgbm90IGRlZmluaXRpb25zIGV4Y2VwdCBmb3IgdGhlIGNhc2UKCW9mIHBhcmFtZXRlcnMgb2Ygdm9pZCB0eXBlLgoKMjAwNC0xMC0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNC0xMC0xMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xNzMwMQoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl92YV9zdGFydCk6IENoZWNrIGZvciB0b28gZmV3Cglhcmd1bWVudHMgdG8gdmFfc3RhcnQuCgoyMDA0LTEwLTEwICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzE3MTg5CgkqIGMtZGVjbC5jIChncm9rZmllbGQpOiBNYWtlIGRpYWdub3N0aWMgZm9yIGJhZCBjYXNlcyBvZiB1bm5hbWVkCglmaWVsZHMgYSBwZWR3YXJuLiAgUGVkd2FybiBoZXJlIGZvciB1bm5hbWVkIHN0cnVjdHMvdW5pb25zIGlmCglwZWRhbnRpYy4KCSogYy1wYXJzZS5pbiAoY29tcG9uZW50X2RlY2wpOiBEb24ndCBwZWR3YXJuIGhlcmUgZm9yIHVubmFtZWQKCWZpZWxkcy4KCjIwMDQtMTAtMDkgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTc5MDYKCSogdHJlZS10YWlsY2FsbC5jICh0cmVlX29wdGltaXplX3RhaWxfY2FsbHNfMSk6IERvIG5vdCBhdHRlbXB0IHRvCgljb3B5IG5vbi1naW1wbGUgcmVnIGFyZ3VtZW50cy4KCjIwMDQtMTAtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTc4NTMKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogQ29ycmVjdCBjb21tZW50LgoJUmVvcmdhbml6ZSBoYW5kbGluZyBvZiBjb21wYXJpc29uIG9wZXJhdGlvbnMgd2l0aCBmbG9hdGluZyBwb2ludAoJcmVzdWx0cyAoYWx3YXlzIHJldHVybiAwLjAgZXZlbiB3aXRob3V0IEZMT0FUX1NUT1JFX0ZMQUdfVkFMVUUpLgoJTGlrZXdpc2UsIGludHJvZHVjZSBzdXBwb3J0IGZvciBjb21wYXJpc29uIG9wZXJhdGlvbnMgd2l0aCB2ZWN0b3IKCXJlc3VsdCB0eXBlcywgaW50cm9kdWNpbmcgYSBuZXcgVkVDVE9SX1NUT1JFX0ZMQUdfVkFMVUUgdGFyZ2V0IG1hY3JvLgoKCSogZG9jL3J0bC50ZXhpOiBEb2N1bWVudCBuZXcgVkVDVE9SX1NUT1JFX0ZMQUdfVkFMVUUgdGFyZ2V0IG1hY3JvLgoJKiBkb2MvdG0udGV4aTogTGlrZXdpc2UuCgoyMDA0LTEwLTA5ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiByZWdzLmggKHN0cnVjdCByZWdfaW5mb19kZWYpOiBSZW1vdmUgdGhlIGxhc3Rfbm9kZV91aWQgYW5kCgljaGFuZ2VzX21vZGUgZmllbGRzLgoJKFJFR05PX0xBU1RfTk9URV9VSUQpOiBEb24ndCBkZWZpbmUuCgkqIHJlZ2NsYXNzLmMgKHJlZ19zY2FuX21hcmtfcmVmcyk6IERvbid0IHNldCBSRUdOT19MQVNUX05PVEVfVUlELgoJKiByZWdtb3ZlLmMgKGNvcHlfc3JjX3RvX2Rlc3QpOiBMaWtld2lzZS4KCjIwMDQtMTAtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTc4OTQKCSogZm9sZC1jb25zdC5jIChmb2xkX2Rpdl9jb21wYXJlKTogV2hlbiBvcHRpbWl6aW5nIFgvQzEgb3AgQzIsIHRoZQoJcmVsYXRpb25hbCBjb21wYXJpc29uIG9wZXJhdG9yIG9wIG5lZWRzIHRvIGJlIHN3YXBwZWQvcmV2ZXJzZWQgd2hlbgoJQzEgaXMgbmVnYXRpdmUuICBpLmUuIFgvLTEwIDwgMSBiZWNvbWVzIFggPj0gLTksIG5vdCBYIDwgLTkuCgoyMDA0LTEwLTA4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0cmVlLW9wdC8xNzkwMgoJKiB0cmVlLXNzYS1waGlvcHQuYyAoY29uZGl0aW9uYWxfcmVwbGFjZW1lbnQpOiBVc2UgYnNpX2FmdGVyX2xhYmVscwoJaW5zdGVhZCBvZiBic2lfc3RhcnQuCgkodmFsdWVfcmVwbGFjZW1lbnQpOiBMaWtld2lzZS4KCShhYnNfcmVwbGFjZW1lbnQpOiBMaWtld2lzZQoKMjAwNC0xMC0wOSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY2ZnZXhwYW5kLmMgKG1heWJlX2R1bXBfcnRsX2Zvcl90cmVlX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2dpbXBsZV9jb25kX2V4cHIsIGV4cGFuZF9naW1wbGVfdGFpbGNhbGwsCglleHBhbmRfZ2ltcGxlX2Jhc2ljX2Jsb2NrKTogVXNlIGl0IHRvIGR1bXAgUlRMIGZvciBlYWNoIHN0bXQuCgkodHJlZV9leHBhbmRfY2ZnKTogQW5ub3VuY2UgZnVsbCBSVEwgZnVuY3Rpb24gZHVtcC4KCSogdHJlZS1vcHRpbWl6ZS5jIChleGVjdXRlX29uZV9wYXNzKTogVXNlIG5vcm1hbCBSVEwgcHJpbnRpbmcsCglub3QgdGhlIGdyYXBoIHZlcnNpb24uCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogQWxsb3cgZW1wdHkgc3RhdGVtZW50cwoJaW4gdGhlIGFybXMgb2YgYSBDT05EX0VYUFIgZm9yIGxvd2VyZWQgbm9kZXMuCgoyMDA0LTEwLTA4ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3BlLmggKGF0b3NmaXgxNiwgYXRvc2ZpeDMyLCBhdG9zZml4NjQsIGF0b3VmaXgxNiwKCWF0b3VmaXgzMiwgYXRvdWZpeDY0LCBzdHJ0b3NmaXgxNiwgc3RydG9zZml4MzIsIHN0cnRvc2ZpeDY0LAoJc3RydG91Zml4MTYsIHN0cnRvdWZpeDMyLCBzdHJ0b3VmaXg2NCk6IERlY2xhcmUuCgoyMDA0LTEwLTA4ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtbGV4LmMgKGludGVycHJldF9mbG9hdCk6IEdpdmUgYSBwZWR3YXJuIHJhdGhlciB0aGFuIGEgd2FybmluZwoJZm9yIGFuIG91dC1vZi1yYW5nZSBmbG9hdGluZyBwb2ludCBjb25zdGFudC4KCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2luZik6IEdpdmUgYSBwZWR3YXJuIHJhdGhlciB0aGFuIGEKCXdhcm5pbmcgaWYgdGhlIHRhcmdldCBmb3JtYXQgZG9lcyBub3Qgc3VwcG9ydCBpbmZpbml0aWVzLgoKMjAwNC0xMC0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGVtaXQtcnRsLmMgKGxhc3RfbGFiZWxfbnVtLCBiYXNlX2xhYmVsX251bSk6IFJlbW92ZS4KCShtYXhfbGFiZWxfbnVtKTogQWx3YXlzIHJldHVybiBsYWJlbF9udW0uCgkoc2V0X25ld19sYXN0X2xhYmVsX251bSwgcmVzdG9yZV9lbWl0X3N0YXR1cyk6IFJlbW92ZS4KCShpbml0X2VtaXQpOiBEb24ndCBpbml0aWFsaXplIGxhc3RfbGFiZWxfbnVtLgoJKiBmdW5jdGlvbi5jIChwb3BfZnVuY3Rpb25fY29udGV4dF9mcm9tKTogRG9uJ3QgY2FsbAoJcmVzdG9yZV9lbWl0X3N0YXR1cy4KCSogZnVuY3Rpb24uaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIHJlc3RvcmVfZW1pdF9zdGF0dXMuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3Igc2V0X25ld19sYXN0X2xhYmVsX251bS4KCjIwMDQtMTAtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsX2luaXQpOiBSZW1vdmUuCgkqIHRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZS4KCjIwMDQtMTAtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBpbnRlZ3JhdGUuYyAodHJ5X2NvbnN0YW50cywgc3Vic3RfY29uc3RhbnRzLCBtYXJrX3N0b3Jlcyk6CglSZW1vdmUuCgkqIGludGVncmF0ZS5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgdHJ5X2NvbnN0YW50cy4KCjIwMDQtMTAtMDggIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10eXBlY2suYyAoZW51bSBpbXBsX2NvbnYpOiBBZGQgaWNfYXJncGFzc19ub25wcm90by4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogSGFuZGxlIGljX2FyZ3Bhc3Nfbm9ucHJvdG8uICBBZGQKCWNvbW1lbnRzIGFib3V0IGl0cyByZWxldmFuY2UgdG8gZXJyb3JzLgoJKGNfY29udmVydF9wYXJtX2Zvcl9pbmxpbmluZyk6IFVzZSBpY19hcmdwYXNzX25vbnByb3RvLgoKMjAwNC0xMC0wOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYy8xNjk5OQoJKiBjLXBwb3V0cHV0LmMgKGNiX2lkZW50KTogRG9uJ3QgcXVvdGUgc3RyaW5nIGFzIGl0IGlzIGFscmVhZHkKCXF1b3RlZC4KCjIwMDQtMTAtMDggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtcHJlLmMgKGluaXRfcHJlKTogVXNlIHNpemUgb2YgQVJSQVlfUkVGIHRvIGFsbG9jYXRlCglyZWZlcmVuY2Vfbm9kZV9wb29sLgoKMjAwNC0xMC0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDQtMTAtMDggIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfcmVnaXN0ZXJfaW5mbyk6IERvbid0IHNhdmUgZnBycyBmb3IKCS1tc29mdC1mbG9hdC4KCShzMzkwX2NvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlKTogTWFrZSBmcHJzICdmaXhlZCcgZm9yIC1tc29mdC1mbG9hdC4KCjIwMDQtMTAtMDggIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoVEFSR0VUX0RFRkFVTFRfQkFDS0NIQUlOKTogTmV3IGRlZmluZS4KCShUQVJHRVRfREVGQVVMVCk6IFVzZSBzeW1ib2xpYyB2YWx1ZXMuCgkqIGNvbmZpZy9zMzkwL3RwZi5oIChUQVJHRVRfREVGQVVMVF9CQUNLQ0hBSU4pOiBSZWRlZmluZS4KCShUQVJHRVRfREVGQVVMVCk6IFVzZSBzeW1ib2xpYyB2YWx1ZXMuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9iYWNrY2hhaW5fc3RyaW5nKTogSW5pdGlhbGl6ZSB0bwoJVEFSR0VUX0RFRkFVTFRfQkFDS0NIQUlOLgoKMjAwNC0xMC0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWVtcGNweSk6IE1vdmUgdHJlZSBoYW5kbGluZyBjb2RlIHRvCglmb2xkX2J1aWx0aW5fbWVtcGNweS4gIEFjY2VwdCBhIHR5cGUgcGFyYW1ldGVyLiAgRGVsZXRlIGR1cGxpY2F0ZQoJY29kZS4KCShleHBhbmRfYnVpbHRpbl9zdHJjYXQpOiBBY2NlcHQgYSB0eXBlIHBhcmFtZXRlci4KCShmb2xkX2J1aWx0aW5fbWVtcGNweSk6IEFjY2VwdCBhIHR5cGUgYW5kIGVuZHAgcGFyYW1ldGVyLgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RybmNweSk6IERlbGV0ZSBkdXBsaWNhdGUgY29kZS4KCUFjY2VwdCBhbiBgZXhwJyBpbnN0ZWFkIG9mIGFuIGBhcmdsaXN0Jy4KCjIwMDQtMTAtMDggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLXRhaWxjYWxsLmMgKHRyZWVfb3B0aW1pemVfdGFpbF9jYWxsc18xKTogVXNlIGZvbGRfY29udmVydCwKCXJldmVydGluZyBteSAyMDA0LTA5LTA3IHBhdGNoIHRvIHVzZSBidWlsZF9pbnRfY3N0LgoKMjAwNC0xMC0wOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTcyNDUKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGlucHV0X29wZXJhbmQpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUKCWZvciBoYW5kbGluZyBMT19TVU0uCgkobGVnaXRpbWF0ZV9hZGRyZXNzX3ApIDxSRUcrUkVHPjogRG8gbm90IHJlY2hlY2sgVEFSR0VUX1Y5LgoJPExPX1NVTT46IElmIExPX1NVTSBpcyBvZmZzZXR0YWJsZSwgYWNjZXB0IGl0IGZvciBURm1vZGUgb24gVjkuCglPdGhlcndpc2Ugb25seSBhY2NlcHQgaXQgZm9yIFRGbW9kZSBpZiBxdWFkIG1vdmUgaW5zbnMgYXJlIGF2YWlsYWJsZS4KCjIwMDQtMTAtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jICh0cmVlX2ZvcndhcmRlcl9ibG9ja19wKTogUmVvcmRlciBjaGVja3Mgc28gdGhhdAoJY29tbW9uIGNhc2VzIHdpbGwgYmUgY2F1Z2h0IGVhcmxpZXIgdGhhbiBvdGhlcnMuCgoyMDA0LTEwLTA4ICBNaWNoYWVsIE1hdHogIDxtYXR6QHN1c2UuZGU+CgoJKiBsb29wLWRvbG9vcC5jIChkb2xvb3Bfb3B0aW1pemUpOiBFeHRlbmQgY291bnQuCgoyMDA0LTEwLTA4ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5tZCAocHJlZmV0Y2hfbWVkaWEsIHByZWZldGNoX2k0KTogTmV3IGluc25zLgoJKHByZWZldGNoKTogQ29udmVydCB0byBleHBhbmRlci4KCjIwMDQtMTAtMDggIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLm1kICh0bHNfZ2xvYmFsX2R5bmFtaWMpOiBVc2UgTUVNIHBhdHRlcm4gZm9yIHRoZQoJZmlyc3QgYXJndW1lbnQgb2YgQ0FMTC4KCSh0bHNfbG9jYWxfZHluYW1pYyk6IExpa2V3aXNlLgoKMjAwNC0xMC0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLXR5cGVjay5jIChlbnVtIGltcGxfY29udik6IE5ldy4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogVXNlIGl0LiAgVGFrZSB0cmVlIGZvciBmdW5jdGlvbiBjYWxsZWQKCWluc3RlYWQgb2YgaXRzIG5hbWUuICBIYW5kbGUgT2JqQyBzZWxlY3RvcnMgZm9yIGRpYWdub3N0aWNzIGF0CglzdGFydCBvZiBmdW5jdGlvbi4gIFNlbGVjdCBkaWFnbm9zdGljIHRleHQgd2l0aGluIHRoZSBmdW5jdGlvbgoJdXNpbmcgZnVsbCBzZW50ZW5jZXMgZm9yIGRpYWduc290aWNzLiAgVXNlICVxRSB0byBuYW1lIGZ1bmN0aW9ucwoJaW4gZGlhZ25vc3RpY3MuCgkoY29udmVydF9hcmd1bWVudHMsIGJ1aWxkX21vZGlmeV9leHByLAoJY19jb252ZXJ0X3Bhcm1fZm9yX2lubGluaW5nLCBkaWdlc3RfaW5pdCwgY19maW5pc2hfcmV0dXJuKTogVXBkYXRlCgljYWxsZXJzIHRvIGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQuCgkod2Fybl9mb3JfYXNzaWdubWVudCk6IFJlbW92ZS4KCjIwMDQtMTAtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc3ltYmlhbi5jIChzeW1iaWFuX3Bvc3NpYmx5X2V4cG9ydF9iYXNlX2NsYXNzKToKCVJlcGxhY2UgdXNlIG9mIGRlbGV0ZWQgVFlQRV9VU0VTX1ZJUlRVQUxfQkFTRUNMQVNTRVMgbWFjcm8gd2l0aAoJVFlQRV9DT05UQUlOU19WUFRSX1AuCgoyMDA0LTEwLTA4ICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJKiBjb25maWcvbTMyci9tMzJyLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogRG9uJ3QgZXhjbHVkZQoJZml4ZWQgcmVnaXN0ZXJzIGZvcm0gYWxsX3VzZWRfcmVncy4gVXBkYXRlIGNhbGxfcmVhbGx5X3VzZWRfcmVncy4KCShDQUxMX1JFQUxMWV9VU0VEX1JFR0lTVEVSUyk6IERlZmluZS4KCSogY29uZmlnL20zMnIvbTMyci5jIChNVVNUX1NBVkVfUkVHSVNURVIpOiBSZXBsYWNlIGNhbGxfdXNlZF9yZWdzCgl3aXRoIGNhbGxfcmVhbGx5X3VzZWRfcmVncy4KCjIwMDQtMTAtMDggIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKFNUQVJURklMRV9MSU5VWF9TUEVDKTogQ2hvb3NlIGdjcnQxLm8KCWZvciAtcHJvZmlsZSBhcyB3ZWxsIGFzIC1wIGFuZCAtcGcuCgoyMDA0LTEwLTA3ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGxpYmdjYzIuYyAoX19tb2RkaTMpOiBDYXN0ICZ3IHRvIFVEV3R5cGUqLgoKMjAwNC0xMC0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmMgKHRyZWVfYmxvY2tfZm9yd2FyZHNfdG8pOiBSZW1vdmUuCgkqIHRyZWUtZmxvdy5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKMjAwNC0xMC0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAocGhpX25vZGVzKTogUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGNoZWNrCglmb3IgRU5UUllfQkxPQ0tfUFRSIGFuZCBFWElUX0JMT0NLX1BUUi4KCjIwMDQtMTAtMDcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCVJhZGFyIDM4MTM3OTYKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2dlbmVyYXRlX2NvbXBhcmUpOiBXaGVuCglmbGFnX3RyYXBwaW5nX21hdGggaXMgaW4gZWZmZWN0LCBkb24ndCBnZW5lcmF0ZSBzdWJ0cmFjdAoJaW5zdHJ1Y3Rpb25zLgoKMjAwNC0xMC0wNyAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9uYXJyb3dfbG9naWNhbF9vcGVyYXRvcik6IEFkZC4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX25hcnJvd19sb2dpY2FsX29wZXJhdG9yKTogTmV3IGZ1bmN0aW9uLgoJKHMzOTBfZXh0cmFfY29uc3RyYWludF9zdHIpOiBBZGQgJ0EnIGNvbnN0cmFpbnRzLgoJKHMzOTBfY29uc3Rfb2tfZm9yX2NvbnN0cmFpbnRfcCk6IEFkZCAnTngnIGNvbnN0cmFpbnRzLgoJKiBjb25maWcvczM5MC9zMzkwLmggKEVYVFJBX01FTU9SWV9DT05TVFJBSU5UKTogQWRkICdBJyBjb25zdHJhaW50LgoJKENPTlNUUkFJTlRfTEVOKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqYW5kZGkzIik6IEFkZCBOSSBhbHRlcm5hdGl2ZSBhbmQgc3BsaXR0ZXIuCgkoIiphbmRzaTNfemFyY2giLCAiKmFuZHNpM19lc2EiKTogTGlrZXdpc2UuCgkoIiphbmRoaTNfemFyY2giLCAiKmFuZGhpM19lc2EiKTogTGlrZXdpc2UuCgkoIippb3JkaTMiKTogQWRkIE9JIGFsdGVybmF0aXZlIGFuZCBzcGxpdHRlci4KCSgiKmlvcnNpM196YXJjaCIsICIqaW9yc2kzX2VzYSIpOiBMaWtld2lzZS4KCSgiKmlvcmhpM196YXJjaCIsICIqaW9yaGkzX2VzYSIpOiBMaWtld2lzZS4KCSgiKnhvcmRpMyIpOiBBZGQgWEkgYWx0ZXJuYXRpdmUgYW5kIHNwbGl0dGVyLgoJKCIqeG9yc2kzIiwgIip4b3JoaTMiKTogTGlrZXdpc2UuCgoyMDA0LTEwLTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZnVuY3Rpb25fcm9kYXRhX3NlY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoVEFSR0VUX0FTTV9GVU5DVElPTl9ST0RBVEFfU0VDVElPTik6IFVzZSBpdC4KCjIwMDQtMTAtMDcgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiByczYwMDAvYWx0aXZlYy5tZCAoVU5TUEVDX1ZDTVBCRlAsIFVOU1BFQ19WQ01QRVFVQiwgVU5TUEVDX1ZDTVBFUVVILAoJVU5TUEVDX1ZDTVBFUVVXLCBVTlNQRUNfVkNNUEdFRlAsIFVOU1BFQ19WQ01QR1RVQiwgVU5TUEVDX1ZDTVBHVFNCLAoJVU5TUEVDX1ZDTVBHVFVILCBVTlNQRUNfVkNNUEdUU0gsIFVOU1BFQ19WQ01QR1RVVywgVU5TUEVDX1ZDTVBHVFNXLAoJVU5TUEVDX1ZDTVBHVEZQLCBVTlNQRUNfVlNFTDRTSSwgVU5TUEVDX1ZTRUw0U0YsIFVOU1BFQ19WU0VMOEhJLAoJVU5TUEVDX1ZTRUwxNlFJLCBVTlNQRUNfVkNPTkRfVjRTSSwgVU5TUEVDX1ZDT05EX1Y0U0YsIFVOU1BFQ19WQ09ORF9WOEhJLAoJVU5TUEVDX1ZDT05EX1YxNlFJLCBVTlNQRUNfVkNPTkRVX1Y0U0ksIFVOU1BFQ19WQ09ORFVfVjhISSwKCVVOU1BFQ19WQ09ORFVfVjE2UUkpOiBOZXcgY29uc3RhbnQgZGVmaW5lcy4KCSh2Y29uZHY0c2ksIHZjb25kdjRzZiwgdmNvbmR2OGhpLCB2Y29uZHYxNnFpLCB2Y29uZHV2NHNpLCB2Y29uZHV2OGhpLAoJdmNvbmR1djE2cWkpOiBOZXcgcGF0dGVybnMuCgkqIHJzNjAwMC9yczYwMDAtcHJvdG9zLmggKHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkqIHJzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhwcik6IE5ldyBmdW5jdGlvbi4KCShnZXRfdmVjX2NtcF9pbnNuKTogU2FtZS4KCShnZXRfdnNlbF9pbnNuKTogU2FtZS4KCShyczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZSk6IFNhbWUuCgkocnM2MDAwX2VtaXRfdmVjdG9yX3NlbGVjdCk6IFNhbWUuCgkoSU5TTl9OT1RfQVZBSUxBQkxFKTogTmV3LgoKMjAwNC0xMC0wNyAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNzc0OQoJKiB0cmVlLXRhaWxjYWxsLmMgKGZpbmRfdGFpbF9jYWxscyk6IENoZWNrIHRoYXQgcGFyYW1ldGVyIGlzCglhIGdpbXBsZV9yZWcuCgoyMDA0LTEwLTA3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2lhNjQvaWE2NC5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTEwLTA3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL2luc3RhbGwudGV4aSAoKi0qLXNvbGFyaXMyKik6IEZpeCBtYXJrZXIgZm9yIFVSTC4KCjIwMDQtMTAtMDcgIEdpb3Zhbm5pIEJham8gIDxnaW92YW5uaWJham9AZ2NjLmdudS5vcmc+CgoJUFIgYysrLzE3MTE1CgkqIHRyZWUtaW5saW5lLmMgKGV4cGFuZF9jYWxsX2lubGluZSk6IERvIG5vdCB3YXJuIGZvciBmdW5jdGlvbnMKCW1hcmtlZCB3aXRoIGF0dHJpYnV0ZSBub2lubGluZS4KCjIwMDQtMTAtMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdGFyZ2V0LzE3ODYyCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19vdXRwdXRfbWlfdGh1bmspOiBTZXQKCWN1cnJlbnRfZnVuY3Rpb25fdXNlc19vbmx5X2xlYWZfcmVncyBhcyB3ZWxsIGFzIHNwYXJjX2xlYWZfZnVuY3Rpb25fcC4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19naW1wbGlmeV92YV9hcmcpOiBQYXNzICdmYWxzZScgaW5zdGVhZAoJb2YgMCBhcyA0dGggYXJndW1lbnQgdG8gcGFzc19ieV9yZWZlcmVuY2UuCglDYWxsIGJ1aWxkX3ZhX2FyZ19pbmRpcmVjdF9yZWYgaW5zdGVhZCBvZiBidWlsZF9mb2xkX2luZGlyZWN0X3JlZi4KCjIwMDQtMTAtMDYgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmMgKHNoX2R3YXJmX2NhbGxpbmdfY29udmVudGlvbik6IEZpeCByZW5lc2FzIGR3YXJmCglhdHRyaWJ1dGUuCgoyMDA0LTEwLTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE3NzcwCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKG1vdl88bG9hZD5sKTogUmVtb3ZlIGhhemFyZD1ub25lIGF0dHJpYnV0ZS4KCjIwMDQtMTAtMDcgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xNzc5MQoJKiBsb29wLWRvbG9vcC5jIChkb2xvb3BfbW9kaWZ5KTogVGFrZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBhcwoJYXJndW1lbnQuCgkoZG9sb29wX29wdGltaXplKTogRXh0ZW5kIG9yIHNob3J0ZW4gdGhlIG51bWJlciBvZiBpdGVyYXRpb25zCgl3aGVuIGNoYW5naW5nIG1vZGUgb2YgY291bnRlciByZWdpc3Rlci4KCSogbG9vcC1pdi5jIChsb3dwYXJ0X3N1YnJlZyk6IEV4cG9ydC4KCSogcnRsLmggKGxvd3BhcnRfc3VicmVnKTogRGVjbGFyZS4KCjIwMDQtMTAtMDcgIFpkZW5layBEdm9yYWsgIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTc4MDYKCSogY2ZnaG9va3MuYyAoc3BsaXRfZWRnZSk6IFVwZGF0ZSBJUlJFRFVDSUJMRV9MT09QIGZsYWdzLgoJKiBjZmdsb29wbWFuaXAuYyAobG9vcF9zcGxpdF9lZGdlX3dpdGgpOiBVcGRhdGluZyBvZiBJUlJFRFVDSUJMRV9MT09QCglmbGFncyBtb3ZlZCB0byBzcGxpdF9lZGdlLgoKMjAwNC0xMC0wNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBtaWRkbGUtZW5kLzE3ODM1CgkqIGV4cG1lZC5jIChleHBhbmRfc2Rpdl9wb3cyKTogRm9yY2UgYSBzdGFjayBhZGp1c3RtZW50CgliZWZvcmUgdGVudGF0aXZlbHkgYnVpbGRpbmcgdGhlIGNvbmRpdGlvbmFsIG1vdmUgc2VxdWVuY2UuCgoyMDA0LTEwLTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE2ODE1CgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtX3NldHVwX2Jsb2NrX3ApOiBUaWdodGVuIEJMT0NLX1JFR19QQURESU5HCgljaGVjay4KCSogY29uZmlnL3BhL3BhLmggKEJMT0NLX1JFR19QQURESU5HKTogRGVmaW5lIGluIHRlcm1zIG9mCglmdW5jdGlvbl9hcmdfcGFkZGluZy4KCjIwMDQtMTAtMDcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiBib290c3RyYXAvMTc4NTcKCSogTWFrZWZpbGUuaW4gKHN0bXAtZml4cHJvdG8pOiBQYXNzIEZJWF9IRUFERVI9YnVpbGQvLi4uIHRvIGZpeHByb3RvLgoKMjAwNC0xMC0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGhvb2tzLmMgKGhvb2tfaW50X3ZvaWRfMSwgaG9va192b2lkX2ludCk6IFJlbW92ZS4KCSogaG9va3MuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZXMuCgoyMDA0LTEwLTA2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzE3ODQ5CgkqIHRyZWUtbmVzdGVkLmMgKHdhbGtfc3RtdF9pbmZvKTogQWRkIGNoYW5nZWQgZmllbGQuCgkoY29udmVydF9ub25sb2NhbF9yZWZlcmVuY2UpOiBTZXQgY2hhbmdlZCB0byB3aGVuIHdlCgljaGFuZ2UgYSBkZWNsIHRvIHVubmVzdGVkIGRlY2wuCgk8Y2FzZSBBRERSX0VYUFI+OiBJbnN0ZWFkIG9mIGNoZWNraW5nIGlmIHRoZSBpbW1lZGlhdGUgcGFydAoJb2YgdGhlIEFERFJfRVhQUiBjaGFuZ2VkLCBjaGVjayB0aGUgZmllbGQgY2hhbmdlZC4KCVVzZSByZWNvbXB1dGVfdHJlZV9pbnZhcmFudF9mb3JfYWRkcl9leHByIGluc3RlYWQgb2YgdW5zZXR0aW5nCglUUkVFX0lOVkFSSUFOVC4KCShjb252ZXJ0X2xvY2FsX3JlZmVyZW5jZSk6IFNldCBjaGFuZ2VkIHRvIHdoZW4gd2UKCWNoYW5nZSBhIGRlY2wgdG8gdW5uZXN0ZWQgZGVjbC4KCTxjYXNlIEFERFJfRVhQUj46IEluc3RlYWQgb2YgY2hlY2tpbmcgaWYgdGhlIGltbWVkaWF0ZSBwYXJ0CglvZiB0aGUgQUREUl9FWFBSIGNoYW5nZWQsIGNoZWNrIHRoZSBmaWVsZCBjaGFuZ2VkLgoJQWxzbyBjYWxsIHJlY29tcHV0ZV90cmVlX2ludmFyYW50X2Zvcl9hZGRyX2V4cHIgb24gdGhlIEFERFJfRVhQUi4KCjIwMDQtMTAtMDYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkZWZhdWx0cy5oIChEV0FSRjJfR0VORVJBVEVfVEVYVF9TRUNUSU9OX0xBQkVMKTogUmVtb3ZlLgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2luaXQpOiBSZW1vdmUgcmVmZXJlbmNlcyB0bwoJRFdBUkYyX0dFTkVSQVRFX1RFWFRfU0VDVElPTl9MQUJFTC4KCSogc3lzdGVtLmg6IFBvaXNvbiBEV0FSRjJfR0VORVJBVEVfVEVYVF9TRUNUSU9OX0xBQkVMLgoJKiBkb2MvdG0udGV4aSAoRFdBUkYyX0dFTkVSQVRFX1RFWFRfU0VDVElPTl9MQUJFTCk6IFJlbW92ZS4KCjIwMDQtMTAtMDYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBUYWtlIGV4cHJlc3Npb24gZm9yIGNhbGxlZAoJZnVuY3Rpb24gcmF0aGVyIHRoYW4gaXRzIG5hbWUuICBIYW5kbGUgT2JqQyBzZWxlY3RvcnMgZGlyZWN0bHkKCXJhdGhlciB0aGFuIHJlbHlpbmcgb24gd2Fybl9mb3JfYXNzaWdubWVudCB0byBkbyBzby4gIENhbGwgd2FybmluZwoJZGlyZWN0bHkgcmF0aGVyIHRoYW4gd2Fybl9mb3JfYXNzaWdubWVudC4gIFVzZSAlcUUgaW4gZGlhZ25vc3RpY3MuCglTYXkgImFyZ3VtZW50IiByYXRoZXIgdGhhbiAiYXJnIiBpbiBkaWFnbm9zdGljcy4KCShidWlsZF9mdW5jdGlvbl9jYWxsKTogVXBkYXRlIGNhbGwgdG8gY29udmVydF9hcmd1bWVudHMuCgoyMDA0LTEwLTA2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBkZWJ1Zy8xNzc4NwoJKiBkYnhvdXQuYyAoZGJ4b3V0X3N5bWJvbCk6IFJlYWxseSBoYW5kbGUgUkVDT1JELCBVTklPTiwgYW5kCglFTlVNcyBzcGVjaWFsbHkgaW5zdGVhZCBvZiBqdXN0IHNheWluZyB3ZSBkby4KCjIwMDQtMTAtMDYgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogZHdhcmYyLmg6IFN5bmMgd2l0aCBpbmNsdWRlL2VsZi9kd2FyZjIuaAoKMjAwNC0xMC0wNiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IEZpeCBwcmludGluZyBvZiBCSU5GTwoJYW5kIFRSRUVfVkVDIG5vZGVzLgoKMjAwNC0xMC0wNiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBsYW1iZGEtY29kZS5jIChsYW1iZGFfbG9vcG5lc3RfdG9fZ2NjX2xvb3BuZXN0KTogQ29udmVydAoJdG8gdXNlIEZPUl9FQUNIX1NTQV9VU0VfT1BFUkFORCBpdGVyYXRvciwgYW5kIHByb3BhZ2F0ZV92YWx1ZS4KCjIwMDQtMTAtMDYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogbGFtYmRhLWNvZGUuYyAoY29tcHV0ZV9uZXN0X3VzaW5nX2ZvdXJpZXJfbW90emtpbik6IE5ldwoJZnVuY3Rpb24uCgkobGFtYmRhX2NvbXB1dGVfYXV4aWxsYXJ5X3NwYWNlKTogU3BsaXQgZnJvbSBoZXJlLgoKMjAwNC0xMC0wNiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChleHByX2ludmFyaWFudF9pbl9sb29wKTogTWFrZSBub24tc3RhdGljLgoJKiB0cmVlLWZsb3cuaDogQWRkIHByb3RvdHlwZS4KCSogbGFtYmRhLWNvZGUuYyAoaW52YXJpYW50X2luX2xvb3BfYW5kX291dGVyX2xvb3BzKTogVXNlCglleHByX2ludmFyaWFudF9pbl9sb29wLgoKMjAwNC0xMC0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmMgKHRocmVhZF9qdW1wcyk6IFJlbW92ZSBhIGR1cGxpY2F0ZSBjaGVjayBmb3IKCUVYSVRfQkxPQ0tfUFRSLgoKMjAwNC0xMC0wNiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoc19pbW1fb3BlcmFuZCk6IFJlbW92ZS4KCShzMzkwX3Bvb2xfb3BlcmFuZCk6IEFkZCBwcm90b3R5cGUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoZ2VuZXJhbF9zX29wZXJhbmQpOiBSZW1vdmUuCgkoc19pbW1fb3BlcmFuZCk6IFJlbW92ZS4KCShzX29wZXJhbmQpOiBNZXJnZSBjb250ZW50cyBvZiBnZW5lcmFsX3Nfb3BlcmFuZC4KCShzMzkwX3Bvb2xfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3MzOTAvczM5MC5oIChQUkVESUNBVEVfQ09ERVMpOiBSZW1vdmUgc19pbW1fb3BlcmFuZC4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIipjbXBkaV9jY3QiLCAiKmNtcHNpX2NjdCIpOiBOZXcgaW5zbnMuCgkoIipjbXBkaV9jY3UiKTogTWVyZ2UgUS0+USBhbHRlcm5hdGl2ZS4KCSgiKmNtcHNpX2NjdSIsICIqY21waGlfY2N1Iik6IExpa2V3aXNlLgoJKCIqY21wcWlfY2N1Iik6IE1lcmdlIFEtPlEsIG4tPlEsIG4tPlMgYWx0ZXJuYXRpdmVzLgoJKCIqY2xpIik6IFJlbW92ZS4KCSgiKmNtcGRpX2NjdV9tZW0iLCAiKmNtcHNpX2NjdV9tZW0iKTogTGlrZXdpc2UuCgkoIipjbXBoaV9jY3VfbWVtIiwgIipjbXBxaV9jY3VfbWVtIik6IExpa2V3aXNlLgoJKCIqbW92c3RyaWN0aGkiKTogVXNlIG1lbW9yeV9vcGVyYW5kIGluc3RlYWQgb2Ygc19pbW1fb3BlcmFuZC4KCjIwMDQtMTAtMDYgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChGVU5DVElPTl9BUkdfQk9VTkRBUlkpOiBDaGFuZ2UgbWFjcm8gdG8KCWNhbGwgaWE2NF9mdW5jdGlvbl9hcmdfYm91bmRhcnkuCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGlhNjRfZnVuY3Rpb25fYXJnX2JvdW5kYXJ5KTogTmV3LgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZnVuY3Rpb25fYXJnX2JvdW5kYXJ5KTogTmV3LgoJKGlhNjRfZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBEbyBub3QgcHV0IDEyOCBiaXQgZmxvYXRzIGludG8KCUZQIHJlZ2lzdGVycy4KCjIwMDQtMTAtMDYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmNweSk6IERlbGV0ZSBkdXBsaWNhdGUgY29kZS4KCUFjY2VwdCBhbiBleHByZXNzaW9uIGluc3RlYWQgb2YgYW4gYXJnbGlzdC4KCShleHBhbmRfYnVpbHRpbl9zdHBjcHkpOiBBY2NlcHQgYW4gZXhwcmVzc2lvbiBpbnN0ZWFkIG9mIGFuCglhcmdsaXN0LgoKMjAwNC0xMC0wNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTYwMDcKCSogZG9jL2luc3RhbGwudGV4aSAoKi0qLXNvbGFyaXMyKik6IE1lbnRpb24gcG90ZW50aWFsIHByb2JsZW0KCXdpdGggU3VuIGFzc2VtYmxlciArIEdOVSBsaW5rZXIgYW5kIEMrKyBwcm9ncmFtcy4KCURvY3VtZW50IHN0YXR1cyBvZiBiaW51dGlscyAyLjE1IHJlbGVhc2UuCgoyMDA0LTEwLTA2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjc2UuYyAoY3NlX21haW4pOiBLaWxsIHB1c2gvcG9wIGNvbnRleHQuCgoyMDA0LTEwLTA1ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHJldHR5LXByaW50LmM6IEluY2x1ZGUgdHJlZS5oLgoJKHBwX2Jhc2VfcHJlcGFyZV90b19mb3JtYXQpOiBOZXcgZnVuY3Rpb24sIGxvZ2ljIGZyb20KCXRleHRfc3BlY2lmaWVzX2xvY2F0aW9uLgoJKHBwX2Jhc2VfZm9ybWF0X3RleHQpOiBVc2UgZ2NjX2Fzc2VydC4KCSogcHJldHR5LXByaW50LmggKHBwX3ByZXBhcmVfdG9fZm9ybWF0KTogTmV3IG1hY3JvLgoJKHBwX2Jhc2VfcHJlcGFyZV90b19mb3JtYXQpOiBQcm90b3R5cGUuCgkqIGRpYWdub3N0aWMuYyAodGV4dF9zcGVjaWZpZXNfbG9jYXRpb24pOiBEZWxldGUuCgkoYnVnX3JlcG9ydF9yZXF1ZXN0KTogRGVsZXRlLgoJKGRpYWdub3N0aWNfc2V0X2luZm8pOiBEb24ndCBjYWxsIHRleHRfc3BlY2lmaWVzX2xvY2F0aW9uLgoJKGRpYWdub3N0aWNfYWN0aW9uX2FmdGVyX291dHB1dCk6IFB1dCB0ZXh0IGZyb20KCWJ1Z19yZXBvcnRfcmVxdWVzdCBpbmxpbmUgaGVyZS4gIFVzZSBnY2NfdW5yZWFjaGFibGUuCgkoZGlhZ25vc3RpY19yZXBvcnRfY3VycmVudF9mdW5jdGlvbik6IEZpeCBjb21tZW50LgoJKGRpYWdub3N0aWNfcmVwb3J0X2RpYWdub3N0aWMpOiBDbGFyaWZ5IGxvZ2ljIGZvciBlcnJvciByZWN1cnNpb24uCglDYWxsIHBwX3ByZXBhcmVfdG9fZm9ybWF0IGJlZm9yZSBkaWFnbm9zdGljX3N0YXJ0ZXIuCgkodHJpbV9maWxlbmFtZSk6IFVzZSBJU19ESVJfU0VQQVJBVE9SLgoJKGZhdGFsX2Vycm9yLCBpbnRlcm5hbF9lcnJvcik6IFVzZSBnY2NfdW5yZWFjaGFibGUuCgkoZXJyb3JfcmVjdXJzaW9uKTogQ2FsbCBkaWFnbm9zdGljX2FjdGlvbl9hZnRlcl9vdXRwdXQgdG8KCWlzc3VlIHRoZSBidWdfcmVwb3J0X3JlcXVlc3QgbWVzc2FnZSBhbmQgZXhpdC4KCSogTWFrZWZpbGUuaW4gKGRpYWdub3N0aWMubywgcHJldHR5LXByaW50Lm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKCSogYy1wYXJzZS5pbjogQWRkIGxpc3Qgb2YgZGlhZ25vc3RpYyBtZXNzYWdlcyB0byBpbnN1bGF0ZQoJdHJhbnNsYXRpb24gdGVtcGxhdGUgZnJvbSB2ZXJzaW9uIG9mIHlhY2MvYmlzb24gdXNlZCB0bwoJY29tcGlsZSB0aGUgZ3JhbW1hci4KCjIwMDQtMTAtMDYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgMTY0MDYKCSogZG9jL3RtLnRleGkgKFVTRV9MRF9BU19ORUVERUQsIExJTktfRUhfU1BFQyk6IERvY3VtZW50LgoKMjAwNC0xMC0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGJhc2ljLWJsb2NrLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJZmxvd19wcmVvcmRlcl90cmFuc3ZlcnNhbF9jb21wdXRlLgoJKiBjZmdhbmFsLmMgKGRmc3Rfbm9kZSk6IFJlbW92ZS4KCShmbG93X3ByZW9yZGVyX3RyYW5zdmVyc2FsX2NvbXB1dGUpOiBMaWtld2lzZS4KCSogcnRsLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBnZXRfanVtcF90YWJsZV9vZmZzZXQuCgkqIHJ0bGFuYWwuYyAoZ2V0X2p1bXBfdGFibGVfb2Zmc2V0KTogUmVtb3ZlLgoKMjAwNC0xMC0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiAxNzc1NgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IEhhbmRsZSBDT05TVF9ERUNMLgoKMjAwNC0xMC0wNSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCglQUiBib290c3RyYXAvMTc4MTcKCSogTWFrZWZpbGUuaW46IFN0YWdlIHRoZSBidWlsZCBkaXJlY3RvcnkgdG9vLgoKMjAwNC0xMC0wNSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9mcnYuaCAoTEVHSVRJTUlaRV9BRERSRVNTKTogTmV3LgoKCSogY29uZmlnL2Zydi9mcnYtcHJvdG9zLmggKGZydl9sZWdpdGltaXplX2FkZHJlc3MpOiBQcm90b2l6ZS4KCShmcnZfZW1pdF9tb3ZlKTogU2FtZS4KCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9lbWl0X21vdmUpOiBOZXcuCgkoZnJ2X2xlZ2l0aW1pemVfYWRkcmVzcyk6IE5ldy4KCgkqIGNvbmZpZy9mcnYvZnJ2Lm1kICgibW92c2kiKTogQ2FsbCBmcnZfZW1pdF9tb3ZlLgoJKCJtb3ZxaSIpOiBTYW1lLgoJKCJtb3ZoaSIpOiBTYW1lLgoJKCJtb3ZkaSIpOiBTYW1lLgoJKCJtb3ZzZiIpOiBTYW1lLgoJKCJtb3ZkZiIpOiBTYW1lLgoKMjAwNC0xMC0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLWRlY2wuYyAoZGVjbHNwZWNzX2FkZF90eXBlKTogRG9uJ3QgcGVkd2FybiBmb3IgX0NvbXBsZXggaW4KCXN5c3RlbSBoZWFkZXJzLgoKMjAwNC0xMC0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLWRlY2wuYyAocHVzaGRlY2wpOiBXaGVuIGFuIGV4dGVybiBkZWNsYXJhdGlvbiBhdCBibG9jayBzY29wZQoJcmVmZXJzIHRvIGEgdmlzaWJsZSBlbnRpdHkgd2l0aCBpbnRlcm5hbCBsaW5rYWdlLCB1c2UgdGhlIG9sZCBERUNMCglyYXRoZXIgdGhhbiB0aGUgbmV3IG9uZS4KCjIwMDQtMTAtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jIChjbGVhbnVwX3RyZWVfY2ZnKTogUmVtb3ZlIGV4dHJhIHBhcmVudGhlc2VzIGluCgljb21tZW50cy4KCjIwMDQtMTAtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jICh0aHJlYWRfanVtcHMpOiBSZW1vdmUgYSBkdXBsaWNhdGUgY2hlY2sgZm9yCglhbiBpbmZpbml0ZSBsb29wLgoKMjAwNC0xMC0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmMgKHRocmVhZF9qdW1wcyk6IEl0ZXJhdGUgd2l0aCBGT1JfRUFDSF9CQiBpbnN0ZWFkCglvZiBGT1JfQkJfQkVUV0VFTi4gIFJlbW92ZSBhIHVzZWxlc3MgY2hlY2sgZm9yIHVucmVhY2hhYmxlCglibG9ja3MuCgoyMDA0LTEwLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1jZmcuYyAoY2xlYW51cF90cmVlX2NmZyk6IERvbid0IGNhbGwKCWRlbGV0ZV91bnJlYWNoYWJsZV9ibG9zaygpIGFmdGVyIHRocmVhZF9qdW1wcygpLgoJKHRocmVhZF9qdW1wcyk6IEFsd2F5cyByZW1vdmUgYmFzaWMgYmxvY2tzIGFzIHRoZXkgYmVjb21lCgl1bnJlYWNoYWJsZS4KCjIwMDQtMTAtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jIChjbGVhbnVwX3RyZWVfY2ZnKTogUmVtb3ZlIHZhcmlhYmxlCglzb21ldGhpbmdfY2hhbmdlZC4gIFNpbXBsaWZ5IHRoZSB3aGlsZSBsb29wLgoKMjAwNC0xMC0wNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWVtbW92ZSk6IERlbGV0ZSBkdXBsaWNhdGUgY29kZQoJYW5kIGFjY2VwdCBhIHRyZWUgdHlwZSBmb3IgdGhlIHJlc3VsdC4KCShleHBhbmRfYnVpbHRpbl9iY29weSk6IEFjY2VwdCBhIHRyZWUgdHlwZSBmb3IgdGhlIHJlc3VsdC4KCShmb2xkX2J1aWx0aW5fbWVtbW92ZSk6IEFjY2VwdCBhbiBhcmdsaXN0IGFuZCB0cmVlIHR5cGUgZm9yCgl0aGUgcmVzdWx0LgoKMjAwNC0xMC0wNSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2R1bXBfcG9vbCk6IFJlbW92ZSByZXR1cm4gdmFsdWUuCglVc2UgZ2VuX3Bvb2xfYWxpZ24sIGdlbl9wb29sX3NlY3Rpb25fc3RhcnQvZW5kIGluc3RlYWQgb2YKCWdlbl9wb29sX3N0YXJ0L2VuZF8zMS82NC4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoVU5TUEVDVl9QT09MX1NUQVJULCBVTlNQRUNWX1BPT0xfRU5EKTogUmVtb3ZlLgoJKFVOU1BFQ1ZfUE9PTF9TRUNUSU9OLCBVTlNQRUNWX1BPT0xfQUxJR04pOiBOZXcgY29uc3RhbnRzLgoJKCJwb29sX3N0YXJ0XzMxIiwgInBvb2xfZW5kXzMxIik6IFJlbW92ZS4KCSgicG9vbF9zdGFydF82NCIsICJwb29sX2VuZF82NCIpOiBMaWtld2lzZS4KCSgicG9vbF9hbGlnbiIsICJwb29sX3NlY3Rpb25fc3RhcnQiLCAicG9vbF9zZWN0aW9uX2VuZCI6IE5ldyBpbnNucy4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9jYW5ub3RfY29weV9pbnNuX3ApOiBOZXcgZnVuY3Rpb24uCgkoVEFSR0VUX0NBTk5PVF9DT1BZX0lOU05fUCk6IERlZmluZS4KCShzMzkwX2Nhbm5vdF9mb3JjZV9jb25zdF9tZW0pOiBIYW5kbGUgVU5TUEVDX0lOU04uCgkoc3RydWN0IGNvbnN0YW50X3Bvb2wpOiBOZXcgbWVtYmVyICdleGVjdXRlJy4KCShzMzkwX2FkZF9leGVjdXRlLCBzMzkwX2ZpbmRfZXhlY3V0ZSk6IE5ldyBmdW5jdGlvbnMuCgkoczM5MF9leGVjdXRlX2xhYmVsLCBzMzkwX2V4ZWN1dGVfdGFyZ2V0KTogTGlrZXdpc2UuCgkoczM5MF9kdW1wX3Bvb2wpOiBPdXRwdXQgaW4tcG9vbCBleGVjdXRlIHRhcmdldCB0ZW1wbGF0ZXMuCgkoczM5MF9kdW1wX2V4ZWN1dGUpOiBOZXcgZnVuY3Rpb24uCgkoczM5MF9hbGxvY19wb29sLCBzMzkwX2ZyZWVfcG9vbCk6IEhhbmRsZSBleGVjdXRlIHRlbXBsYXRlcy4KCShzMzkwX21haW5wb29sX3N0YXJ0LCBzMzkwX21haW5wb29sX2ZpbmlzaCk6IExpa2V3aXNlLgoJKHMzOTBfY2h1bmtpZnlfc3RhcnQsIHMzOTBfY2h1bmtpZnlfZmluaXNoKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKFVOU1BFQ19JTlNOLCBVTlNQRUNfRVhFQ1VURSk6IE5ldyBjb25zdGFudHMuCgkoIipleGVjdXRlIik6IE5ldyBpbnNuIHBhdHRlcm4uCgkoIm1vdm1lbV9zaG9ydCIsICIqbW92bWVtX3Nob3J0Iik6IFVzZSBzcGxpdHRlcnMgdG8gZ2VuZXJhdGUKCWV4cGxpY2l0IGV4ZWN1dGUgcGF0dGVybiwgcmVtb3ZlIGVtYmVkZGVkIGV4ZWN1dGUuCgkoImNscm1lbV9zaG9ydCIsICIqY2xybWVtX3Nob3J0Iik6IExpa2V3aXNlLgoJKCJjbXBtZW1fc2hvcnQiLCAiKmNtcG1lbV9zaG9ydCIpOiBMaWtld2lzZS4KCjIwMDQtMTAtMDUgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EuYyAodmVyaWZ5X3NzYSk6IFZlcmlmeSBwaGkgYXJndW1lbnRzIG9ubHkKCWNvbnRhaW4gcmVuYW1lZCBuYW1lcy4KCjIwMDQtMTAtMDUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL2xpbnV4Lmg6IEZvcm1hdHRpbmcsIHdoaXRlc3BhY2UuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBMaWtld2lzZS4KCShlYXN5X3ZlY3Rvcl9zcGxhdF9jb25zdCk6IEFkZCBmYWxsIHRocnUgY29tbWVudHMuCgkob3V0cHV0X3ZlY19jb25zdF9tb3ZlKTogTGlrZXdpc2UuCgoyMDA0LTEwLTA1ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZSAtV25vLWVycm9yIGV4Y2VwdGlvbnMgZm9yIG1vdmUgdG8gYnVpbGQgZGlyLgoKMjAwNC0xMC0wNSAgQ2hhby1ZaW5nIEZ1ICA8ZnVAbWlwcy5jb20+CgkgICAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpICgtbXBhaXJlZC1zaW5nbGUpOiBMaW5rIHRvIHRoZSBuZXcgZGVzY3JpcHRpb24gb2YgdGhlCglidWlsdC1pbiBmdW5jdGlvbnMuICBEb2N1bWVudCBkZXBlbmRlbmNpZXMuCgkoLW1pcHMzZCk6IEFkZCBsaW5rIGhlcmUgdG9vLgoJKiBkb2MvZXh0ZW5kLnRleGkgKE1JUFMgUGFpcmVkLVNpbmdsZSBTdXBwb3J0KTogTmV3IHNlY3Rpb24uCgoyMDA0LTEwLTA0ICBDaGFvLXlpbmcgRnUgIDxmdUBtaXBzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoVU5JVFNfUEVSX1NJTURfV09SRCk6IERlZmluZS4KCjIwMDQtMTAtMDQgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtZG9tLmMgKHRyZWVfc3NhX2RvbWluYXRvcl9vcHRpbWl6ZSk6CglJbml0aWFsaXplIE9QVF9TVEFUUyB0byAwLgoKMjAwNC0xMC0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtZGF0YS1yZWYuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTEwLTA0ICBTZWJhc3RpYW4gUG9wICA8cG9wQGNyaS5lbnNtcC5mcj4KCgkqIHRyZWUtZGF0YS1yZWYuYyAoYXJyYXlfYmFzZV9uYW1lX2RpZmZlcl9wKTogRml4IGNvbW1lbnRzLiAgV2hlbgoJdGhlIHByZWRpY2F0ZSBjYW5ub3QgYmUgY29tcHV0ZWQsIGRvbid0IGluaXRpYWxpemUgdGhlIHJlc3VsdCB0bwoJZmFsc2UuCgoyMDA0LTEwLTAxICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMi5oIChkd2FyZl9jYWxsaW5nX2NvbnZlbnRpb24pOiBBZGQgR05VIHByZWZpeCB0bwoJbG9jYWxseSBkZWZpbmVkIGVudW0uCgkqIGR3YXJmMm91dC5jIChhZGRfY2FsbGluZ19jb252ZW50aW9uX2F0dHJpYnV0ZSk6IERvbid0CgllbWl0IERXX0NDX25vcm1hbC4KCjIwMDQtMTAtMDMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMvMTcxNzgsIFBSIGMvMTc4MjAKCSogYy1kZWNsLmMgKHBvcF9zY29wZSk6IERvIG5vdCB3YXJuIGFib3V0IHVudXNlZCBzdGF0aWMKCXZhcmlhYmxlcyBhcyB0aGV5IHdhcm5lZCBpbiB0aGUgbWlkZGxlLWVuZC4KCjIwMDQtMTAtMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21lbWNweSk6IERlbGV0ZSBkdXBsaWNhdGUgY29kZQoJYW5kIG1ha2UgdGhlIGZpcnN0IHBhcmFtZXRlciB0aGUgZXhwcmVzc2lvbiBub3QgdGhlIGFyZ2xpc3QuCgoyMDA0LTEwLTAzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByX2FkZHJfZXhwcik6IE9ubHkgYWNjZXB0IFBtb2RlIG9yIHB0cl9tb2RlCglhcyB2YWxpZCBtb2RlcyB0byBleHBhbmQgYWRkcmVzcyBleHByZXNzaW9ucy4KCjIwMDQtMTAtMDMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1hdXgtaW5mby5jLCBjLWNvbW1vbi5jLCBjLWNvbW1vbi5oLCBjLWNwcGJ1aWx0aW4uYywgYy1kZWNsLmMsCgljLWZvcm1hdC5jLCBjLWluY3BhdGguYywgYy1sZXguYywgYy1vYmpjLWNvbW1vbi5jLCBjLW9wdHMuYywKCWMtcGFyc2UuaW4sIGMtcGNoLmMsIGMtcHBvdXRwdXQuYywgYy1wcmFnbWEuYywgYy10eXBlY2suYzogRm9sbG93Cgljb2RlIGZvcm1hdHRpbmcgY29udmVudGlvbnMuCgoyMDA0LTEwLTAzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICg8dT5tdWxzaWRpM18zMmJpdF9yNDAwMCk6IEZpeCB1bnNpZ25lZCBjYXNlLgoKMjAwNC0xMC0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNjYzMgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpIFtFUV9FWFBSXTogV2hlbiBzZWVpbmcgaWYgRCAmIH5DICE9IDAgdG8KCWZvbGQgKEEgJiBDKSA9PSBEIGludG8gMCwgZm9sZCB+Qy4gIFNpbWlsYXJseSwgZm9yIHRoZSBjYXNlCgl3aGVyZSB8IGlzIHVzZWQgaW5zdGVhZCBvZiAmLgoKMjAwNC0xMC0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGdpbmNsdWRlL3N0ZGRlZi5oOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTEwLTAzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xNzQ0MwoJKiBjb25maWcuZ2NjIChpPzg2LSotc29sYXJpczIqKTogUmVzdG9yZSBjb3JyZWN0IGxvZ2ljCglmb3IgLS1lbmFibGUtdGhyZWFkcyBvcHRpb24uCgkoc3BhcmM2NC0qLXNvbGFyaXMyKik6IExpa2V3aXNlLgoJKHNwYXJjLSotc29sYXJpczIqKTogTGlrZXdpc2UuCgoyMDA0LTEwLTAzICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9saW51eC5oIChUQVJHRVRfQzk5X0ZVTkNUSU9OUyk6IERlZmluZS4KCShPU19NSVNTSU5HX1BPV0VSUEM2NCk6IE1vdmUsIGFuZCBjb21tZW50LgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoVEFSR0VUX0M5OV9GVU5DVElPTlMpOiBEZWZpbmUuCgkoT1NfTUlTU0lOR19QT1dFUlBDNjQpOiBNb3ZlLCBhbmQgY29tbWVudC4KCjIwMDQtMTAtMDIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBhcm0uYyAob3V0cHV0X2NhbGxfbWVtKTogQWRkIG1pc3NpbmcgXHQuCgoyMDA0LTEwLTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1jbXAsIGV4cGFuZF9idWlsdGluX3N0cmNtcCwKCWV4cGFuZF9idWlsdGluX3N0cm5jbXApOiBEZWxldGUgZHVwbGljYXRlIGNvZGUuCgoyMDA0LTEwLTAyICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUByZWRoYXQuY29tPgoKCSogdHJlZS1tdWRmbGFwLmMgKG1mX2J1aWxkX2NoZWNrX3N0YXRlbWVudF9mb3IpOiBSZW9yZ2FuaXplIHRvCgl0YWtlIGNoZWNrLWJhc2UgYW5kIC1saW1pdCBhcmd1bWVudHMuCgkobWZfeGZvcm1fZGVyZWZzXzEpOiBSZW9yZ2FuaXplIHNsaWdodGx5IHRvIHBhc3MgcHJvcGVyIGJhc2UvbGltaXQKCWNoZWNrIHJhbmdlcyBmb3IgQVJSQVlfUkVGIGFuZCBDT01QT05FTlRfUkVGLgoJKGV4ZWN1dGVfbXVkZmxhcF9mbmN0aW9uX29wcywgLi4uX2RlY2xzKTogTGltaXQgdW5uZWNlc3NhcnkKCWluc3RydW1lbnRhdGlvbi4KCjIwMDQtMTAtMDIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1vYmpjLWNvbW1vbi5jIChjX3RyZWVfcHJpbnRlcik6IENvcnJlY3QgZGVzY3JpcHRpb24gb2YgJUUuCglEb24ndCBmYWxsIHRocm91Z2ggYWZ0ZXIgcHJpbnRpbmcgYW4gZXhwcmVzc2lvbi4KCjIwMDQtMTAtMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLWNmZy5jLCBjb25maWcvczM5MC90cGYtdW53aW5kLmg6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNC0xMC0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyZWUtY2ZnLmMgKGNsZWFudXBfdHJlZV9jZmcpOiBTcGVlZCB1cCBieSBjYWxsaW5nCglkZWxldGVfdW5yZWNoYWJsZV9ibG9ja3MoKSBvbmx5IHdoZW4gbmVjZXNzYXJ5LgoKMjAwNC0xMC0wMiAgUC5KLiBEYXJjeSAgPGRhcmN5cGpAdXMuaWJtLmNvbT4KCgkqIGd0aHItdHBmLmggKF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdCk6IE5ldyB0eXBlLgoJKF9fR1RIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVCk6IERlZmluZS4KCShfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2xvY2ssIF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdHJ5bG9jaywKCV9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdW5sb2NrKTogTmV3IGZ1bmN0aW9ucy4KCjIwMDQtMTAtMDIgIFAuSi4gRGFyY3kgIDxkYXJjeXBqQHVzLmlibS5jb20+CgoJKiBjb25maWcvczM5MC90LXRwZiAoTElCMkFEREVIKTogUmVtb3ZlIHRwZi1laC5jLgoJKiBjb25maWcvczM5MC90cGYtZWguYzogUmVtb3ZlIGZpbGUuCgkqIGNvbmZpZy9zMzkwL3RwZi11bndpbmQuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9zMzkwL3RwZi5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiBSZW1vdmUuCgkoTURfVU5XSU5EX1NVUFBPUlQpOiBEZWZpbmUuCgoyMDA0LTEwLTAyICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtdHlwZWNrLmMgKHdhcm5fZm9yX2Fzc2lnbm1lbnQpOiBEb24ndCBwZXJtaXQgYXJnbnVtID09IDAuCgoyMDA0LTEwLTAxICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX2NvbXBhcmlzb24pOiBBZGQgcHJvdG90eXBlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfY29tcGFyaXNvbik6IE5ldyBmdW5jdGlvbi4KCShzMzkwX2JyYW5jaF9jb25kaXRpb25fbWFzayk6IFJldHVybiAtMSBmb3IgaW52YWxpZCBjb21wYXJpc29ucy4KCShzMzkwX2JyYW5jaF9jb25kaXRpb25fbW5lbW9uaWMpOiBBc3NlcnQgdmFsaWQgY29tcGFyaXNvbi4KCSogY29uZmlnL3MzOTAvczM5MC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgczM5MF9jb21wYXJpc29uLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmNqdW1wXzY0IiwgIipjanVtcF8zMSIsICIqY2p1bXBfbG9uZyIsCgkiKmljanVtcF82NCIsICIqaWNqdW1wXzMxIiwgIippY2p1bXBfbG9uZyIsICIqdHJhcCIpOiBVc2UKCXMzOTBfY29tcGFyaXNvbiBpbnN0ZWFkIG9mIGNvbXBhcmlzb25fb3BlcmF0b3IuCgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChVTlNQRUNfQ01QSU5UKTogTmV3IGNvbnN0YW50LgoJKCJjbXBtZW1kaSIpOiBSZW1vdmUuCgkoImNtcG1lbV9zaG9ydCIsICIqY21wbWVtX3Nob3J0Iik6IFVzZSBDQ1Vtb2RlIGluc3RlYWQgb2YgQ0NTbW9kZS4KCSgiY21wbWVtX2xvbmciLCAiKmNtcG1lbV9sb25nXzY0IiwgIipjbXBtZW1fbG9uZ18zMSIpOiBMaWtld2lzZS4KCSgiY21waW50X3NpIik6IFJlbmFtZSB0byAuLi4KCSgiKmNtcGludF9zaSIpOiAuLi4gdGhpcy4gIFVzZSBVTlNQRUNfQ01QSU5ULgoJKCJjbXBpbnRfZGkiLCAiKmNtcGludF9kaSIpOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2Nhbm9uaWNhbGl6ZV9jb21wYXJpc29uKTogUmVtb3ZlCglyZWR1bmRhbnQgVU5TUEVDX0NNUElOVCBjb252ZXJzaW9ucy4KCShzMzkwX2V4cGFuZF9jbXBtZW0pOiBBZGFwdCB0byBjbXBpbnQgcGF0dGVybiBjaGFuZ2VzLgoKMjAwNC0xMC0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbGxlY3QyLmMgKENPTExFQ1RfUEFSU0VfRkxBRyk6IFJlbW92ZS4KCShtYWluKTogUmVtb3ZlIGEgcmVmZXJlbmNlIHRvIENPTExFQ1RfUEFSU0VfRkxBRwoJKiBzeXN0ZW0uaDogUG9pc29uIENPTExFQ1RfUEFSU0VfRkxBRy4KCSogZG9jL3RtLnRleGkgKENPTExFQ1RfUEFSU0VfRkxBRyk6IFJlbW92ZS4KCjIwMDQtMTAtMDEgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2NydGkuYXNtOiBHaXZlIF9pbml0IGFuZCBfZmluaSBmdW5jdGlvbiB0eXBlLgoKMjAwNC0xMC0wMSAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIGNvbW1vbi5vcHQgKGZ0cmVlLWxvb3AtaXZjYW5vbik6IEVuYWJsZSBieSBkZWZhdWx0LgoJKiB0cmVlLXNzYS1sb29wLWl2Y2Fub24uYyAodHJ5X3Vucm9sbF9sb29wX2NvbXBsZXRlbHkpOgoJRW5hYmxlIGNvbXBsZXRlIGxvb3AgdW5yb2xsaW5nLgoJKGNhbm9uaWNhbGl6ZV9pbmR1Y3Rpb25fdmFyaWFibGVzLCB0cmVlX3Vucm9sbF9sb29wc19jb21wbGV0ZWx5KToKCVJlc2V0IHNjZXYgaW5mby4KCjIwMDQtMTAtMDEgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jICh0aHVtYl9jb21wdXRlX3NhdmVkX3JhZ19tYXNrKTogT3Igd2l0aCBiaXRtYXNrLAoJbm90IHJlZ2lzdGVyIG51bWJlci4KCSh0aHVtYl9maW5kX3dvcmtfcmVnaXN0ZXIpOiBTZWFyY2ggZnVsbCByZWdpc3RlciByYW5nZS4KCjIwMDQtMTAtMDEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzE3MzQzCgkqIHRyZWUtY2ZnLmMgKGdyb3VwX2Nhc2VfbGFiZWxzKTogR2V0IHRoZSBsYWJlbCBhbmQgbm90Cgl0aGUgY2FzZSBleHByIGZvciB0aGUgZGVmYXVsdCBjYXNlLgoJV2hlbiB0aGUgbGFiZWwgd2UgbG9va2luZyBhdCBpcyB0aGUgZGVmYXVsdCwgZGVjcmVtZW50IHRoZQoJbmV3X3NpemUuCgoyMDA0LTEwLTAxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjLWRlY2wuYyAoY19leHBhbmRfYm9keSk6IFVwZGF0ZSBjYWxsIHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbi4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfYnVpbGRfc3RhdGljX2NkdG9yKTogTGlrZXdpc2UuCgkqIHRvcGxldi5oICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBVcGRhdGUgcHJvdG90eXBlLgoJKiB0cmVlLW9wdGltaXplLmMgKHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbik6IEtpbGwgbmVzdGVkX3AgYXJndW1lbnQuCgoyMDA0LTEwLTAxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS1jZmcuYyAoY2xlYW51cF90cmVlX2NmZyk6IFB1bGwgYSBjYWxsIHRvCgljbGVhbnVwX2NvbnRyb2xfZmxvdygpIG91dCBvZiB0aGUgd2hpbGUgbG9vcC4KCjIwMDQtMTAtMDEgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdG9yaXphYmxlX29wZXJhdGlvbik6IEZhaWwgdW5sZXNzCgl0aGUgbW9kZSBmb3IgdGhlIHZlY3RvciB0eXBlIGlzIGluZGVlZCBhIHZlY3RvciBtb2RlLgoKMjAwNC0xMC0wMSAgWmRlbmVrIER2b3JhayAgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtY2hyZWMuYyAoY2hyZWNfZm9sZF9wbHVzX3BvbHlfcG9seSwgY2hyZWNfZm9sZF9wbHVzXzEsCgljaHJlY19mb2xkX211bHRpcGx5KTogVXNlIGZvbGRfY29udmVydCBvciBidWlsZF9pbnRfY3N0X3R5cGUgaW5zdGVhZAoJb2YgY29udmVydC4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGNvbXB1dGVfb3ZlcmFsbF9lZmZlY3Rfb2ZfaW5uZXJfbG9vcCwKCWFkZF90b19ldm9sdXRpb24sIHNldF9uYl9pdGVyYXRpb25zX2luX2xvb3AsIGZvbGxvd19zc2FfZWRnZV9pbl9yaHMsCglmb2xsb3dfc3NhX2VkZ2VfaW5fcmhzKTogRGl0dG8uCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKHN0cnVjdCBpdik6IEFkZCBiYXNlX29iamVjdCBmaWVsZC4KCShkdW1wX2l2KTogRHVtcCBiYXNlX29iamVjdC4KCShkdW1wX3VzZSwgZHVtcF9jYW5kKTogVXNlIGR1bXBfaXYuCgkoZGV0ZXJtaW5lX2Jhc2Vfb2JqZWN0KTogTmV3IGZ1bmN0aW9uLgoJKGFsbG9jX2l2KTogSW5pdGlhbGl6ZSBiYXNlX29iamVjdCBmaWVsZC4KCShyZWNvcmRfdXNlKTogQ2xlYXIgdGhlIHNzYV9uYW1lIGZpZWxkIG9mIGl2LgoJKGdldF9jb21wdXRhdGlvbl9jb3N0X2F0KTogRG8gbm90IHVzZSBkaWZmZXJlbmNlIG9mIGFkZHJlc3NlcyBvZgoJdHdvIGRpZmZlcmVudCBvYmplY3RzLgoJKG1heV9lbGltaW5hdGVfaXYpOiBEbyBub3QgcmVxdWlyZSB0aGUgbG9vcCB0byBoYXZlIGp1c3Qgc2luZ2xlIGV4aXQuCgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYyAoemVyb19wKTogRG8gbm90IGNoZWNrIGZvciBvdmVyZmxvd3MuCgkobm9uemVyb19wKTogTmV3IGZ1bmN0aW9uLgoJKGludmVyc2UsIG51bWJlcl9vZl9pdGVyYXRpb25zX2NvbmQsIHNpbXBsaWZ5X3VzaW5nX291dGVyX2V2b2x1dGlvbnMsCgl0cmVlX3NpbXBsaWZ5X3VzaW5nX2NvbmRpdGlvbiwgc2ltcGxpZnlfdXNpbmdfaW5pdGlhbF9jb25kaXRpb25zLAoJbG9vcF9uaXRlcl9ieV9ldmFsLCBmaW5kX2xvb3Bfbml0ZXJfYnlfZXZhbCwKCWVzdGltYXRlX251bWJlcnNfb2ZfaXRlcmF0aW9uc19sb29wLCBjb21wYXJlX3RyZWVzLAoJdXBwZXJfYm91bmRfaW5fdHlwZSwgbG93ZXJfYm91bmRfaW5fdHlwZSwKCWNhbl9jb3VudF9pdl9pbl93aWRlcl90eXBlX2JvdW5kKTogVXNlIGJ1aWxkTiBpbnN0ZWFkIG9mIGJ1aWxkLiAgVXNlCglmb2xkX2NvbnZlcnQgb3IgYnVpbGRfaW50X2NzdF90eXBlIGluc3RlYWQgb2YgY29udmVydC4gIFVzZSAobm9uKXplcm9fcAoJaW5zdGVhZCBvZiBpbnRlZ2VyXyhub24pemVyb3AuCgoyMDA0LTEwLTAxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglSZXZlcnQKCTIwMDQtMDktMjkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdHJlZS5oIChlbnVtIHRyZWVfaW5kZXgpOiBBZGQgVElfVkFfTElTVF9HUFJfQ09VTlRFUl9GSUVMRAoJYW5kIFRJX1ZBX0xJU1RfRlBSX0NPVU5URVJfRklFTEQuCgkodmFfbGlzdF9ncHJfY291bnRlcl9maWVsZCwgdmFfbGlzdF9mcHJfY291bnRlcl9maWVsZCk6IERlZmluZS4KCSogdHJlZS1wYXNzLmggKHBhc3Nfc3RkYXJnKTogQWRkLgoJKiB0cmVlLW9wdGltaXplLmMgKGluaXRfdHJlZV9vcHRpbWl6YXRpb25fcGFzc2VzKTogQWRkIHBhc3Nfc3RkYXJnLgoJKiB0cmVlLXN0ZGFyZy5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKE9CSlMtY29tbW9uKTogQWRkIHRyZWUtc3RkYXJnLm8uCgkodHJlZS1zdGRhcmcubyk6IEFkZCBkZXBlbmRlbmNpZXMuCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IEFkZCB2YV9saXN0X2dwcl9zaXplIGFuZAoJdmFfbGlzdF9mcHJfc2l6ZSBmaWVsZHMuCgkqIGZ1bmN0aW9uLmMgKGFsbG9jYXRlX3N0cnVjdF9mdW5jdGlvbik6IEluaXRpYWxpemUgdGhlbS4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9idWlsZF9idWlsdGluX3ZhX2xpc3QpOiBJbml0aWFsaXplCgl2YV9saXN0X3tnLGZ9cHJfY291bnRlcl9maWVsZC4KCShpeDg2X3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBEb24ndCBkbyBhbnl0aGluZyBpZiByZWdfc2F2ZQoJYXJlYSB3aWxsIG5vdCBiZSB1c2VkLiAgT25seSBzYXZlIHJlZ2lzdGVycyB0aGF0IHRyZWUtc3RkYXJnLmMKCWRldGVjdGVkIHRoZXkgbmVlZCBzYXZpbmcuCgkoaXg4Nl92YV9zdGFydCk6IERvbid0IHNldCB1cCBmaWVsZHMgdGhhdCB3b24ndCBiZSB1c2VkLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2J1aWxkX2J1aWx0aW5fdmFfbGlzdCk6IEluaXRpYWxpemUKCXZhX2xpc3Rfe2csZn1wcl9jb3VudGVyX2ZpZWxkLgoJKHNldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBEb24ndCBkbyBhbnl0aGluZyBpZiByZWdfc2F2ZQoJYXJlYSB3aWxsIG5vdCBiZSB1c2VkLiAgT25seSBzYXZlIHJlZ2lzdGVycyB0aGF0IHRyZWUtc3RkYXJnLmMKCWRldGVjdGVkIHRoZXkgbmVlZCBzYXZpbmcuCgkocnM2MDAwX3ZhX3N0YXJ0KTogRG9uJ3Qgc2V0IHVwIGZpZWxkcyB0aGF0IHdvbid0IGJlIHVzZWQuCgoyMDA0LTA5LTMwICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMi5oIChkd2FyZl9jYWxsaW5nX2NvbnZlbnRpb24pOiBBZGQgZW51bSBmb3IgcmVuZXNhcwoJc2ggYWJpLgoJKiBkd2FyZjJvdXQuYyAoYWRkX2NhbGxpbmdfY29udmVudGlvbl9hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuX3N1YnJvdXRpbmVfdHlwZV9kaWUpOiBVc2UuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0RXQVJGX0NBTExJTkdfQ09OVkVOVElPTik6IE5ldyBob29rLgoJKiB0YXJnZXQuaCAoZ2NjX3RhcmdldCk6IEFkZCBkd2FyZl9jYWxsaW5nX2NvbnZlbnRpb24uCgkqIGhvb2tzLmMgKGhvb2tfaW50X3RyZWVfMCk6IE5ldyBmdW5jdGlvbi4KCSogaG9va3MuaDogUHJvdG90eXBlLgoJKiBjb25maWcvc2gvc2guYzogSW5jbHVkZSBkd2FyZjIuaC4KCShzaF9kd2FyZl9jYWxsaW5nX2NvbnZlbnRpb24pOiBOZXcgZnVuY3Rpb24uCgkoVEFSR0VUX0RXQVJGX0NBTExJTkdfQ09OVkVOVElPTik6IFVzZS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9EV0FSRl9DQUxMSU5HX0NPTlZFTlRJT04pOiBEb2N1bWVudC4KCjIwMDQtMDktMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cnN0ciwgZXhwYW5kX2J1aWx0aW5fc3RyY2hyLAoJZXhwYW5kX2J1aWx0aW5fc3RycmNociwgZXhwYW5kX2J1aWx0aW5fc3RycGJyaywKCWV4cGFuZF9idWlsdGluX3N0cm5jYXQsIGV4cGFuZF9idWlsdGluX3N0cnNwbiwKCWV4cGFuZF9idWlsdGluX3N0cmNzcG4sIGV4cGFuZF9idWlsdGluX2ZwdXRzKTogRWxpbWluYXRlIGR1cGxpY2F0ZQoJY29kZS4KCjIwMDQtMDktMzAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfZXhwYW5kX2xvZ2ljYWxfb3BlcmF0b3IpOiBBZGQKCXByb3RvdHlwZS4KCShzMzkwX2xvZ2ljYWxfb3BlcmF0b3Jfb2tfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZXhwYW5kX2xvZ2ljYWxfb3BlcmF0b3IpOiBOZXcgZnVuY3Rpb24uCgkoczM5MF9sb2dpY2FsX29wZXJhdG9yX29rX3ApOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoImFuZGRpMyIpOiBOZXcgZXhwYW5kZXIuCgkoIiphbmRkaTMiKTogUmVuYW1lIGZyb20gb2xkIGFuZGRpMyBwYXR0ZXJuLCBhZGQgUS0+USBhbHRlcm5hdGl2ZS4KCSgiKmFuZGRpM19zcyIsICIqYW5kZGkzX3NzX2ludiIpOiBSZW1vdmUuCgkoImFuZHNpMyIpOiBVc2UgczM5MF9leHBhbmRfbG9naWNhbF9vcGVyYXRvci4KCSgiKmFuZHNpM19lc2EiLCAiKmFuZHNpM196YXJjaCIpOiBBZGQgUS0+USBhbHRlcm5hdGl2ZS4KCSgiKmFuZHNpM19zcyIsICIqYW5kc2kzX3NzX2ludiIpOiBSZW1vdmUuCgkoImFuZGhpMyIpOiBOZXcgZXhwYW5kZXIuCgkoIiphbmRoaTNfemFyY2giLCAiKmFuZGhpM19lc2EiKTogTmV3IHBhdHRlcm5zLgoJKCJhbmRoaTMiLCAiKmFuZGhpM19uaSIsICIqYW5kaGkzX3NzIiwgIiphbmRoaTNfc3NfaW52Iik6IFJlbW92ZS4KCSgiYW5kcWkzIik6IE5ldyBleHBhbmRlci4KCSgiKmFuZHFpM196YXJjaCIsICIqYW5kcWkzX2VzYSIpOiBOZXcgcGF0dGVybnMuCgkoImFuZHFpMyIsICIqYW5kcWkzX25pIiwgIiphbmRxaTNfc3MiLCAiKmFuZHFpM19zc19pbnYiKTogUmVtb3ZlLgoJKCJpb3JkaTMiKTogTmV3IGV4cGFuZGVyLgoJKCIqaW9yZGkzIik6IFJlbmFtZSBmcm9tIG9sZCBpb3JkaTMgcGF0dGVybiwgYWRkIFEtPlEgYWx0ZXJuYXRpdmUuCgkoIippb3JkaTNfc3MiLCAiKmlvcmRpM19zc19pbnYiKTogUmVtb3ZlLgoJKCJpb3JzaTMiKTogVXNlIHMzOTBfZXhwYW5kX2xvZ2ljYWxfb3BlcmF0b3IuCgkoIippb3JzaTNfZXNhIiwgIippb3JzaTNfemFyY2giKTogQWRkIFEtPlEgYWx0ZXJuYXRpdmUuCgkoIippb3JzaTNfc3MiLCAiKmlvcnNpM19zc19pbnYiKTogUmVtb3ZlLgoJKCJpb3JoaTMiKTogTmV3IGV4cGlvcmVyLgoJKCIqaW9yaGkzX3phcmNoIiwgIippb3JoaTNfZXNhIik6IE5ldyBwYXR0ZXJucy4KCSgiaW9yaGkzIiwgIippb3JoaTNfbmkiLCAiKmlvcmhpM19zcyIsICIqaW9yaGkzX3NzX2ludiIpOiBSZW1vdmUuCgkoImlvcnFpMyIpOiBOZXcgZXhwaW9yZXIuCgkoIippb3JxaTNfemFyY2giLCAiKmlvcnFpM19lc2EiKTogTmV3IHBhdHRlcm5zLgoJKCJpb3JxaTMiLCAiKmlvcnFpM19uaSIsICIqaW9ycWkzX3NzIiwgIippb3JxaTNfc3NfaW52Iik6IFJlbW92ZS4KCSgieG9yZGkzIik6IE5ldyBleHBhbmRlci4KCSgiKnhvcmRpMyIpOiBSZW5hbWUgZnJvbSBvbGQgeG9yZGkzIHBhdHRlcm4sIGFkZCBRLT5RIGFsdGVybmF0aXZlLgoJKCIqeG9yZGkzX3NzIiwgIip4b3JkaTNfc3NfaW52Iik6IFJlbW92ZS4KCSgieG9yc2kzIik6IE5ldyBleHBhbmRlci4KCSgiKnhvcnNpMyIpOiBSZW5hbWUgZnJvbSBvbGQgeG9yc2kzIHBhdHRlcm4sIGFkZCBRLT5RIGFsdGVybmF0aXZlLgoJKCIqeG9yc2kzX3NzIiwgIip4b3JzaTNfc3NfaW52Iik6IFJlbW92ZS4KCSgieG9yaGkzIik6IE5ldyBleHBhbmRlci4KCSgiKnhvcnFpMyIpOiBSZW5hbWUgZnJvbSBvbGQgeG9yaGkzIHBhdHRlcm4sIGFkZCBRLT5RIGFsdGVybmF0aXZlLgoJKCIqeG9yaGkzX3NzIiwgIip4b3JoaTNfc3NfaW52Iik6IFJlbW92ZS4KCSgieG9ycWkzIik6IE5ldyBleHBhbmRlci4KCSgiKnhvcnFpMyIpOiBSZW5hbWUgZnJvbSBvbGQgeG9ycWkzIHBhdHRlcm4sIGFkZCBRLT5RIGFsdGVybmF0aXZlLgoJKCIqeG9ycWkzX3NzIiwgIip4b3JxaTNfc3NfaW52Iik6IFJlbW92ZS4KCjIwMDQtMDktMzAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29tYmluZS5jIChmb3JjZV90b19tb2RlKSA8TkVfRVhQUj46IE9ubHkgY29udmVydCB0aGUgZXhwcmVzc2lvbgoJKEFORCAoTkUgRk9PIDApIENPTlNUKSBpbnRvIChBTkQgRk9PIENPTlNUKSBpZiBGT08gaGFzIHRoZSBzYW1lCgltYWNoaW5lIG1vZGUgYXMgdGhlIHJlc3VsdC4KCjIwMDQtMDktMzAgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCVBSIGJvb3RzdHJhcC8xNzc2MQoJKiBsY20uYyAob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBVcGRhdGUgdG8gdXNlIEVER0VfU1VDQyBhbmQKCUZPUl9FQUNIX0VER0UgbWFjcm9zLgoKMjAwNC0wOS0zMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLXRyZWUuaCAocmVhZG9ubHlfZXJyb3IpOiBSZW1vdmUuCgkqIGMtdHlwZWNrIChlbnVtIGx2YWx1ZV91c2UpOiBOZXcuCgkobHZhbHVlX29yX2Vsc2UsIHJlYWRvbmx5X2Vycm9yKTogVXNlIGl0LiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShyZWFkb25seV9lcnJvcik6IE1ha2Ugc3RhdGljLgoKMjAwNC0wOS0zMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIGRlYnVnLzEzOTc0CgkqIGNmZ3J0bC5jICh0cnlfcmVkaXJlY3RfYnlfcmVwbGFjaW5nX2p1bXAsCglmb3JjZV9ub25mYWxsdGhydV9hbmRfcmVkaXJlY3QsIGNvbW1pdF9vbmVfZWRnZV9pbnNlcnRpb24sCgljZmdfbGF5b3V0X21lcmdlX2Jsb2Nrcyk6IERvIG5vdCBhdHRhY2ggYW55IGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uCgl0byBuZXdseSBpbnNlcnRlZCBpbnN0cnVjdGlvbnMuCgkqIGVtaXQtcnRsLmMgKGVtaXRfaW5zbipfYmVmb3JlLCBlbWl0X2luc24qX2FmdGVyKTogUmVuYW1lIHRvCgllbWl0X2luc25fKl9ub2xvYy4KCShlbWl0XyppbnNuX2JlZm9yZSwgZW1pdF9pbnNuKl9hZnRlcik6IE5ldy4KCShlbWl0XyppbnNuX2JlZm9yZV9zZXRsb2MsIGVtaXRfKmluc25fYWZ0ZXJfc2V0bG9jKTogRG8gbm90IG92ZXJ3cml0ZQoJZXhpc3RpbmcgbG9jYXRvcnMuCgkqIHJ0bC5oIChlbWl0XyppbnNuX2JlZm9yZV9ub2xvYywgZW1pdF8qaW5zbl9hZnRlcl9ub2xvYyk6IERlY2xhcmUuCgkoZW1pdF8qaW5zbl9iZWZvcmVfc2FtZWxvYywgZW1pdF8qaW5zbl9hZnRlcl9zYW1lbG9jKTogS2lsbC4KCjIwMDQtMDktMzAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfYXJnX2ZyYW1lX29mZnNldCk6IFJlbW92ZS4KCShzMzkwX3JldHVybl9hZGRyZXNzX29mZnNldCk6IFJlbW92ZS4KCShzMzkwX2Nhbl9lbGltaW5hdGUpOiBBZGQgcHJvdG90eXBlLgoJKHMzOTBfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBBZGQgcHJvdG90eXBlLgoJKiBjb25maWcvczM5MC9zMzkwLmggKENBTl9FTElNSU5BVEUpOiBDYWxsIHMzOTBfY2FuX2VsaW1pbmF0ZS4KCShJTklUSUFMX0VMSU1JTkFUSU9OX09GRlNFVCk6IENhbGwgczM5MF9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldC4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2FyZ19mcmFtZV9vZmZzZXQpOiBSZW1vdmUuCgkoczM5MF9yZXR1cm5fYWRkcmVzc19vZmZzZXQpOiBSZW1vdmUuCgkoczM5MF9jYW5fZWxpbWluYXRlLCBzMzkwX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogTmV3IGZ1bmN0aW9ucy4KCShzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IE5ldyBtZW1iZXIgc3BsaXRfYnJhbmNoZXNfcGVuZGluZ19wLgoJKHMzOTBfbWFpbnBvb2xfc3RhcnQpOiBBbGxvdyBub25leGlzdGFudCBwb29sIGluc24gZm9yIGVtcHR5IHBvb2wuCgkoczM5MF9tYWlucG9vbF9maW5pc2gpOiBMaWtld2lzZS4gIENsZWFyIGJhc2VfcmVnIGlmIHBvb2wgZW1wdHkuCgkoczM5MF9vcHRpbWl6ZV9wcm9sb2d1ZSk6IFJlbW92ZSBiYXNlX3VzZWQgYXJndW1lbnQuICBDYWxsCglzMzkwX3VwZGF0ZV9mcmFtZV9sYXlvdXQgaW5zdGVhZCBvZiBzMzkwX3JlZ2lzdGVyX2luZm8uICBIYW5kbGUKCXByb2xvZ3VlL2VwaWxvZ3VlIGluc25zIHRoYXQgdG91Y2ggb25seSBSRVRVUk5fUkVHTlVNLgoJKHMzOTBfcmVvcmcpOiBSZW1vdmUgYmFzZV91c2VkLiAgQ2xlYXIgc3BsaXRfYnJhbmNoZXNfcGVuZGluZ19wLgoJKHMzOTBfcmVnaXN0ZXJfaW5mbyk6IFJlbW92ZSBiYXNlX3VzZWQgYW5kIHJldHVybl9hZGRyX3VzZWQKCWFyZ3VtZW50cywgY29tcHV0ZSBzcGVjaWFsIHJlZ2lzdGVyIHVzYWdlIGlubGluZS4gIFJldHVybiBsaXZlCglyZWdpc3RlciBkYXRhIHRvIGNhbGxlci4KCShzMzkwX2ZyYW1lX2luZm8pOiBSZW1vdmUgYXJndW1lbnRzLCBkbyBub3QgY2FsbCBzMzkwX3JlZ2lzdGVyX2luZm8uCgkoczM5MF9pbml0X2ZyYW1lX2xheW91dCk6IE5ldyBmdW5jdGlvbi4KCShzMzkwX3VwZGF0ZV9mcmFtZV9sYXlvdXQpOiBMaWtld2lzZS4KCShzMzkwX2VtaXRfcHJvbG9ndWUpOiBDYWxsIHMzOTBfdXBkYXRlX2ZyYW1lX2xheW91dDsgc29tZSBjb2RlCgltb3ZlIHRvIHRoZXJlLiAgRG8gbm90IGVtaXQgcG9vbCBwbGFjZWhvbGRlciBpbnNuIGlmIHVubmVjZXNzYXJ5LgoKMjAwNC0wOS0zMCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChsZWdpdGltYXRlX3JlbG9hZF9jb25zdGFudF9wKTogUmVtb3ZlCglmbG9hdGluZyBwb2ludCBjb25zdGFudCB3b3JrYXJvdW5kLgoJKHMzOTBfc2Vjb25kYXJ5X2lucHV0X3JlbG9hZF9jbGFzcyk6IEhhbmRsZSBQTFVTIHJlbG9hZHMKCXdpdGggdG9vLWxhcmdlIGNvbnN0YW50LgoJKHMzOTBfZXhwYW5kX3BsdXNfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgibW92ZGkiKTogRG8gbm90IGNhbGwgZm9yY2VfY29uc3RfbWVtLgoJKCJtb3ZzaSIpOiBMaWtld2lzZS4gIEFsc28sIHJlbW92ZSB3b3JrYXJvdW5kIGZvciBub24tZ2VuZXJhbAoJb3BlcmFuZHMuCgkoIm1vdmRmIik6IERvIG5vdCBjYWxsIGZvcmNlX2NvbnN0X21lbS4KCSgibW92c2YiKTogTGlrZXdpc2UuICBNZXJnZSBleHBhbmRlciB3aXRoICptb3ZzZiBpbnNuLgoJKCIqbW92c2YiKTogUmVtb3ZlLCBtZXJnZSB3aXRoIG1vdnNmIGV4cGFuZGVyLgoKMjAwNC0wOS0zMCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vc3ltYmlhbi5oIChTVEFSVEZJTEVfU1BFQyk6IFJlbW92ZSBjcnQqLm8uCgkoRU5ERklMRV9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvYXJtL3Qtc3ltYmlhbi5oIChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IFNldC4KCjIwMDQtMDktMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvcXJubmQuYXNtOiBNYXJrIGZvciBub2V4ZWNzdGFjay4KCjIwMDQtMDktMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBwcm90b2l6ZS5jLCB0cmVlLWNmZy5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDQtMDktMzAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvMTc3MzAKCSogYy10eXBlY2suYyAobHZhbHVlX29yX2Vsc2UpOiBQYXNzIG1zZ2lkIGRpcmVjdGx5IHRvIGVycm9yLgoKMjAwNC0wOS0zMCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjb2xsZWN0X3BvaW50c190b19pbmZvX3IpOiBNb3ZlIGFuYWx5c2lzIG9mCglleHByZXNzaW9ucy4uLgoJKGFkZF9wb2ludGVkX3RvX2V4cHIpOiAuLi4gaGVyZS4KCUNhbGwgYWRkX3BvaW50ZWRfdG9fZXhwciBmb3IgdmFyaWFibGVzIHdpdGggREVDTF9JTklUSUFMIHNldC4KCSogdHJlZS1kZmEuYyAoYWRkX3JlZmVyZW5jZWRfdmFyKTogU2NhbiBERUNMX0lOSVRJQUwgb2YgYW55Cglwb2ludGVyIHZhcmlhYmxlLCBpZiBzZXQuCgoyMDA0LTA5LTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL3NoL3NoLmM6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDQtMDktMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB1bndpbmQtZHcyLmMgKF9VbndpbmRfR2V0R1IpOiBIb25vciBEV0FSRl9aRVJPX1JFRy4KCSogZG9jL3RtLnRleGkgKERXQVJGX1pFUk9fUkVHKTogTmV3LgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3NhX21hc2ssIGFscGhhX2V4cGFuZF9wcm9sb2d1ZSwKCWFscGhhX2V4cGFuZF9lcGlsb2d1ZSk6IFJldmVydCAyMDAzLTA5LTMwIGNoYW5nZSB0byBzdG9yZSB6ZXJvLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoRFdBUkZfWkVST19SRUcpOiBOZXcuCgoyMDA0LTA5LTI5ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJsZW4pOiBEbyBub3QgY2FsbCBlbWl0X21vdmVfaW5zbgoJd2l0aCBhIFBMVVMgYXMgc291cmNlIG9wZXJhbmQuCgkoZXhwYW5kX21vdnN0cik6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3N0cGNweSk6IExpa2V3aXNlLgoKMjAwNC0wOS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiAxNzczOQoJKiB0cmVlLWdpbXBsZS5jIChpc19naW1wbGVfcmVnKTogUmVqZWN0IGhhcmQgcmVnaXN0ZXJzLgoJKGlzX2dpbXBsZV9hc21fdmFsKTogTmV3LgoJKiB0cmVlLWdpbXBsZS5oIChpc19naW1wbGVfYXNtX3ZhbCk6IERlY2xhcmUuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2FzbV9leHByKTogVXNlIGl0LgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChwcmludF9kZWNsYXJhdGlvbik6IER1bXAgaGFyZCByZWdzLgoJKiB0cmVlLW91dG9mLXNzYS5jIChjaGVja19yZXBsYWNlYWJsZSk6IERvbid0IGNoZWNrIGZvciBoYXJkIHJlZ3MuCgkqIHRyZWUtc3NhLWNvcHlyZW5hbWUuYyAoY29weV9yZW5hbWVfcGFydGl0aW9uX2NvYWxlc2NlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXByZS5jIChpc191bmRlZmluZWRfdmFsdWUpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY29weS5jIChtYXlfcHJvcGFnYXRlX2NvcHkpOiBMaWtld2lzZS4KCShtYXlfcHJvcGFnYXRlX2NvcHlfaW50b19hc20pOiBQcm90ZWN0IERFQ0xfSEFSRF9SRUdJU1RFUi4KCSogdHJlZS1zc2EuYyAod2Fybl91bmluaXQpOiBMaWtld2lzZS4KCSogdHJlZS5oIChERUNMX0hBUkRfUkVHSVNURVIpOiBDaGVjayBmb3IgVkFSX0RFQ0wuCgoyMDA0LTA5LTI5ICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGMtZGVjbC5jIChtZXJnZV9kZWNscyk6IFVzZSBjb21wdHlwZSB3aGVuIGNvbXBhcmluZwoJdHlwZXMgdG8gZGVjaWRlIG9uIERFQ0xfU0laRSBzYXZlIG9mIG9sZGRlY2wuCgoyMDA0LTA5LTI5ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHRyZWUuaCAoSU5ESVJFQ1RfUkVGX1ApOiBOZXcgbWFjcm8uCgkqIGFsaWFzLmMgKGdldF9hbGlhc19zZXQpOiBVc2UgaXQKCShub25vdmVybGFwcGluZ19tZW1yZWZzX3ApOiBEaXR0by4KCSogZW1pdC1ydGwuYyAobWVtX2V4cHJfZXF1YWxfcCk6IERpdHRvLgoJKHNldF9tZW1fYXR0cmlidXRlc19taW51c19iaXRwb3MpOiBEaXR0by4KCShpc19naW1wbGVfYWRkcmVzc2FibGUpOiBEaXR0by4KCShnZXRfYmFzZV9hZGRyZXNzKTogRGl0dG8uCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGZpbmRfcHRyX2RlcmVmZXJuZWNlKTogRGl0dG8uCgkqIHRyZWUtc3NhLWRjZS5jIChtYXJrX3N0bXRfaWZfb2J2aW91c2x5X25lY2Vzc2FyeSk6IERpdHRvLgoJKiB0cmVlLXNzYS1kb20uYyAocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX3N0bXQpOiBEaXR0by4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChpc19jYWxsX2Nsb2JiZXJlZF9yZWYpOiBEaXR0by4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoZmluZF9pbnRlcmVzdGluZ191c2VzX2FkZHJlc3MpOiBEaXR0by4KCShhZGRfYWRkcmVzc19jYW5kaWRhdGVzKTogRGl0dG8uCgkocmV3cml0ZV9hZGRyZXNzX2Jhc2UpOiBEaXR0by4KCjIwMDQtMDktMzAgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogdHJlZS1mbG93LmggKHN0cnVjdCBiYl9hbm5fZCk6IFJlbW92ZSBudW1fcHJlZHMgbWVtYmVyLgoJKiB0cmVlLWludG8tc3NhLmMgKHJld3JpdGVfaW50b19zc2EpOiBEb24ndCBzZXQgaXQuCgkocmV3cml0ZV9zc2FfaW50b19zc2EpOiBMaWtld2lzZS4KCSogdHJlZS1waGlub2Rlcy5jIChjcmVhdGVfcGhpX25vZGUpOiBBY2Nlc3MgdGhlIG51bWJlciBvZgoJcHJlZGVjZXNzb3IgZWRnZXMgdXNpbmcgRURHRV9DT1VOVCgpIGFuZCBub3QgbnVtX3ByZWRzLgoKMjAwNC0wOS0yOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy83NDI1CgkqIGMtZGVjbC5jIChtZXJnZV9kZWNscyk6IE1lcmdlIFRSRUVfREVQUkVDQVRFRC4KCjIwMDQtMDktMjkgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jICh0cmVlX3N3YXBfb3BlcmFuZHNfcCk6IFJlbW92ZSBkdXBsaWNhdGVkIGNvZGUuCgoyMDA0LTA5LTI5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGNvbmZpZy9jcmlzL2NyaXMubWQgKG1vdmVyc2lkZSwgbW92ZW1zaWRlKTogV2l0aCBNRU0sIG1ha2Ugc3VyZQoJdGhlIGFkZHJlc3MgaXMgKHBsdXMgcmVnIG1lbSkuCgoyMDA0LTA5LTI5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoUFJPQ0VTU09SX0RFRkFVTFQpOiBEZWZpbmUuCgoyMDA0LTA5LTI5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5jIChtYWtlX25vZGVfc3RhdCk6IEZpeCB1bmluaXRpYWxpemVkIHdhcm5pbmcuICBSZXBsYWNlCgljYXNjYWRlZCBpZiAuLi4gZWxzZSBpZiB3aXRoIGEgc3dpdGNoLgoKMjAwNC0wOS0yOSAgQWFyb24gVy4gTGFGcmFtYm9pc2UgIDxhYXJvbmF2YXk2MkBhYXJvbndsLmNvbT4KCgkqIHJlYWQtcnRsLmMgKGFwcGx5X21hY3JvX3RvX3N0cmluZyk6IFJlcGxhY2UgaW5kZXggd2l0aCBzdHJjaHIuCgoyMDA0LTA5LTI5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHRyZWUuaCAoZW51bSB0cmVlX2luZGV4KTogQWRkIFRJX1ZBX0xJU1RfR1BSX0NPVU5URVJfRklFTEQKCWFuZCBUSV9WQV9MSVNUX0ZQUl9DT1VOVEVSX0ZJRUxELgoJKHZhX2xpc3RfZ3ByX2NvdW50ZXJfZmllbGQsIHZhX2xpc3RfZnByX2NvdW50ZXJfZmllbGQpOiBEZWZpbmUuCgkqIHRyZWUtcGFzcy5oIChwYXNzX3N0ZGFyZyk6IEFkZC4KCSogdHJlZS1vcHRpbWl6ZS5jIChpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkZCBwYXNzX3N0ZGFyZy4KCSogdHJlZS1zdGRhcmcuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChPQkpTLWNvbW1vbik6IEFkZCB0cmVlLXN0ZGFyZy5vLgoJKHRyZWUtc3RkYXJnLm8pOiBBZGQgZGVwZW5kZW5jaWVzLgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBBZGQgdmFfbGlzdF9ncHJfc2l6ZSBhbmQKCXZhX2xpc3RfZnByX3NpemUgZmllbGRzLgoJKiBmdW5jdGlvbi5jIChhbGxvY2F0ZV9zdHJ1Y3RfZnVuY3Rpb24pOiBJbml0aWFsaXplIHRoZW0uCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfYnVpbGRfYnVpbHRpbl92YV9saXN0KTogSW5pdGlhbGl6ZQoJdmFfbGlzdF97ZyxmfXByX2NvdW50ZXJfZmllbGQuCgkoaXg4Nl9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogRG9uJ3QgZG8gYW55dGhpbmcgaWYgcmVnX3NhdmUKCWFyZWEgd2lsbCBub3QgYmUgdXNlZC4gIE9ubHkgc2F2ZSByZWdpc3RlcnMgdGhhdCB0cmVlLXN0ZGFyZy5jCglkZXRlY3RlZCB0aGV5IG5lZWQgc2F2aW5nLgoJKGl4ODZfdmFfc3RhcnQpOiBEb24ndCBzZXQgdXAgZmllbGRzIHRoYXQgd29uJ3QgYmUgdXNlZC4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9idWlsZF9idWlsdGluX3ZhX2xpc3QpOiBJbml0aWFsaXplCgl2YV9saXN0X3tnLGZ9cHJfY291bnRlcl9maWVsZC4KCShzZXR1cF9pbmNvbWluZ192YXJhcmdzKTogRG9uJ3QgZG8gYW55dGhpbmcgaWYgcmVnX3NhdmUKCWFyZWEgd2lsbCBub3QgYmUgdXNlZC4gIE9ubHkgc2F2ZSByZWdpc3RlcnMgdGhhdCB0cmVlLXN0ZGFyZy5jCglkZXRlY3RlZCB0aGV5IG5lZWQgc2F2aW5nLgoJKHJzNjAwMF92YV9zdGFydCk6IERvbid0IHNldCB1cCBmaWVsZHMgdGhhdCB3b24ndCBiZSB1c2VkLgoKMjAwNC0wOS0yOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0ZQVVRDLCBCVUlMVF9JTl9GUFVUQ19VTkxPQ0tFRCwKCUJVSUxUX0lOX0ZQVVRTLCBCVUlMVF9JTl9GUFVUU19VTkxPQ0tFRCwgQlVJTFRfSU5fRldSSVRFLAoJQlVJTFRfSU5fRldSSVRFX1VOTE9DS0VELCBCVUlMVF9JTl9QVVRDSEFSLCBCVUlMVF9JTl9QVVRDSEFSX1VOTE9DS0VELAoJQlVJTFRfSU5fUFVUUywgQlVJTFRfSU5fUFVUU19VTkxPQ0tFRCk6IFJlbW92ZSBub3Rocm93IGF0dHJpYnV0ZS4KCSogYnVpbHRpbi1hdHRycy5kZWYgKEFUVFJfTk9OTlVMTF8xLCBBVFRSX05PTk5VTExfMiwgQVRUUl9OT05OVUxMXzFfMiwKCUFUVFJfTk9OTlVMTF8xXzQpOiBOZXcuCgoyMDA0LTA5LTI5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNzY5NwoJKiB0cmVlLXNzYS1jY3AuYyAoZXhlY3V0ZV9mb2xkX2FsbF9idWlsdGlucyk6IFVwZGF0ZSBlaCBhbmQgY2xlYW51cAoJY2ZnIGlmIG5lZWRlZC4KCjIwMDQtMDktMjggIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcHJvZmlsZS5jIChicmFuY2hfcHJvYik6IFBhc3MgY29ycmVjdCB2YWx1ZSB0byBvdXRwdXRfbG9jYXRpb24sCglldmVuIHdoZW4gVVNFX01BUFBFRF9MT0NBVElPTi4gIEZpeGVzIGJ1ZyBmcm9tIDA5LTExLgoKMjAwNC0wOS0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiAxNTA4OQoJKiB0cmVlLXNzYS1jb3B5LmMgKG1heV9wcm9wYWdhdGVfY29weV9pbnRvX2FzbSk6IE5ldy4KCSogdHJlZS1mbG93LmggKG1heV9wcm9wYWdhdGVfY29weV9pbnRvX2FzbSk6IERlY2xhcmUuCgkqIHRyZWUtc3NhLWNjcC5jIChyZXBsYWNlX3VzZXNfaW4pOiBVc2UgaXQuCgkqIHRyZWUtc3NhLWRvbS5jIChjcHJvcF9vcGVyYW5kKTogTGlrZXdpc2UuCgoyMDA0LTA5LTI4IEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAoY3JlYXRlX2Jsb2NrX2Zvcl90aHJlYWRpbmcpOiBSZXF1ZXN0Cgl0aGF0IG5vIG91dGdvaW5nIGVkZ2VzIGJlIGxlZnQgaW4gdGhlIGR1cGxpY2F0ZSBibG9jay4gIERvIG5vCgl1cGRhdGUgaW5mb3JtYXRpb24gb24gb3V0Z29pbmcgZWRnZXMgb3IgUEhJIG5vZGVzIGluIHRhcmdldAoJYmxvY2tzIGhlcmUuCgkocmVtb3ZlX2N0cmxfc3RtdF9hbmRfdXNlbGVzc19lZGdlcyk6IFJlbmFtZWQgZnJvbQoJcmVtb3ZlX2xhc3Rfc3RtdF9hbmRfdXNlbGVzc19lZGdlcy4gIEhhbmRsZSBjYXNlIHdoZXJlIHRoZQoJYmxvY2sgaXMgZW1wdHkgb3IgaGFzIG5vIGNvbnRyb2wgc3RhdGVtZW50cy4gIERvIG5vdCB1cGRhdGUgZWRnZQoJZmxhZ3MgaGVyZS4KCSh0aHJlYWRfYmxvY2spOiBDcmVhdGUgYSB0ZW1wbGF0ZSBibG9jayByYXRoZXIgdGhhbiBjb3B5aW5nIHRoZQoJb3JpZ2luYWwgYmxvY2sgZXZlcnkgdGltZS4gIENyZWF0ZSBvdXRnb2luZyBlZGdlcyBmcm9tIHRoZQoJZHVwbGljYXRlIGJsb2NrcyBhbmQgdXBkYXRlIFBISXMgYXQgdGhlIHRhcmdldCBvZiB0aGUgb3V0Z29pbmcKCWVkZ2VzIGhlcmUuICBGaXggZWRnZSBmbGFncyBmb3IgdGhlIG9yaWdpbmFsIGJsb2NrIGlmIG5lY2Vzc2FyeS4KCSogY2ZnaG9va3MgKGR1cGxpY2F0ZV9ibG9jayk6IE5vIGxvbmdlciBhc3NlcnQgdGhhdCB0aGUgb3JpZ2luYWwKCWJsb2NrIGhhcyBpbmNvbWluZyBlZGdlcy4KCjIwMDQtMDktMjkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoRXh0ZW5kZWQgQXNtKTogQWRkIGJsdXJiIGFib3V0IHVzaW5nIEV4cGxpY2l0CglSZWcgVmFycyB0byBlbmZvcmNlIHJlZ2lzdGVyIGFsbG9jYXRpb24gd2l0aCBnZW5lcmFsIGNvbnN0cmFpbnRzLgoJKEV4cGxpY2l0IFJlZyBWYXJzKTogQ2xhcmlmeSByZWxhdGlvbiB0byBhc20gc3RhdGVtZW50cy4KCShMb2NhbCBSZWcgVmFycyk6IFNpbWlsYXIuCgoyMDA0LTA5LTI4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBzY2hlZC1yZ24uYyAoaGFpZmFfZWRnZSwgZWRnZV90YWJsZSwgTkVYVF9JTiwgTkVYVF9PVVQsIEZST01fQkxPQ0ssCglUT19CTE9DSywgbnJfZWRnZXMsIGluX2VkZ2VzLCBvdXRfZWRnZXMsIElOX0VER0VTLCBPVVRfRURHRVMsCglidWlsZF9jb250cm9sX2Zsb3csIG5ld19lZGdlKTogUmVtb3ZlLgoJKHNjaGVkdWxlX2luc25zKTogUmVtb3ZlIGVkZ2VfdGFibGUvaW5fZWRnZXMvb3V0X2VkZ2VzIGNsZWFudXAuCgkoYml0bHN0LCBiaXRsc3RfdGFibGVfbGFzdCwgYml0bHN0X3RhYmxlKTogUmVtb3ZlLgoJKGJibHN0KTogU3RvcmUgYmFzaWNfYmxvY2sgcG9pbnRlciBpbnN0ZWFkIG9mIGJsb2NrIGluZGV4LgoJKGJibHN0X3RhYmxlKTogTGlrZXdpc2UuCgkoZWRnZWxzdCk6IFN0b3JlIGVkZ2UgcG9pbnRlciBpbnN0ZWFkIG9mIGVkZ2UgaW5kZXguCgkoZWRnZWxzdF90YWJsZSwgZWRnZWxzdF9sYXN0KTogTmV3IHZhcmlhYmxlcy4KCShleHRyYWN0X2JpdGxzdCk6IFJlbmFtZSB0byAuLi4KCShleHRyYWN0X2VkZ2Vsc3QpOiAuLi4gdGhpcy4gIFJldHVybiBlZGdlIHBvaW50ZXJzLCBub3QgaW5kaWNlcy4KCShzcGxpdF9lZGdlcyk6IFVwZGF0ZSBjYWxsLgoJKHJnbl9lZGdlcyk6IFN0b3JlIGVkZ2UgcG9pbnRlcnMgaW5zdGVhZCBvZiBpbmRpY2VzLgoJKGVkZ2VfdG9fYml0KTogUmVtb3ZlLgoJKEVER0VfVE9fQklUKTogU3RvcmUgcGVyLXJlZ2lvbiBlZGdlIGluZGV4IGluIGVkZ2UtPmF1eC4KCShTRVRfRURHRV9UT19CSVQpOiBOZXcgbWFjcm8uCgkoaXNfY2ZnX25vbnJlZ3VsYXIpOiBDaGVjayBmb3Igc2ltcGxlIGNhc2VzIG9mIHVucmVhY2hhYmxlIGJsb2Nrcy4KCShmaW5kX3JnbnMpOiBSZW1vdmUgZWRnZV9saXN0IHBhcmFtZXRlci4gIFRyYXZlcnNlIHN0YW5kYXJkIENGRwoJZGF0YSBzdHJ1Y3R1cmVzIGluc3RlYWQgb2YgaGFpZmFfZWRnZSBldCBhbC4gIFVzZSBlZGdlIHBvaW50ZXJzCglpbnN0ZWFkIG9mIGVkZ2UgaW5kaWNlcyBldmVyeXdoZXJlLgoJKGNvbXB1dGVfZG9tX3Byb2JfcHMpOiBVc2Ugc3RhbmRhcmQgQ0ZHIGRhdGEgc3RydWN0dXJlcy4gIEFjY291bnQKCWZvciBleGl0IGVkZ2VzLgoJKGNvbXB1dGVfdHJnX2luZm8pOiBMaWtld2lzZS4KCShwcm9wYWdhdGVfZGVwcyk6IExpa2V3aXNlLgoJKGRlYnVnX2NhbmRpZGF0ZSk6IEFjY291bnQgZm9yIGJibHN0IGRhdGEgc3RydWN0dXJlIGNoYW5nZS4KCShjaGVja19saXZlXzEsIHVwZGF0ZV9saXZlXzEsIGlzX3BmcmVlKTogTGlrZXdpc2UuCgkoSVNfUkVBQ0hBQkxFKTogVXNlIHN0YW5kYXJkIENGRyBkYXRhIHN0cnVjdHVyZXMuCgkoaW5pdF9yZWFkeV9saXN0KTogVXBkYXRlIGJibHN0X3RhYmxlL2VkZ2Vsc3RfdGFibGUgYWxsb2NhdGlvbi4KCShzY2hlZHVsZV9yZWdpb24pOiBVcGRhdGUgYWxsb2MvY2xlYW51cCBjb2RlIHRvIGRhdGEgc3RydWN0dXJlCgljaGFuZ2VzLiAgVXNlIGVkZ2UtPmF1eCB0byBzdG9yZSBwZXItcmVnaW9uIGVkZ2UgaW5kZXguCgkoaW5pdF9yZWdpb25zKTogTm8gbG9uZ2VyIGNhbGwgYnVpbGRfY29udHJvbF9mbG93LiAgRG8gbm90CgljcmVhdGUgZWRnZSBsaXN0IGFueSBtb3JlLgoKMjAwNC0wOS0yOCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY3NlLmMgKGNzZV9pbnNuKTogQXZvaWQgY3JlYXRpbmcgZGlyZWN0IG5vbi1sb2NhbCBqdW1wcy4KCSogY29tYmluZS5jIChjYW5fY29tYmluZV9wKTogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLiAodXBkYXRlX2VxdWl2X3JlZ3MpOiBMaWtld2lzZS4KCjIwMDQtMDktMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgMTc1MzEKCSogZXhwci5jIChleHBhbmRfZXhwcl9hZGRyX2V4cHJfMSk6IE9ubHkgYXNzZW1ibGVfZXh0ZXJuYWwgZm9yIGRlY2xzLgoJRG9uJ3QgY2hlY2sgVk9JRG1vZGUgaGVyZS4gIEZvcmNlIFBMVVMgb3BlcmFuZHMgdG8gY29tbW9uIHR5cGUuCgkoZXhwYW5kX2V4cHJfYWRkcl9leHByKTogRG8gVk9JRG1vZGUgY2hlY2sgZWFybGllci4gIEZvcmNlIHVzZSBvZgoJUG1vZGUgaWYgZ2l2ZW4gYSBub24gcG9pbnRlciB0eXBlLgoKMjAwNC0wOS0yOCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIDE3NTMxCgkqIG9wdGFicy5jIChleHBhbmRfYmlub3ApOiBGb3JjZSBjb25zdGFudHMgdG8gdGhlIGNvcnJlY3QgbW9kZS4KCjIwMDQtMDktMjggIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9hZGp1c3RfY29zdCk6IFJlbW92ZS4KCShUQVJHRVRfU0NIRURfQURKVVNUX0NPU1QpOiBEbyBub3QgcmVkZWZpbmUuCgkoczM5MF9hZGp1c3RfcHJpb3JpdHkpOiBIYW5kbGUgVFlQRV9TVE0gbGlrZSBUWVBFX1NUT1JFLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgibWFpbl9wb29sIik6IFVzZSAibGFybCIgdHlwZQoJYXR0cmlidXRlIGlmIFRBUkdFVF9DUFVfWkFSQ0guCgoyMDA0LTA5LTI4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBEZWNsYXJlIGVpCgl2YXJpYWJsZS4KCjIwMDQtMDktMjggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtbG9vcC5jIChwYXNzX3JlY29yZF9ib3VuZHMpOiBEbyBub3QgYXNzaWduIGEKCW5hbWUgdG8gdGhlIHBhc3MuCgoyMDA0LTA5LTI4ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBjb21tb24ub3B0IChmbGFnX2djc2Vfc20pOiBEaXNhYmxlIGJ5IGRlZmF1bHQuCgkoZmxhZ19nY3NlX2xhcyk6IExpa2V3aXNlLgoJKGZsYWdfd2ViKTogTGlrZXdpc2UuICBDcmVhdGUgZnJvbSB0aGlzIGZpbGUuCgkqIGZsYWdzLmg6IFJlbW92ZSBmbGFnX3dlYiBkZWNsYXJhdGlvbi4KCSogdG9wbGV2LmMgKGZsYWdfd2ViKTogTGlrZXdpc2UuCgkocHJvY2Vzc19vcHRpb25zKTogTmV2ZXIgc2V0IGZsYWdfd2ViLgoKMjAwNC0wOS0yOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKHRyZWUtc3NhLXByb3BhZ2F0ZS5vKTogRGVwZW5kIG9uIHZlYy5oLgoJKiB0cmVlLXNzYS1wcm9wYWdhdGUuYzogSW5jbHVkZSB2ZWMuaC4KCShpbnRlcmVzdGluZ19zc2FfZWRnZXMsIHZhcnlpbmdfc3NhX2VkZ2VzKTogTWFrZSB0aGVzZSBWRUNzCglpbnN0ZWFkIG9mIHZhcnJheXMuCgkoY2ZnX2Jsb2Nrc19hZGQpOiBBc3NlcnQgdGhlIGJsb2NrIGlzIG5vdCBhbHJlYWR5IGluIHRoZSB3b3JrbGlzdC4KCVVwZGF0ZSB1c2VzIG9mIGludGVyZXN0aW5nX3NzYV9lZGdlcyBhbmQgdmFyeWluZ19zc2FfZWRnZXMuCgkocHJvY2Vzc19zc2FfZWRnZV93b3JrbGlzdCwgc3NhX3Byb3BfaW5pdCwgc3NhX3Byb3BfZmluaSwKCXNzYV9wcm9wYWdhdGUpOiBMaWtld2lzZS4KCjIwMDQtMDktMjggIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvMTY0MDkKCSogYy1kZWNsLmMgKHN0YXJ0X2RlY2wpOiBDaGVjayBmb3IgaW5pdGlhbGl6aW5nIGluY29tcGxldGUgYXJyYXkKCW9mIFZMQXMuCgkoYnVpbGRfY29tcG91bmRfbGl0ZXJhbCk6IENoZWNrIGZvciBUWVBFIGJlaW5nIGVycm9yX21hcmtfbm9kZS4KCSogYy1wYXJzZS5pbiAocHJpbWFyeSk6IENoZWNrIGZvciBWTEEgY29tcG91bmQgbGl0ZXJhbHMuCgoyMDA0LTA5LTI4ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWxpdmUuYyAoY2FsY3VsYXRlX2xpdmVfb25fZW50cnkpOiBGaXggd2FybmluZ3MKCXdpdGggLS1kaXNhYmxlLWNoZWNraW5nLgoKMjAwNC0wOS0yOCAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogUHJpbnQgdmVjdG9yIHR5cGVzLgoKMjAwNC0wOS0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5oIChJTklUX0NVTVVMQVRJVkVfQVJHUyk6IFJlcGxhY2Ugd2l0aCBhbgoJaW52b2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gc2hfaW5pdF9jdW11bGF0aXZlX2FyZ3MuCgkoSU5JVF9DVU1VTEFUSVZFX0xJQkNBTExfQVJHUyk6IExpa2V3aXNlLgoJKElOSVRfQ1VNVUxBVElWRV9JTkNPTUlOR19BUkdTKTogRGVsZXRlLgoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmg6IFByb3RvdHlwZSBzaF9pbml0X2N1bXVsYXRpdmVfYXJncy4KCSogY29uZmlnL3NoL3NoLmMgKHNoX2luaXRfY3VtdWxhdGl2ZV9hcmdzKTogTmV3IGZ1bmN0aW9uIGJhc2VkCglvbiB0aGUgY29udGVudHMgb2YgdGhlIG9sZCBJTklUX0NVTVVMQVRJVkVfQVJHUyBtYWNybyBidXQgd2l0aCBhCgloZXVyaXN0aWMgYWRkZWQgdG8gZGV0ZXJtaW5lIHRoZSBzZXR0aW5nIG9mIGZvcmNlX21lbSB3aGVuIGEKCWxpYnJhcnkgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLgoKMjAwNC0wOS0yOCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1sb29wLWltLmMgKHNpbmdsZV9yZWFjaGFibGVfYWRkcmVzcykgPFBISV9OT0RFPjoKCVNraXAgY29uc3RhbnQgYXJndW1lbnRzLgoKMjAwNC0wOS0yOCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjcmVhdGVfbmFtZV90YWdzKTogSWYgUFRSIHBvaW50cyB0byBhCgl2b2xhdGlsZSB0eXBlLCBtYXJrIHRoZSB0YWcgdm9sYXRpbGUuCgkoZ2V0X3RtdF9mb3IpOiBJZiBUQUdfVFlQRSBpcyBhIHZvbGF0aWxlIHR5cGUsIG1hcmsgdGhlIHRhZwoJdm9sYXRpbGUuCgoyMDA0LTA5LTI4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHRyZWUuZGVmICh2ZWNfY29uZF9leHByKTogRml4LiBDaGFuZ2UgJ2UnCgl0byB0Y2NfZXhwcmVzc2lvbi4KCjIwMDQtMDktMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBiYXNpYy1ibG9jay5oOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTA5LTI4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogb3B0YWJzLmMsIG9wdGFicy5oOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDQtMDktMjggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoY2FsbF9hZGRyZXNzX3N0cnVjdF92YWx1ZV9zcDMyKToKCVByb3Blcmx5IG1hc2sgdGhlIGltbWVkaWF0ZSBmaWVsZCBvZiB0aGUgJ3VuaW1wJyBpbnN0cnVjdGlvbi4KCShjYWxsX3N5bWJvbGljX3N0cnVjdF92YWx1ZV9zcDMyKTogTGlrZXdpc2UuCgoyMDA0LTA5LTI4ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCSAgICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgkgICAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJTWVyZ2UgZnJvbSBlZGdlLXZlY3Rvci1icmFuY2g6CgkqIGJhc2ljLWJsb2NrLmg6IEluY2x1ZGUgdmVjLmgsIGVycm9ycy5oLiBJbnN0YW50aWF0ZSBhIFZFQyhlZGdlKS4KCShzdHJ1Y3QgZWRnZV9kZWYpOiBSZW1vdmUgcHJlZF9uZXh0LCBzdWNjX25leHQgbWVtYmVycy4KCShzdHJ1Y3QgYmFzaWNfYmxvY2tfZGVmKTogUmVtb3ZlIHByZWQsIHN1Y2MgbWVtYmVycy4gIEFkZCBwcmVkcwoJYW5kIHN1Y2NzIG1lbWJlcnMgb2YgdHlwZSBWRUMoZWRnZSkuCgkoRkFMTFRIUlVfRURHRSk6IFJlZGVmaW5lIHVzaW5nIEVER0VfU1VDQy4KCShCUkFOQ0hfRURHRSk6IExpa2V3aXNlLgoJKEVER0VfQ1JJVElDQUxfUCk6IFJlZGVmaW5lIHVzaW5nIEVER0VfQ09VTlQuCgkoRURHRV9DT1VOVCwgRURHRV9JLCBFREdFX1BSRUQsIEVER0VfU1VDQyk6IE5ldy4KCShlZGdlX2l0ZXJhdG9yKTogTmV3LgoJKGVpX3N0YXJ0LCBlaV9sYXN0LCBlaV9lbmRfcCwgZWlfb25lX2JlZm9yZV9lbmRfcCk6IE5ldy4KCShlaV9uZXh0LCBlaV9wcmV2LCBlaV9lZGdlLCBlaV9zYWZlX2VkZ2UpOiBMaWtld2lzZS4KCShGT1JfRUFDSF9FREdFKTogTmV3LgoJKiBiYi1yZW9yZGVyLmMgKGZpbmRfdHJhY2VzKTogVXNlIEZPUl9FQUNIX0VER0UgYW5kIEVER0VfKiBtYWNyb3MKCXdoZXJlIGFwcGxpY2FibGUuCgkocm90YXRlX2xvb3ApOiBMaWtld2lzZS4KCShmaW5kX3RyYWNlc18xX3JvdXRlKTogTGlrZXdpc2UuCgkoYmJfdG9fa2V5KTogTGlrZXdpc2UuCgkoY29ubmVjdF90cmFjZXMpOiBMaWtld2lzZS4KCShjb3B5X2JiX3ApOiBMaWtld2lzZS4KCShmaW5kX3JhcmVseV9leGVjdXRlZF9iYXNpY19ibG9ja3NfYW5kX2Nyb3NzaW5nX2VkZ2VzKTogTGlrZXdpc2UuCgkoYWRkX2xhYmVsc19hbmRfbWlzc2luZ19qdW1wcyk6IExpa2V3aXNlLgoJKGZpeF91cF9mYWxsX3RocnVfZWRnZXMpOiBMaWtld2lzZS4KCShmaW5kX2p1bXBfYmxvY2spOiBMaWtld2lzZS4KCShmaXhfY3Jvc3NpbmdfY29uZGl0aW9uYWxfYnJhbmNoZXMpOiBMaWtld2lzZS4KCShmaXhfY3Jvc3NpbmdfdW5jb25kaXRpb25hbF9icmFuY2hlcyk6IExpa2V3aXNlLgoJKGFkZF9yZWdfY3Jvc3NpbmdfanVtcF9ub3Rlcyk6IExpa2V3aXNlLgoJKiBidC1sb2FkLmMgKGF1Z21lbnRfbGl2ZV9yYW5nZSk6IExpa2V3aXNlLgoJKiBjZmcuYyAoY2xlYXJfZWRnZXMpOiBMaWtld2lzZS4KCSh1bmNoZWNrZWRfbWFrZV9lZGdlKTogTGlrZXdpc2UuCgkoY2FjaGVkX21ha2VfZWRnZSk6IExpa2V3aXNlLgoJKG1ha2Vfc2luZ2xlX3N1Y2NfZWRnZSk6IExpa2V3aXNlLgoJKHJlbW92ZV9lZGdlKTogTGlrZXdpc2UuCgkocmVkaXJlY3RfZWRnZV9zdWNjX25vZHVwKTogTGlrZXdpc2UuCgkoY2hlY2tfYmJfcHJvZmlsZSk6IExpa2V3aXNlLgoJKGR1bXBfZmxvd19pbmZvKTogTGlrZXdpc2UuCgkoYWxsb2NfYXV4X2Zvcl9lZGdlcyk6IExpa2V3aXNlLgoJKGNsZWFyX2F1eF9mb3JfZWRnZXMpOiBMaWtld2lzZS4KCShkdW1wX2NmZ19iYl9pbmZvKTogTGlrZXdpc2UuCgkqIGNmZ2FuYWwuYyAoZm9yd2FyZGVyX2Jsb2NrX3ApOiBMaWtld2lzZS4KCShjYW5fZmFsbHRocnUpOiBMaWtld2lzZS4KCShjb3VsZF9mYWxsX3Rocm91Z2gpOiBMaWtld2lzZS4KCShtYXJrX2Rmc19iYWNrX2VkZ2VzKTogTGlrZXdpc2UuCgkoc2V0X2VkZ2VfY2FuX2ZhbGx0aHJ1X2ZsYWcpOiBMaWtld2lzZS4KCShmaW5kX3VucmVhY2hhYmxlX2Jsb2Nrcyk6IExpa2V3aXNlLgoJKGNyZWF0ZV9lZGdlX2xpc3QpOiBMaWtld2lzZS4KCSh2ZXJpZnlfZWRnZV9saXN0KTogTGlrZXdpc2UuCgkoYWRkX25vcmV0dXJuX2Zha2VfZXhpdF9lZGdlcyk6IExpa2V3aXNlLgoJKGNvbm5lY3RfaW5maW5pdGVfbG9vcHNfdG9fZXhpdCk6IExpa2V3aXNlLgoJKGZsb3dfcmV2ZXJzZV90b3Bfc29ydF9vcmRlcl9jb21wdXRlKTogTGlrZXdpc2UuCgkoZmxvd19kZXB0aF9maXJzdF9vcmRlcl9jb21wdXRlKTogTGlrZXdpc2UuCgkoZmxvd19wcmVvcmRlcl90cmFuc3ZlcnNhbF9jb21wdXRlKTogTGlrZXdpc2UuCgkoZmxvd19kZnNfY29tcHV0ZV9yZXZlcnNlX2V4ZWN1dGUpOiBMaWtld2lzZS4KCShkZnNfZW51bWVyYXRlX2Zyb20pOiBMaWtld2lzZS4KCShjb21wdXRlX2RvbWluYW5jZV9mcm9udGllcnNfMSk6IExpa2V3aXNlLgoJKiBjZmdidWlsZC5jIChtYWtlX2VkZ2VzKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9vdXRnb2luZ19mcmVxdWVuY2llcyk6IExpa2V3aXNlLgoJKGZpbmRfbWFueV9zdWJfYmFzaWNfYmxvY2tzKTogTGlrZXdpc2UuCgkoZmluZF9zdWJfYmFzaWNfYmxvY2tzKTogTGlrZXdpc2UuCgkqIGNmZ2NsZWFudXAuYyAodHJ5X3NpbXBsaWZ5X2NvbmRqdW1wKTogTGlrZXdpc2UuCgkodGhyZWFkX2p1bXApOiBMaWtld2lzZS4KCSh0cnlfZm9yd2FyZF9lZGdlcyk6IExpa2V3aXNlLgoJKG1lcmdlX2Jsb2Nrc19tb3ZlKTogTGlrZXdpc2UuCgkob3V0Z29pbmdfZWRnZXNfbWF0Y2gpOiBMaWtld2lzZS4KCSh0cnlfY3Jvc3NqdW1wX3RvX2VkZ2UpOiBMaWtld2lzZS4KCSh0cnlfY3Jvc3NqdW1wX2JiKTogTGlrZXdpc2UuCgkodHJ5X29wdGltaXplX2NmZyk6IExpa2V3aXNlLgoJKG1lcmdlX3NlcV9ibG9ja3MpOiBMaWtld2lzZS4KCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfdGFpbGNhbGwpOiBMaWtld2lzZS4KCShleHBhbmRfZ2ltcGxlX2Jhc2ljX2Jsb2NrKTogTGlrZXdpc2UuCgkoY29uc3RydWN0X2luaXRfYmxvY2spOiBMaWtld2lzZS4KCShjb25zdHJ1Y3RfZXhpdF9ibG9jayk6IExpa2V3aXNlLgoJKiBjZmdob29rcy5jICh2ZXJpZnlfZmxvd19pbmZvKTogTGlrZXdpc2UuCgkoZHVtcF9iYik6IExpa2V3aXNlLgoJKGRlbGV0ZV9iYXNpY19ibG9jayk6IExpa2V3aXNlLgoJKHNwbGl0X2VkZ2UpOiBMaWtld2lzZS4KCShtZXJnZV9ibG9ja3MpOiBMaWtld2lzZS4KCShtYWtlX2ZvcndhcmRlcl9ibG9jayk6IExpa2V3aXNlLgoJKHRpZHlfZmFsbHRocnVfZWRnZXMpOiBMaWtld2lzZS4KCShjYW5fZHVwbGljYXRlX2Jsb2NrX3ApOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfYmxvY2spOiBMaWtld2lzZS4KCSogY2ZnbGF5b3V0LmMgKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBMaWtld2lzZS4KCShmaXh1cF9mYWxsdGhydV9leGl0X3ByZWRlY2Vzc29yKTogTGlrZXdpc2UuCgkoY2FuX2NvcHlfYmJzX3ApOiBMaWtld2lzZS4KCShjb3B5X2Jicyk6IExpa2V3aXNlLgoJKiBjZmdsb29wLmMgKGZsb3dfbG9vcHNfY2ZnX2R1bXApOiBMaWtld2lzZS4KCShmbG93X2xvb3BfZW50cnlfZWRnZXNfZmluZCk6IExpa2V3aXNlLgoJKGZsb3dfbG9vcF9leGl0X2VkZ2VzX2ZpbmQpOiBMaWtld2lzZS4KCShmbG93X2xvb3Bfbm9kZXNfZmluZCk6IExpa2V3aXNlLgoJKG1hcmtfc2luZ2xlX2V4aXRfbG9vcHMpOiBMaWtld2lzZS4KCShmbG93X2xvb3BfcHJlX2hlYWRlcl9zY2FuKTogTGlrZXdpc2UuCgkoZmxvd19sb29wX3ByZV9oZWFkZXJfZmluZCk6IExpa2V3aXNlLgoJKHVwZGF0ZV9sYXRjaF9pbmZvKTogTGlrZXdpc2UuCgkoY2Fub25pY2FsaXplX2xvb3BfaGVhZGVycyk6IExpa2V3aXNlLgoJKGZsb3dfbG9vcHNfZmluZCk6IExpa2V3aXNlLgoJKGdldF9sb29wX2JvZHlfaW5fYmZzX29yZGVyKTogTGlrZXdpc2UuCgkoZ2V0X2xvb3BfZXhpdF9lZGdlcyk6IExpa2V3aXNlLgoJKG51bV9sb29wX2JyYW5jaGVzKTogTGlrZXdpc2UuCgkodmVyaWZ5X2xvb3Bfc3RydWN0dXJlKTogTGlrZXdpc2UuCgkobG9vcF9sYXRjaF9lZGdlKTogTGlrZXdpc2UuCgkobG9vcF9wcmVoZWFkZXJfZWRnZSk6IExpa2V3aXNlLgoJKiBjZmdsb29wYW5hbC5jIChtYXJrX2lycmVkdWNpYmxlX2xvb3BzKTogTGlrZXdpc2UuCgkoZXhwZWN0ZWRfbG9vcF9pdGVyYXRpb25zKTogTGlrZXdpc2UuCgkqIGNmZ2xvb3BtYW5pcC5jIChyZW1vdmVfYmJzKTogTGlrZXdpc2UuCgkoZml4X2JiX3BsYWNlbWVudCk6IExpa2V3aXNlLgoJKGZpeF9pcnJlZHVjaWJsZV9sb29wcyk6IExpa2V3aXNlLgoJKHJlbW92ZV9wYXRoKTogTGlrZXdpc2UuCgkoc2NhbGVfYmJzX2ZyZXF1ZW5jaWVzKTogTGlrZXdpc2UuCgkobG9vcGlmeSk6IExpa2V3aXNlLgoJKHVubG9vcCk6IExpa2V3aXNlLgoJKGZpeF9sb29wX3BsYWNlbWVudCk6IExpa2V3aXNlLgoJKGxvb3BfZGVsZXRlX2JyYW5jaF9lZGdlKTogTGlrZXdpc2UuCgkoZHVwbGljYXRlX2xvb3BfdG9faGVhZGVyX2VkZ2UpOiBMaWtld2lzZS4KCShtZmJfa2VlcF9qdXN0KTogTGlrZXdpc2UuCgkoY3JlYXRlX3ByZWhlYWRlcik6IExpa2V3aXNlLgoJKGZvcmNlX3NpbmdsZV9zdWNjX2xhdGNoZXMpOiBMaWtld2lzZS4KCShsb29wX3NwbGl0X2VkZ2Vfd2l0aCk6IExpa2V3aXNlLgoJKGNyZWF0ZV9sb29wX25vdGVzKTogTGlrZXdpc2UuCgkqIGNmZ3J0bC5jIChydGxfc3BsaXRfYmxvY2spOiBMaWtld2lzZS4KCShydGxfbWVyZ2VfYmxvY2tzKTogTGlrZXdpc2UuCgkocnRsX2Nhbl9tZXJnZV9ibG9ja3MpOiBMaWtld2lzZS4KCSh0cnlfcmVkaXJlY3RfYnlfcmVwbGFjaW5nX2p1bXApOiBMaWtld2lzZS4KCShmb3JjZV9ub25mYWxsdGhydV9hbmRfcmVkaXJlY3QpOiBMaWtld2lzZS4KCShydGxfdGlkeV9mYWxsdGhydV9lZGdlKTogTGlrZXdpc2UuCgkoY29tbWl0X29uZV9lZGdlX2luc2VydGlvbik6IExpa2V3aXNlLgoJKGNvbW1pdF9lZGdlX2luc2VydGlvbnMpOiBMaWtld2lzZS4KCShjb21taXRfZWRnZV9pbnNlcnRpb25zX3dhdGNoX2NhbGxzKTogTGlrZXdpc2UuCgkocnRsX3ZlcmlmeV9mbG93X2luZm9fMSk6IExpa2V3aXNlLgoJKHJ0bF92ZXJpZnlfZmxvd19pbmZvKTogTGlrZXdpc2UuCgkocHVyZ2VfZGVhZF9lZGdlcyk6IExpa2V3aXNlLgoJKGNmZ19sYXlvdXRfcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoKTogTGlrZXdpc2UuCgkoY2ZnX2xheW91dF9jYW5fbWVyZ2VfYmxvY2tzX3ApOiBMaWtld2lzZS4KCShydGxfZmxvd19jYWxsX2VkZ2VzX2FkZCk6IExpa2V3aXNlLgoJKiBjc2UuYyAoY3NlX2NjX3N1Y2NzKTogTGlrZXdpc2UuCgkqIGRmLmMgKGh5YnJpZF9zZWFyY2gpOiBMaWtld2lzZS4KCSogZG9taW5hbmNlLmMgKGNhbGNfZGZzX3RyZWVfbm9ucmVjKTogTGlrZXdpc2UuCgkoY2FsY19kZnNfdHJlZSk6IExpa2V3aXNlLgoJKGNhbGNfaWRvbXMpOiBMaWtld2lzZS4KCShyZWNvdW50X2RvbWluYXRvcik6IExpa2V3aXNlLgoJKiBkb213YWxrLmMgKHdhbGtfZG9taW5hdG9yX3RyZWUpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKGVtaXRfdG9fbmV3X2JiX2JlZm9yZSk6IExpa2V3aXNlLgoJKGNvbm5lY3RfcG9zdF9sYW5kaW5nX3BhZHMpOiBMaWtld2lzZS4KCShzamxqX2VtaXRfZnVuY3Rpb25fZW50ZXIpOiBMaWtld2lzZS4KCShzamxqX2VtaXRfZnVuY3Rpb25fZXhpdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9laF9nZW5lcmF0aW9uKTogTGlrZXdpc2UuCgkqIGZpbmFsLmMgKGNvbXB1dGVfYWxpZ25tZW50cyk6IExpa2V3aXNlLgoJKiBmbG93LmMgKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogTGlrZXdpc2UuCgkoaW5pdGlhbGl6ZV91bmluaXRpYWxpemVkX3N1YnJlZ3MpOiBMaWtld2lzZS4KCShpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBMaWtld2lzZS4KCSogZ2NzZS5jIChmaW5kX2ltcGxpY2l0X3NldHMpOiBMaWtld2lzZS4KCShieXBhc3NfYmxvY2spOiBMaWtld2lzZS4KCShieXBhc3NfY29uZGl0aW9uYWxfanVtcHMpOiBMaWtld2lzZS4KCShjb21wdXRlX3ByZV9kYXRhKTogTGlrZXdpc2UuCgkoaW5zZXJ0X2luc25fZW5kX2JiKTogTGlrZXdpc2UuCgkoaW5zZXJ0X3N0b3JlKTogTGlrZXdpc2UuCgkocmVtb3ZlX3JlYWNoYWJsZV9lcXVpdl9ub3Rlcyk6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2NvbmZsaWN0cyk6IExpa2V3aXNlLgoJKGNhbGN1bGF0ZV9yZWdfcGF2KTogTGlrZXdpc2UuCgkqIGdyYXBoLmMgKHByaW50X3J0bF9ncmFwaF93aXRoX2JiKTogTGlrZXdpc2UuCgkqIGlmY3Z0LmMgKG1hcmtfbG9vcF9leGl0X2VkZ2VzKTogTGlrZXdpc2UuCgkobWVyZ2VfaWZfYmxvY2spOiBMaWtld2lzZS4KCShmaW5kX2lmX2hlYWRlcik6IExpa2V3aXNlLgoJKGJsb2NrX2p1bXBzX2FuZF9mYWxsdGhydV9wKTogTGlrZXdpc2UuCgkoZmluZF9pZl9ibG9jayk6IExpa2V3aXNlLgoJKGZpbmRfY29uZF90cmFwKTogTGlrZXdpc2UuCgkoYmxvY2tfaGFzX29ubHlfdHJhcCk6IExpa2V3aXNlLgoJKGZpbmRfaWZfY2FzZTEpOiBMaWtld2lzZS4KCShmaW5kX2lmX2Nhc2VfMik6IExpa2V3aXNlLgoJKiBsYW1iZGEtY29kZS5jIChsYW1iZGFfbG9vcG5lc3RfdG9fZ2NjX2xvb3BuZXN0KTogTGlrZXdpc2UuCgkocGVyZmVjdF9uZXN0aWZ5KTogTGlrZXdpc2UuCgkqIGxjbS5jIChjb21wdXRlX2FudGlub3V0X2VkZ2UpOiBMaWtld2lzZS4KCShjb21wdXRlX2xhdGVyaW4pOiBMaWtld2lzZS4KCShjb21wdXRlX2F2YWlsYWJsZSk6IExpa2V3aXNlLgoJKGNvbXB1dGVfbmVhcmVyb3V0KTogTGlrZXdpc2UuCgkqIGxvb3AtZG9sb29wLmMgKGRvbG9vcF9tb2RpZnkpOiBMaWtld2lzZS4KCSogbG9vcC1pbml0LmMgKGxvb3Bfb3B0aW1pemVyX2luaXQpOiBMaWtld2lzZS4KCSogbG9vcC1pbnZhcmlhbnQuYyAoZmluZF9leGl0cyk6IExpa2V3aXNlLgoJKiBsb29wLWl2LmMgKHNpbXBsaWZ5X3VzaW5nX2luaXRpYWxfdmFsdWVzKTogTGlrZXdpc2UuCgkoY2hlY2tfc2ltcGxlX2V4aXQpOiBMaWtld2lzZS4KCShmaW5kX3NpbXBsZV9leGl0KTogTGlrZXdpc2UuCgkqIGxvb3AtdW5yb2xsLmMgKHBlZWxfbG9vcF9jb21wbGV0ZWx5KTogTGlrZXdpc2UuCgkodW5yb2xsX2xvb3BfY29uc3RhbnRfaXRlcmF0aW9ucyk6IExpa2V3aXNlLgoJKHVucm9sbF9sb29wX3J1bnRpbWVfaXRlcmF0aW9ucyk6IExpa2V3aXNlLgoJKiBsb29wLXVuc3dpdGNoLmMgKG1heV91bnN3aXRjaF9vbik6IExpa2V3aXNlLgoJKHVuc3dpdGNoX2xvb3ApOiBMaWtld2lzZS4KCSogbW9kdWxvLXNjaGVkLmMgKGdlbmVyYXRlX3Byb2xvZ19lcGlsb2cpOiBMaWtld2lzZS4KCShzbXNfc2NoZWR1bGUpOiBMaWtld2lzZS4KCSogcG9zdHJlbG9hZC1nY3NlLmMgKGVsaW1pbmF0ZV9wYXJ0aWFsbHlfcmVkdW5kYW50X2xvYWQpOgoJTGlrZXdpc2UuCgkqIHByZWRpY3QuYyAoY2FuX3ByZWRpY3RfaW5zbl9wKTogTGlrZXdpc2UuCgkoc2V0X2V2ZW5fcHJvYmFiaWxpdGllcyk6IExpa2V3aXNlLgoJKGNvbWJpbmVfcHJlZGljdGlvbnNfZm9yX2JiKTogTGlrZXdpc2UuCgkocHJlZGljdF9sb29wcyk6IExpa2V3aXNlLgoJKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogTGlrZXdpc2UuCgkodHJlZV9wcmVkaWN0X2J5X29wY29kZSk6IExpa2V3aXNlLgoJKHRyZWVfZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBMaWtld2lzZS4KCShsYXN0X2Jhc2ljX2Jsb2NrX3ApOiBMaWtld2lzZS4KCShwcm9wYWdhdGVfZnJlcSk6IExpa2V3aXNlLgoJKGVzdGltYXRlX2xvb3BzX2F0X2xldmVsKTogTGlrZXdpc2UuCgkoZXN0aW1hdGVfYmJfZnJlcXVlbmNpZXMpOiBMaWtld2lzZS4KCSogcHJvZmlsZS5jIChpbnN0cnVtZW50X2VkZ2VzKTogTGlrZXdpc2UuCgkoZ2V0X2V4ZWNfY291bnRzKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9icmFuY2hfcHJvYmFiaWxpdGllcyk6IExpa2V3aXNlLgoJKGJyYW5jaF9wcm9iKTogTGlrZXdpc2UuCgkqIHJhLWJ1aWxkLmMgKGxpdmVfaW4pOiBMaWtld2lzZS4KCSogcmEtcmV3cml0ZS5jIChyZXdyaXRlX3Byb2dyYW0yKTogTGlrZXdpc2UuCgkqIHJhLmMgKHJlZ19hbGxvYyk6IExpa2V3aXNlLgoJKiByZWctc3RhY2suYyAocmVnX3RvX3N0YWNrKTogTGlrZXdpc2UuCgkoY29udmVydF9yZWdzX2VudHJ5KTogTGlrZXdpc2UuCgkoY29tcGVuc2F0ZV9lZGdlKTogTGlrZXdpc2UuCgkoY29udmVydF9yZWdzXzEpOiBMaWtld2lzZSwKCShjb252ZXJ0X3JlZ3NfMik6IExpa2V3aXNlLgoJKGNvbnZlcnRfcmVncyk6IExpa2V3aXNlLgoJKiByZWdyZW5hbWUuYyAoY29weXByb3BfaGFyZHJlZ19mb3J3YXJkKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoZml4dXBfYWJub3JtYWxfZWRnZXMpOiBMaWtld2lzZS4KCSogc2JpdG1hcC5jIChzYml0bWFwX2ludGVyc2VjdGlvbl9vZl9zdWNjcyk6IExpa2V3aXNlLgoJKHNiaXRtYXBfaW5zZXJzZWN0aW9uX29mX3ByZWRzKTogTGlrZXdpc2UuCgkoc2JpdG1hcF91bmlvbl9vZl9zdWNjcyk6IExpa2V3aXNlLgoJKHNiaXRtYXBfdW5pb25fb2ZfcHJlZHMpOiBMaWtld2lzZS4KCSogc2NoZWQtZWJiLmMgKGNvbXB1dGVfanVtcF9yZWdfZGVwZW5kZW5jaWVzKTogTGlrZXdpc2UuCgkoZml4X2Jhc2ljX2Jsb2NrX2JvdW5kYXJpZXMpOiBMaWtld2lzZS4KCShzY2hlZF9lYmJzKTogTGlrZXdpc2UuCgkqIHNjaGVkLXJnbi5jIChidWlsZF9jb250cm9sX2Zsb3cpOiBMaWtld2lzZS4KCShmaW5kX3JnbnMpOiBMaWtld2lzZS4KCSogdHJhY2VyLmMgKGZpbmRfYmVzdF9zdWNjZXNzb3IpOiBMaWtld2lzZS4KCShmaW5kX2Jlc3RfcHJlZGVjZXNzb3IpOiBMaWtld2lzZS4KCSh0YWlsX2R1cGxpY2F0ZSk6IExpa2V3aXNlLgoJKiB0cmVlLWNmZy5jIChtYWtlX2VkZ2VzKTogTGlrZXdpc2UuCgkobWFrZV9jdHJsX3N0bXRfZWRnZXMpOiBMaWtld2lzZS4KCShtYWtlX2dvdG9fZXhwcl9lZGdlcyk6IExpa2V3aXNlLgoJKHRyZWVfY2FuX21lcmdlX2Jsb2Nrc19wKTogTGlrZXdpc2UuCgkodHJlZV9tZXJnZV9ibG9ja3MpOiBMaWtld2lzZS4KCShjZmdfcmVtb3ZlX3VzZWxlc3Nfc3RtdHNfYmIpOiBMaWtld2lzZS4KCShyZW1vdmVfcGhpX25vZGVzX2FuZF9lZGdlc19mb3JfdW5yZWFjaGFibGVfYmxvY2spOiBMaWtld2lzZS4KCSh0cmVlX2Jsb2NrX2ZvcndhcmRzX3RvKTogTGlrZXdpc2UuCgkoY2xlYW51cF9jb250cm9sX2V4cHJfZ3JhcGgpOiBMaWtld2lzZS4KCShmaW5kX3Rha2VuX2VkZ2UpOiBMaWtld2lzZS4KCShkdW1wX2NmZ19zdGF0cyk6IExpa2V3aXNlLgoJKHRyZWVfY2ZnMnZjZyk6IExpa2V3aXNlLgoJKGRpc2JhbmRfaW1wbGljaXRfZWRnZXMpOiBMaWtld2lzZS4KCSh0cmVlX2ZpbmRfZWRnZV9pbnNlcnRfbG9jKTogTGlrZXdpc2UuCgkoYnNpX2NvbW1pdF9lZGdlX2luc2VydHMpOiBMaWtld2lzZS4KCSh0cmVlX3NwbGl0X2VkZ2UpOiBMaWtld2lzZS4KCSh0cmVlX3ZlcmlmeV9mbG93X2luZm8pOiBMaWtld2lzZS4KCSh0cmVlX21ha2VfZm9yd2FyZGVyX2Jsb2NrKTogTGlrZXdpc2UuCgkodHJlZV9mb3J3YXJkZXJfYmxvY2tfcCk6IExpa2V3aXNlLgoJKHRocmVhZF9qdW1wcyk6IExpa2V3aXNlLgoJKHRyZWVfdHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogTGlrZXdpc2UuCgkodHJlZV9zcGxpdF9ibG9jayk6IExpa2V3aXNlLgoJKGFkZF9waGlfYXJnc19hZnRlcl9jb3B5X2JiKTogTGlrZXdpc2UuCgkocmV3cml0ZV90b19uZXdfc3NhX25hbWVzX2JiKTogTGlrZXdpc2UuCgkoZHVtcF9mdW5jdGlvbl90b19maWxlKTogTGlrZXdpc2UuCgkocHJpbnRfcHJlZF9iYnMpOiBMaWtld2lzZS4KCShwcmludF9sb29wKTogTGlrZXdpc2UuCgkodHJlZV9mbG93X2NhbGxfZWRnZXNfYWRkKTogTGlrZXdpc2UuCgkoc3BsaXRfY3JpdGljYWxfZWRnZXMpOiBMaWtld2lzZS4KCShleGVjdXRlX3dhcm5fZnVuY3Rpb25fcmV0dXJuKTogTGlrZXdpc2UuCgkoZXh0cmFjdF90cnVlX2ZhbHNlX2VkZ2VzX2Zyb21fYmxvY2spOiBMaWtld2lzZS4KCSogdHJlZS1pZi1jb252LmMgKHRyZWVfaWZfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGlmX2NvbnZlcnRhYmxlX2JiX3ApOiBMaWtld2lzZS4KCShmaW5kX3BoaV9yZXBsYWNlbWVudF9jb25kaXRpb24pOiBMaWtld2lzZS4KCShjb21iaW5lX2Jsb2Nrcyk6IExpa2V3aXNlLgoJKiB0cmVlLWludG8tc3NhLmMgKGNvbXB1dGVfZ2xvYmFsX2xpdmVpbik6IExpa2V3aXNlLgoJKHNzYV9tYXJrX3BoaV91c2VzKTogTGlrZXdpc2UuCgkoc3NhX3Jld3JpdGVfaW5pdGlhbGl6ZV9ibG9jayk6IExpa2V3aXNlLgoJKHJld3JpdGVfYWRkX3BoaV9hcmd1bWVudHMpOiBMaWtld2lzZS4KCShzc2FfcmV3cml0ZV9waGlfYXJndW1lbnRzKTogTGlrZXdpc2UuCgkoaW5zZXJ0X3BoaV9ub2Rlc19mb3IpOiBMaWtld2lzZS4KCShyZXdyaXRlX2ludG9fc3NhKTogTGlrZXdpc2UuCgkocmV3cml0ZV9zc2FfaW50b19zc2EpOiBMaWtld2lzZS4KCSogdHJlZS1tdWRmbGFwLmMgKG1mX2J1aWxkX2NoZWNrX3N0YXRlbWVudF9mb3IpOiBMaWtld2lzZS4KCSogdHJlZS1vdXRvZi1zc2EuYyAoY29hbGVzY2VfYWJub3JtYWxfZWRnZXMpOiBMaWtld2lzZS4KCShyZXdyaXRlX3RyZWVzKTogTGlrZXdpc2UuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfYmJfaGVhZGVyKTogTGlrZXdpc2UuCgkoZHVtcF9pbXBsaWNpdF9lZGdlcyk6IExpa2V3aXNlLgoJKiB0cmVlLXNyYS5jIChpbnNlcnRfZWRnZV9jb3BpZXMpOiBMaWtld2lzZS4KCShmaW5kX29idmlvdXNseV9uZWNlc3Nhcnlfc3RtdHMpOiBMaWtld2lzZS4KCShyZW1vdmVfZGF0YV9zdG10KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRvbS5jICh0aHJlYWRfYWNyb3NzX2VkZ2UpOiBMaWtld2lzZS4KCShkb21fb3B0X2ZpbmFsaXplX2Jsb2NrKTogTGlrZXdpc2UuCgkoc2luZ2xlX2luY29taW5nX2VkZ2VfaWdub3JpbmdfbG9vcF9lZGdlcyk6IExpa2V3aXNlLgoJKHJlY29yZF9lcXVpdmFsZW5jZXNfZnJvbV9pbmNvbWluZ19lZGdlcyk6IExpa2V3aXNlLgoJKGNwcm9wX2ludG9fc3VjY2Vzc29yX3BoaXMpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbGl2ZS5jIChsaXZlX3dvcmtsaXN0KTogTGlrZXdpc2UuCgkoY2FsY3VsYXRlX2xpdmVfb25fZW50cnkpOiBMaWtld2lzZS4KCShjYWxjdWxhdGVfbGl2ZV9vbl9leGl0KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtY2guYyAoc2hvdWxkX2R1cGxpY2F0ZV9sb29wX2hlYWRlcl9wKTogTGlrZXdpc2UuCgkoY29weV9sb29wX2hlYWRlcnMpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChsb29wX2NvbW1pdF9pbnNlcnRzKTogTGlrZXdpc2UuCgkoZmlsbF9hbHdheXNfZXhlY3V0ZWRfaW4pOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1pdmNhbm9uLmMgKGNyZWF0ZV9jYW5vbmljYWxfaXYpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoZmluZF9pbnRlcmVzdGluZ191c2VzKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9waGlfYXJnX29uX2V4aXQpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jIChhZGRfZXhpdF9waGlzX2VkZ2UpOiBMaWtld2lzZS4KCShnZXRfbG9vcHNfZXhpdCk6IExpa2V3aXNlLgoJKHNwbGl0X2xvb3BfZXhpdF9lZGdlKTogTGlrZXdpc2UuCgkoaXBfbm9ybWFsX3Bvcyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKHNpbXBsaWZ5X3VzaW5nX2luaXRpYWxfY29uZGl0aW9ucyk6CglMaWtld2lzZS4KCSogdHJlZS1zc2EtcGhpb3B0LmMgKGNhbmRpZGF0ZV9iYl9mb3JfcGhpX29wdGltaXphdGlvbik6IExpa2V3aXNlLgoJKHJlcGxhY2VfcGhpX3dpdGhfc3RtdCk6IExpa2V3aXNlLgoJKHZhbHVlX3JlcGxhY2VtZW50KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXByZS5jIChjb21wdXRlX2FudGljX2F1eCk6IExpa2V3aXNlLgoJKGluc2VydF9hdXgpOiBMaWtld2lzZS4KCShpbml0X3ByZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1wcm9wYWdhdGUuYyAoc2ltdWxhdGVfc3RtdCk6IExpa2V3aXNlLgoJKHNpbXVsYXRlX2Jsb2NrKTogTGlrZXdpc2UuCgkoc3NhX3Byb3BfaW5pdCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAodGhyZWFkX2Jsb2NrKTogTGlrZXdpc2UuCgkoY3JlYXRlX2Jsb2NrX2Zvcl90aHJlYWRpbmcpOiBMaWtld2lzZS4KCShyZW1vdmVfbGFzdF9zdG10X2FuZF91c2VsZXNzX2VkZ2VzKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLmMgKHZlcmlmeV9waGlfYXJncyk6IExpa2V3aXNlLgoJKHZlcmlmeV9zc2EpOiBMaWtld2lzZS4KCSogdHJlZV90YWlsY2FsbC5jIChpbmRlcGVuZGVudF9vZl9zdG10X3ApOiBMaWtld2lzZS4KCShmaW5kX3RhaWxfY2FsbHMpOiBMaWtld2lzZS4KCShlbGltaW5hdGVfdGFpbF9jYWxsKTogTGlrZXdpc2UuCgkodHJlZV9vcHRpbWl6ZV90YWlsX2NhbGxzXzEpOiBMaWtld2lzZS4KCSogdHJlZS12ZWN0b3JpemVyLmMgKHZlY3RfdHJhbnNmb3JtX2xvb3ApOiBMaWtld2lzZS4KCSogdmFyLXRyYWNraW5nLmMgKHByb2xvZ3VlX3N0YWNrX2FkanVzdCk6IExpa2V3aXNlLgoJKHZ0X3N0YWNrX2FkanVzdG1lbnRzKTogTGlrZXdpc2UuCgkodnRfZmluZF9sb2NhdGlvbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2lmY3Z0X21vZGlmeV90ZXN0cyk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfcGFkX3JldHVybnMpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IExpa2V3aXNlLgoKMjAwNC0wOS0yOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTY1MzIKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogTmV3IGZpZWxkCgknbGVhZl9mdW5jdGlvbl9wJyBhbmQgJ3Byb2xvZ3VlX2RhdGFfdmFsaWRfcCcuCgkoc3BhcmNfbGVhZl9mdW5jdGlvbl9wLCBzcGFyY19wcm9sb2d1ZV9kYXRhX3ZhbGlkX3ApOiBOZXcgbWFjcm8KCXRvIGNvbnZlbmllbnRseSBhY2Nlc3MgdGhlIGFib3ZlIGZpZWxkcy4KCShUQVJHRVRfTEFURV9SVExfUFJPTE9HVUVfRVBJTE9HVUUpOiBEZWxldGUuCgkoZWxpZ2libGVfZm9yX3JldHVybl9kZWxheSk6IFVzZSAnc3BhcmNfbGVhZl9mdW5jdGlvbl9wJyBpbnN0ZWFkCglvZiB0aGUgZ2VuZXJpYyBmbGF2b3IgJ2N1cnJlbnRfZnVuY3Rpb25fdXNlc19vbmx5X2xlYWZfcmVncycuCgkoZWxpZ2libGVfZm9yX3NpYmNhbGxfZGVsYXkpOiBMaWtld2lzZS4KCShzcGFyY19leHBhbmRfcHJvbG9ndWUpOiBDb21wdXRlICdzcGFyY19sZWFmX2Z1bmN0aW9uX3AnIGFuZCBzZXQKCSdzcGFyY19wcm9sb2d1ZV9kYXRhX3ZhbGlkX3AnLiAgVXNlICdzcGFyY19sZWFmX2Z1bmN0aW9uX3AnLgoJKHNwYXJjX2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSk6IEFkZCBzYW5pdHkgY2hlY2sgZm9yIHRoZSBhc3N1bXB0aW9uCgltYWRlIGluICdzcGFyY19leHBhbmRfcHJvbG9ndWUnLiAgVXNlICdzcGFyY19sZWFmX2Z1bmN0aW9uX3AnLgoJKHNwYXJjX2Nhbl91c2VfcmV0dXJuX2luc25fcCk6IE5ldyBmdW5jdGlvbi4KCShzcGFyY19leHBhbmRfZXBpbG9ndWUpOiBVc2UgJ3NwYXJjX2xlYWZfZnVuY3Rpb25fcCcuCgkob3V0cHV0X3Jlc3RvcmUpOiBMaWtld2lzZS4KCShvdXRwdXRfc2liY2FsbCk6IExpa2V3aXNlLgoJKHNwYXJjX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMtcHJvdG9zLmggKHNwYXJjX2Nhbl91c2VfcmV0dXJuX2luc25fcCk6IERlY2xhcmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAocmV0dXJuKTogTmV3IGV4cGFuZGVyLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKElOSVRJQUxfRUxJTUlOQVRJT05fT0ZGU0VUKTogTWlub3IgdHdlYWsuCgoyMDA0LTA5LTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xNzY0MgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IFVzZSBmb2xkX2NvbnZlcnQsIG5vdCBjb252ZXJ0LgoJKGJpdF9mcm9tX3Bvcyk6IExpa2V3aXNlLgoJKGJ5dGVfZnJvbV9wb3MpOiBMaWtld2lzZS4KCShwb3NfZnJvbV9iaXQpOiBMaWtld2lzZS4KCShub3JtYWxpemVfb2Zmc2V0KTogTGlrZXdpc2UuCgkocGxhY2VfZmllbGQpOiBMaWtld2lzZS4KCShmaW5hbGl6ZV90eXBlX3NpemUpOiBMaWtld2lzZS4KCShsYXlvdXRfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2luZGV4X3R5cGUpOiBMaWtld2lzZS4KCjIwMDQtMDktMjcgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSk6IEhhbmRsZSBWRUNfQ09ORF9FWFBSLgoJKiBnZW5vcGluaXQuYyAob3B0YWJzKTogTmV3IGVudHJ5IGZvciB2Y29uZF9nZW5fY29kZSBhbmQKCXZjb25kdV9nZW5fY29kZS4KCSogb3B0YWJzLmMgKHZjb25kX2dlbl9jb2RlLCB2Y29uZHVfZ2VuX2NvZGUpOiBOZXcgb3B0YWJzLgoJKGdldF9ydHhfY29kZSk6IE5ldyBmdW5jdGlvbi4KCSh2ZWN0b3JfY29tcGFyZV9ydHgpOiBOZXcgZnVuY3Rpb24uCgkoaW5pdF9vcHRhYnMpOiBJbml0aWFsaXplIHZjb25kX2dlbl9jb2RlIGFuZCB2Y29uZHVfZ2VuX2NvZGUuCgkoZXhwYW5kX3ZlY19jb25kX2V4cHJfcCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfdmVjX2NvbmRfZXhwcik6IE5ldyBmdW5jdGlvbi4KCShnZXRfdmNvbmRfaWNvZGUpOiBOZXcgZnVuY3Rpb24uCgkqIG9wdGFicy5oIChleHBhbmRfdmVjX2NvbmRfZXhwciwgZXhwYW5kX3ZlY19jb25kX2V4cHJfcCk6IE5ldyBleHRlcm5zLgoJKHZjb25kX2dlbl9jb2RlLCB2Y29uZHVfZ2VuX2NvZGUpOiBTYW1lLgoKMjAwNC0wOS0yNyAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChTVEFHRVNUVUZGKTogU3BsaXQgaW50byAuLi4KCShTVEFHRUNPUFlTVFVGRiwgU1RBR0VNT1ZFU1RVRkYpOiAuLi4gdGhlc2UuCgkobW9zdGx5Y2xlYW4pOiBVcGRhdGUuCgkoc3RhZ2UxLXN0YXJ0LCBzdGFnZTItc3RhcnQsIHN0YWdlMy1zdGFydCwgc3RhZ2U0LXN0YXJ0LAoJc3RhZ2Vwcm9maWxlLXN0YXJ0LCBzdGFnZWZlZWRiYWNrLXN0YXJ0KTogQ29weSB0aGUgU1RBR0VDT1BZU1RVRkYuCglNb3ZlIHRoZSBTVEFHRU1PVkVTVFVGRi4KCjIwMDQtMDktMjcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBzeXN0ZW0uaCAoZ2V0cGFnZXNpemUpOiBSZXR1cm4gJ2ludCcgaW5zdGVhZCBvZiAnbG9uZycuCgoyMDA0LTA5LTI3ICBNaWNoYWVsIE1hdHogPG1hdHpAc3VzZS5kZT4KCglQUiBib290c3RyYXAvMTc2OTgKCVBSIGJvb3RzdHJhcC8xNzcwMgoJKiBiaXRtYXAuaCAoYm1wX2l0ZXJfc2luZ2xlX2luaXQsIGJtcF9pdGVyX2FuZF9ub3RfaW5pdCwKCWJtcF9pdGVyX2FuZF9pbml0KTogU2hpZnQgYnkgYml0X2luX3dvcmQuCgoyMDA0LTA5LTI3ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogYWNsb2NhbC5tNDogUXVvdGUgbTRfaW5jbHVkZXMuIEluY2x1ZGUgLi4vY29uZmlnL2djYy1saWItcGF0aC5tNC4KCSogY29uZmlndXJlLmFjOiBEb24ndCBzaW5jbHVkZSBpdCBoZXJlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTA5LTI3ICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmlibS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbGVnaXRpbWF0ZV9hZGRyZXNzLCBwcmludF9vcGVyYW5kKToKCUhhbmRsZSBBTkQgcGF0dGVybgoKMjAwNC0wOS0yNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xMzgwNAoJKiBjLXR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogTmFtZSB0eXBlIGludm9sdmVkIGluCglkaWFnbm9zdGljIGZvciBzdHJ1Y3R1cmUgb3IgdW5pb24gd2l0aG91dCBhIG1lbWJlciBvZiB0aGUgZ2l2ZW4KCW5hbWUuCgoyMDA0LTA5LTI3ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jICh4c3Rvcm15MTZfYXNtX291dHB1dF9hbGlnbmVkX2NvbW1vbik6CgkuY29tbSBhbGlnbm1lbnQgaXMgYnl0ZXMsIG5vdCBiaXRzLgoKMjAwNC0wOS0yNyAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogUHJpbnQgVkVDX0NPTkRfRVhQUi4KCShwcmludF9jYWxsX25hbWUpOiBEbyBub3QgcHJpbnQgVkVDX0NPTkRfRVhQUi4KCjIwMDQtMDktMjcgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IFByaW50IFZFQ19DT05EX0VYUFIuCgoyMDA0LTA5LTI3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGF0aGxvbl9jb3N0LCBrOF9jb3N0KTogU2V0IEJSQU5DSF9DT1NUIHRvIDUuCgoyMDA0LTA5LTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYml0bWFwLmg6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDQtMDktMjcgIEFhcm9uIFcuIExhRnJhbWJvaXNlIDxhYXJvbnJhb2xldGUzNkBhYXJvbndsLmNvbT4KCgkqIGxpYmdjYzIuYyAoZ2V0cGFnZXNpemUpOiBDaGFuZ2UgdHlwZSBvZiByZXR1cm4gdmFsdWUgdG8gaW50LgoKMjAwNC0wOS0yNiAgTWF0dCBBdXN0ZXJuICA8YXVzdGVybkBhcHBsZS5jb20+CgoJKiBnZ2MtcGFnZS5jIChHR0NfUVVJUkVfU0laRSk6IEJ1bXAgdXAgZnJvbSAxNiB0byAyNTYgaWYgd2UncmUKCXVzaW5nIG1tYXAuCgoyMDA0LTA5LTI2ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBiaXRtYXAuaCAoRVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQLCBFWEVDVVRFX0lGX0FORF9DT01QTF9JTl9CSVRNQVAsCglFWEVDVVRFX0lGX0FORF9JTl9CSVRNQVApOiBDaGFuZ2VkIHRvIGl0ZXJhdG9yIHN0eWxlLgoJKGJpdG1hcF9pdGVyYXRvcik6IE5ldyB0eXBlLgoJKGJtcF9pdGVyX2NvbW1vbl9uZXh0XzEsIGJtcF9pdGVyX3NpbmdsZV9uZXh0XzEsIGJtcF9pdGVyX3NpbmdsZV9pbml0LAoJYm1wX2l0ZXJfZW5kX3AsIGJtcF9pdGVyX3NpbmdsZV9uZXh0LCBibXBfaXRlcl9hbmRfbm90X25leHRfMSwKCWJtcF9pdGVyX2FuZF9ub3RfaW5pdCwgYm1wX2l0ZXJfYW5kX25vdF9uZXh0LCBibXBfaXRlcl9hbmRfbmV4dF8xLAoJYm1wX2l0ZXJfYW5kX2luaXQsIGJtcF9pdGVyX2FuZF9uZXh0KTogTmV3IGZ1bmN0aW9ucy4KCSogYmFzaWMtYmxvY2suaCAoRVhFQ1VURV9JRl9TRVRfSU5fUkVHX1NFVCwKCUVYRUNVVEVfSUZfQU5EX0NPTVBMX0lOX1JFR19TRVQsIEVYRUNVVEVfSUZfQU5EX0lOX1JFR19TRVQpOiBDaGFuZ2VkIHRvCgl1c2UgaXRlcmF0b3Itc3R5bGUgRVhFQ1VURV9JRl9JTl9CSVRNQVAgbWFjcm9zLgoJKiBiaXRtYXAuYyAoYml0bWFwX3ByaW50KTogRGl0dG8uCgkqIGJ0LWxvYWQuYyAoY2xlYXJfYnRyX2Zyb21fbGl2ZV9yYW5nZSwgYWRkX2J0cl90b19saXZlX3JhbmdlLAoJYnRyX2RlZl9saXZlX3JhbmdlKTogRGl0dG8uCgkqIGNmZ2FuYWwuYyAoY29tcHV0ZV9kb21pbmFuY2VfZnJvbnRpZXJzXzEpIERpdHRvLgoJKiBjZ3JhcGh1bml0LmMgKGNvbnZlcnRfVUlEc19pbl9iaXRtYXAsIGNncmFwaF9jaGFyYWN0ZXJpemVfc3RhdGljcyk6CglEaXR0by4KCSogZGRnLmMgKGJ1aWxkX2ludGVyX2xvb3BfZGVwcyk6IERpdHRvLgoJKiBkZi5jIChGT1JfRUFDSF9CQl9JTl9CSVRNQVAsIGRmX2JiX3JlZ19pbmZvX2NvbXB1dGUsIGRmX3JlZnNfdXBkYXRlKToKCURpdHRvLgoJKiBleGNlcHQuYyAocmVtb3ZlX2VoX2hhbmRsZXIpOiBEaXR0by4KCSogZmxvdy5jIChyZWdfc2V0X3RvX2hhcmRfcmVnX3NldCk6IERpdHRvLgoJKiBnY3NlLmMgKGNsZWFyX21vZGlmeV9tZW1fdGFibGVzKTogRGl0dG8uCgkqIGdsb2JhbC5jIChidWlsZF9pbnNuX2NoYWluKTogRGl0dG8uCgkqIGlmY3Z0LmMgKGRlYWRfb3JfcHJlZGljYWJsZSk6IERpdHRvLgoJKiBsb29wLWludmFyaWFudC5jIChnZXRfaW52X2Nvc3QsIHNldF9tb3ZlX21hcmssIG1vdmVfaW52YXJpYW50X3JlZyk6CglEaXR0by4KCSogcmEtYnVpbGQuYyAobGl2ZXRocm91Z2hfY29uZmxpY3RzX2JiLCBjb25mbGljdHNfYmV0d2Vlbl93ZWJzKTogRGl0dG8uCgkqIHJhLXJld3JpdGUuYyAocmVsb2Fkc190b19sb2FkcywgcmV3cml0ZV9wcm9ncmFtMiwKCWRldGVjdF93ZWJfcGFydHNfdG9fcmVidWlsZCwgZGVsZXRlX3VzZWxlc3NfZGVmcywgYWN0dWFsX3NwaWxsKTogRGl0dG8uCgkqIHRyZWUtY2ZnLmMgKGFsbG9jYXRlX3NzYV9uYW1lcywgdHJlZV9kdXBsaWNhdGVfc2VzZV9yZWdpb24sCgl0cmVlX3B1cmdlX2FsbF9kZWFkX2VoX2VkZ2VzKTogRGl0dG8uCgkqIHRyZWUtaW50by1zc2EuYyAoY29tcHV0ZV9nbG9iYWxfbGl2ZWluLCBpbnNlcnRfcGhpX25vZGVzLAoJaW5zZXJ0X3BoaV9ub2Rlc19mb3IsIGRlYnVnX2RlZl9ibG9ja3NfciwgaW52YWxpZGF0ZV9uYW1lX3RhZ3MsCglyZXdyaXRlX3NzYV9pbnRvX3NzYSk6IERpdHRvLgoJKiB0cmVlLW91dG9mLXNzYS5jIChmaW5kX3JlcGxhY2VhYmxlX2V4cHJzKTogRGl0dG8uCgkqIHRyZWUtc3JhLmMgKHNjYW5fZnVuY3Rpb24sIGRlY2lkZV9pbnN0YW50aWF0aW9ucywgc2NhbGFyaXplX3Bhcm1zKToKCURpdHRvLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChpbml0X2FsaWFzX2luZm8sIGNvbXB1dGVfcG9pbnRzX3RvX2FuZF9hZGRyX2VzY2FwZSwKCWNvbXB1dGVfZmxvd19zZW5zaXRpdmVfYWxpYXNpbmcsIG1heWJlX2NyZWF0ZV9nbG9iYWxfdmFyLAoJZHVtcF9wb2ludHNfdG9faW5mb19mb3IpOiBEaXR0by4KCSogdHJlZS1zc2EtZGNlLmMgKEVYRUNVVEVfSUZfQ09OVFJPTF9ERVBFTkRFTlQpOiBEaXR0by4KCSogdHJlZS1zc2EtZHNlLmMgKGRzZV9maW5hbGl6ZV9ibG9jayk6IERpdHRvLgoJKiB0cmVlLXNzYS1saXZlLmMgKGxpdmVfd29ya2xpc3QsIGNhbGN1bGF0ZV9saXZlX29uX2VudHJ5LAoJY2FsY3VsYXRlX2xpdmVfb25fZXhpdCwgYnVpbGRfdHJlZV9jb25mbGljdF9ncmFwaCwgZHVtcF9saXZlX2luZm8pOgoJRGl0dG8uCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGZpbmRfaW5kdWN0aW9uX3ZhcmlhYmxlcywKCWZpbmRfaW50ZXJlc3RpbmdfdXNlcywgYWRkX29sZF9pdnNfY2FuZGlkYXRlcywgYWxsb2NfdXNlX2Nvc3RfbWFwLAoJZGV0ZXJtaW5lX3VzZV9pdl9jb3N0cywgZGV0ZXJtaW5lX3NldF9jb3N0cywgZmluZF9iZXN0X2NhbmRpZGF0ZSwKCXNldF9jb3N0X3VwX3RvLCBjcmVhdGVfbmV3X2l2cywgcmVtb3ZlX3VudXNlZF9pdnMsIGZyZWVfbG9vcF9kYXRhKToKCURpdHRvLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmMgKGFkZF9leGl0X3BoaXNfdmFyLCBhZGRfZXhpdF9waGlzKTogRGl0dG8uCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGdldF9hc21fZXhwcl9vcGVyYW5kcywgYWRkX2NhbGxfY2xvYmJlcl9vcHMsCglhZGRfY2FsbF9yZWFkX29wcyk6IERpdHRvLgoJKiB0cmVlLXNzYS1wcmUuYyAoYml0bWFwX3ByaW50X3ZhbHVlX3NldCwgaW5zZXJ0X2F1eCk6IERpdHRvLgoKMjAwNC0wOS0yNiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmMgKHByaW50X29wZXJhbmQpOiBVc2Ugbm9uLXRyYXBwaW5nIGNvbXBsZXRlcnMgZm9yIFVOTEUsIFVOTFQsCglVTkdFLCBVTkdULCBVTkVRLCBVTk9SREVSRUQgYW5kIE9SREVSRUQgY29tcGFyaXNvbnMuCgoyMDA0LTA5LTI2ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1jbXApOiBBZGp1c3QgTUVNX1NJWkUgdG8KCXJlZmxlY3Qgc2l6ZSBvZiBtZW1vcnkgcmVnaW9ucyBiZWluZyBjb21wYXJlZC4KCjIwMDQtMDktMjYgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGdldF9tZW1vcnlfcnR4KTogU2V0IG1lbSBhdHRyaWJ1dGVzIGZvciBub24tQUREUl9FWFBSCglleHByZXNzaW9ucy4gIEFsd2F5cyBjbGVhciBNRU1fU0laRSBhbmQgYWxpYXMgc2V0LgoKMjAwNC0wOS0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgR2lvdmFubmkgQmFqbyAgPGdpb3Zhbm5pYmFqb0BnY2MuZ251Lm9yZz4KCglQUiBtaWRkbGUtZW5kLzE3MTEyCgkqIHN0b3ItbGF5b3V0LmMgKGNvbXB1dGVfcmVjb3JkX21vZGUpOiBGb3IgcmVjb3JkcyB3aXRoIGEgc2luZ2xlCglmaWVsZCwgb25seSB1c2UgdGhlIGZpZWxkJ3MgbW9kZSBpZiBpdHMgc2l6ZSBtYXRjaGVzIHdoYXQgd2UnZAoJaGF2ZSBjaG9vc2VuIGZvciB0aGUgcmVjb3JkIG91cnNlbHZlcy4gIFRoaXMgZm9yY2VzIHRoZSB1c2Ugb2YKCUJMS21vZGUgZm9yIHBhY2tlZCByZWNvcmRzIHRoYXQgZG9uJ3QgY29tcGxldGVseSBmaWxsIGEgbW9kZS4KCjIwMDQtMDktMjYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTcxNTEKCSogY29tYmluZS5jIChmb3JjZV90b19tb2RlKTogUmVtb3ZlIGR1YmlvdXMgZWFybHkgcmV0dXJuIHRlc3QgdGhhdAoJaW5oaWJpdHMgZnVydGhlciBvcHRpbWl6YXRpb24uCgoyMDA0LTA5LTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcHJvZmlsZS5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTA5LTI2ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJUFIgYm9vdHN0cmFwLzE3NTkxCgkqIHRyZWUtc3NhLWxvb3AtaW0uYyAoZm9yX2VhY2hfaW5kZXgpOiBDYWxsIGNhbGxiYWNrIGZvciBjb21wb25lbnRfcmVmcwoJd2l0aCB2YXJ5aW5nIG9mZnNldC4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoYWJub3JtYWxfc3NhX25hbWVfcCk6IE5ldyBmdW5jdGlvbi4KCShpZHhfY29udGFpbnNfYWJub3JtYWxfc3NhX25hbWVfcCk6IFNjYW4gc3RlcCBhbmQgbG93ZXIgYm91bmQgZm9yCglBUlJBWV9SRUZTLgoJKGV4cHJfaW52YXJpYW50X2luX2xvb3BfcCk6IE5ldyBmdW5jdGlvbi4KCShpZHhfZmluZF9zdGVwKTogSGFuZGxlIHN0ZXAgYW5kIGxvd2VyIGJvdW5kIGZvciBBUlJBWV9SRUZzLiAgSGFuZGxlCgljb21wb25lbnRfcmVmX2ZpZWxkX29mZnNldCBmb3IgQ09NUE9ORU5UX1JFRnMuICBEbyBub3QgYWxsb3cKCUFMSUdOX0lORElSRUNUX1JFRnMgYW5kIE1JU0FMSUdORURfSU5ESVJFQ1RfUkVGcy4KCShhZGRfYWRkcmVzc19jYW5kaWRhdGVzKTogRG8gbm90IGhhbmRsZSBBTElHTl9JTkRJUkVDVF9SRUZzIGFuZAoJTUlTQUxJR05FRF9JTkRJUkVDVF9SRUZzLgoJKGlkeF9yZW1vdmVfc3NhX25hbWVzKTogSGFuZGxlIHN0ZXAgYW5kIGxvd2VyIGJvdW5kIGZvciBBUlJBWV9SRUZzLgoJKHJld3JpdGVfYWRkcmVzc19iYXNlKTogRG8gbm90IGhhbmRsZSBBTElHTl9JTkRJUkVDVF9SRUZzIGFuZAoJTUlTQUxJR05FRF9JTkRJUkVDVF9SRUZzLgoKMjAwNC0wOS0yNiAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xMTQ1OQoJKiBnY2MuYyAoY3BwX29wdGlvbnMsIGNjMV9vcHRpb25zKTogUHJlc2VydmUgcmVsYXRpdmUgb3JkZXIgb2YKCS1zdGQgYW5kIC1hbnNpIG9wdGlvbnMuCgoyMDA0LTA5LTI2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2ZpbmlzaCk6IFNldCBwYXJlbnQgdG8gY29tcF91bml0X2RpZQoJZm9yIG5lc3RlZCBmdW5jdGlvbnMgd2hvc2UgcHJvcGVyIHBhcmVudCBoYXMgbm90IGJlZW4gb3V0cHV0LgoKCSogcHJvZmlsZS5jIChjb21wdXRlX2JyYW5jaF9wcm9iYWJpbGl0aWVzKTogVXNlIFJFR19CUl9QUk9CIG5vdGVzCgl3aGVuIHJlLWNvbnN0cnVjdGluZyBwcm9maWxlIHByZXZpb3VzbHkgaW52YWxpZGF0ZWQgYnkgbG9vcC4KCjIwMDQtMDktMjUgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIHRyZWUtZ2ltcGxlLmM6IE1vdmUgR0lNUExFIGRlZmluaXRpb24uLi4KCSogZG9jL3RyZWUtc3NhLnRleGk6IGhlcmUuCgoyMDA0LTA5LTI1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHJlZS12ZWN0b3JpemVyLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDQtMDktMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLXR5cGVjay5jLCBkZWZhdWx0cy5oLCBkd2FyZi5oLCBkd2FyZjJvdXQuYywgZm9sZC1jb25zdC5jLAoJZ3Roci1kY2UuaCwgZ3Roci1wb3NpeC5oLCBndGhyLXNvbGFyaXMuaCwgZ3Roci13aW4zMi5oLAoJbGFtYmRhLWNvZGUuYywgbGFtYmRhLW1hdC5jLCBsaWJnY2MyLmMsIHN0bXQuYywKCXRyZWUtc3NhLXByZS5jLCB0cmVlLXZuLmMsIHRyZWUuaDogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCjIwMDQtMDktMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXNzYS1sb29wLXVuc3dpdGNoLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDQtMDktMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvcGFzc2VzLnRleGk6IEZpeCBhIHR5cG8uCgoyMDA0LTA5LTI1ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiB0cmVlLW9wdGltaXplLmMgKGluaXRfdHJlZV9vcHRpbWl6YXRpb25fcGFzc2VzKTogQWRkCglwYXNzX3JlY29yZF9ib3VuZHMuCgkqIHRyZWUtcGFzcy5oIChwYXNzX3JlY29yZF9ib3VuZHMpOiBEZWNsYXJlLgoJKiB0cmVlLXNzYS1sb29wLmMgKHRyZWVfc3NhX2xvb3BfYm91bmRzLCBwYXNzX3JlY29yZF9ib3VuZHMpOgoJTmV3IHBhc3MuCgoyMDA0LTA5LTI1ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTc0NzQKCSogdHJlZS1zc2EtY2NwLmMgKG1heWJlX2ZvbGRfb2Zmc2V0X3RvX2NvbXBvbmVudF9yZWYpOiBEZXRlcm1pbmUKCW9mZnNldCBvZiB0aGUgZmllbGQgY29ycmVjdGx5IHdoZW4gREVDTF9GSUVMRF9CSVRfT0ZGU0VUICE9IDAuCgoyMDA0LTA5LTI1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwcmVkaWN0LmMgKGNvdW50c190b19mcmVxcyk6IE1ha2UgZ2xvYmFsLgoJKiBwcmVkaWN0LmggKGNvdW50c190b19mcmVxYSk6IERlY2xhcmUuCgkqIHByb2ZpbGUuYyAoY29tcHV0ZV9icmFuY2hfcHJvYmFiaWxpdGllcyk6IENvbXB1dGUgZnJlcXVlbmNpZXMKCSogdHJlZS1wcm9maWxlLmMgKGRvX3RyZWVfcHJvZmlsaW5nKTogUmVmaW5lIGNvbmRpdGlvbmFsIG9uIHdoZW4KCXRyZWUgcHJvZmlsaW5nIHBhc3MgaXMgbmVlZGVkLgoKCSogcGFzc2VzLmMgKHJlc3Rfb2ZfaGFuZGxlX2NmZyk6IERpc2FibGUgY29uc3QvcHVyZSBmdW5jdGlvbgoJZGV0ZWN0aW9uIHdoZW4gZG9pbmcgdHJlZSBiYXNlZCBwcm9maWxpbmcuCgoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBGaXggaW5jb3JyZWN0bHkgcmV2ZXJzZWQKCWNvbmRpdGlvbmFsLgoKMjAwNC0wOS0yNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChzdHJ1Y3QgbWlwc19hcmdzKTogQ2xhcmlmeSBjb21tZW50cy4KCSogY29uZmlnL21pcHMvbWlwcy5jIChzdHJ1Y3QgbWlwc19hcmdfaW5mbyk6IExpa2V3aXNlLgoJKG1pcHNfYXJnX2luZm8pOiBEb24ndCBhbGxvdyBmcHJfcCB0byBhZmZlY3QgdGhlIHJlZ2lzdGVyIG9yCglzdGFjayBhbGlnbm1lbnQuICBSZW1vdmUgbzY0IHNpbGxpbmVzcy4KCShmdW5jdGlvbl9hcmcpOiBEZWFsIHdpdGggdGhlIG8zMiBmbG9hdCxmbG9hdCBjYXNlIHNwZWNpYWxseS4KCjIwMDQtMDktMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGxvYWR4LCBzdG9yZXgpOiBEZWZpbmUgZm9yIFYyU0YuCgoyMDA0LTA5LTI1ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX2JhY2tfY2hhaW5fcnR4KTogQWRkIHByb3RvdHlwZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2JhY2tfY2hhaW5fcnR4KTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiYWxsb2NhdGVfc3RhY2siKTogVXNlIHMzOTBfYmFja19jaGFpbl9ydHguCglDYWxsIGFudGlfYWRqdXN0X3N0YWNrLgoJKCJyZXN0b3JlX3N0YWNrX2Jsb2NrIik6IFVzZSBzMzkwX2JhY2tfY2hhaW5fcnR4LiAgRW5hYmxlIHBhdHRlcm4KCW9ubHkgaWYgY29tcGlsaW5nIHdpdGggYmFjayBjaGFpbi4KCSgic2F2ZV9zdGFja19ub25sb2NhbCIsICJyZXN0b3JlX3N0YWNrX25vbmxvY2FsIik6IFNhdmUvcmVzdG9yZQoJYmFjayBjaGFpbiBvbmx5IGlmIGJhY2sgY2hhaW4gZW5hYmxlZC4gIFVzZSBzMzkwX2JhY2tfY2hhaW5fcnR4LgoKMjAwNC0wOS0yNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvdHJvdWJsZS50ZXhpOiBSZW1vdmUgb2Jzb2xldGUgaW5mb3JtYXRpb24uICBVcGRhdGUKCWluZm9ybWF0aW9uIG9uIGhvdyB0byByZWdlbmVyYXRlIGZpeGluY2x1ZGVkIGhlYWRlcnMuCgoyMDA0LTA5LTI1ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzEyOTUxCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgdGhhdAoJLVduby1lcnJvci1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiBpcyBub3QgYWNjZXB0ZWQuCgoyMDA0LTA5LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKFVOSVRTX1BFUl9TSU1EX1dPUkQpOiBOZXcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV92ZWN0b3JfbW9kZV9zdXBwb3J0ZWRfcCk6IERvbid0IGRlcGVuZAoJb24gVEFSR0VUX01BWC4KCShhbHBoYV9leHBhbmRfbW92KTogQWxsb3cgdW5hbGlnbmVkIHZlY3RvcnMuCgkoYWxwaGFfZXhwYW5kX3VuYWxpZ25lZF9zdG9yZSk6IFVzZSBDT05TVDBfUlRYLgoJKFRBUkdFVF9WRUNUT1JJWkVfTUlTQUxJR05FRF9NRU1fT0spOiBOZXcuCgoyMDA0LTA5LTI0IEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1kb20uYyAoZG9tX29wdF9maW5hbGl6ZV9ibG9jayk6IEZpeCB2aW9sYXRpb24gb2Ygc3RyaWN0CglhbGlhc2luZyBydWxlcy4KCShzaW1wbGlmeV9jb25kX2FuZF9sb29rdXBfYXZhaWxfZXhwcik6IExpa2V3aXNlLgoKMjAwNC0wOS0yNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xMjgwMgoJKiBkb2MvZXh0ZW5kLnRleGkgKFVubmFtZWQgRmllbGRzKTogUmVtb3ZlICIuIiBmcm9tIGVuZCBvZiBsb25nCgl0aXRsZS4gIERvY3VtZW50IGludGVyYWN0aW9uIHdpdGggLWZtcy1leHRlbnNpb25zLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mbXMtZXh0ZW5zaW9ucyk6IFJlZmVyIHRvIFVubmFtZWQgRmllbGRzCglzZWN0aW9uLgoKMjAwNC0wOS0yNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xMjcxMwoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IGludGVyYWN0aW9uIG9mIGF0dHJpYnV0ZSBub3JldHVybiBhbmQKCWxvbmdqbXAuCgoyMDA0LTA5LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHJ0bC1vcHQvMTc1MDMKCSogcmVnY2xhc3MuYyAoc3VicmVnc19vZl9tb2RlKTogVHVybiBpbnRvIGFuIGh0YWIuICBNYWtlIHN0YXRpYy4KCShzb21faGFzaCwgc29tX2VxKTogTmV3LgoJKGluaXRfc3VicmVnc19vZl9tb2RlLCByZWNvcmRfc3VicmVnc19vZl9tb2RlKTogTmV3LgoJKGNhbm5vdF9jaGFuZ2VfbW9kZV9zZXRfcmVncyk6IFJld3JpdGUgZm9yIGh0YWIgaW1wbGVtZW50YXRpb24uCgkoaW52YWxpZF9tb2RlX2NoYW5nZV9wKTogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYyAoZ2VuX2xvd3BhcnRfZm9yX2NvbWJpbmUpOiBVc2UgcmVjb3JkX3N1YnJlZ3Nfb2ZfbW9kZS4KCSogZmxvdy5jIChtYXJrX3VzZWRfcmVncyk6IExpa2V3aXNlLgoJKGxpZmVfYW5hbHlzaXMpOiBVc2UgaW5pdF9zdWJyZWdzX29mX21vZGUuCgkqIHJlZ3MuaCAoc3VicmVnc19vZl9tb2RlKTogUmVtb3ZlLgoJKiBydGwuaCAoaW5pdF9zdWJyZWdzX29mX21vZGUsIHJlY29yZF9zdWJyZWdzX29mX21vZGUpOiBEZWNsYXJlLgoKMjAwNC0wOS0yNCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB0cmVlLXNzYS1waGlvcHQuYyAoY29uZGl0aW9uYWxfcmVwbGFjZW1lbnQpOiBVc2UgdGhlIGNvcnJlY3QKCXR5cGUgd2l0aCB0aGUgY29weSBvZiB0aGUgY29uZGl0aW9uYWwuCgoyMDA0LTA5LTI0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0cmVlLW9wdC8xNjk1NAoJKiB0cmVlLXNzYS1jb3B5cmVuYW1lLmMgKGNvcHlfcmVuYW1lX3BhcnRpdGlvbl9jb2FsZXNjZSk6CglQcmV2ZW50IHJlbmFtaW5nIGlmIHRoZSBhbGlhc2luZyBzZXRzIG9mIHRoZSB0eXBlIHdoaWNoIHRoZQoJcG9pbnRlciBwb2ludHMgdG8gYXJlIGRpZmZlcmVudC4KCjIwMDQtMDktMjQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvMTcxODgKCSogYy1kZWNsLmMgKGRpYWdub3NlX21pc21hdGNoZWRfZGVjbHMpOiBDaGVjayBmb3IgZHVwbGljYXRlCglkZWNsYXJhdGlvbnMgb2YgZW51bWVyYXRvcnMuCgkoc3RhcnRfc3RydWN0KTogQ2hlY2sgVFlQRV9TSVpFIHJhdGhlciB0aGFuIFRZUEVfRklFTERTIHRvIGNoZWNrCglmb3IgcmVkZWZpbml0aW9uLiAgQ2hlY2sgZm9yIG5lc3RlZCByZWRlZmluaXRpb24uCgkoZmluaXNoX3N0cnVjdCk6IERvbid0IGNoZWNrIGZvciBuZXN0ZWQgcmVkZWZpbml0aW9uLgoJKHN0YXJ0X2VudW0pOiBDaGVjayBmb3IgbmVzdGVkIHJlZGVmaW5pdGlvbi4KCjIwMDQtMDktMjQgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiB0cmVlLWlmLWNvbnYuYyAodHJlZV9pZl9jb252ZXJ0X2NvbmRfZXhwcjA6IENyZWF0ZSB0ZW1wLiB2YXJpYWJsZQoJb25seSB3aGVuIG5lY2Vzc3NhcnkuCgkoY29tYmluZV9ibG9ja3MpOiBDb21iaW5lIGxvb3AgaGVhZGVyIGFuZCBleGl0IGJsb2NrLgoKMjAwNC0wOS0yNCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGhvb2tzLmMgKGhvb2tfdHJlZV90cmVlX2Jvb2xfbnVsbCk6IE5ldy4KCSogaG9va3MuaCAoaG9va190cmVlX3RyZWVfYm9vbF9udWxsKTogRGVjbGFyZSBpdC4KCSogdGFyZ2V0LWRlZi5jIChUQVJHRVRfRk9MRF9CVUlMVElOKTogUG9pbnQgdG8gaXQuCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X2ZvbGRfYnVpbHRpbik6IFJlbW92ZS4KCSogdGFyZ2hvb2tzLmggKGRlZmF1bHRfZm9sZF9idWlsdGluKTogUmVtb3ZlLgoKMjAwNC0wOS0yNCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTc2MjUKCSogbG9vcC1kb2xvb3AuYyAoZG9sb29wX21vZGlmeSk6IFVuc2hhcmUgcnRsIGJlZm9yZSBlbWl0dGluZyBpdC4KCjIwMDQtMDktMjQgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzE3NjI0CgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKHJlY29yZF9zaW5nbGVfYXJndW1lbnRfY29uZF9leHBycyk6CglSZWplY3QgaWYgYW55IG9mIHRoZSBvcGVyYW5kcyBvY2N1ciBpbiBhbiBhYm5vcm1hbCBQSEkuCgoyMDA0LTA5LTI0ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogdHJlZS1zc2EtZG9tLmMgKHJlY29yZF9yYW5nZSk6IEZpeCB2aW9sYXRpb24gb2Ygc3RyaWN0IGFsaWFzaW5nCglydWxlcy4KCjIwMDQtMDktMjQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcuZ2NjIChzcGFyYzY0LSotc29sYXJpczIqKTogSW5jbHVkZSBzcGFyYy9zb2wyLWdhcy5oCglpZiB0aGUgR05VIGFzc2VtYmxlciBpcyB1c2VkLgoJKHNwYXJjLSotc29sYXJpczIqKTogTGlrZXdpc2UuCgkqIGRieG91dC5jIChOT19EQlhfQk5TWU1fRU5TWU0pOiBEZWZhdWx0IHRvIHplcm8uCgkoZGJ4b3V0X2Z1bmN0aW9uX2VuZCk6IFByb3RlY3QgTl9FTlNZTSB3aXRoIGl0LgoJKGRieG91dF9iZWdpbl9wcm9sb2d1ZSk6IFByb3RlY3QgTl9CTlNZTSB3aXRoIGl0LgoJKiBkb2MvdG0udGV4aSAoTk9fREJYX0JOU1lNX0VOU1lNKTogRG9jdW1lbnQgaXQuCgkqIGNvbmZpZy9zcGFyYy9zb2wyLmggKE5PX0RCWF9CTlNZTV9FTlNZTSk6IERlZmluZSB0byAxLgoJKiBjb25maWcvc3BhcmMvc29sMi1nYXMuaDogTmV3IGZpbGUuCgoyMDA0LTA5LTIzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgYm9vdHN0cmFwLzE3MzY5CgkqIE1ha2VmaWxlLmluIChAc2V0X2djY19saWJfcGF0aEApOiBBZGRlZC4KCgkqIGNvbmZpZ3VyZS5hYzogSW5jbHVkZSAuLi9jb25maWcvZ2NjLWxpYi1wYXRoLm00LiBVc2UKCVRMX0FDX0dOVV9NQUtFX0dDQ19MSUJfUEFUSC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDQtMDktMjQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvNjk4MAoJKiBjLXR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBJbXByb3ZlIHdvcmRpbmcgb2YKCS1XYmFkLWZ1bmN0aW9uLWNhc3QgZGlhZ25vc3RpYy4KCjIwMDQtMDktMjMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCVBSIHRhcmdldC8xNzYyNgoJKiBjb25maWcvY3Jpcy9jcmlzLm1kIChtb3ZlcnNpZGUsIG1vdmVtc2lkZSk6IFJlbmFtZSB2YXJpYWJsZQoJInJlZyIgdG8gIm90aGVyb3AiLiAgVG8gZ2VuZXJhdGUgY2Fub25pY2FsIFJUWCwgY2hlY2sgdGhhdCBvdGhlcm9wCglpc24ndCBjb25zdGFudCBpbnN0ZWFkIG9mIGNoZWNraW5nIHRoYXQgb3BlcmFuZCAxIGlzIGEgcmVnaXN0ZXIuCgoyMDA0LTA5LTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLXByb3BhZ2F0ZS5jIChzZXRfcmhzKTogRmFpbCBpZiBFWFBSIGlzIENPTVBPVU5EX0VYUFIuCgoyMDA0LTA5LTIzICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHRyZWUtZmxvdy5oIChmaW5kX25ld19yZWZlcmVuY2VkX3ZhcnMpOiBBZGQgcHJvdG90eXBlLgoJKiB0cmVlLXNyYS5jIChmaW5kX25ld19yZWZlcmVuY2VkX3ZhcnNfMSwgZmluZF9uZXdfcmVmZXJlbmNlZF92YXJzKToKCU1vdmUgdG8uLi4KCSogdHJlZS1kZmEuYyAoZmluZF9uZXdfcmVmZXJlbmNlZF92YXJzXzEsIGZpbmRfbmV3X3JlZmVyZW5jZWRfdmFycyk6CgkuLi4gaGVyZS4KCShtYXJrX25ld192YXJzX3RvX3JlbmFtZSk6IFdhbGsgdGhyb3VnaCBhbGwgb3BlcmFuZHMuCgkqIHRyZWUtc3NhLWNjcC5jIChjb252ZXJ0X3RvX2dpbXBsZV9idWlsdGluKTogTmV3IGZ1bmN0aW9uLgoJKGV4ZWN1dGVfZm9sZF9hbGxfYnVpbHRpbnMpOiBVc2UgaXQuCgkocGFzc19mb2xkX2J1aWx0aW5zKTogQWRkIFRPRE9fcmVuYW1lX3ZhcnMgdG8gdG9kb19mbGFnc19maW5pc2guCgoyMDA0LTA5LTIzICBQLkouIERhcmN5ICA8ZGFyY3lwakB1cy5pYm0uY29tPgoKCSogZ3Roci10cGYuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy5nY2MgKHMzOTB4LWlibS10cGYqKTogQWRkIHRocmVhZF9maWxlPSd0cGYnLgoJKiBndGhyLmg6IFVzZSBndGhyLXRwZi5oIG9uIFRQRiBPUy4KCjIwMDQtMDktMjMgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWNjcC5jIChnZXRfZGVmYXVsdF92YWx1ZSk6IFVzZSBTU0FfTkFNRV9WQUxVRSByYXRoZXIKCXRoYW4gU1NBX05BTUVfRVFVSVYgYW5kIFNFVF9TU0FfTkFNRV9FUVVJVi4KCShzdWJzdGl0dXRlX2FuZF9mb2xkKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRvbS5jICh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBSZW1vdmUgZXZlcnl0aGluZwoJZXhjZXB0IGludmFyaWFudHMgZnJvbSBTU0FfTkFNRV9WQUxVRS4KCSh0aHJlYWRfYWNyb3NzX2VkZ2UpOiBVc2UgU1NBX05BTUVfVkFMVUUgcmF0aGVyIHRoYW4gU1NBX05BTUVfRVFVSVYKCWFuZCBTRVRfU1NBX05BTUVfRVFVSVYuCgkocmVzdG9yZV92YXJzX3RvX29yaWdpbmFsX3ZhbHVlLCByZWNvcmRfY29uc3Rfb3JfY29weSk6IExpa2V3aXNlLgoJKHJlY29yZF9lcXVpdmFsZW5jZXNfZnJvbV9waGlzLCByZWNvcmRfY29uc3Rfb3JfY29weV8xKTogTGlrZXdpc2UuCgkocmVjb3JkX2VxdWFsaXR5LCBjcHJvcF9pbnRvX3N1Y2Nlc3Nvcl9waGlzKTogTGlrZXdpc2UuCgkocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX3N0bXQsIGNwcm9wX29wZXJhbmQpOiBMaWtld2lzZS4KCShsb29rdXBfYXZhaWxfZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1wcmUuYyAoZmluaV9wcmUpOiBSZW1vdmUgZXZlcnl0aGluZyBleGNlcHQgaW52YXJpYW50cwoJZnJvbSBTU0FfTkFNRV9WQUxVRS4KCSogdHJlZS5oIChTU0FfTkFNRV9FUVVJViwgU0VUX1NTQV9OQU1FX0VRVUlWKTogS2lsbC4KCShzdHJ1Y3QgdHJlZV9zc2FfbmFtZSk6IEtpbGwgRVFVSVYgZmllbGQuICBSZW1vdmUgR0dDIHNraXAKCWFubm90YXRpb24gZnJvbSB0aGUgVkFMVUVfSEFORExFIGZpZWxkLgoKMjAwNC0wOS0yMSBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCglQUiBjKysvMTM5ODkKCVBSIGMrKy85ODQ0CgkqIHRyZWUuYyAocmVjb25zdHJ1Y3RfY29tcGxleF90eXBlKTogUmVtb3ZlIGV4dHJhICJ0aGlzIi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2hhbmRsZV9hbHRpdmVjX2F0dHJpYnV0ZSk6CglBZGQgVjRTRm1vZGUgdG8gY2FzZSBzdGF0ZW1lbnQuCgoyMDA0LTA5LTIzICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzE2ODMzCgkqIGRvYy9leHRlbmQudGV4aSwgZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCBpbnRlcmFjdGlvbiBvZgoJLWZuby1idWlsdGluIHdpdGggZm9ybWF0IGNoZWNrcy4gIE5vdGUgdGhhdCBidWlsdC1pbiBmdW5jdGlvbnMKCWhhdmUgZWZmZWN0cyBiZXlvbmQgZ2VuZXJhdGluZyBjb2RlIHRoYXQgYXZvaWRzIGNhbGxzIHRvIHRob3NlCglmdW5jdGlvbnMuCgoyMDA0LTA5LTIzICBGcmFuayBDaC4gRWlnbGVyIDxmY2hlQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTc1MzMKCSogZG9taW5hbmNlLmMgKHZlcmlmeV9kb21pbmF0b3JzKTogVG9sZXJhdGUgZXZlbiBtb3JlIGluY29ycmVjdAoJZG9taW5hbmNlIGRhdGEgZHVyaW5nIGVycm9yIG1lc3NhZ2UgcHJpbnRpbmcuCgkqIHRyZWUtbXVkZmxhcC5jIChtZl9idWlsZF9jaGVja19zdGF0ZW1lbnRfZm9yKTogQnVpbGQgYmFzaWMgYmxvY2tzCglhbmQgZWRnZXMgbW9yZSBjb3JyZWN0bHkuCgoyMDA0LTA5LTIzICBEb3JpdCBOYWlzaGxvcyA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIHRyZWUuZGVmIChBTElHTl9JTkRJUkVDVF9SRUYsIE1JU0FMSUdORURfSU5ESVJFQ1RfUkVGKToKCU5ldyB0cmVlLWNvZGVzLgoJKiB0cmVlLmggKFJFRl9PUklHSU5BTCk6IENvbnNpZGVyIEFMSUdOX0lORElSRUNUX1JFRiBhbmQKCU1JU0FMSUdORURfSU5ESVJFQ1RfUkVGLgoJKiBhbGlhcy5jIChnZXRfYWxpYXNfc2V0LCBub25vdmVybGFwcGluZ19tZW1yZWZzX3ApOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAobWVtX2V4cHJfZXF1YWxfcCwgc2V0X21lbV9hdHRyaWJ1dGVzX21pbnVzX2JpdHBvcyk6CglMaWtld2lzZS4KCSogZXhwci5jIChzYWZlX2Zyb21fcCwgZXhwYW5kX2V4cHJfcmVhbF8xLCByZXdyaXRlX2FkZHJlc3NfYmFzZSkKCShmaW5kX2ludGVyZXN0aW5nX3VzZXNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKG5vbl9sdmFsdWUsIG9wZXJhbmRfZXF1YWxfcCk6IExpa2V3aXNlLgoJKGJ1aWxkX2ZvbGRfYWRkcl9leHByX3dpdGhfdHlwZSk6IExpa2V3aXNlLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9hZGRyX2V4cHIsIGdpbXBsaWZ5X2V4cHIpOiBMaWtld2lzZS4KCSogcHJpbnQtcnRsLmMgKHByaW50X21lbV9leHByKTogTGlrZXdpc2UuCgkqIHRyZWUtZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogTGlrZXdpc2UuCgkqIHRyZWUtZWguYyAodHJlZV9jb3VsZF90cmFwX3ApOiBMaWtld2lzZS4KCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX2FkZHJlc3NhYmxlLCBnZXRfYmFzZV9hZGRyZXNzKTogTGlrZXdpc2UuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKG9wX3ByaW8sIG9wX3N5bWJvbCwgZHVtcF9nZW5lcmljX25vZGUpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAoZmluZF9wdHJfZGVyZWZlcmVuY2UsIHB0cl9pc19kZXJlZmVyZW5jZWRfYnkpOgoJTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRjZS5jIChtYXJrX3N0bXRfaWZfb2J2aW91c2x5X25lY2Vzc2FyeSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kb20uYyAocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX3N0bXQpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChmb3JfZWFjaF9pbmRleCwgaXNfY2FsbF9jbG9iYmVyZWRfcmVmKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGZpbmRfaW50ZXJlc3RpbmdfdXNlc19hZGRyZXNzKTogTGlrZXdpc2UuCgkoYWRkX2FkZHJlc3NfY2FuZGlkYXRlcywgcmV3cml0ZV9hZGRyZXNzX2Jhc2UpOiBMaWtld2lzZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMsIGdldF9pbmRpcmVjdF9yZWZfb3BlcmFuZHMpOgoJTGlrZXdpc2UuCgkqIHRyZWUuYyAoc3RhdGljcCwgYnVpbGQxX3N0YXQpOiBMaWtld2lzZS4KCgkqIHRyZWUuZGVmIChSRUFMSUdOX0xPQURfRVhQUiwgUkVBTElHTl9TVE9SRV9FWFBSKTogTmV3IHRyZWUtY29kZXMuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogQ29uc2lkZXIgUkVBTElHTl9MT0FEX0VYUFIuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGdldF9leHByX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogTGlrZXdpc2UuCgoJKiBvcHRhYnMuaCAodmVjX3JlYWxpZ25fc3RvcmVfb3B0YWIsIHZlY19yZWFsaWduX2xvYWRfb3B0YWIpOiBOZXcKCW9wdGFicy4KCShPVElfdmVjX3JlYWxpZ25fc3RvcmUsIE9USV92ZWNfcmVhbGlnbl9sb2FkKTogTmV3IG9wdGFiX2luZGV4IHZhbHVlcwoJZm9yIHRoZSBuZXcgb3B0YWJzLgoJKGV4cGFuZF90ZXJuYXJ5X29wKTogTmV3IGZ1bmN0aW9uLgoJKiBnZW5vcGluaXQuYyAob3B0YWJzKTogSGFuZGxlIHRoZSBuZXcgb3B0YWJzLgoJKiBvcHRhYnMuYyAob3B0YWJfZm9yX3RyZWVfY29kZSk6IEFkZCBjYXNlcyBmb3IgdGhlIG5ldyB0cmVlLWNvZGVzLgoJKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSB2ZWNfcmVhbGlnbl9sb2FkX29wdGFiLgoJKGV4cGFuZF90ZXJuYXJ5X29wKTogTmV3IGZ1bmN0aW9ucy4KCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX1ZFQ1RPUklaRSk6IE5ldyBtZW1iZXIgZm9yIHN0cnVjdCBnY2NfdGFyZ2V0LgoJKFRBUkdFVF9WRUNUT1JJWkVfTUlTQUxJR05FRF9NRU1fT0spOiBOZXcgbWVtYmVyIGZvciB0YXJnZXRtLnZlY3Rvcml6ZS4KCShUQVJHRVRfVkVDVE9SSVpFX0JVSUxUSU5fTUFTS19GT1JfTE9BRCk6IExpa2V3aXNlLgoJKFRBUkdFVF9WRUNUT1JJWkVfQlVJTFRJTl9NQVNLX0ZPUl9TVE9SRSk6IExpa2V3aXNlLgoJKiB0YXJnZXQuaCAoc3RydWN0IHZlY3Rvcml6ZSk6IE5ldyBtZW1iZXIgZm9yIHN0cnVjdCBnY2NfdGFyZ2V0LgoJKG1pc2FsaWduZWRfbWVtX29rKTogTmV3IG1lbWJlciBmb3IgdGFyZ2V0bS52ZWN0b3JpemUuCgkoYnVpbHRpbl9tYXNrX2Zvcl9sb2FkKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9tYXNrX2Zvcl9zdG9yZSk6IExpa2V3aXNlLgoJKiB0YXJnZXRob29rcy5jIChkZWZhdWx0X3ZlY3RfbWlzYWxpZ25lZF9tZW1fb2spOiBOZXcgZnVuY3Rpb24uCgkqIHRhcmdldGhvb2tzLmggKGRlZmF1bHRfdmVjdF9taXNhbGlnbmVkX21lbV9vayk6IE5ldyBmdW5jdGlvbi4KCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoYnVpbGRfdmVjdG9yX21hc2tfZm9yX2xvYWQpOiBOZXcKCWRlZmluZV9leHBhbmQuCgkodmVjX3JlYWxpZ25fbG9hZF92NHNpLCB2ZWNfcmVhbGlnbl9sb2FkX3Y0c2YsIHZlY19yZWFsaWduX2xvYWRfdjhoaSkKCSh2ZWNfcmVhbGlnbl9sb2FkX3YxNnFpKTogTmV3IGRlZmluZV9pbnNuLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBTFRJVkVDX0JVSUxUSU5fTUFTS19GT1JfTE9BRCk6CgkoQUxUSVZFQ19CVUlMVElOX01BU0tfRk9SX1NUT1JFKTogTmV3IHRhcmdldCBidWlsdGlucy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoYWx0aXZlY19idWlsdGluX21hc2tfZm9yX2xvYWQpOgoJKGFsdGl2ZWNfYnVpbHRpbl9tYXNrX2Zvcl9zdG9yZSk6IE5ldyB2YXJpYWJsZXMuCgkocnM2MDAwX2J1aWx0aW5fbWFza19mb3JfbG9hZCk6IE5ldyBmdW5jdGlvbi4gSW1wbGVtZW50cwoJVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElOX01BU0tfRk9SX0xPQUQuCgkocnM2MDAwX2J1aWx0aW5fbWFza19mb3Jfc3RvcmUpOiBOZXcgZnVuY3Rpb24uIEltcGxlbWVudHMKCVRBUkdFVF9WRUNUT1JJWkVfQlVJTFRJTl9NQVNLX0ZPUl9TVE9SRS4KCShyczYwMDBfZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgdGhlIHRhcmdldCBidWlsdGlucwoJYnVpbHRpbl9tYXNrX2Zvcl9sb2FkIGFuZCBidWlsdGluX21hc2tfZm9yX3N0b3JlLgoJKGFsdGl2ZWNfaW5pdF9idWlsdGlucyk6IEluaXRpYWxpemUgdGhlIG5ldyB0YXJnZXQgYnVpbHRpbnMuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9taXNhbGlnbmVkX21lbV9vayk6IE5ldyBmdW5jdGlvbi4KCUltcGxlbWVudHMgdGhlIHRhcmdldCBob29rIFRBUkdFVF9WRUNUT1JJWkVfTUlTQUxJR05FRF9NRU1fT0suCgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9jcmVhdGVfZGF0YV9yZWYpOiBSZW5hbWVkIHRvCgl2ZWN0X2NyZWF0ZV9kYXRhX3JlZl9wdHIuIFJldHVybnMgYSBwb2ludGVyIGluc3RlYWQgb2YgYW4gYXJyYXktcmVmLgoJKHZlY3RfY3JlYXRlX2FkZHJfYmFzZV9mb3JfdmVjdG9yX3JlZik6IEFkZGl0aW9uYWwgYXJndW1lbnQgKG9mZnNldCkuCgkodmVjdG9yaXphYmxlX3N0b3JlKTogQ2FsbCB2ZWN0X2NyZWF0ZV9kYXRhX3JlZl9wdHIgd2l0aCBhZGRpdGlvbmFsCglhcmd1bWVudHMsIGFuZCBjcmVhdGUgYW4gaW5kaXJlY3RfcmVmIHdpdGggaXRzIHJldHVybiB2YWx1ZSBkYXRhX3JlZi4KCUNoZWNrIGFsaWduZWRfYWNjZXNzX3AuCgkodmVjdG9yaXphYmxlX2xvYWQpOiBIYW5kbGUgbWlzYWxpZ25lZCBsb2FkcywgdXNpbmcgc29mdHdhcmUtcGlwZWxpbmVkCglzY2hlbWUgd2l0aCBSRUFMSUdOX0xPQURfRVhQUiBhbmQgQUxJR05fSU5ESVJFQ1RfUkVGIGlmCgl2ZWNfcmVhbGlnbl9sb2FkX29wdGFiIGlzIHN1cHBvcnRlZCwgb3IgdXNpbmcgYSBzY2hlbWUgd2l0aG91dAoJc29mdHdhcmUtcGlwZWxpbmluZyB3aXRoIE1JU0FMSUdORURfSU5ESVJFQ1RfUkVGIGlmIHRoZSB0YXJnZXQgaG9vawoJbWlzYWxpZ25lZF9tZW1fb2sgaXMgc3VwcG9ydGVkLgoKCSh2ZWN0X2ZpbmlzaF9zdG10X2dlbmVyYXRpb24pOiBUeXBvLgoJKHZlY3RfZW5oYW5jZV9kYXRhX3JlZnNfYWxpZ25tZW50KTogUmVuYW1lIGxvb3BfdmluZm8gdG8gbG9vcF9pbmZvLgoJKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZnNfYWxpZ25tZW50KTogRG9uJ3QgZmFpbCB2ZWN0b3JpemF0aW9uIGluIHRoZQoJcHJlc2VuY2Ugb2YgbWlzYWxpZ25lZCBsb2Fkcy4KCSh2ZWN0X2FuYWx5emVfZGF0YV9yZWZfYWNjZXNzKTogQWRkIGNoZWNrIGZvciBjb25zdGFudCBpbml0LgoJKHZlY3RfZ2V0X3N5bWJsX2FuZF9kcik6IFJlbW92ZSBkdXBsaWNhdGUgbGluZS4KCSogdHJlZS12ZWN0b3JpemVyLmggKERSX01JU0FMSUdOTUVOVCk6IEFkZCBjb21tZW50LgoKMjAwNC0wOS0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGJ1aWx0aW5zLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDQtMDktMjMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHByb2ZpbGUuYyAoYnJhbmNoX3Byb2IpOiBEbyBub3QgdmVyaWZ5IGZsb3cgaW5mbyBpbiB0aGUgbWlkZGxlIG9mIHRoZQoJcGFzcy4KCjIwMDQtMDktMjMgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNmZ2xvb3AuaCAodXBkYXRlX3NpbmdsZV9leGl0c19hZnRlcl9kdXBsaWNhdGlvbik6IERlY2xhcmUuCgkobG9vcGlmeSwgc3BsaXRfbG9vcF9iYik6IERlY2xhcmF0aW9uIGNoYW5nZWQuCgkqIGNmZ2xvb3BtYW5pcC5jIChzcGxpdF9sb29wX2JiKTogVGFrZSB2b2lkICogYXMgYW4gYXJndW1lbnQgaW5zdGVhZAoJb2YgcnR4LgoJKGxvb3BpZnkpOiBBZGRlZCByZWRpcmVjdF9hbGxfZWRnZXMgYXJndW1lbnQuCgkodXBkYXRlX3NpbmdsZV9leGl0c19hZnRlcl9kdXBsaWNhdGlvbik6IEV4cG9ydC4KCSogbG9vcC11bnN3aXRjaC5jICh1bnN3aXRjaF9sb29wKTogQ2hhbmdlZCBkdWUgdG8gbG9vcGlmeSBjaGFuZ2UuCgkqIHRyZWUtZmxvdy5oICh0cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2hlYWRlcl9lZGdlLAoJdHJlZV9zc2FfbG9vcF92ZXJzaW9uKTogRGVjbGFyZS4KCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jIChjb3B5X3BoaV9ub2RlX2FyZ3MsIHJlbmFtZV92YXJpYWJsZXMsCglzZXRfcGhpX2RlZl9zdG10cywgdHJlZV9kdXBsaWNhdGVfbG9vcF90b19oZWFkZXJfZWRnZSwKCWx2X2FkanVzdF9sb29wX2hlYWRlcl9waGksIGx2X2FkanVzdF9sb29wX2VudHJ5X2VkZ2UsCglsdl91cGRhdGVfcGVuZGluZ19zdG10cywgdHJlZV9zc2FfbG9vcF92ZXJzaW9uKTogTmV3IGZ1bmN0aW9ucy4KCgkqIHRyZWUtc3NhLWxvb3AtdW5zd2l0Y2guYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluICh0cmVlLXNzYS1sb29wLXVuc3dpdGNoLm8pOiBBZGQuCgkqIHRpbWV2YXIuZGVmIChUVl9UUkVFX0xPT1BfVU5TV0lUQ0gpOiBOZXcgdGltZXZhci4KCSogdHJlZS1mbG93LmggKHRyZWVfc3NhX3Vuc3dpdGNoX2xvb3BzKTogRGVjbGFyZS4KCSogdHJlZS1vcHRpbWl6ZS5jIChpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkZCBwYXNzX3Vuc3dpdGNoLgoJKiB0cmVlLXBhc3MuaCAocGFzc191bnN3aXRjaCk6IERlY2xhcmUuCgkqIHRyZWUtc3NhLWxvb3AuYyAodHJlZV9zc2FfbG9vcF91bnN3aXRjaCwKCWdhdGVfdHJlZV9zc2FfbG9vcF91bnN3aXRjaCwgcGFzc191bnN3aXRjaCk6IE5ldyBwYXNzLgoJKiBkb2MvcGFzc2VzLnRleGk6IERvY3VtZW4gdHJlZSBsZXZlbCBsb29wIHVuc3dpdGNoaW5nLgoKMjAwNC0wOS0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNmZ2V4cGFuZC5jLCBjb25maWcvczM5MC90cGYtZWguYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTA5LTIyICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKHNpbXBsaWZ5X2J1aWx0aW5fdmFfc3RhcnQpOiBSZW1vdmUuCgkoc2ltcGxpZnlfYnVpbHRpbik6IERpdHRvLgoJKGZvbGRfYnVpbHRpbl9zdHJjaHIpOiBEaXR0by4KCShzaW1wbGlmeV9idWlsdGluXyopOiBSZW5hbWUgcmVtYWluZGVycyB0byBmb2xkX2J1aWx0aW5fKi4KCShleHBhbmRfYnVpbHRpbik6IEZpeCB1cCBmb3IgYWJvdmUgY2hhbmdlcy4KCShmb2xkX2J1aWx0aW5fMSk6IEFkZCBuZXcgZm9sZGVycy4gQ2hhbmdlIGZvciBhYm92ZS4KCShleHBhbmRfYnVpbHRpbl92YV9zdGFydCk6IENhbGwgZm9sZF9idWlsdGluX25leHRfYXJnLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jYWxsX2V4cHIpOiBGaXggY2FsbHMgdG8gc2ltcGxpZnlfYnVpbHRpbi4KCSogdHJlZS5oOiBSZW1vdmUgcHJvdG90eXBlIGZvciBzaW1wbGlmeV9idWlsdGluLgoKMjAwNC0wOS0yMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIGRlYnVnLzE3Mzg5CgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfZmluaXNoKTogRGVhbCB3aXRoIG5lc3RlZCBmdW5jdGlvbnMKCW9mIGZ1bGx5IGlubGluZWQgZnVuY3Rpb25zLgoJKiB0cmVlLWlubGluZS5jIChpbmxpbmVfZm9yYmlkZGVuX3BfMSk6IE5lc3RlZCBmdW5jdGlvbnMgY2FuIGJlCglpbmxpbmVkLgoKCSogY2ZnZXhwYW5kLmMgKGFkZF9yZWdfYnJfcHJvYl9ub3RlKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9naW1wbGVfY29uZF9leHByKTogVXNlIGl0LgoJKHRyZWVfZXhwYW5kX2NmZyk6IE5vIGxvbmdlciBraWxsIHRoZSBwcm9maWxlLgoJKiBjZmdydC5jIChydGxfdmVyaWZ5X2Zsb3dfaW5mb18xKTogQ2hlY2sgcHJvZmlsZSBjb25zaXN0ZW5jeQoJb25seSBpZiBpdCBpcyBwcmVzZW50LgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfbG9vcF9vcHRpbWl6ZSk6IEtpbGwgdGhlIHByb2ZpbGUuCgkqIHByZWRpY3QuYyAoY29tYmluZV9wcmVkaWN0aW9uc19mb3JfaW5zbik6IFNldCB0aGUgcHJvYmFiaWxpdGllcwoJYmFzZWQgb24gUkVHX0JSX1BST0Igbm90ZSBpZiBwcmVzZW50LgoJKiBwcmVkaWN0LmMgKGJyYW5jaF9wcm9iKTogUHJvZmlsZSBpcyByZWFkIG9ubHkgd2l0aAoJZmxhZ19icmFuY2hfcHJvYmFiaWxpdGllcy4KCjIwMDQtMDktMjIgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBhY2xvY2FsLm00OiBBZGQgaW4gZ2V0dGV4dCdzIG00IGluY2x1ZGVzLgoJKEFDX0lDT05WLCBBQ19MQ01FU1NBR0VTLCBHQ0NfUEFUSF9QUk9HKTogUmVtb3ZlLgoJKiBjb25maWd1cmUuYWM6IEFkZCBpbiBjaGVjayBmb3IgaWNvbnYuaAoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTA5LTIyICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogYWNsb2NhbC5tNDogVXBkYXRlIGZvciByZW5hbWUgb2YgZ2V0dGV4dC1zaXN0ZXIubTQuCgoyMDA0LTA5LTIyICBEYW5pZWwgQmVybGluIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8xNzU4NwoJKiB0cmVlLXNzYS1wcmUuYyAoZmluaV9wcmUpOiBDb21taXQgZWRnZSBpbnNlcnRzIGhlcmUuCgkoaW5zZXJ0X2F1eCk6IEluc3RlYWQgb2YgaGVyZS4KCjIwMDQtMDktMjIgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE2NzIxCgkqIHRyZWUtZGZhLmMgKGR1bXBfdmFyaWFibGUpOiBTaG93IFRSRUVfVEhJU19WT0xBVElMRS4KCSogdHJlZS1zc2EtYWxpYXMuYyAoY3JlYXRlX21lbW9yeV90YWcpOiBNb3ZlIHNldHRpbmcgb2YKCVRSRUVfVEhJU19WT0xBVElMRSAuLi4KCShnZXRfdG10X2Zvcik6IC4uLiBoZXJlLgoKMjAwNC0wOS0yMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoY21vdmUgc3BsaXR0ZXIpOiBGaXggZm9ybWF0dGluZy4KCShjb25kaXRpb25hbF90cmFwIGV4cGFuZGVyKTogUmVqZWN0IGluYXBwcm9wcmlhdGUgQ0Ntb2Rlcy4KCShjb25kaXRpb25hbCB0cmFwIGluc24pOiBVc2UgVjkgc3ludGF4IGlmIHBvc3NpYmxlLgoKMjAwNC0wOS0yMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xNjU2NgoJKiBjLXR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRG9uJ3Qgc3BlY2lhbC1jYXNlCglDT01QT1VORF9FWFBSLgoKMjAwNC0wOS0yMiAgRnJhbmsgQ2guIEVpZ2xlciAgPGZjaGVAcmVkaGF0LmNvbT4KCgkqIGRvbWluYW5jZS5jICh2ZXJpZnlfZG9taW5hdG9ycyk6IERvbid0IFNFR1YgaWYgcmVjb3VudF9kb21pbmF0b3IKCXJldHVybnMgTlVMTC4KCjIwMDQtMDktMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvYy10cmVlLnRleGkgKFRSVVRIX05PVF9FWFBSLCBUUlVUSF9BTkRJRl9FWFBSLAoJVFJVVEhfT1JJRl9FWFBSLCBUUlVUSF9BTkRfRVhQUiwgVFJVVEhfT1JfRVhQUiwKCVRSVVRIX1hPUl9FWFBSKTogTWVudGlvbiB0aGUgcmVzdHJpY3Rpb24gb24gdHlwZXMuCgoyMDA0LTA5LTIyICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZGFyd2luX21ha2VfZGVjbF9vbmVfb25seSk6CglBbGxvdyBjb2FsZXNjZWQgc3ltYm9sIHRvIGFwcGVhciBpbiBzdGF0aWMgYXJjaGl2ZSdzIHRhYmxlIG9mIGNvbnRlbnRzCgoyMDA0LTA5LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE3NTEyCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogRG9uJ3QgaGFuZGxlIFRSVVRIXypfRVhQUiBhcwoJc3BlY2lhbCBjYXNlcy4KCjIwMDQtMDktMjIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGRieG91dC5jIChnZXRfbGFuZ19udW1iZXIpOiBEbyBub3QgZGVmaW5lIGlmCglEQlhfT1VUUFVUX01BSU5fU09VUkNFX0RJUkVDVE9SWSBpcyBkZWZpbmVkLgoKMjAwNC0wOS0yMiAgUmFsZiBDb3JzZXBpdXMgIDxjb3JzZXBpdUBmYXcudW5pLXVsbS5kZT4KCglQUiB0YXJnZXQvMTU1ODMKCSogY29uZmlnL3JzNjAwMC9ydGVtcy5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogQWRkCglidWlsdGluX2RlZmluZSAoIl9fVVNFX0lOSVRfRklOSV9fIikuCgoyMDA0LTA5LTIyICBQLkouIERhcmN5ICA8ZGFyY3lwakB1cy5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9lbWl0X3RwZl9laF9yZXR1cm4pOiBBZGQgcHJvdG90eXBlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZW1pdF90cGZfZWhfcmV0dXJuKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvczM5MC9zMzkwLmggKFRBUkdFVF9UUEYpOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJlaF9yZXR1cm4iKTogTmV3IGV4cGFuZGVyLgoJKiBjb25maWcvczM5MC90LXRwZiAoTElCMkFEREVIKTogVXNlIHVud2luZC1kdzItZmRlLmMgcmF0aGVyIHRoYW4KCXVud2luZC1kdzItZmRlLWdsaWJjLmMuICBBZGQgY29uZmlnL3MzOTAvdHBmLWVoLmMuCgkoTElCMkFEREVIREVQKTogUmVtb3ZlIHVud2luZC1kdzItZmRlLmMuCgkqIGNvbmZpZy9zMzkwL3RwZi5oIChUQVJHRVRfVFBGKTogRGVmaW5lIHRvIDEuCgkoU1RBQ0tfUE9JTlRFUl9PRkZTRVQpOiBJbmNyZWFzZSB0byA0NDguCgkoVEFSR0VUX0RFRkFVTFQpOiBTZXQgLW10cGYtdHJhY2Ugb24gYXMgZGVmYXVsdC4KCShUUEZfTE9DX0RJRkZfT0ZGU0VUKTogTmV3IG1hY3JvLgoJKEFTTV9QUkVGRVJSRURfRUhfREFUQV9GT1JNQVQpOiBSZWRlZmluZSB0byBhbHdheXMgdXNlIGFic29sdXRlCgllbmNvZGluZy4KCShfX2lzUEFUcmFuZ2UpOiBBZGQgcHJvdG90eXBlLgoJKE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUik6IERlZmluZS4KCSogY29uZmlnL3MzOTAvdHBmLWVoLmM6IE5ldyBmaWxlLgoKMjAwNC0wOS0yMiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBBdm9pZCBub24gSU5URUdFUl9UWVBFcyB3aGVuIHdpZGVuaW5nCglvcGVyYW5kcyBpbiBhbiBpbnRlZ2VyIGNvbXBhcmlzb24uCgkqIHRyZWUtY2ZnLmMgKGZpbmRfdGFrZW5fZWRnZSk6IENhbGwgZm9sZCgpIHRvIGRldGVybWluZQoJd2hldGhlciB0aGUgcHJlZGljYXRlIGlzIGtub3duLgoKMjAwNC0wOS0yMiAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGFjbG9jYWwubTQ6IEltcG9ydCBBTV9QUk9HX0NDX0NfTyBhbmQgQU1fQVVYX0RJUl9FWFBBTkQuCgkqIGNvbmZpZ3VyZS5hYzogQ2FsbCBBTV9QUk9HX0NDX0NfTyBpbnN0ZWFkIG9mIEFDX1BST0dfQ0NfQ19PLgoJQ3JlYXRlIGJ1aWxkIGFuZCBkb2MgZGlyZWN0b3JpZXMgYWxvbmcgd2l0aCB0aGUgbGFuZ3VhZ2UgZGlyZWN0b3JpZXMuCglEb24ndCBjcmVhdGUgZG9jIGRpcmVjdG9yeSBzZXBhcmF0ZWx5LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIE1ha2VmaWxlLmluOiBDcmVhdGUgYWxsIG9iamVjdCBhbmQgZXhlY3V0YWJsZXMgZmlsZXMgYnVpbHQKCXdpdGggdGhlIGJ1aWxkIGNvbXBpbGVyIGluIGEgYnVpbGQvIGRpcmVjdG9yeS4KCShnZW5vYmpuYW1lcyk6IEFkZCBtaXNzaW5nIGJ1aWxkIG9iamVjdHMuCgkoU1RBR0VTVFVGRik6IERvbid0IHN0YWdlIHRoZSBnZW4qIHByb2dyYW1zLgoJKGdnYy1ub25lLm8pOiBEZWZpbmUgZGVwZW5kZW5jaWVzIGZvciB0aGUgdGFyZ2V0IGNvbXBpbGVyLgoJKGJ1aWxkLXByaW50LXJ0bC5vKTogUmVuYW1lIHRvIGJ1aWxkL3ByaW50LXJ0bC5vLgoJKGJ1aWxkLWVycm9ycy5vKTogUmVuYW1lIHRvIGJ1aWxkL2Vycm9ycy5vLgoJKGJ1aWxkLXZhcnJheS5vKTogUmVuYW1lIHRvIGJ1aWxkL3ZhcnJheS5vLgoJKG1haW50YWluZXJjbGVhbik6IERlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KCSgkKGdlbm9ianMpOiAlLm8pOiBFeHBsaWNpdGx5IHVzZSAtby4KCShidWlsZC9pbnNuLWNvbmRpdGlvbnMubyk6IERlbGV0ZSBzcGVjZmljIHJ1bGUgdG8gdXNlIGdlbmVyaWMgcnVsZS4KCShidWlsZC9nZW5ndHlwZS1sZXgubyk6IExpa2V3aXNlLgoJKGJ1aWxkL2dlbmd0eXBlLXlhY2Mubyk6IExpa2V3aXNlLgoJKGJ1aWxkL2djb3YtaW92Lm8pOiBMaWtld2lzZS4KCjIwMDQtMDktMjIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2ZWMuaCAoVkVDX3NwYWNlKTogUmV0dXJuIHRydWUgaWYgdGhlcmUgX2lzXyBzcGFjZS4KCShWRUNfcmVzZXJ2ZSk6IEFkanVzdC4KCjIwMDQtMDktMjIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19mdW5jdGlvbl92YWx1ZSk6IEZvciBvMzIsIG82NCwgbjMyIGFuZCBuNjQsCgl1c2UgRlBScyBmb3Igc2NhbGFyLCBjb21wbGV4IGFuZCB2ZWN0b3IgdHlwZXMgb25seS4KCjIwMDQtMDktMjEgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWRvbS5jIChvcHRfc3RhdHMpOiBNb3ZlIHNvIHRoYXQgaXQgbGl2ZXMganVzdCBhZnRlcgoJdGhlIG9wdF9zdGF0c19kIHN0cnVjdHVyZS4KCSh2cnBfZGF0YSk6IENoYW5nZSBmcm9tIGEgdmFycmF5IGludG8gYSBoYXNoIHRhYmxlLgoJKHZycF9oYXNoX2VsdCk6IE5ldyBzdHJ1Y3R1cmUgZm9yIGVsZW1lbnRzIGluIHRoZSB2cnAgaGFzaCB0YWJsZS4KCSh2cnBfaGFzaCwgdnJwX2VxKTpOZXcgZnVuY3Rpb25zIGZvciBoYXNoaW5nIGFuZCB0ZXN0aW5nIGVxdWFsaXR5CglpbiB0aGUgdnJwIGhhc2ggdGFibGUuCgkodHJlZV9zc2FfZG9taW5hdG9yX29wdGltaXplKTogSW5pdGlhbGl6ZSBWUlBfREFUQS4gIFJlb3JnYW5pemUKCWluaXRpYWxpemF0aW9uIHNsaWdodGx5IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYWQuICBObyBsb25nZXIgbmVlZAoJdG8gZ3Jvdy9jbGVhciB0aGUgdmFycmF5LiAgSW5zdGVhZCBlbXB0eSBhbmQgZGVsZXRlIHRoZSBoYXNoIHRhYmxlLgoJKGRvbV9vcHRfZmluYWxpemVfYmxvY2spOiBVcGRhdGUgZHVlIHRvIGNoYW5nZSBvZiBWUlBfREFUQSBmcm9tCglhIHZhcnJheSB0byBhIGhhc2ggdGFibGUuCgkoc2ltcGxpZnlfY29uZF9hbmRfbG9vcF9hdmFpbF9leHByLCByZWNvcmRfcmFuZ2UpOiBTaW1pbGFybHkuCgoJKiB0cmVlLXNzYS1jY3AuYyAoZ2V0X2RlZmF1bHRfdmFsdWUpOiBJZiB3ZSBoYXZlIGEgY29uc3RhbnQKCXZhbHVlIHJlY29yZGVkIGZvciBhbiBTU0FfTkFNRSwgdGhlbiB1c2UgdGhhdCBjb25zdGFudCBhcwoJdGhlIGluaXRpYWwgbGF0dGljZSB2YWx1ZS4KCShzdWJzdGl0dXRlX2FuZF9mb2xkKTogVHJhbnNmZXIgZXF1aXZhbGVuY2VzIGRpc2NvdmVyZWQgaW50bwoJU1NBX05BTUVfRVFVSVYuCgoJKiB0cmVlLmggKFNTQV9OQU1FX0VRVUlWKTogQWRkIGNvbW1lbnRzLgoJKFNFVF9TU0FfTkFNRV9FUVVJVik6IFNpbWlsYXJseS4KCjIwMDQtMDktMjEgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChQUk9DRVNTT1JfREVGQVVMVDY0KTogRGVmYXVsdCB0byBQT1dFUjQuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfYWRqdXN0X2Nvc3QpOiBkZXBfaW5zbiBpcyB1c2VkLgoKMjAwNC0wOS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChpbXBsaWNpdHlsX2RlY2xhcmUpOiBDYWxsIG1heWJlX2FwcGx5X3JlbmFtaW5nX3ByYWdtYS4KCShmaW5pc2hfZGVjbCk6IExpa2V3aXNlLgoKMjAwNC0wOS0yMSAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIHRyZWUuZGVmIChWRUNfQ09ORF9FWFBSKTogTmV3IHRyZWUgbm9kZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMpOiBIYW5kbGUgVkVDX0NPTkRfRVhQUi4KCjIwMDQtMDktMjEgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi10cmFtcC5hc206IEFkZCBfX3BwYzY0X18gY2FzZS4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4td29ybGQuYXNtOiBMaWtld2lzZS4KCjIwMDQtMDktMjEgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EuYyAodmVyaWZ5X2RlZik6IFVzZSBwcmludF9nZW5lcmljX3N0bXQsCglub3QgZGVidWdfZ2VuZXJpY19zdG10LgoJKHZlcmlmeV91c2UpOiBEaXR0by4KCSh2ZXJpZnlfcGhpX2FyZ3MpOiBEaXR0by4KCSh2ZXJpZnlfc3NhKTogRGl0dG8uCgoyMDA0LTA5LTIxICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogdmFyYXNtLmMgKGRlZmF1bHRfYXNzZW1ibGVfaW50ZWdlcik6IFJldHVybiBmYWxzZSBmb3IgdmFsdWVzIHdpZGVyCgl0aGFuIHRoZSB0YXJnZXQgd29yZCBzaXplLiAgV29ya3MgYXJvdW5kIEdBUyBidWcuCgoyMDA0LTA5LTIxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcmVnLW5vdGVzLmRlZiAoUkVHX0RFUF9UUlVFKTogTmV3IGVudHJ5LCBwbGFjZSBmaXJzdCBzbyBpdAoJZ2V0cyB2YWx1ZSAwLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogUHJpbnQgdGhlIG5hbWUgb2YgYSBSRUdfTk9URSBldmVuCglpZiBpdCBoYXMgdmFsdWUgMC4KCjIwMDQtMDktMjEgIERhbmllbCBCZXJsaW4gPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBjLXR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsKTogR2l2ZSBuYW1lIG9mIG9iamVjdAoJd2UgYXJlIGF0dGVtcHRpbmcgdG8gY2FsbCBpbiBlcnJvciBtZXNzYWdlLgoJKiBjLW9iamMtY29tbW9uLmMgKGNfdHJlZV9wcmludGVyKTogQ2FsbCBwcF9leHByZXNzaW9uLAoJbm90IHJldHVybiBmYWxzZSwgZm9yICdFJyBjYXNlLgoKMjAwNC0wOS0yMSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTc0ODIKCSogcG9zdHJlbG9hZC1nY3NlLmMgKHJlZ19hdmFpbF9pbmZvLCBvcHJzX3VuY2hhbmdlZF9wLAoJbG9hZF9raWxsZWRfaW5fYmxvY2tfcCk6IENsYXJpZnkgY29tbWVudHMuCgkocmVjb3JkX2xhc3RfcmVnX3NldF9pbmZvKTogTWFrZSBzdGF0aWMgaW5saW5lLgoJKG1hcmtfY2FsbCwgbWFya19zZXQsIG1hcmtfY2xvYmJlciwgbWFya19vcHJzX3NldCk6IFJlbW92ZS4KCShyZWNvcmRfb3ByX2NoYW5nZXMpOiBOZXcgZnVuY3Rpb24gdG8gcmVwbGFjZSB0aGUgYWJvdmUuCgkoY29tcHV0ZV9oYXNoX3RhYmxlKTogQ2xhcmlmeSBjb21tZW50cy4gIFVzZSByZWNvcmRfb3ByX2NoYW5nZXMuCgkocmVnX3NldF9iZXR3ZWVuX2FmdGVyX3JlbG9hZF9wKTogQ2xlYW4gdXAuCgkocmVnX3VzZWRfYmV0d2Vlbl9hZnRlcl9yZWxvYWRfcCk6IExpa2V3aXNlLgoJKGVsaW1pbmF0ZV9wYXJ0aWFsbHlfcmVkdW5kYW50X2xvYWQpOiBDbGFyaWZ5IGNvbW1lbnRzLgoKMjAwNC0wOS0yMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE3MjY2CgkqIHJlZ21vdmUuYyAob3B0aW1pemVfcmVnX2NvcHlfMyk6IE1ha2UgYSBuZXcgU1VCUkVHIGZvciBlYWNoIGluc24uCgoyMDA0LTA5LTIxICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xNDg1MQoJKiBydGxhbmFsLmMgKGNvbW11dGF0aXZlX29wZXJhbmRfcHJlY2VkZW5jZSk6IENhbGN1bGF0ZQoJcHJlY2VkZW5jZSBvZiBzdHJpcHBlZCBjb25zdGFudC4KCjIwMDQtMDktMjAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCSAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtc3NhbmFtZXMuYyAobWFrZV9zc2FfbmFtZSk6IE5vIGxvbmdlciBuZWVkIHRvIGNsZWFyLCB0aGVuCglpbml0aWFsaXplIGtleSBlbGVtZW50cyBoZXJlLgoJKHJlbGVhc2Vfc3NhX25hbWUpOiBaZXJvIHRoZSByZWxlYXNlZCBTU0FfTkFNRSBoZXJlLgoJKiB0cmVlLmggKFNTQV9OQU1FX0VRVUlWLCBTRVRfU1NBX05BTUVfRVFVSVYpOiBOZXcgbWFjcm9zLgoJKHN0cnVjdCB0cmVlX3NzYV9uYW1lKTogQWRkIG5ldyAiZXF1aXYiIGZpZWxkLgoJKiB0cmVlLXNzYS1kb20uYyAoY29uc3RfYW5kX2NvcGllcyk6IEtpbGwgdGhlIGdsb2JhbCB2YXJyYXkuCgkodHJlZV9zc2FfZG9taW5hdG9yX29wdGltaXplKTogTm8gbG9uZ2VyIGFsbG9jYXRlLCByZXNpemUgb3IKCWNsZWFyIENPTlNUX0FORF9DT1BJRVMuCgkoZ2V0X3ZhbHVlX2Zvciwgc2V0X3ZhbHVlX2Zvcik6IEtpbGwuCgkodGhyZWFkX2Fjcm9zc19lZGdlKTogR2V0L3NldCB0aGUgZXF1aXZhbGVuY3kgdXNpbmcKCVNTQV9OQU1FX0VRVUlWIGFuZCBTRVRfU1NBX05BTUVfRVFVSVYuCgkocmVzdG9yZV92YXJzX3RvX29yaWdpbmFsX3ZhbHVlKTogTGlrZXdpc2UuCgkocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX3BoaXMpOiBMaWtld2lzZS4KCShyZWNvcmRfZG9taW5hdGluZ19jb25kaXRpb25zKTogTGlrZXdpc2UuCgkocmVjb3JkX2NvbnN0X29yX2NvcHksIHJlY29yZF9lcXVhbGl0eSk6IExpa2V3aXNlLgoJKGxvb2t1cF9hdmFpbF9leHByKTogTGlrZXdpc2UuCgkocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX3N0bXQsIGNwcm9wX29wZXJhbmQpOiBMaWtld2lzZS4KCShjcHJvcF9pbnRvX3N1Y2Nlc3Nvcl9waGlzKTogTm8gbG9uZ2VyIG5lZWQgdG8gcGFzcyBhcm91bmQKCUNPTlNUX0FORF9DT1BJRVMuICBDYWxsZXJzIHVwZGF0ZWQuIEdldCBlcXVpdmFsZW5jZXMgdmlhCglTU0FfTkFNRV9FUVVJVi4KCShjcHJvcF9pbnRvX3BoaXMpOiBMaWtld2lzZS4KCjIwMDQtMDktMjAgIE1hdHQgQXVzdGVybiA8YXVzdGVybkBhcHBsZS5jb20+CgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKGZpeF9zdHJpbmdfdHlwZSk6IEJ1aWxkIHRoZSB1bnF1YWxpZmllZCBhcnJheQoJdHlwZSB1bmNvbmRpdGlvbmFsbHksIHRoZW4gdXNlIGNfYnVpbGRfcXVhbGlmaWVkX3R5cGUgdG8gZ2V0Cgl0aGUgcHJvcGVyIGNvbnN0LXF1YWxpZmllZCB2YXJpYW50LCBhbmQgc2V0IGl0cwoJVFlQRV9NQUlOX1ZBUklBTlQgdG8gcmVmZXIgdG8gdGhlIHVucXVhbGlmaWVkIHR5cGUuCgkqIGMtbGV4LmMgKGNfbGV4X3JldHVybl9yYXdfc3RyaW5nKTogTmV3IGdsb2JhbC4KCShjX2xleF93aXRoX2ZsYWdzKTogSG9ub3IgaXQuCgkqIGMtcHJhZ21hLmg6IERlY2xhcmUgaXQuCgoyMDA0LTA5LTIwICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIE1ha2VmaWxlLmluOiBGaXggZmxhZ3MuaCBkZXBlbmRlbmNpZXMgdG8gYmUgJChGTEFHU19IKS4KCjIwMDQtMDktMjEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBtaWRkbGUtZW5kLzE3MTI2CgkqIHRyZWUtb3B0aW1pemUuYyAodXBkYXRlX2lubGluZWRfdG9fcG9pbnRlcnMpOiBGaXggdGhlIHJlY3Vyc2lvbi4KCSh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBDbGVhbnVwLgoKMjAwNC0wOS0yMCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX3NlbGVjdF9ydHhfc2VjdGlvbik6IFJlbW92ZS4KCShUQVJHRVRfQVNNX1NFTEVDVF9SVFhfU0VDVElPTik6IERvIG5vdCByZWRlZmluZS4KCjIwMDQtMDktMjAgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmMgKHNoX2V4cGFuZF9wcm9sb2d1ZSk6IEFkZCBhIFJFR19GUkFNRV9SRUxBVEVEX0VYUFIKCW5vdGUgdG8gcHJldGVuZCBhIGRpcmVjdCBzYXZlIGZyb20gdGhlIG9yaWdpbmFsIHJlZ2lzdGVyIHdoZW4gYW4KCWludGVybWVkaWF0ZSByZWdpc3RlciBpcyB1c2VkIGZvciB0aGUgc2F2ZS4KCjIwMDQtMDktMjAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHRzeXN0ZW0uaCAoYWxsb2NhKTogUHJvdmlkZSBhIGRlZmF1bHQgZGVmaW5pdGlvbi4KCglSZXZlcnQ6CgkyMDAxLTA4LTMxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgkgICAgKiB1bndpbmQtZHcyLmM6IENhbGwgX19idWlsdGluX2FsbG9jYSwgbm90IGFsbG9jYS4KCjIwMDQtMDktMjAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzE3NTU4CgkqIHRyZWUtc3NhLWNvcHkuYyAobWF5X3Byb3BhZ2F0ZV9jb3B5KTogT25seSBhbGxvdyBpZiB0aGUKCWFsaWFzaW5nIHNldHMgYXJlIHRoZSBzYW1lIHJhdGhlciB0aGFuIGp1c3QgY29uZmxpY3RpbmcuCgoyMDA0LTA5LTIwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgbWlkZGxlLWVuZC8xNjQ2MAoKCSogY2dyYXBoLmMgKGNncmFwaF91bm5lc3Rfbm9kZSk6IE5ldyBmdW5jdGlvbi4KCShjX2ZpbmFsaXplKTogUmVuYW1lIHRvIC4uLi4KCShjX3dhcm5fdW51c2VkX3Jlc3VsdF9yZWN1cnNpdmx5KTogLi4uIHRoaXMgb25lOyBkbyBvbmx5IHRoZSB3YXJuaW5nCgkoZmluaXNoX2Z1bmN0aW9uKTogRmluYWxpemUgdGhlIHRvcGxldmVsIGZ1bmN0aW9uOyBkbyBub3QgbG93ZXIgbmVzdGVkIHRyZWUuCgkqIGNncmFwaC5oIChjZ3JhcGhfdW5uZXN0X25vZGUpOiBEZWNsYXJlLgoJKiBjZ3JhcGh1bml0LmMgKGRlY2lkZV9pc19mdW5jdGlvbl9uZWVkZWQpOiBEbyBub3QgdXNlIGNncmFwaAoJbmVzdGVkbmVzcyBkYXRhc3RydWN0dXJlLgoJKiBjc2UuYyAoY3NlX2luc24pOiBEbyBub3QgY3Byb3Agbm9ubG9jYWwgTEFCRUxfUkVGcy4KCSogcmVsb2FkMS5jIChzZXRfbGFiZWxfb2Zmc2V0cyk6IEZpeCBjYWxsIG9mIHNldF9sYWJlbF9vZmZzZXRzLgoJKiB0cmVlLW5lc3RlZC5jIChmaW5saXplX25lc3RpbmdfdHJlZV8xKTogVXNlIHVuLW5lc3RpbmcgY29kZS4KCjIwMDQtMDktMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoc29tZV9zbWFsbF9zeW1ib2xpY19vcGVyYW5kX2ludCk6IFJlbmFtZQoJZnJvbSBzb21lX3NtYWxsX3N5bWJvbGljX29wZXJhbmRfMTsgZXhwb3J0LgoJKHNvbWVfc21hbGxfc3ltYm9saWNfb3BlcmFuZCk6IFJlbW92ZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChzb21lX3NtYWxsX3N5bWJvbGljX29wZXJhbmQgc3BsaXR0ZXIpOiBSZW1vdmUKCWV4dHJhIEMgY2hlY2suCgkqIGNvbmZpZy9hbHBoYS9wcmVkaWNhdGVzLm1kIChzb21lX3NtYWxsX3N5bWJvbGljX29wZXJhbmQpOiBOZXcuCgoyMDA0LTA5LTIwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwcmVkaWN0LmMgKHJldHVybl9wcmVkaWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGFwcGx5X3JldHVybl9wcmVkaWN0aW9uKTogTGlrZXdpc2UuCgkodHJlZV9iYl9sZXZlbF9wcmVkaWN0aW9ucyk6IExpa2V3aXNlLgoJKHRyZWVfZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBBZGQgbm9yZXR1cm4gZXhpdCBlZGdlczsgY2FsbAoJYmJfbGV2ZWxfcHJlZGljdGlvbnM7IGZpeCBsb2dpYyBvZiByZXR1cm4gaGV1cmlzdGljcy4KCShwcmVkaWN0X3BhdGhzX2xlYWRpbmdfdG8pOiBSZXNjdWVzY2UgZnJvbSBvbGQgQ1ZTIHZlcnNpb24gb2YKCXByb2Nlc3Nfbm90ZV9wcmVkaWN0aW9uIGZ1bmN0aW9uLgoJKiBwcmVkaWN0LmRlZiAoUFJFRF9UUkVFX0VBUkxZX1JFVFVSTik6IE5ldyBwcmVkaWN0b3IuCgoyMDA0LTA5LTIwICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2ZyYW1lX2luZm8pOiBBZGRlZCBhbGlnbm1lbnQgc3RhdGVtZW50IGZvcgoJZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgYXJlYSBvbiBzdGFjay4KCjIwMDQtMDktMjAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogcHJlZGljdC5jIChleHByX2V4cGVjdGVkX3ZhbHVlKTogVXNlICpfQ0xBU1NfUCBtYWNyb3MuCgoyMDA0LTA5LTIwICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHRyZWUtc3NhLXByZS5jIChjb21wdXRlX2FudGljX2F1eCk6IFVzZSBtYWxsb2MnZCB3b3JrbGlzdCwgdG8gYXZvaWQKCWdlbmVyYXRpbmcgdXNlbGVzcyBnYXJiYWdlLgoKMjAwNC0wOS0yMCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbik6IENhbGwgdGhlIG5ldyBvbW9ueW1vdXMKCXRhcmdldCBob29rIGZvciBtYWNoaW5lLWRlcGVuZGVudCBidWlsdC1pbnMuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0ZPTERfQlVJTFRJTik6IE5ldy4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIHRoZSBmb2xkX2J1aWx0aW4gaG9vay4KCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfZm9sZF9idWlsdGluKTogTmV3LgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9mb2xkX2J1aWx0aW4pOiBEZWNsYXJlIGl0LgoKMjAwNC0wOS0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNmZy5jLCB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYywgdHJlZS12ZWN0b3JpemVyLmM6IEZpeAoJY29tbWVudCB0eXBvcy4KCjIwMDQtMDktMjAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTc1NjUKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZGVmaW5lX2FzbV9hdHRyaWJ1dGVzKTogU2V0IGNhbl9kZWxheSB0byBuby4KCjIwMDQtMDktMjAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBSZW1vdmUgdW5uZWNlc2FyeSBjb2RlLgoKMjAwNC0wOS0xOSAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0b3JpemVyLmggKHN0bXRfdmVjX2luZm8pOiBBZGQgdmVjdF9kcl9iYXNlIGZpZWxkLgoJKFNUTVRfVklORk9fVkVDVF9EUl9CQVNFKTogRGVjbGFyZS4KCShWRUNUX1NNT0RVTE8pOiBEZWNsYXJlLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9jb21wdXRlX2FycmF5X3JlZl9hbGlnbm1lbnQpOiBOZXcgZnVuY3Rpb24uCgkodmVjdF9jb21wdXRlX2FycmF5X2Jhc2VfYWxpZ25tZW50KTogTmV3IGZ1bmN0aW9uLgoJKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZl9hY2Nlc3MpOiBDaGVjayBhcnJheSBpbmRpY2VzLiBSZW1vdmUgb25lCglkaW1lbnNpb25hbCBhcnJheXMgcmVzdHJpY3Rpb24uCgkodmVjdF9nZXRfcHRyX29mZnNldCk6IE5ldyBmdW5jdGlvbi4KCSh2ZWN0X2dldF9zeW1ibF9hbmRfZHIpOiBOZXcgZnVuY3Rpb24uCgkodmVjdF9nZXRfYmFzZV9hbmRfYml0X29mZnNldCk6IFN1cHBvcnQgYWRkaXRpb25hbCBkYXRhIHJlZnMuIFJlbmFtZWQKCShmb3JtZXIgbmFtZSB2ZWN0X2dldF9iYXNlX2RlY2xfYW5kX2JpdF9vZmZzZXQpLgoJKHZlY3RfY3JlYXRlX2luZGV4X2Zvcl9hcnJheV9yZWYpOiBSZW1vdmVkLgoJKHZlY3RfY3JlYXRlX2luZGV4X2Zvcl92ZWN0b3JfcmVmKTogTmV3IGZ1bmN0aW9uLgoJKHZlY3RfY3JlYXRlX2FkZHJfYmFzZV9mb3JfdmVjdG9yX3JlZik6IE5ldyBmdW5jdGlvbi4KCSh2ZWN0X2NyZWF0ZV9kYXRhX3JlZik6IEhhbmRsZSBhZGRpdGlvbmFsIGRhdGEgcmVmcy4gQ2FsbAoJdmVjdF9jcmVhdGVfaW5kZXhfZm9yX3ZlY3Rvcl9yZWYgYW5kIHZlY3RfY3JlYXRlX2FkZHJfYmFzZV9mb3JfdmVjdG9yX3JlZi4KCSh2ZWN0X2NvbXB1dGVfZGF0YV9yZWZfYWxpZ25tZW50KTogU3VwcG9ydCB0aGUgY2hhbmdlcy4gQ2FsbAoJdmVjdF9nZXRfYmFzZV9hbmRfYml0X29mZnNldC4KCSh2ZWN0X2FuYWx5emVfZGF0YV9yZWZzKTogQ2FsbCB2ZWN0X2dldF9zeW1ibF9hbmRfZHIuIFN1cHBvcnQgYWRkaXRpb25hbAoJZGF0YSByZWZzLiBTdG9yZSB2ZWN0X2RyX2Jhc2UuCgkodmVjdF9hbmFseXplX2RhdGFfcmVmX2FjY2Vzc2VzKTogU3VwcG9ydCBub25jb25zdGFudCBpbml0LgoJKG5ld19zdG10X3ZlY19pbmZvKTogSW5pdGlhbGl6ZSB2ZWN0X2RyX2Jhc2UgZmllbGQuCgkodmVjdF9pc19zaW1wbGVfaXZfZXZvbHV0aW9uKTogQ2FsbCBpbml0aWFsX2NvbmRpdGlvbl9pbl9sb29wX251bS4KCShnZXRfdmVjdHlwZV9mb3Jfc2NhbGFyX3R5cGUpOiBDaGVjayBmb3IgQkxLbW9kZS4KCSogdHJlZS1jaHJlYy5oIChpbml0aWFsX2NvbmRpdGlvbl9pbl9sb29wX251bSk6IERlY2xhcmUuCgkqIHRyZWUtY2hyZWMuYyAoaW5pdGlhbF9jb25kaXRpb25faW5fbG9vcF9udW0pOiBOZXcgZnVuY3Rpb24uCgkoY2hyZWNfY29tcG9uZW50X2luX2xvb3BfbnVtKTogTmV3IGZ1bmN0aW9uLgoJKGV2b2x1dGlvbl9wYXJ0X2luX2xvb3BfbnVtKTogQ2FsbCBjaHJlY19jb21wb25lbnRfaW5fbG9vcF9udW0uCgkqIHRyZWUtZGF0YS1yZWYuYyAoYW5hbHl6ZV9hcnJheV9pbmRleGVzKTogQ2hhbmdlIHBhcmFtZXRlciAoYWNjZXNzX2ZucykKCXRvIGJlIHBvaW50ZXIgdG8gdmFycmF5X3R5cGUuCgoyMDA0LTA5LTE5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBiYXNpYy1ibG9jay5oICh1cGRhdGVfYmJfcHJvZmlsZV9hZnRlcl90aHJlYWRpbmcpOiBEZWNsYXJlLgoJKiBjZmcuYyAodXBkYXRlX2JiX3Byb2ZpbGVfYWZ0ZXJfdGhyZWFkaW5nKTogQnJlYWsgb3V0IGZyb20gLi4uCgkqIGNmZ2NsZWFudXAuYyAodHJ5X2ZvcndhcmRfZWRnZXMpOiAuLi4gaGVyZTsgdXNlIGl0LgoJKiB0cmVlLXNzYS1kb20uYyAodGhyZWFkX2Fjcm9zc19lZGdlKTogVXNlIGl0LgoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAoY3JlYXRlX2Jsb2NrX2Zvcl90aHJlYWRpbmcpOiBaZXJvIG91dAoJcHJvZmlsZSBvZiB0aGUgbmV3IEJCLgoKMjAwNC0wOS0xOSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1wcmUuYyAoaW5zZXJ0X2ludG9fc2V0KTogRG9uJ3QgcHV0Cglpc19naW1wbGVfbWluX2ludmFyaWFudCB2YWx1ZXMgaW50byB0aGUgc2V0LgoKMjAwNC0wOS0xOSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogdHJlZS1zc2EtZG9tLmMgKHJlc3RvcmVfbm9uemVyb192YXJzX3RvX29yaWdpbmFsX3ZhbHVlKTogRml4Cglwcm90b3R5cGUuCgoyMDA0LTA5LTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2NyaXMvY3Jpcy5oOiBQcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3BlbGxpbmcgaW4gYQoJcXVvdGUuCgoyMDA0LTA5LTE4IEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1kb20uYyAobm9uemVyb192YXJzX3N0YWNrLCB2cnBfdmFyaWFibGVzX3N0YWNrKTogTmV3CglnbG9iYWwgdmFycmF5cyB0byByZXBsYWNlIHRoZSBibG9jayBsb2NhbCB2YXJyYXlzLgoJKHN0cnVjdCBkb21fd2Fsa19ibG9ja19kYXRhKTogUmVtb3ZlLCBubyBsb25nZXIgdXNlZC4KCShnZXRfZXFfZXhwcl92YWx1ZSk6IE5vIGxvbmdlciBuZWVkIHRvIHBhc3MgYXJvdW5kIHBvaW50ZXJzIHRvIGxvY2FsCgl2YXJyYXlzLiAgQ2FsbGVycyB1cGRhdGVkLiAgVW51c2VkIG1hcmtlcnMgYWRkZWQgdG8gdW51c2VkIHBhcmFtZXRlcnMuCgkocmVjb3JkX3JhbmdlLCByZWNvcmRfZXF1aXZhbGVuY2VzX2Zyb21fc3RtdCk6IExpa2V3aXNlLgoJKHJlY29yZF9lcXVpdmFsZW5jZXNfZnJvbV9pbmNvbWluZ19lZGdlKTogTGlrZXdpc2UuCgkocmVjb3JkX3Zhcl9pc19ub256ZXJvKTogTGlrZXdpc2UuICBVcGRhdGUgbm93IHRoYXQgd2UgaGF2ZSBhCglzaW5nbGUgZ2xvYmFsIHZhcnJheSBvZiBTU0FfTkFNRXMgdGhhdCBuZWVkIHJlc3RvcmluZy4KCShkb21fb3B0X2luaXRpYWxpemVfYmxvY2tfbG9jYWxfZGF0YSk6IEtpbGwsIG5vIGxvbmdlciB1c2VkLgoJKHRyZWVfc3NhX2RvbWluYXRvcl9vcHRpbWl6ZSk6IEluaXRpYWxpemUgbmV3IGdsb2JhbCB2YXJyYXlzLgoJVXBkYXRlIGNhbGxiYWNrcyBpbiBkb21pbmF0b3Igd2Fsa2VyIHN0cnVjdHVyZS4KCShkb21fb3B0X2luaXRpYWxpemVfYmxvY2spOiBBZGQgbWFya2VycyB0byBOT05aRVJPX1ZBUl9TVEFDSyBhbmQKCVZSUF9WQVJJQUJMRVNfU1RBQ0suCgkocmVzdG9yZV9ub256ZXJvX3ZhcnNfdG9fb3JpZ2luYWxfdmFsdWUpOiBVcGRhdGUgbm93IHRoYXQgd2UgaGF2ZQoJYSBzaW5nbGUgZ2xvYmFsIHZhcnJheSBvZiBTU0FfTkFNRXMgdGhhdCBuZWVkIHJlc3RvcmluZy4KCShkb21fb3B0X2ZpbmFsaXplX2Jsb2NrKTogU2ltaWxhcmx5IGZvciBWUlBfVkFSSUFCTEVTX1NUQUNLLgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkob3B0aW1pemVfc3RtdCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgoyMDA0LTA5LTE4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLWNmZy5jICh0aHJlYWRfanVtcHMpOiBGaXggdXBkYXRpbmcgb2YgdGhlIHByb2ZpbGUuCgoJKiB0cmVlLW9wdGltaXplLmMgKHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbik6IEtpbGwgZm9yZ290dGVuCgl2ZXJpZnlfY2dyYXBoIGNhbGwuCgoyMDA0LTA5LTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYWxpYXMuYywgY3J0c3R1ZmYuYywgZGJ4b3V0LmMsIGRvbXdhbGsuYywgZG9td2Fsay5oLCBnY2MuYywKCWdjc2UuYywgZ2xvYmFsLmMsIGxhbWJkYS1jb2RlLmMsIGxvb3AuYywgbWlwcy10ZHVtcC5jLAoJb3B0YWJzLmgsIHByZWRpY3QuYywgcmVnLXN0YWNrLmMsIHJlZ2NsYXNzLmMsIHNjaGVkLXJnbi5jLAoJdHJlZS1vcHRpbWl6ZS5jLCB0cmVlLXNzYS1kb20uYywgdHJlZS1zc2EtZm9yd3Byb3AuYywKCXRyZWUtc3NhLW9wZXJhbmRzLmMsIHRyZWUtc3NhLXBoaW9wdC5jLAoJdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNC0wOS0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9kYXJ3aW4tYy5jLCBjb25maWcvYXJjL2FyYy5jLCBjb25maWcvYXJjL2FyYy5tZCwKCWNvbmZpZy9hcm0vUkVBRE1FLWludGVyd29ya2luZywgY29uZmlnL2FybS9hcm0tY29yZXMuZGVmLAoJY29uZmlnL2FybS9hcm0uYywgY29uZmlnL2FybS9hcm0uaCwgY29uZmlnL2FybS9wZS5jLAoJY29uZmlnL2FybS92ZnAubWQsIGNvbmZpZy9jNHgvYzR4LmMsIGNvbmZpZy9jNHgvYzR4LmgsCgljb25maWcvY3Jpcy9jcmlzLmMsIGNvbmZpZy9jcmlzL2NyaXMuaCwgY29uZmlnL2ZyMzAvZnIzMC5jLAoJY29uZmlnL2ZyMzAvZnIzMC5oLCBjb25maWcvZnIzMC9mcjMwLm1kLCBjb25maWcvZnJ2L2Zydi5jLAoJY29uZmlnL2Zydi9mcnYubWQsIGNvbmZpZy9pMzg2L3dpbm50LmMsCgljb25maWcvaWE2NC91bndpbmQtaWE2NC5jLCBjb25maWcvaXEyMDAwL2lxMjAwMC5jLAoJY29uZmlnL2lxMjAwMC9pcTIwMDAuaCwgY29uZmlnL202OGhjMTEvbTY4aGMxMS5jLAoJY29uZmlnL202OGhjMTEvbTY4aGMxMS5tZCwgY29uZmlnL202OGsvbTY4ay5jLAoJY29uZmlnL21jb3JlL21jb3JlLmMsIGNvbmZpZy9taXBzL21pcHMuaCwKCWNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQsIGNvbmZpZy9wYS9wYS5jLAoJY29uZmlnL3BhL3BhNjQtcmVncy5oLCBjb25maWcvcGRwMTEvcGRwMTEuYywKCWNvbmZpZy9yczYwMDAvcnM2MDAwLmMsIGNvbmZpZy9zaC9zeW1iaWFuLmMsCgljb25maWcvc3BhcmMvc3BhcmMuaDogRml4IGNvbW1lbnQgdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcKCWNvbnZlbnRpb25zLgoKMjAwNC0wOS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xNzQyNAoJKiBjLXR5cGVjay5jIChjX2V4cHJfc2l6ZW9mX2V4cHIpOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlLgoKMjAwNC0wOS0xOCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1hbGlhcy5jIChzZXR1cF9wb2ludGVyc19hbmRfYWRkcmVzc2FibGVzKTogRG9uJ3QKCXJlbW92ZSBUUkVFX0FERFJFU1NBQkxFIGZyb20gUkVTVUxUX0RFQ0wuCgoyMDA0LTA5LTE4ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGR1bXBfYWxpYXNfaW5mbyk6IElnbm9yZSBOVUxMIFNTQV9OQU1Fcy4KCjIwMDQtMDktMTggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtaW50by1zc2EuYyAocmV3cml0ZV9zc2FfaW50b19zc2EpOiBFeHBlY3Qgc3NhX25hbWUgdG8gcmV0dXJuCglOVUxMLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChpbml0X2FsaWFzX2luZm8pOiBMaWtld2lzZS4KCSogdHJlZS1zc2EuYyAodmVyaWZ5X2Zsb3dfc2Vuc2l0aXZlX2FsaWFzX2luZm8pOiBMaWtld2lzZS4KCSh2ZXJpZnlfc3NhKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhbmFtZXMuYyAobWFrZV9zc2FfbmFtZSk6IENsZWFyIG91dCBzc2FfbmFtZXMgYXJyYXlzLgoKMjAwNC0wOS0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogRml4IHNwbGl0dGluZyBvZiBQTFVTIHdpdGgKCWh1Z2Ugb2Zmc2V0LgoKMjAwNC0wOS0xOCAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvbGludXguaCAoQVNNX1BSRUZFUlJFRF9FSF9EQVRBX0ZPUk1BVCk6IFJlbW92ZS4KCSogY29uZmlnL3NoL3NoLmggKEFTTV9QUkVGRVJSRURfRUhfREFUQV9GT1JNQVQpOiBVc2UKCURXX0VIX1BFX3NkYXRhKiBmb3IgZGF0YS4KCShBU01fTUFZQkVfT1VUUFVUX0VOQ09ERURfQUREUl9SVFgpOiBMaWtld2lzZS4KCjIwMDQtMDktMTcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogdHJlZS1pbmxpbmUuYyAoY29weV90cmVlX3IpOiBEb24ndCBkdXBsaWNhdGUgY29uc3RhbnRzLCB0aGV5J3JlCglzaGFyZWQgYW55d2F5LgoKCVBSIHBjaC8xMzM2MQoJKiBjLXR5cGVjay5jIChjb25zdHJ1Y3Rvcl9hc21zcGVjKTogRGVsZXRlLgoJKHN0cnVjdCBpbml0aWFsaXplcl9zdGFjayk6IERlbGV0ZSBmaWVsZCAnYXNtc3BlYycuCgkoc3RhcnRfaW5pdCk6IERlbGV0ZSBzYXZpbmcgb2YgYXNtc3BlYy4KCShmaW5pc2hfaW5pdCk6IERvbid0IHVwZGF0ZSBjb25zdHJ1Y3Rvcl9hc21zcGVjLgoJKiBkd2FyZjJvdXQuYyAocnRsX2Zvcl9kZWNsX2xvY2F0aW9uKTogRHVwbGljYXRlIHN0cmluZyBmcm9tIHRyZWUuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbSk6IER1cGxpY2F0ZSBzdHJpbmdzIGZyb20gdHJlZS4KCShleHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAodHJlZV9zaXplKTogVXBkYXRlIGNvbXB1dGF0aW9uIG9mIHNpemUgb2YgU1RSSU5HX0NTVC4KCShtYWtlX25vZGUpOiBEb24ndCBtYWtlIFNUUklOR19DU1Qgbm9kZXMuCgkoYnVpbGRfc3RyaW5nKTogQWxsb2NhdGUgc3RyaW5nIHdpdGggdHJlZSBub2RlLgoJKHRyZWVfY29kZV9zaXplKTogQ2xlYW4gdXAgYXNzZXJ0aW9ucywgZG9uJ3QgYWxsb3cgcmVxdWVzdHMKCWZvciAidGhlIHNpemUgb2YgYSBTVFJJTkdfQ1NUIi4KCSogdHJlZS5kZWYgKFNUUklOR19DU1QpOiBVcGRhdGUgY29tbWVudC4KCSogdHJlZS5oIChUUkVFX1NUUklOR19QT0lOVEVSKTogQWRqdXN0IGZvciBjaGFuZ2UgdG8gU1RSSU5HX0NTVC4KCSh0cmVlX3N0cmluZyk6IFBsYWNlIGNvbnRlbnRzIG9mIHN0cmluZyBpbiB0cmVlIG5vZGUuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9oYW5kbGVfc3Bfc3dpdGNoX2F0dHJpYnV0ZSk6IER1cGxpY2F0ZSBzdHJpbmcKCWZyb20gdHJlZS4KCjIwMDQtMDktMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYy1wYXJzZS5vKTogRGVwZW5kIG9uICQoQ19QUkFHTUFfSCkuCgkqIG9iamMvTWFrZS1sYW5nLmluIChvYmpjL29iamMtcGFyc2Uubyk6IExpa2V3aXNlLgoKMjAwNC0wOS0xNyAgSm9uZXMgRGVzb3VnaSAgPGpvbmVzQGluZ2F0ZS5jb20+CgoJKiBjb25maWd1cmUuYWM6IFJlcGxhY2UgQUNfQ09NUElMRV9DSEVDS19TSVpFT0Ygd2l0aCBBQ19DSEVDS19TSVpFT0YuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwNC0wOS0xNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYywgdHJlZS5oICh0cmVlX2NsYXNzX3N0cmluZ3MpOiBNYWtlIGFycmF5IGNvbnN0LgoJUmVpbmRlbnQgcGVyIGNvZGluZyBjb252ZW50aW9uLiAgTW92ZSBhc3RlcmlzayB0byBwcm9wZXIgcGxhY2UKCXBlciBjb2RpbmcgY29udmVudGlvbi4KCjIwMDQtMDktMTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoZ2ltcGxlLWxvdy5vKTogRGVwZW5kIG9uICQoRVhQUl9IKS4KCSh0cmVlLXZlY3Rvcml6ZXIubyk6IExpa2V3aXNlLgoJKHRhcmdob29rcy5vKTogTGlrZXdpc2UuCgoyMDA0LTA5LTE3ICBKZWZmcmV5IEQuIE9sZGhhbSAgPG9sZGhhbUBjb2Rlc291cmNlcnkuY29tPgoJICAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBhbGlhcy5jIChmaW5kX2Jhc2VfZGVjbCk6IFJlbW92ZSB1bnJlYWNoYWJsZSBjYXNlICczJyBibG9jay4KCSogZXhwci5jIChzYWZlX2Zyb21fcCk6IEFib3J0IGlmIHBhc3NlZCBhIHR5cGUuCgkqIHRyZWUtZ2ltcGxlLmMgKHJlY2FsY3VsYXRlX3NpZGVfZWZmZWN0cyk6IEFib3J0IGlmIHBhc3NlZAoJYW55dGhpbmcgb3RoZXIgdGhhbiBhbiBleHByZXNzaW9uLgoJKiB0cmVlLXNzYS1wcmUuYyAocGhpX3RyYW5zbGF0ZSk6IFJldHVybiBleHByIGltbWVkaWF0ZWx5IGlmCglpc19naW1wbGVfbWluX2ludmFyaWFudCBpcyB0cnVlIGZvciBpdC4gIFJlb3JkZXIgY2FzZXMgZm9yIGNsYXJpdHkuCglBYm9ydCBvbiB1bi1oYW5kbGVkIHRyZWUgY2xhc3Nlcy4KCSh2YWxpZF9pbl9zZXQpOiBMaWtld2lzZS4KCSogdHJlZS5jICh0cmVlX2NvZGVfY2xhc3Nfc3RyaW5ncyk6IE5ldyBzdGF0aWMgZGF0YS4KCgkqIHRyZWUuaCAoZW51bSB0cmVlX2NvZGVfY2xhc3MpOiBOZXcuCgkodHJlZV9jb2RlX2NsYXNzX3N0cmluZ3MpOiBEZWNsYXJlLgoJKFRSRUVfQ09ERV9DTEFTU19TVFJJTkcsIEVYQ0VQVElPTkFMX0NMQVNTX1AsIENPTlNUQU5UX0NMQVNTX1ApCgkoUkVGRVJFTkNFX0NMQVNTX1AsIENPTVBBUklTT05fQ0xBU1NfUCwgVU5BUllfQ0xBU1NfUCwgQklOQVJZX0NMQVNTX1ApCgkoU1RBVEVNRU5UX0NMQVNTX1AsIEVYUFJFU1NJT05fQ0xBU1NfUCwgSVNfVFlQRV9PUl9ERUNMX1ApOiBOZXcgbWFjcm9zLgoJKFRZUEVfUCwgREVDTF9QLCBJU19OT05fVFlQRV9DT0RFX0NMQVNTLCBJU19FWFBSX0NPREVfQ0xBU1MpCgkoY2hlY2tpbmcgbWFjcm9zLCBFWFBSX0xPQ0FUSU9OLCBTRVRfRVhQUl9MT0NBVElPTiwgRVhQUl9MT0NVUyk6IFVwZGF0ZS4KCgkqIHRyZWUuZGVmLCBjLWNvbW1vbi5kZWYsIG9iamMvb2JqYy10cmVlLmRlZjogVXNlCgl0cmVlX2NvZGVfY2xhc3MgZW51bWVyYXRpb24gY29uc3RhbnRzIGluc3RlYWQgb2YgY29kZSBsZXR0ZXJzLgoKCSogYWxpYXMuYywgYnVpbHRpbnMuYywgYy1jb21tb24uYywgYy1mb3JtYXQuYywgYy1sYW5nLmMsIGMtcHJhZ21hLmMKCSogYy10eXBlY2suYywgY2dyYXBodW5pdC5jLCBjb252ZXJ0LmMsIGRieG91dC5jLCBkd2FyZjJvdXQuYwoJKiBlbWl0LXJ0bC5jIGV4cHIuYywgZm9sZC1jb25zdC5jLCBnaW1wbGlmeS5jLCBsYW1iZGEtY29kZS5jCgkqIGxhbmdob29rcy5jLCBsYW5naG9va3MuaCwgcHJlZGljdC5jLCBwcmludC10cmVlLmMsIHJlbG9hZDEuYywgc3RtdC5jCgkqIHRyZWUtYnJvd3Nlci5jLCB0cmVlLWNmZy5jLCB0cmVlLWNocmVjLmMsIHRyZWUtY29tcGxleC5jLCB0cmVlLWRmYS5jCgkqIHRyZWUtZHVtcC5jLCB0cmVlLWVoLmMsIHRyZWUtZ2ltcGxlLmMsIHRyZWUtaW5saW5lLmMsIHRyZWUtbmVzdGVkLmMKCSogdHJlZS1vdXRvZi1zc2EuYywgdHJlZS1wcmV0dHktcHJpbnQuYywgdHJlZS1zcmEuYywgdHJlZS1zc2EtY2NwLmMKCSogdHJlZS1zc2EtZGNlLmMsIHRyZWUtc3NhLWRvbS5jLCB0cmVlLXNzYS1mb3J3cHJvcC5jLCB0cmVlLXNzYS1saXZlLmMKCSogdHJlZS1zc2EtbG9vcC1pbS5jLCB0cmVlLXNzYS1sb29wLWl2b3B0cy5jLCB0cmVlLXNzYS1vcGVyYW5kcy5jCgkqIHRyZWUtc3NhLXBoaW9wdC5jLCB0cmVlLXNzYS1wcmUuYywgdHJlZS1zc2EtcHJvcGFnYXRlLmMKCSogdHJlZS1zc2EuYywgdHJlZS1zc2FuYW1lcy5jLCB0cmVlLXRhaWxjYWxsLmMsIHRyZWUuYywgdmFyYXNtLmMKCSogY29uZmlnL3NvbDItYy5jLCBjb25maWcvYXJtL2FybS5jLCBjb25maWcvaTM4Ni93aW5udC5jCgkqIGNvbmZpZy9wYS9wYS5jLCBjb25maWcvcGEvcGEuaCwgY29uZmlnL3NoL3NoLmMsIG9iamMvb2JqYy1sYW5nLmMKCVVwZGF0ZSB0byBtYXRjaC4KCgkqIExBTkdVQUdFUzogQWRkIG5vdGUgYWJvdXQgY2hhbmdlLgoKMjAwNC0wOS0xNyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTczMTkKCSogdHJlZS1zc2EtYWxpYXMuYyAoY29tcHV0ZV9wb2ludHNfdG9fYW5kX2FkZHJfZXNjYXBlKTogQWxzbwoJZXhhbWluZSBwb2ludGVycyBvbiB0aGUgTEhTIG9mIGFuIGFzc2lnbm1lbnQuCgkoY29sbGVjdF9wb2ludHNfdG9faW5mb19yKTogSGFuZGxlIFJFVFVSTl9FWFBSLgoKMjAwNC0wOS0xNyBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtZG9tLmMgKGNvbnN0X2FuZF9jb3BpZXNfc3RhY2spOiBOZXcuCgkoZG9tX3dhbGtfYmxvY2tfZGF0YSk6IFJlbW92ZSBjb25zdF9hbmRfY29waWVzIGZpZWxkLgoJKHJlY29yZF9jb25zdF9vcl9jb3B5KTogTm8gbG9uZ2VyIG5lZWQgdG8gcGFzcyBpbiB2YXJyYXlfdHlwZSAqLgoJVXNlIENPTlNUX0FORF9DT1BJRVNfU1RBQ0sgcmF0aGVyIHRoYW4gcGFzc2VkIGluIGJsb2NrIGxvY2FsIHN0YWNrLgoJQ2FsbGVycyB1cGRhdGVkLgoJKHJlY29yZF9lcXVhbGl0eSk6IFNpbWlsYXJseS4KCShyZXN0b3JlX3ZhcnNfdG9fb3JpZ2luYWxfdmFsdWUpOiBTaW1pbGFybHkuICBSZXZhbXAgdG8gdXNlIG5ldwoJc2luZ2xlIGdsb2JhbCBzdGFjayByYXRoZXIgdGhhbiBwZXItYmxvY2sgc3RhY2tzLgoJKHRyZWVfc3NhX2RvbWluYXRvcl9vcHRpbWl6ZSk6IEluaXRpYWxpemUgdGhlIENPTlNUX0FORF9DT1BJRVNfU1RBQ0suCgkodGhyZWFkX2Fjcm9zc19lZGdlKTogUmVtb3ZlIG5vdyB1bnVzZWQgcGFyYW1ldGVycy4KCShkb21fb3B0X2luaXRpYWxpemVfYmxvY2tfbG9jYWxfZGF0YSk6IE5vIGxvbmdlciB0ZXN0IHRoZSBibG9jawoJbG9jYWwgQ09OU1RfQU5EX0NPUElFUy4KCShkb21fb3B0X2luaXRpYWxpemVfYmxvY2spOiBQdXNoIGEgbWFya2VyIG9uIENPTlNUX0FORF9DT1BJRVNfU1RBQ0suCgoyMDA0LTA5LTE3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTc1MDkKCSogdHJlZS1vcHRpbWl6ZS5jICh1cGRhdGVfaW5saW5lZF90b19wb2ludGVycyk6IE5ldyBmdW5jdGlvbi4KCSh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBVc2UgaXQuCgoyMDA0LTA5LTE3ICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogZGJ4b3V0LmMgKGdldF9sYW5nX251bWJlcik6IE5ldy4KCShkYnhvdXRfaW5pdCk6IEluY2x1ZGUgbGFuZyBudW1iZXIgaW4gTl9TTyAgc3RhYi4KCSogZGJ4b3V0LmggKE5fU09fQVMsIE5fU09fQywgTl9TT19BTlNJX0MsIE5fU09fQ0MsIE5fU09fRk9SVFJBTiwKCU5fU09fUEFTQ0FMLCBOX1NPX0ZPUlRSQU45MCwgTl9TT19PQkpDLCBOX1NPX09CSkNQTFVTKTogTmV3ICNkZWZpbmUuCgoyMDA0LTA5LTE3ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNzI3MwoJKiB0cmVlLXNzYS5jIChyZXBsYWNlX2ltbWVkaWF0ZV91c2VzKTogQ2FsbCBmb2xkX3N0bXQgaWYgdGhlCglyZXBsYWNlbWVudCBpcyBhIGNvbnN0YW50LgoKMjAwNC0wOS0xNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLXRyZWUuaCAoZW51bSBjX3R5cGVzcGVjX2tleXdvcmQpOiBOZXcuCgkoc3RydWN0IGNfZGVjbHNwZWNzKTogQWRqdXN0IGRlc2NyaXB0aW9uIG9mICJ0eXBlIi4gIFJlbW92ZQoJc3BlY2JpdHMsIGV4cGxpY2l0X2ludF9wIGFuZCBleHBsaWNpdF9jaGFyX3AuICBSZW5hbWUKCXR5cGVkZWZfc2lnbmVkX3AgdG8gZXhwbGljaXRfc2lnbmVkX3AuICBBZGQgZGVmYXVsdF9pbnRfcCwgbG9uZ19wLAoJc2hvcnRfcCwgc2lnbmVkX3AsIHVuc2lnbmVkX3AgYW5kIGNvbXBsZXhfcC4KCShmaW5pc2hfZGVjbHNwZWNzKTogTmV3LgoJKiBjLXBhcnNlLmluIChkYXRhZGVmLCBkYXRhZGVjbCwgc2V0c3BlY3MsIGRlY2wsIGNvbXBvbmVudF9kZWNsLAoJdHlwZW5hbWUpOiBDYWxsIGZpbmlzaF9kZWNsc3BlY3MuCgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbHNwZWNzKTogTmV3LgoJKGRlY2xzcGVjc19hZGRfdHlwZSk6IENoZWNrIGZvciBjb21iaW5hdGlvbnMgd2hpY2ggY2Fubm90IG9jY3VyIGluCgl2YWxpZCBzcGVjaWZpZXIgbGlzdHMuICBVcGRhdGUgY29tbWVudHMuCgkoc2hhZG93X3RhZ193YXJuZWQpOiBSZW1vdmUgY2hlY2tzIGRvbmUgaW4gZmluaXNoX2RlY2xzcGVjcy4KCURvbid0IHJlcG9ydCB1c2VsZXNzIHR5cGUgbmFtZSBpZiB0eXBlIGRlZmF1bHRlZCB0byBpbnQuCgkoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgY2hlY2tzIGFuZCBhY3Rpb25zIGRvbmUgaW4KCWZpbmlzaF9kZWNsc3BlY3MuICBEb24ndCBhbGxvdyBmb3IgdHlwZSBiZWluZyBOVUxMLiAgVXBkYXRlIGZvcgoJZGF0YXN0cnVjdHVyZXMgY2hhbmdlcy4gIEluaXRpYWxpemUgZGVjbF9hdHRyLgoJKGJ1aWxkX251bGxfZGVjbHNwZWNzLCBxdWFsc19mcm9tX2RlY2xzcGVjcyk6IFVwZGF0ZSBmb3IKCWRhdGFzdHJ1Y3R1cmVzIGNoYW5nZXMuCgoyMDA0LTA5LTE3ICBTeWx2YWluIFBpb24gIDxTeWx2YWluLlBpb25Ac29waGlhLmlucmlhLmZyPgoKCSogZG9jL2V4dGVuZC50ZXhpOiBGaXggZHVwbGljYXRlZCB3b3JkLgoKMjAwNC0wOS0xNyAgVG9vbiBNb2VuZSAgPHRvb25AbW9lbmUuaW5kaXYubmx1dWcubmw+CgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZSBzdHJheSBleHBsYW5hdGlvbiBvbgoJLWZyZWR1Y2UtYWxsLWdpdnMgYW5kIC1mbW92ZS1hbGwtbW92YWJsZXMuCgoyMDA0LTA5LTE3ICBKYW1lcyBNb3JyaXNvbiAgPHBoeXRob25AZ2NjLmdudS5vcmc+CgoJKiBkb2MvY2ZnLnRleGk6IFVzZSBAc21hbGxleGFtcGxlLgoJKiBkb2MvbWQudGV4aTogTGlrZXdpc2UuCgkqIGRvYy90cmVlLXNzYS50ZXhpOiBMaWtld2lzZS4KCSogZG9jL2V4dGVuZC50ZXhpOiBMaWtld2lzZS4gIFVzZSBAcnt9IGluIGNvbW1lbnRzLgoJKiBkb2MvdHJvdWJsZS50ZXhpOiBVc2UgQHJ7fSBpbiBjb21tZW50cy4KCjIwMDQtMDktMTcgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAoZ2NjX2N2X2dsZF92ZXJzaW9uKTogSGFuZGxlIHdoaXRlc3BhY2UgYmVmb3JlCgkiVkVSU0lPTj0iLgoJKiBhY2xvY2FsLm00IChfZ2NjX0NPTVBVVEVfR0FTX1ZFUlNJT04pOiBEaXR0by4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wOS0xNyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC5jIChzaF9naW1wbGlmeV92YV9hcmdfZXhwcik6IERvbid0IGNhbGwgcGFzc19ieV9yZWZlcmVuY2UuCgkoc2hfcGFzc19ieV9yZWZlcmVuY2UpOiBXb3JrIGFyb3VuZCBzdGRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIgYnVnLgoJKiB0LXNoIChNVUxUSUxJQl9DUFVTKTogcy9NTF9tL01MX3NoL2cgLgoJKiB0LXNoNjQgKE1VTFRJTElCX0NQVV9ESVJTKTogTGlrZXdpc2UuICBNYXRjaCBkYXNoZXMgYW5kIHRyYWlsaW5nCglzbGFzaGVzIGluIHN1YnN0aXR1dGlvbnMuCgkoTVVMVElMSUJfRElSTkFNRVMpOiBSZW1vdmUgZGVmdW5jdCByZW1vdmFsIG9mIC9tZWRpYTMyLgoKMjAwNC0wOS0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGJhc2ljLWJsb2NrLmgsIGMtZGVjbC5jLCBjLXBhcnNlLmluLCBjZ3JhcGh1bml0LmMsIGRkZy5jLAoJZ2ltcGxpZnkuYywgbGFtYmRhLWNvZGUuYywgb3B0YWJzLmMsIHByZWRpY3QuYywKCXRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jLCB0cmVlLXNyYS5jLCB0cmVlLXNzYS1sb29wLWNoLmMsCgl0cmVlLXNzYS5jLCB2ZWMuaDogRml4IGNvbW1lbnQgdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcKCWNvbnZlbnRpb25zLgoKMjAwNC0wOS0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9jb21wYXQudGV4aSwgZG9jL2NwcC50ZXhpLCBkb2MvY3Bwb3B0cy50ZXhpLAoJZG9jL2V4dGVuZC50ZXhpLCBkb2MvaW5zdGFsbC50ZXhpLCBkb2MvaW52b2tlLnRleGksCglkb2Mvc291cmNlYnVpbGQudGV4aSwgZG9jL3RtLnRleGksIGRvYy90cmVlLXNzYS50ZXhpLAoJZG9jL3Ryb3VibGUudGV4aTogVXNlIEBvcHRpb24gYXJvdW5kIG9wdGlvbnMuCgoyMDA0LTA5LTE3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZ2VuLXByb3Rvcy5vKTogRGVwZW5kIG9uIGVycm9ycy5oLgoKMjAwNC0wOS0xNyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE3NTEzCgkqIGNmZ2V4cGFuZC5jIChjb25zdHJ1Y3RfaW5pdF9ibG9jayk6IENsZWFyIEVER0VfRVhFQ1VUQUJMRQoJZm9yIHN1Y2Nlc3NvcnMgb2YgdGhlIGVudHJ5IGJsb2NrLgoKMjAwNC0wOS0xNyAgVXJvcyBCaXpqYWsgIDx1cm9zQGtzcy1sb2thLnNpPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTUxODcKCSogaWZjdnQuYyAobm9jZV90cnlfY21vdmVfYXJpdGgpOiBFeGl0IGVhcmx5IGlmIHRvdGFsCglpbnNuX3J0eF9jb3N0IG9mIGJvdGggYnJhbmNoZXMgPiBCUkFOQ0hfQ09TVAoKMjAwNC0wOS0xNiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTc1MjgKCSogdHJlZS1zc2EtYWxpYXMuYyAoY29tcHV0ZV9mbG93X2luc2Vuc2l0aXZlX2FsaWFzaW5nKTogRG8gbm90CgllcmFzZSB0aGUgbWF5LWFsaWFzIHNldCBmb3IgYSB0YWcgd2hlbiBtZXJnaW5nIGl0IHdpdGgKCWFub3RoZXIuCgoyMDA0LTA5LTE2ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5tZCAoY2FsbCk6IEV4dGVuZCAzMi1iaXQgYWRkcmVzc2VzIHRvIERJbW9kZQoJZm9yIDMyLWJpdCBUQVJHRVRfU0hNRURJQS4KCShjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgoyMDA0LTA5LTE2ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFkZF9jYWxsX2Nsb2JiZXJfb3BzKTogTWFrZSByZWFkLW9ubHkKCXRlc3QgYXBwbHkgb25seSB0byBUUkVFX1NUQVRJQyBhbmQgREVDTF9FWFRFUk5BTC4KCjIwMDQtMDktMTYgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIE1ha2VmaWxlLmluICh0cmVlLWNmZy5vKTogQWRkIENGR0xBWU9VVF9IIGRlcGVuZGVuY3kuCgkqIGJhc2ljLWJsb2NrLmggKGdldF9kb21pbmF0ZWRfYnlfcmVnaW9uKTogRGVjbGFyZS4KCSogZG9taW5hbmNlLmMgKGdldF9kb21pbmF0ZWRfYnlfcmVnaW9uKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLWNmZy5jOiBJbmNsdWRlIGNmZ2xheW91dC5oLgoJKHRyZWVfZHVwbGljYXRlX2JiKTogRHVwbGljYXRlIGFsc28gcGhpIG5vZGVzLgoJKHN0cnVjdCBzc2FfbmFtZV9tYXBfZW50cnkpOiBOZXcgdHlwZS4KCShhZGRfcGhpX2FyZ3NfYWZ0ZXJfY29weV9iYiwgYWRkX3BoaV9hcmdzX2FmdGVyX2NvcHksCglzc2FfbmFtZV9tYXBfZW50cnlfaGFzaCwgc3NhX25hbWVfbWFwX2VudHJ5X2VxLAoJYWxsb2NhdGVfc3NhX25hbWVzLCByZXdyaXRlX3RvX25ld19zc2FfbmFtZXNfZGVmLAoJcmV3cml0ZV90b19uZXdfc3NhX25hbWVzX3VzZSwgcmV3cml0ZV90b19uZXdfc3NhX25hbWVzX2JiLAoJcmV3cml0ZV90b19uZXdfc3NhX25hbWVzLCB0cmVlX2R1cGxpY2F0ZV9zZXNlX3JlZ2lvbik6IE5ldyBmdW5jdGlvbnMuCgkqIHRyZWUtZmxvdy5oICh0cmVlX2R1cGxpY2F0ZV9zZXNlX3JlZ2lvbiwgYWRkX3BoaV9hcmdzX2FmdGVyX2NvcHlfYmIsCglhZGRfcGhpX2FyZ3NfYWZ0ZXJfY29weSwgcmV3cml0ZV90b19uZXdfc3NhX25hbWVzX2JiLAoJcmV3cml0ZV90b19uZXdfc3NhX25hbWVzLCBhbGxvY2F0ZV9zc2FfbmFtZXMsCglyZXdyaXRlX2ludG9fbG9vcF9jbG9zZWRfc3NhLCB2ZXJpZnlfbG9vcF9jbG9zZWRfc3NhKTogRGVjbGFyZS4KCSogdHJlZS1zc2EtbG9vcC1jaC5jIChkdXBsaWNhdGVfYmxvY2tzKTogUmVtb3ZlZC4KCShjb3B5X2xvb3BfaGVhZGVycyk6IFVzZSB0cmVlX2R1cGxpY2F0ZV9zZXNlX3JlZ2lvbi4KCjIwMDQtMDktMTYgIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQHJlZGhhdC5jb20+CgoJKiBwcm9maWxlLmMgKGJyYW5jaF9wcm9iKTogUmVzdG9yZSBzdXBwb3J0IGZvciBVU0VfTUFQUEVEX0xPQ0FUSU9OLgoKMjAwNC0wOS0xNiBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1pbnRvLXNzYS5jIChibG9ja19kZWZzX3N0YWNrKTogTmV3IHRvcGxldmVsIHZhcnJheS4KCShyZXdyaXRlX2Jsb2NrX2RhdGEpOiBSZW1vdmUsIG5vIGxvbmdlciB1c2VkLgoJKHJld3JpdGVfaW5pdGlhbGl6ZV9ibG9ja19sb2NhbF9kYXRhKTogUmVtb3ZlLCBubyBsb25nZXIgdXNlZC4KCShyZXdyaXRlX2luaXRpYWxpemVfYmxvY2spOiBNYXJrIHBhcmFtZXRlcnMgYXMgdW51c2VkIGFzIG5lZWRlZC4KCUNoYW5nZSByZWZlcmVuY2VzIHRvIHRoZSBibG9jayBsb2NhbCBibG9ja19kZWZzIHRvIGJlIGJsb2NrX2RlZnNfc3RhY2suCglQdXNoIGEgbWFya2VyIG9udG8gdGhlIGJsb2NrX2RlZnNfc3RhY2suCgkoc3NhX3Jld3JpdGVfaW5pdGlhbGl6ZV9ibG9jayk6IFNpbWlsYXJseS4KCShyZXdyaXRlX3N0bXQsIHNzYV9yZXdyaXRlX3N0bXQpOiBTaW1pbGFybHkuCgkoc3NhX3JlZ2lzdGVyX25ld19kZWYpOiBObyBsb25nZXIgbmVlZHMgdmFycmF5IGFyZ3VtZW50LiAgVXNlCglibG9ja19kZWZzX3N0YWNrIGluc3RlYWQuICBObyBsb25nZXIgaGFuZGxlIHBvc3NpYmx5IG51bGwgYmxvY2tfZGVmcwoJdmFycmF5LiAgUmV2ZXJzZSBvcmRlciBvZiBpdGVtcyB3ZSBwdXNoIG9uIHRoZSBzdGFjayB0byBtYWtlIGl0CgllYXNpZXIgdG8gaWRlbnRpZnkgb3VyIG1hcmtlci4KCShyZWdpc3Rlcl9uZXdfZGVmKTogTm8gbG9uZ2VyIGhhbmRsZSBwb3NzaWJseSBudWxsIGJsb2NrX2RlZnMKCXZhcnJheS4KCShyZXdyaXRlX2ZpbmFsaXplX2Jsb2NrKTogUmV2YW1wIHRvIGxvb2sgZm9yIG1hcmtlcnMgaW4gdGhlIGdsb2JhbAoJYmxvY2tfZGVmc19zdGFjayB2YXJyYXkgcmF0aGVyIHRoYW4gd2lwaW5nIGEgYmxvY2sgbG9jYWwgdmFycmF5LgoJTWFyayBhcmd1bWVudHMgYXMgdW51c2VkIGFzIG5lZWRlZC4KCShzc2FfcmV3cml0ZV9maW5hbGl6ZV9ibG9jayk6IFNpbWlsYXJseS4KCShyZXdyaXRlX2ludG9fc3NhKTogVXBkYXRlIGluaXRpYWxpemF0aW9uIG9mIGRvbSB3YWxrZXIgc3RydWN0dXJlCgl0byByZWZsZWN0IHRoYXQgd2UgZG9uJ3QgbmVlZCBibG9jayBsb2NhbCBkYXRhIGFueW1vcmUuICBJbml0aWFsaXplCgl0aGUgYmxvY2tfZGVmc19zdGFjayB2YXJyYXkuCgkocmV3cml0ZV9zc2FfaW50b19zc2EpOiBTaW1pbGFybHkuCgkqIHRyZWUtc3NhLWRvbS5jIChibG9ja19kZWZzX3N0YWNrKTogTmV3IHRvcGxldmVsIHZhcnJheS4KCShzdHJ1Y3QgZG9tX3dhbGtfZGF0YSk6IEtpbGwgYmxvY2tfZGVmcyBmaWVsZC4KCSh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBJbml0aWFsaXplIGJsb2NrX2RlZnNfc3RhY2suCgkodGhyZWFkX2Fjcm9zc19lZGdlKTogVXNlIHRoZSBnbG9iYWwgYmxvY2tfZGVmc19zdGFjayBpbnN0ZWFkIG9mCgl0aGUgb2xkIGJsb2NrX2RlZnMgdmFycmF5LgoJKGRvbV9vcHRfaW5pdGlhbGl6ZV9ibG9ja19sb2NhbF9kYXRhKTogVXBkYXRlIG5vdyB0aGF0IHdlIGRvbid0IGhhdmUKCWJsb2NrX2RlZnMgZmllbGQgdG8gY2hlY2sgYW55bW9yZS4KCShkb21fb3B0X2luaXRpYWxpemVfYmxvY2spOiBQdXNoIGEgbWFya2VyIG9udG8gYmxvY2tfZGVmc19zdGFjay4KCShyZXN0b3JlX2N1cnJkZWZzX3RvX29yaWdpbmFsX3ZhbHVlKTogVXNlIHRoZSBuZXcgYmxvY2tfZGVmc19zdGFjawoJaW5zdGVhZCBvZiBhIGJsb2NrIGxvY2FsIHZhcnJheS4KCShkb21fb3B0X2ZpbmFsaXplX2Jsb2NrKTogU2ltaWxhcmx5LgoJKHJlY29yZF9lcXVpdmFsZW5jc19mcm9tX3BoaXMpOiBTaW1pbGFybHkuCgkob3B0aW1pemVfc3RtdCwgcmVnaXN0ZXJfZGVmaW5pdGlvbnNfZm9yX3N0bXQpOiBTaW1pbGFybHkuCgoyMDA0LTA5LTE2ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTc1MTcKCSogdHJlZS1zc2EtY29weXJlbmFtZS5jIChjb3B5X3JlbmFtZV9wYXJ0aXRpb25fY29hbGVzY2UpOiBEb24ndAoJY29hbGVzY2Ugc2FtZS1yb290IHZhcmlhYmxlcyB3aXRob3V0IGNoZWNraW5nIGZvciBhYm5vcm1hbCBQSEkgdXNhZ2UuCgoyMDA0LTA5LTE2ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGNmZ2xvb3AuaCAoZHVwbGljYXRlX2xvb3ApOiBBZGQgcHJvdG90eXBlLgoJKiBjZmdsb29wbWFuaXAuYyAoZHVwbGljYXRlX2xvb3ApOiBNYWtlIG5vbi1zdGF0aWMuCgkqIGxhbWJkYS1jb2RlLmMgKHBlcmZlY3RfbmVzdGlmeSk6IEZhY3RvciBvdXQgdGVzdCB3aGV0aGVyCgl3ZSBjYW4gaGFuZGxlIHRoaXMgbG9vcCBpbnRvIHNlcGFyYXRlIGZ1bmN0aW9uLgoJQ2FsbCBpdC4KCShjYW5fY29udmVydF90b19wZXJmZWN0X25lc3QpOiBOZXcgZnVuY3Rpb24uCgkocmVwbGFjZV91c2VzX29mX3hfd2l0aF95KTogQWRkIG1vZGlmeV9zdG10IGNhbGwuCgkqIHRyZWUtbG9vcC1saW5lYXIuYyAobGluZWFyX3RyYW5zZm9ybV9sb29wcyk6IENhbGwKCXJld3JpdGVfaW50b19sb29wX2Nsb3NlZF9zc2EgYW5kIGZyZWVfZGYuCgoyMDA0LTA5LTE2ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGxhbWJkYS1jb2RlLmMgKGludmFyaWFudF9pbl9sb29wKTogaXNfZ2ltcGxlX21pbl9pbnZhcmlhbnQgaXMKCWxvb3AgaW52YXJpYW50IGFzIHdlbGwuCgkocGVyZmVjdF9uZXN0aWZ5KTogbmV3IGZ1bmN0aW9uLgoJKGdjY19sb29wX3RvX2xhbWJkYV9sb29wKTogTmV3IHBhcmFtZXRlcnMgdG8gdHJhY2sgbG93ZXIgYm91bmRzLAoJdXBwZXIgYm91bmRzLCBhbmQgc3RlcHMuCglTZXQgb3V0ZXJpbmR1Y3Rpb252YXIgcHJvcGVybHkuCgkoZ2NjX2xvb3BuZXN0X3RvX2xhbWJkYV9sb29wbmVzdCk6IEFkZCBsb29wcyBhbmQgbmVlZF9wZXJmZWN0CglwYXJhbWV0ZXJzLgoJUmV0dXJuIE5VTEwgaWYgd2UgbmVlZCBhIHBlcmZlY3QgbG9vcCBhbmQgY2FuJ3QgbWFrZSBvbmUuCgkobGFtYmRhX2xvb3BuZXN0X3RvX2djY19sb29wbmVzdCk6IENvcnJlY3QgYWxnb3JpdGhtLgoJKG5vdF9pbnRlcmVzdGluZ19zdG10KTogTmV3IGZ1bmN0aW9uLgoJKHBoaV9sb29wX2VkZ2VfdXNlc19kZWYpOiBEaXR0by4KCShzdG10X3VzZXNfcGhpX3Jlc3VsdCk6IERpdHRvLgoJKHN0bXRfaXNfYnVtcGVyX2Zvcl9sb29wKTogRGl0dG8uCgkocGVyZmVjdF9uZXN0X3ApOiBEaXR0by4KCShuZXN0aWZ5X3VwZGF0ZV9wZW5kaW5nX3N0bXRzKTogRGl0dG8uCgkocmVwbGFjZV91c2VzX29mX3hfd2l0aF95KTogRGl0dG8uCgkoc3RtdF91c2VzX29wKTogRGl0dG8uCgkocGVyZmVjdF9uZXN0aWZ5KTogRGl0dG8uCgkqIGxhbWJkYS1tYXQuYyAobGFtYmRhX21hdHJpeF9pZF9wKTogTmV3IGZ1bmN0aW9uLgoJKiBsYW1iZGEtdHJhbnMuYyAobGFtYmRhX3RyYW5zX21hdHJpeF9pZF9wKTogRGl0dG8uCgkqIGxhbWJkYS5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogdHJlZS1sb29wLWxpbmVhciAobGluZWFyX3RyYW5zZm9ybV9sb29wKTogVXNlIG5ldwoJcGVyZmVjdF9uZXN0X3AuIERldGVjdCBhbmQgaWdub3JlIGlkZW50aXR5IHRyYW5zZm9ybS4KCSogdHJlZS1zc2EtbG9vcC5jIChwYXNzX2xpbmVhcl90cmFuc2Zvcm0pOiBVc2UgVE9ET193cml0ZV9sb29wX2Nsb3NlZC4KCjIwMDQtMDktMTYgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCSogdHJlZS1sb29wLWxpbmVhci5jIChnYXRoZXJfaW50ZXJjaGFuZ2Vfc3RhdHMpOiBBZGQgbW9yZSBjb21tZW50cy4KCUdhdGhlciBhbHNvIHN0cmlkZXMgb2YgYWNjZXNzZWQgZGF0YS4gIFBhc3MgaW4gdGhlIGRhdGEgcmVmZXJlbmNlcwoJYXJyYXkuCgkodHJ5X2ludGVyY2hhbmdlX2xvb3BzKTogQWRkIGEgbmV3IGhldXJpc3RpYyBmb3IgaGFuZGxpbmcgdGhlIHRlbXBvcmFsCglsb2NhbGl0eS4gIFBhc3MgaW4gdGhlIGRhdGEgcmVmZXJlbmNlcyBhcnJheS4KCShsaW5lYXJfdHJhbnNmb3JtX2xvb3BzKTogUGFzcyB0aGUgZGF0YSByZWZlcmVuY2VzIGFycmF5IHRvCgl0cnlfaW50ZXJjaGFuZ2VfbG9vcHMuCgoyMDA0LTA5LTE2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2ludm9rZS50ZXhpOiBGaXggdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDA0LTA5LTE2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2MtdHJlZS50ZXhpIChDbGFzc2VzKTogUmVtb3ZlIGluZGV4IGVudHJpZXMgZm9yCglUUkVFX1ZJQV97UFVCTElDLFBST1RFQ1RFRCxQUklWQVRFfS4KCjIwMDQtMDktMTYgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IEZvbGQgZGlmZmVyZW5jZSBvZiBhZGRyZXNzZXMuCgkocHRyX2RpZmZlcmVuY2VfY29uc3QpOiBNb3ZlZCBmcm9tIHRyZWUtc3NhLWxvb3AtaXZvcHRzLCBiYXNlZCBvbgoJZ2V0X2lubmVyX3JlZmVyZW5jZS4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAocGVlbF9hZGRyZXNzKTogUmVtb3ZlZC4KCShwdHJfZGlmZmVyZW5jZV9jb25zdCk6IE1vdmVkIHRvIGZvbGQtY29uc3QuYy4KCShzcGxpdF9hZGRyZXNzX2Nvc3QpOiBVc2UgZ2V0X2lubmVyX3JlZmVyZW5jZSBpbnN0ZWFkIG9mIHBlZWxfYWRkcmVzcy4KCShwdHJfZGlmZmVyZW5jZV9jb3N0KTogQ2hhbmdlIHR5cGUgb2YgZGlmZiB0byBIT1NUX1dJREVfSU5ULgoJKiB0cmVlLmggKHB0cl9kaWZmZXJlbmNlX2NvbnN0KTogRXhwb3J0LgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoZHVtcF9pdiwgZHVtcF91c2UsIGR1bXBfY2FuZCk6IEFkZCBpbmR1Y3Rpb24KCXZhcmlhYmxlIHR5cGUgdG8gdGhlIGR1bXAuICBGaXggaW5kZW50YXRpb24uCgkoaWR4X2ZpbmRfc3RlcCk6IEhhbmRsZSBub25jb25zdGFudCBhcnJheV9yZWZfZWxlbWVudF9zaXplIGFuZAoJYXJyYXlfcmVmX2xvd19ib3VuZC4KCShpZHhfcmVjb3JkX3VzZSk6IEhhbmRsZSBhcnJheV9yZWZfZWxlbWVudF9zaXplIGFuZAoJYXJyYXlfcmVmX2xvd19ib3VuZC4KCShmaW5kX2ludGVyZXN0aW5nX3VzZXNfc3RtdCk6IEhhbmRsZSBtZW1vcnkgPSBub250cml2aWFsX2V4cHJlc3Npb24KCXN0YXRlbWVudHMgY29ycmVjdGx5LgoJKGdldF9jb21wdXRhdGlvbl9hdCwgaXZfdmFsdWUpOiBEbyBub3QgdW5zaGFyZSBleHByZXNzaW9ucyBoZXJlLgoJKHJld3JpdGVfdXNlX291dGVyKTogVW5zaGFyZSB0aGUgZXhwcmVzc2lvbiBiZWZvcmUgaXQgaXMgZW1pdHRlZAoJdG8gY29kZS4KCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jICh1bnNpZ25lZF90eXBlX2Zvciwgc2lnbmVkX3R5cGVfZm9yKToKCU1vdmVkIHRvIHRyZWUuYy4KCSogdHJlZS5jICh1bnNpZ25lZF90eXBlX2Zvciwgc2lnbmVkX3R5cGVfZm9yKTogTW92ZWQgZnJvbQoJdHJlZS1zc2EtbG9vcC1uaXRlci5jLiAgVXNlIGxhbmdob29rcy4KCSogdHJlZS5oIChzaWduZWRfdHlwZV9mb3IpOiBFeHBvcnQuCgoyMDA0LTA5LTE2ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfeGNvZmZfYXNtX25hbWVkX3NlY3Rpb24pOiBVcGRhdGUKCXByb3RvdHlwZS4KCjIwMDQtMDktMTUgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRhcmdldC8xMTU3MgoJKiBjLWluY3BhdGguaCAodGFyZ2V0X2NfaW5jcGF0aF9zKTogQWRkIGV4dHJhX3ByZV9pbmNsdWRlcy4KCUFkZCB0d28gcGFyYW1ldGVycyB0byBleHRyYV9pbmNsdWRlcy4KCShDX0lOQ1BBVEhfSU5JVCk6IFJlbW92ZS4KCSogYy1pbmNwYXRoLmMgKHJlZ2lzdGVyX2luY2x1ZGVfY2hhaW5zKTogQ2FsbCBleHRyYV9wcmVfaW5jbHVkZXMKCWJlZm9yZSBhZGRpbmcgdGhlIHN0YW5kYXJkIGluY2x1ZGUgZGlyZWN0b3J5LgoJVXBkYXRlIGNhbGwgdG8gZXh0cmFfaW5jbHVkZXMuCgkoIWRlZmluZWQgVEFSR0VUX0VYVFJBX0lOQ0xVREVTKTogVXBkYXRlCglob29rX3ZvaWRfY2hhcnB0cl9jaGFycHRyX2ludCBhbmQgYWRkICFkZWZpbmUKCVRBUkdFVF9FWFRSQV9QUkVfSU5DTFVERVMuCgkoIWRlZmluZSBUQVJHRVRfRVhUUkFfSU5DTFVERVMpOiBEZWZpbmUgYXMKCWhvb2tfdm9pZF9jaGFycHRyX2NoYXJwdHJfaW50LgoJKCFkZWZpbmUgVEFSR0VUX0VYVFJBX1BSRV9JTkNMVURFUyk6IExpa2V3aXNlLgoJKHRhcmdldF9jX2luY3BhdGgpOiBBbHdheXMgZGVjbGFyZS4KCSogZml4aW5jbHVkZS5jIChkZWZpbmVkIFRBUkdFVF9FWFRSQV9JTkNMVURFUyk6IERlY2xhcmUgYQoJZW1wdHkgZnVuY3Rpb24uCgkoZGVmaW5lIFRBUkdFVF9FWFRSQV9QUkVfSU5DTFVERVMpOiBMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi5oOiAoZGFyd2luX3JlZ2lzdGVyX2ZyYW1ld29ya3MpOiBVcGRhdGUgZm9yCgl0aGUgdHdvIG5ldyBwYXJhbWV0ZXJzLgoJKGRhcndpbl9yZWdpc3Rlcl9vYmpjX2luY2x1ZGVzKTogQWRkIHByb3RvdHlwZS4KCShUQVJHRVRfRVhUUkFfUFJFX0lOQ0xVREVTKTogRGVmaW5lLgoJKiBjb25maWcvZGFyd2luLWMuYyAoZGFyd2luX3JlZ2lzdGVyX29iamNfaW5jbHVkZXMpOiBOZXcgZnVuY3Rpb24uCgkoZGFyd2luX3JlZ2lzdGVyX2ZyYW1ld29ya3MpOiBVcGRhdGUgZm9yIHRoZSB0d28gbmV3IHBhcmFtZXRlcnMuCgkodGFyZ2V0X2NfaW5jcGF0aCk6IFJlbW92ZS4KCSogY29uZmlnL3QtZGFyd2luIChkYXJ3aW4tYy5vKTogQWRkICQoUFJFUFJPQ0VTU09SX0RFRklORVMpIHRvCgl0aGUgY29tcGlsZSBsaW5lLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0VYVFJBX0lOQ0xVREVTKTogRG9jdW1lbnQgdGhlIHR3byBuZXcKCXBhcmFtZXRlcnMuCgkoVEFSR0VUX0VYVFJBX1BSRV9JTkNMVURFUyk6IERvY3VtZW50LgoKCSogZ2NjLmMgKHNwZWNfZnVuY3Rpb24pOiBBZGQgcmVwbGFjZS1vdXRmaWxlLgoJKHJlcGxhY2Vfb3V0ZmlsZV9zcGVjX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvZGFyd2luLmggKExJTktfU1BFQyk6IEFkZCByZXBsYWNlCgktbG9iamMgd2l0aCAtbG9iamMtZ251IGlmIC1mZ251LXJ1bnRpbWUgaXMKCXN1cHBsaWVkLgoJKiBpbnZva2UudGV4aSAocmVwbGFjZS1vdXRmaWxlKTogRG9jdW1lbnQuCgoyMDA0LTA5LTEzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwcmVkaWN0LmMgKGV4cHJfZXhwZWN0ZWRfdmFsdWUsIHN0cmlwX2J1aWx0aW5fZXhwZWN0KTogTmV3IGZ1bmN0aW9uLgoJKHRyZWVfcHJlZGljdF9ieV9vcGNvZGUpOiBVc2UgaXQuCgkodHJlZV9lc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IEFkZCwgZm9yIG5vdyBkaXNhYmxlZCwKCXN0cmlwX2J1aWx0aW5fZXhwZWN0IGNhbGwuCgoyMDA0LTA5LTE1ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJUFIgdGFyZ2V0LzE3NDU1CgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6IFJldHVybiBmYWxzZQoJaWYgY3VycmVudF9mdW5jdGlvbl9kZWNsIGlzIGEgc2liY2FsbC4KCjIwMDQtMDktMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2YXJhc20uYyAoZGVmYXVsdF9mdW5jdGlvbl9yZG9kYXRhX3NlY3Rpb24pOiBNYWtlIHN1cmUgdG8gcGFzcwoJYWxvbmcgYSBkZWNsIGZvciBhIGxpbmstb25jZSBzZWN0aW9uLgoKMjAwNC0wOS0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFkZF9jYWxsX2Nsb2JiZXJfb3BzKTogRml4IHVudXNlZCB2YXJpYWJsZQoJd2FybmluZyB3aXRoIGNvZGUgZGlzYWJsZS4gIEZpeCBmb3JtYXR0aW5nLgoKMjAwNC0wOS0xNSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKHRyZWUtc3NhLWRvbS5vKTogRGVwZW5kIG9uIHRyZWUtc3NhLXByb3BhZ2F0ZS5oLgoJKiB0cmVlLXNzYS1kb20uYyAoY3Byb3BfaW50b19zdG10KTogUmVjb21wdXRlIFRSRUVfSU5WQVJJQU5UCglhZnRlciBwcm9wYWdhdGluZyBpbnRvIGFuIEFERFJfRVhQUi4KCjIwMDQtMDktMTUgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCglQUiBydGwtb3B0LzE3NDI3CgkqIGdjc2UuYyAocHJvY2Vzc19pbnNlcnRfaW5zbik6IGluc25faW52YWxpZF9wIGhhcyBzaWRlIGVmZmVjdHMuCglNb3ZlIGl0IG91dCBvZiBnY2NfYXNzZXJ0LgoKMjAwNC0wOS0xNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBhdHRyaWJzLmMsIGJ1aWx0aW5zLmMsIGMtZm9ybWF0LmMsIGMtcGNoLmMsIGNvdmVyYWdlLmMsCglleGNlcHQuYywgZm9sZC1jb25zdC5jLCBmdW5jdGlvbi5jLCBsYW5naG9va3MuYywgcGFyYW1zLmMsCglyZWxvYWQuYywgcmVsb2FkMS5jLCBzdG10LmMsIHN0b3ItbGF5b3V0LmMsIHRvcGxldi5jLCB0cmVlLWNmZy5jLAoJdHJlZS1kdW1wLmMsIHRyZWUtbXVkZmxhcC5jLCB0cmVlLmMsIHZhcmFzbS5jOiBVc2UgJTwsICU+IGFuZCAlcQoJZm9yIHF1b3RpbmcgaW4gZGlhZ25vc3RpY3MgZ29pbmcgdGhyb3VnaCBwcmV0dHktcHJpbnQuYy4gIFVzZSAnJwoJZm9yIHF1b3RpbmcgaW4gb3RoZXIgZGlhZ25vc3RpYyB0ZXh0LgoJKiBsYW5naG9va3MuYzogSW5jbHVkZSBpbnRsLmguICBNYXJrIHRleHQgbG9jYXRpbmcgZGlhZ25vc3RpY3MgZm9yCgl0cmFuc2xhdGlvbi4KCSogTWFrZWZpbGUuaW4gKGxhbmdob29rcy5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogcHJldHR5LXByaW50LmggKHBwX3ByaW50Zik6IE1hcmsgYXMgYWNjZXB0aW5nIEdDQyBkaWFnbm9zdGljCglmb3JtYXRzLgoKMjAwNC0wOS0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIENPTURBVCBzdXBwb3J0LiAgUm9idXN0aWZ5IGNoZWNrIGZvcgoJU0hGX01FUkdFIHN1cHBvcnQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGNvbmZpZy5pbjogTGlrZXdpc2UuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX2NvbWRhdF9ncm91cCk6IE5ldyBmdW5jdGlvbi4KCShMQU5HX0hPT0tTX0NPTURBVF9HUk9VUCk6IE5ldyBtYWNyby4KCShMQU5HX0hPT0tTX0RFQ0xTKTogVXNlIGl0LgoJKiBsYW5naG9va3MuYyAobGhkX2NvbWRhdF9ncm91cCk6IERlZmluZS4KCSogbGFuZ2hvb2tzLmggKGxhbmdfaG9va3NfZm9yX2RlY2xzKTogQWRkIGNvbWRhdF9ncm91cC4KCSogb3V0cHV0LmggKG5hbWVkX3NlY3Rpb25fZmxhZ3MpOiBNYWtlIGl0IGEgbWFjcm8uCgkobmFtZWRfc2VjdGlvbl9yZWFsKTogTmV3IGZ1bmN0aW9uLgoJKGRlZmF1bHRfbm9fbmFtZWRfc2VjdGlvbik6IEFkZCBkZWNsIHBhcmFtZXRlci4KCShkZWZhdWx0X2VsZl9hc21fbmFtZWRfc2VjdGlvbik6IExpa2V3aXNlLgoJKGRlZmF1bHRfY29mZl9hc21fbmFtZWRfc2VjdGlvbik6IExpa2V3aXNlLgoJKGRlZmF1bHRfcGVfYXNtX25hbWVkX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogdGFyZ2V0LmggKGdjY190YXJnZXQpOiBBZGp1c3QgdHlwZSBvZiBuYW1lZF9zZWN0aW9uLgoJKiB2YXJhc20uYyAobmFtZWRfc2VjdGlvbl9mbGFncyk6IFJlbmFtZSB0byBuYW1lZF9zZWN0aW9uX3JlYWwuCglBZGQgZGVjbCBwYXJhbWV0ZXIuCgkoZGVmYXVsdF9ub19uYW1lZF9zZWN0aW9uKTogQWRkIGRlY2wgcGFyYW1ldGVyLgoJKGRlZmF1bHRfZWxmX2FzbV9uYW1lZF9zZWN0aW9uKTogVXNlIENPTURBVCwgaWYgYXZhaWxhYmxlLiAgRGVhbAoJd2l0aCB0aGUgY2FzZSB0aGF0IEFTTV9DT01NRU5UX1NUQVJUIGlzICJAIi4KCShkZWZhdWx0X2NvZmZfYXNtX25hbWVkX3NlY3Rpb24pOiBBZGQgZGVjbCBwYXJhbWV0ZXIuCgkoZGVmYXVsdF9wZV9hc21fbmFtZWRfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAodm1zX2FzbV9uYW1lZF9zZWN0aW9uKTogQWRkIGRlY2wKCXBhcmFtZXRlci4KCSh1bmljb3Nta19hc21fbmFtZWRfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fZWxmX2FzbV9uYW1lZF9zZWN0aW9uKTogUmVtb3ZlLgoJKiBjb25maWcvYXJtL2VsZi5oIChUQVJHRVRfQVNNX05BTUVEX1NFQ1RJT04pOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2FzbV9uYW1lZF9zZWN0aW9uKTogQWRkIGRlY2wgcGFyYW1ldGVyLgoJKiBjb25maWcvY3Jpcy9jcmlzLXByb3Rvcy5oIChjcmlzX3RhcmdldF9hc21fbmFtZWRfc2VjdGlvbik6CglMaWtld2lzZS4KCSogY29uZmlnL2NyaXMvY3Jpcy5jIChjcmlzX3RhcmdldF9hc21fbmFtZWRfc2VjdGlvbik6CglMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi9kYXJ3aW4tcHJvdG9zLmggKGRhcndpbl9hc21fbmFtZWRfc2VjdGlvbik6CglMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi9kYXJ3aW4uYyAoZGFyd2luX2FzbV9uYW1lZF9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF9hc21fbmFtZWRfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpMzg2X3BlX2FzbV9uYW1lZF9zZWN0aW9uKToKCUxpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChpMzg2X3BlX2FzbV9uYW1lZF9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19jb2ZmX2FzbV9uYW1lZF9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jIChtY29yZV9hc21fbmFtZWRfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfeGNvZmZfYXNtX25hbWVkX3NlY3Rpb24pOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY2VfZWxmX2FzbV9uYW1lZF9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNwL2NwLWxhbmcuaCAoTEFOR19IT09LU19DT01EQVRfR1JPVVApOiBEZWZpbmUuCgkqIGNwL2NwLXRyZWUuaCAoY3h4X2NvbWRhdF9ncm91cCk6IERlY2xhcmUuCgkqIGNwL2RlY2wuYyAoY3h4X2NvbWRhdF9ncm91cCk6IE5ldyBmdW5jdGlvbi4KCjIwMDQtMDktMTUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtc3NhLmMgKHZlcmlmeV9mbG93X3NlbnNpdGl2ZV9hbGlhc19pbmZvKTogRG8gbm90IHdhbGsgZGVhZCBub2Rlcy4KCSogdHJlZS10YWlsY2FsbC5jIChlbGltaW5hdGVfdGFpbF9jYWxsKTogUmVsZWFzZSBTU0EgbmFtZS4KCgkqIHRyZWUtY2ZnLmMgKHJlbW92ZV9iYik6IFJlbGVhc2UgU1NBIGRlZnMuCgoyMDA0LTA5LTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL3RtLnRleGk6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDQtMDktMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmVlLXNzYS1kb20uYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTA5LTE1ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9saW51eC11bndpbmQuaCAoc3RydWN0IGdjY19wdF9yZWdzKTogRXh0ZW5kIHRvCglpbmNsdWRlIGNjci4KCShwcGNfZmFsbGJhY2tfZnJhbWVfc3RhdGUpOiBTYXZlIGxvY2F0aW9uIG9mIENSLgoKMjAwNC0wOS0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKHN0cmluZ19jb25zdGFudCk6IEhhbmRsZSBhbHNvIHJlYWQtb25seSB2YXJpYWJsZXMKCWluaXRpYWxpemVkIHRvIHN0cmluZyBsaXRlcmFscy4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21lbW1vdmUpOiBPcHRpbWl6ZSBtZW1tb3ZlICh4LCB5LCAxKQoJaW50byBtZW1jcHkgKHgsIHksIDEpIGlmIG1lbWNweSBjYW4gYmUgZXhwYW5kZWQgaW5saW5lLgoKMjAwNC0wOS0xNSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE3NDY4CgkqIHRyZWUtc3NhLmMgKHZlcmlmeV91c2UsIHZlcmlmeV9waGlfYXJncywgdmVyaWZ5X3NzYSk6IFZlcmlmeSB0aGF0CglkZWZpbml0aW9uIGluc2lkZSBhIGJsb2NrIHByZWNlZGUgdXNlcy4KCSogdHJlZS10YWlsY2FsbC5jIChhZGp1c3RfcmV0dXJuX3ZhbHVlKTogRW1pdCBzdGF0ZW1lbnRzIGluIHRoZQoJY29ycmVjdCBvcmRlci4KCjIwMDQtMDktMTUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoUE9JTlRFUlNfRVhURU5EX1VOU0lHTkVEKTogRGVsZXRlLgoKMjAwNC0wOS0xNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKHNwYXJjLXN1bi1zb2xhcmlzMiopOiBQcm9wZXJseSBmb3JtYXQgd2FybmluZy4KCjIwMDQtMDktMTQgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWRvbS5jIChhdmFpbF9leHByc19zdGFjayk6IE5ldyBnbG9iYWwgdmFycmF5LgoJKHN0cnVjdCBkb21fd2Fsa19ibG9ja19kYXRhKTogUmVtb3ZlIGF2YWlsX2V4cHJzIG1lbWJlci4KCSh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBJbml0aWFsaXplIGF2YWlsX2V4cHJzX3N0YWNrLgoJKGxvb2t1cF9hdmFpbF9leHByKTogTm8gbG9uZ2VyIG5lZWQgdG8gcGFzcyBpbiBhZGRyZXNzIG9mCgl0aGUgYmxvY2sgbG9jYWwgYXZhaWxhYmxlIGV4cHJzIHN0YWNrLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShzaW1wbGlmeV9jb25kX2FuZF9sb29rdXBfYXZhaWxfZXhwcik6IFNpbWlsYXJseS4KCShzaW1wbGlmeV9zd2l0Y2hfYW5kX2xvb2t1cF9hdmFpbF9leHByKTogU2ltaWxhcmx5LgoJKGdldF9lcV9leHByX3ZhbHVlLCByZWNvcmRfY29uZCk6IExpa2V3aXNlLgoJKHJlY29yZF9kb21pbmF0aW5nX2NvbmRpdGlvbnMpOiBMaWtld2lzZS4KCSh1cGRhdGVfcmhzX2FuZF9sb29rdXBfYXZhaWxfZXhwcik6IExpa2V3aXNlLgoJKHJlY29yZF9lcXVpdmFsZW5jZXNfZnJvbV9zdG10KTogTGlrZXdpc2UuCgkoZG9tX29wdF9pbml0aWFsaXplX2Jsb2NrX2xvY2FsX2RhdGEpOiBObyBsb25nZXIgdGVzdCBzdGF0ZSBvZgoJYmxvY2sgbG9jYWwgYXZhaWxfZXhwcnMuCgkoZG9tX29wdF9pbml0aWFsaXplX2Jsb2NrKTogTWFyayB1bndpbmQgcG9pbnQgaW4gdGhlIGdsb2JhbAoJYXZhaWxfZXhwciBzdGFjay4KCShyZW1vdmVfZXhwcmVzc2lvbnNfZnJvbV90YWJsZSk6IFVwZGF0ZSB0byB1bndpbmQgdG8gdGhlCgltb3N0IHJlY2VudCB1bndpbmQgbWFya2VyIGluIHRoZSBnbG9iYWwgYXZhaWxfZXhwciBzdGFjay4KCUFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoZG9tX29wdF9maW5hbGl6ZV9ibG9jayk6IE1hcmsgdW53aW5kIHBvaW50IGluIHRoZSBnbG9iYWwKCWF2YWlsX2V4cHIgc3RhY2sgYXMgbmVlZGVkLgoJKHJlY29yZF9jb25kKTogUHVzaCBlbGVtZW50cyBpbnRvIHRoZSBnbG9iYWwgYXZhaWxfZXhwcnMgc3RhY2suCgoJKiB0cmVlLWRmYS5jIChmcmVlX2RmX2Zvcl9zdG10KTogTm8gbG9uZ2VyIHN0YXRpYy4KCShmcmVlX2RmKTogVXBkYXRlIGNvbW1lbnRzLgoJKiB0cmVlLWZsb3cuaCAoZnJlZV9kZl9mb3Jfc3RtdCk6IFByb3RvdHlwZS4KCSogdHJlZS1zc2EtZHNlLmMgKGRzZV9vcHRpbWl6ZV9zdG10KTogQ2FsbCBmcmVlX2RmX2Zvcl9zdG10LiAgQWxzbwoJY2FsbCByZWxlYXNlX2RlZnMuCgoyMDA0LTA5LTE0ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNzI1MgoJKiB0cmVlLXNzYS1hbGlhcy5jIChtYXlfYWxpYXNfcCk6IERvbid0IGFzc3VtZSB0aGF0IGEKCXBvaW50ZXIgbWF5IG5vdCBwb2ludCB0byBpdHNlbGYgd2hlbiB1c2luZyByZWxheGVkCglhbGlhc2luZyBydWxlcy4KCjIwMDQtMDktMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNzM5NwoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9hZGRyX2V4cHIpOiBEb24ndCBpbmFkdmVydGVudGx5IGNoYW5nZSB0eXBlcwoJd2hpbGUgZm9sZGluZyA8QUREUl9FWFBSIDxJTkRJUkVDVF9SRUYgWD4+LgoKMjAwNC0wOS0xNCAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogdHJlZS1zc2EtY29weS5jIChtYXlfcHJvcGFnYXRlX2NvcHkpOiBEb24ndCBjaGVjayB0aGUgYWxpYXNpbmcKCXNldHMgb2YgdGhlIHBvaW50ZXJzIGJ1dCB0aGUgYWxpYXNpbmcgc2V0cyBvZiB3aGF0IHRoZXkgcG9pbnQgdG8uCgoyMDA0LTA5LTE0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzk3NzEKCSogcmVnY2xhc3MuYyAoQ0FMTF9SRUFMTFlfVVNFRF9SRUdOT19QKTogTmV3IG1hY3JvIHRvIGVsaW1pbmF0ZQoJY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaW4gaW5pdF9yZWdfc2V0c18xLgoJKGluaXRfcmVnX3NldHNfMSk6IExldCBnbG9iYWxfcmVnc1tpXSB0YWtlIHByaW9yaXR5IG92ZXIgdGhlIGZyYW1lCgkoYnV0IG5vdCBzdGFjaykgcG9pbnRlciBleGNlcHRpb25zIHRvIHJlZ3NfaW52YWxpZGF0ZWRfYnlfY2FsbC4KCShnbG9iYWxpemVfcmVnKTogR2xvYmFsaXppbmcgYSBmaXhlZCByZWdpc3RlciBtYXkgbmVlZCB0byB1cGRhdGUKCXJlZ3NfaW52YWxpZGF0ZWRfYnlfY2FsbC4KCjIwMDQtMDktMTQgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE1MjYyCgkqIHRyZWUtZGZhLmMgKGR1bXBfdmFyaWFibGUpOiBBbHNvIHByaW50IHRoZSB0eXBlIG9mIHRoZQoJdmFyaWFibGUuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbXB1dGVfZmxvd19pbnNlbnNpdGl2ZV9hbGlhc2luZyk6IElmIHR3bwoJbWVtb3J5IHRhZ3MgYXJlIG9mIGNvbmZsaWN0aW5nIGFsaWFzIHNldHMgYnV0IGhhdmUgbm8gYWxpYXNlZAoJc3ltYm9scyBpbiBjb21tb24sIGFkZCBvbmUgdGFnIHRvIHRoZSBhbGlhcyBzZXQgb2YgdGhlIG90aGVyLgoJKHNldHVwX3BvaW50ZXJzX2FuZF9hZGRyZXNzYWJsZXMpOiBSZW1vdmUgaGFjayB0byBkZWFsIHdpdGgKCXByb2dyYW1zIHdpdGggbm8gYWxpYXNlZCBzeW1ib2xzLgoJKG1heV9hbGlhc19wKTogRG9uJ3Qgc3BlY2lhbCBjYXNlIGFnZ3JlZ2F0ZSB0eXBlcy4KCjIwMDQtMDktMTQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvMTU0OTgKCSogZG9jL2ludm9rZS50ZXhpIChFbnZpcm9ubWVudCBWYXJpYWJsZXMpOiBDb3JyZWN0IGV4YW1wbGUgbG9jYWxlLgoKMjAwNC0wOS0xNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2ZnLmMgKGV4cHVuZ2VfYmxvY2spOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlIGFkZGluZyBnZ2NfZnJlZSBjYWxsLgoKMjAwNC0wOS0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2M6IERvIG5vdCBidWlsZCBhIHNoYXJlZCBsaWJnY2MgZm9yIGFybS1ub25lLWVhYmkuCgoyMDA0LTA5LTE0ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtdHJlZS5oIChzdHJ1Y3QgY19kZWNsc3BlY3MpOiBBZGQgY29uc3RfcCwgdm9sYXRpbGVfcCBhbmQKCXJlc3RyaWN0X3AuCgkoc3RydWN0IGNfZGVjbGFyYXRvcik6IENoYW5nZSB1LmFycmF5LnF1YWxzIGFuZCBwb2ludGVyX3F1YWxzIHRvCglpbnQuICBBZGQgdS5hcnJheS5hdHRycy4KCShxdWFsc19mcm9tX2RlY2xzcGVjcyk6IE5ldy4KCSogYy1kZWNsLmMgKHF1YWxzX2Zyb21fZGVjbHNwZWNzKTogTmV3LgoJKHNoYWRvd190YWdfd2FybmVkKTogR2l2ZSBtb3JlIHNwZWNpZmljIG1lc3NhZ2UgZm9yIHVzZWxlc3MgdHlwZQoJcXVhbGlmaWVycy4KCShidWlsZF9hcnJheV9kZWNsYXJhdG9yLCBzZXRfYXJyYXlfZGVjbGFyYXRvcl9pbm5lciwKCWdyb2tkZWNsYXJhdG9yLCBtYWtlX3BvaW50ZXJfZGVjbGFyYXRvciwgYnVpbGRfbnVsbF9kZWNsc3BlY3MsCglkZWNsc3BlY3NfYWRkX3F1YWwpOiBVcGRhdGUgZm9yIGNoYW5nZWQgc3RydWN0dXJlcy4KCjIwMDQtMDktMTQgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1kb20uYyAoc3RtdHNfdG9fcmVzY2FuKTogTW92ZSBmcm9tIGEgYmxvY2stbG9jYWwKCXRvIGEgZ2xvYmFsIHZhcnJheS4KCSh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBBbGxvY2F0ZSBzdG10c190b19yZXNjYW4uCgkoZG9tX29wdF9pbml0aWFsaXplX2Jsb2NrX2xvY2FsX2RhdGEpOiBObyBsb25nZXIgdGVzdCBzdGF0ZQoJb2Ygc3RtdHNfdG9fcmVzY2FuLgoJKGRvbV9vcHRfZmluYWxpemVfYmxvY2spOiBVcGRhdGUgZHVlIHRvIGNoYW5nZSBpbiBzY29wZSBvZgoJc3RtdHNfdG9fcmVzY2FuLgoJKG9wdGltaXplX3N0bXQpOiBTaW1pbGFybHkuCgoyMDA0LTA5LTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2dyYXBoLmgsIGNncmFwaHVuaXQuYywgZm9sZC1jb25zdC5jLCBsYW1iZGEtbWF0LmMsCglsYW1iZGEuaCwgcHJvZmlsZS5jLCB0cmVlLW9wdGltaXplLmMsIHRyZWUtc3JhLmMsIHZlYy5oOiBGaXgKCWNvbW1lbnQgdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDA0LTA5LTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2Rhcndpbi1jLmMsIGNvbmZpZy9hbHBoYS9hbHBoYS5jLCBjb25maWcvaTM4Ni9pMzg2LmMsCgljb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kLCBjb25maWcvc3BhcmMvc3BhcmMuYzogRm9sbG93CglzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDQtMDktMTQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCSAgICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAobG9vcC11bnJvbGwubyk6IEFkZCBIQVNIVEFCX0ggYW5kIFJFQ09HX0ggZGVwZW5kZW5jeS4KCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IHJlb3JkZXJfYmxvY2tfZGVmKTogQWRkIGNvcHlfbnVtYmVyIGZpZWxkLgoJKiBjZmdsb29wLmggKGJpdl9wKTogRGVjbGFyZS4KCSogY2ZnbG9vcG1hbmlwLmMgKGR1cGxpY2F0ZV9sb29wX3RvX2hlYWRlcl9lZGdlKTogU2V0IGNvcHlfbnVtYmVyLgoJKiBjb21tb24ub3B0IChmc3BsaXQtaXZzLWluLXVucm9sbGVyKTogTmV3IGZsYWcuCgkqIGxvb3AtaXYuYyAoYml2X3ApOiBOZXcgZnVuY3Rpb24uCgkqIGxvb3AtdW5yb2xsLmM6IEluY2x1ZGUgaGFzaHRhYi5oIGFuZCByZWNvZy5oLgoJKHN0cnVjdCBpdl90b19zcGxpdCwgc3RydWN0IHNwbGl0X2l2c19pbmZvKTogTmV3IHR5cGVzLgoJKGFuYWx5emVfaXZzX3RvX3NwbGl0LCBzaV9pbmZvX3N0YXJ0X2R1cGxpY2F0aW9uLCBzcGxpdF9pdnNfaW5fY29waWVzLAoJZnJlZV9zaV9pbmZvLCBzaV9pbmZvX2hhc2gsIHNpX2luZm9fZXEsIGFuYWx5emVfaXZfdG9fc3BsaXRfaW5zbiwKCWRldGVybWluZV9zcGxpdF9pdl9kZWx0YSwgZ2V0X2l2dHNfZXhwciwgYWxsb2NhdGVfYmFzaWNfdmFyaWFibGUsCglpbnNlcnRfYmFzZV9pbml0aWFsaXphdGlvbiwgc3BsaXRfaXYpOiBOZXcgZnVuY3Rpb25zLgoJKHBlZWxfbG9vcF9jb21wbGV0ZWx5LCB1bnJvbGxfbG9vcF9jb25zdGFudF9pdGVyYXRpb25zLAoJdW5yb2xsX2xvb3BfcnVudGltZV9pdGVyYXRpb25zLCBwZWVsX2xvb3Bfc2ltcGxlLCB1bnJvbGxfbG9vcF9zdHVwaWQpOgoJVXNlIHRoZW0uCgkqIGRvYy9pbnZva2UudGV4aSAoLWZzcGxpdC1pdnMtaW4tdW5yb2xsZXIpOiBEb2N1bWVudC4KCjIwMDQtMDktMTQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIHRyZWUtY2ZnLmMgKHRocmVhZF9qdW1wcyk6IFVwZGF0ZSBkb21pbmF0b3JzIGNvcnJlY3RseSBpbgoJY2FzZSBkZXN0aW5hdGlvbiBvZiB0aHJlYWRlZCBlZGdlIGRvbWluYXRlcyBpdHMgc291cmNlLgoKMjAwNC0wOS0xNCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogdW5yb2xsLmM6IFJlbW92ZWQuCgkqIGxvb3AuaDogUmVtb3ZlZC4KCSogTWFrZWZpbGUuaW4gKExPT1BfSCwgdW5yb2xsLm8pOiBSZW1vdmVkLgoJKHRvcGxldi5vLCBwYXNzZXMubywgc3RtdC5vLCBpbnRlZ3JhdGUubywgbG9vcC5vKTogUmVtb3ZlIExPT1BfSAoJZGVwZW5kZW5jeS4KCSogYWxpYXMuYyAoaW5pdF9hbGlhc19hbmFseXNpcyk6IFJlbW92ZSBmbGFnX29sZF91bnJvbGxfbG9vcHMKCXJlZmVyZW5jZS4KCSogY2ZnbG9vcC5oIChMT09QX1BSRUZFVENILCBsb29wX29wdGltaXplKTogTW92ZWQgZnJvbSBsb29wLmguCgkqIGNvbW1vbi5vcHQgKGZvbGQtdW5yb2xsLWxvb3BzLCBmb2xkLXVucm9sbC1hbGwtbG9vcHMpOiBSZW1vdmVkLgoJKiBsb29wLmM6IERvIG5vdCBpbmNsdWRlIGxvb3AuaC4KCShMT09QX0lORk8sIExPT1BfTU9WQUJMRVMsIExPT1BfUkVHUywgTE9PUF9JVlMsIElOU05fTFVJRCwKCVJFR05PX0ZJUlNUX0xVSUQsIFJFR05PX0xBU1RfTFVJRCwgZW51bSBnX3R5cGVzLCBzdHJ1Y3QgaW5kdWN0aW9uLAoJc3RydWN0IGl2X2NsYXNzLCBlbnVtIGl2X21vZGUsIHN0cnVjdCBpdiwgUkVHX0lWX1RZUEUsIFJFR19JVl9JTkZPLAoJUkVHX0lWX0NMQVNTLCBzdHJ1Y3QgbG9vcF9pdnMsIHN0cnVjdCBsb29wX21lbV9pbmZvLCBzdHJ1Y3QgbG9vcF9yZWcsCglzdHJ1Y3QgbG9vcF9yZWdzLCBzdHJ1Y3QgbG9vcF9tb3ZhYmxlcywgc3RydWN0IGxvb3BfaW5mbyk6IE1vdmVkCglmcm9tIGxvb3AuaC4KCShiYWNrX2JyYW5jaF9pbl9yYW5nZV9wLCBmb2xkX3J0eF9tdWx0X2FkZCwgYml2X3RvdGFsX2luY3JlbWVudCwKCXJlZ19kZWFkX2FmdGVyX2xvb3AsIGZpbmFsX2Jpdl92YWx1ZSwgbG9vcF9maW5kX2VxdWl2X3ZhbHVlLAoJZmluZF9jb21tb25fcmVnX3Rlcm0sIGxvb3BfaXRlcmF0aW9ucywgZmluYWxfZ2l2X3ZhbHVlKTogTW92ZWQKCWZyb20gdW5yb2xsLmMuCgkodWlkX2x1aWQsIHVpZF9sb29wLCBtYXhfdWlkX2Zvcl9sb29wLCBtYXhfcmVnX2JlZm9yZV9sb29wLAoJbG9vcF9kdW1wX3N0cmVhbSwgZm9yX2VhY2hfaW5zbl9pbl9sb29wLCBleHByZXNzX2Zyb20sCglleHRlbmRfdmFsdWVfZm9yX2dpdiwgbG9vcF9pdl9hZGRfbXVsdF9lbWl0X2JlZm9yZSwKCWxvb3BfaXZfYWRkX211bHRfc2luaywgbG9vcF9pdl9hZGRfbXVsdF9ob2lzdCwKCWxvb3BfaW5zbl9maXJzdF9wLCBnZXRfY29uZGl0aW9uX2Zvcl9sb29wLAoJbG9vcF9pbnNuX2VtaXRfYmVmb3JlLCBsb29wX2luc25faG9pc3QsCglsb29wX2luc25fc2luayk6IE1hZGUgc3RhdGljLgoJKGxvb3BfaW52YXJpYW50X3ApOiBNYWRlIHN0YXRpYy4gIFJlbW92ZWQgZmxhZ19vbGRfdW5yb2xsX2xvb3BzCglyZWZlcmVuY2UuCgkoc3RyZW5ndGhfcmVkdWNlKTogRG8gbm90IGNhbGwgdW5yb2xsZXIuCgkocmVjb3JkX2dpdik6IERvIG5vdCBpbml0aWFsaXplIHVucm9sbGVkIGZpZWxkLgoJKHByZXNjYW5fbG9vcCk6IERvIG5vdCBzZXQgbG9vcF9pbmZvLT5wcmVjb25kaXRpb25lZC4KCSogcGFzc2VzLmM6IERvIG5vdCBpbmNsdWRlIGxvb3AuaC4KCShyZXN0X29mX2hhbmRsZV9sb29wX29wdGltaXplKTogRG8gbm90IGNhbGwgdW5yb2xsZXIuCgkqIHByZWRpY3QuYzogRG8gbm90IGluY2x1ZGUgbG9vcC5oLgoJKiBydGwuaCAoTk9URV9QUkVDT05ESVRJT05FRCk6IFJlbW92ZWQuCgkqIHN0bXQuYzogRG8gbm90IGluY2x1ZGUgbG9vcC5oLgoJKiB0b3BsZXYuYzogRG8gbm90IGluY2x1ZGUgbG9vcC5oLgoJKHByb2Nlc3Nfb3B0aW9ucyk6IERvIG5vdCBoYW5kbGUgZmxhZ19vbGRfdW5yb2xsX2xvb3BzLgoKCSogZG9jL2ludm9rZS50ZXhpIChmb2xkLXVucm9sbC1sb29wcywgZm9sZC11bnJvbGwtYWxsLWxvb3BzKToKCURvY3VtZW50YXRpb24gcmVtb3ZlZC4KCSogZG9jL3Bhc3Nlcy50ZXhpICh1bnJvbGwuYywgbG9vcC5oKTogRG9jdW1lbnRhdGlvbiByZW1vdmVkLgoKMjAwNC0wOS0xNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChTVEFHRTFfQ0hFQ0tJTkcpOiBOZXcgdmFyaWFibGUuCgkoc3RhZ2UxX2J1aWxkKTogVXNlIGl0LgoJKiB0cmVlLXNzYS5jICh2ZXJpZnlfc3NhKTogUHJlc2VydmUgc3RhdGUgb2YgZG9taW5hbmNlCglpbmZvcm1hdGlvbi4KCjIwMDQtMDktMTQgIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3V0cHV0X2ZwX2NvbXBhcmUpOiBBZGQgZ2VuZXJhdGlvbgoJb2YgZnRzdCBpbnN0cnVjdGlvbi4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKmNtcGZwXzBfc2YsIGNtcGZwXzBfZGYsIGNtcGZwXzBfeGYpOgoJVXNlIG91dHB1dF9mcF9jb21wYXJlICgpIGZ1bmN0aW9uLgoJKGNtcGZwX2ksICpjbXBmcF9pX3NzZSwgKmNtcGZwX2lfc3NlX29ubHkpOiBGaXggaW5zbiBjb25zdHJhaW50LgoJKGZpeF90cnVuY2RpX21lbW9yeSk6IFJlbW92ZSBvcGVyYW5kc1s1XSBjb3B5LgoKMjAwNC0wOS0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9tMzJyL20zMnIubWQsIGNvbmZpZy9tNjhrL202OGtlbGYuaCwKCWNvbmZpZy9tY29yZS9tY29yZS5tZCwgY29uZmlnL3JzNjAwMC9saW51eDY0LmgsCgljb25maWcvcnM2MDAwL3JzNjAwMC5jLCBjb25maWcvc3BhcmMvc3BhcmMuYzogRml4IGNvbW1lbnQKCXR5cG9zLgoKMjAwNC0wOS0xMyAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEdFTl9QUk9UT1NfT0JKUyk6IEFkZCAkKEJVSUxEX0VSUk9SUykuCgkqIGdlbi1wcm90b3MuYzogSW5jbHVkZSBlcnJvcnMuaC4KCShwcm9nbmFtZSk6IERlbGV0ZS4KCjIwMDQtMDktMTQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIE1ha2VmaWxlLmluIChwcmVkaWN0Lm8pOiBEZXBlbmQgb24gdHJlZS1zY2FsYXItZXZvbHV0aW9uLmgKCSogcHJlZGljdC5jOiBJbmNsdWRlIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5oIGFuZCBjZmdsb29wLmgKCShwcmVkaWN0X2xvb3BzKTogVXNlIG51bWJlcl9vZl9pdGVyYXRpb25zX2V4aXQgdG8gcHJlZGljdAoJbnVtYmVyIG9mIGl0ZXJhdGlvbnMgb24gdHJlZXMuCgoyMDA0LTA5LTEzICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJUFIgMTc0MDgKCVBSIDE3NDA5CgkqIGMtZGVjbC5jIChzdGFydF9kZWNsKTogUmVwYWlyIFRSRUVfU1RBVElDIGZvciBpbml0aWFsaXplZAoJb2JqZWN0cyBkZWNsYXJlZCBleHRlcm4uCgoyMDA0LTA5LTE0ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IE1ha2UgYXJnc190b19wdXNoIGEKCUhPU1RfV0lERV9JTlQuCgoyMDA0LTA5LTEzICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBkZWJpYW4ub3JnPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2NoZWNrc3VtX3RyZWUpOiBJZ25vcmUgVFlQRV9DQUNIRURfVkFMVUVTLgoJT25seSB1c2UgVFlQRV9CSU5GTyBmb3IgYWdncmVnYXRlcy4KCjIwMDQtMDktMTMgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGRlYmlhbi5vcmc+CgoJKiBleHBtZWQuYyAoc3ludGhfbXVsdCk6IEluaXRpYWxpemUgbGF0ZW5jeS4gIENoZWNrIGNvc3QgYmVmb3JlCgljaGVja2luZyBvcHMgY291bnQuCgoyMDA0LTA5LTEzICBLZW5uZXRoIFphZGVjayAgPEtlbm5ldGguWmFkZWNrQE5hdHVyYWxCcmlkZ2UuY29tPgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2NhbGxfZXhwcl9vcGVyYW5kcyk6IEFkZGVkIHBhcm0gdG8KCWFkZF9jYWxsX2Nsb2JiZXJfb3BzIGFuZCBhZGRfY2FsbF9yZWFkX29wcy4KCShhZGRfY2FsbF9jbG9iYmVyX29wcywgYWRkX2NhbGxfcmVhZF9vcHMpOiBBZGRlZCBjb2RlIHRvIHJlZHVjZQoJdGhlIG51bWJlciBvZiB2ZGVmcyBhbmQgdnVzZXMgaW5zZXJ0ZWQgYmFzZWQgb24gYW5hbHlzaXMgb2YgZ2xvYmFsCgl2YXJpYWJsZXMgYWNyb3NzIGNhbGxzLgoJKiB0cmVlLWRmYS5jIChmaW5kX3JlZmVyZW5jZWRfdmFycyk6IE5lZWRlZCB0byByZXNldCBzdGF0aWMKCXZhciBtYXBzIGJlZm9yZSBlYWNoIGZ1bmN0aW9uIGlzIGNvbXBpbGVkLgoJKiBjZ3JhcGh1bml0LmM6Cgkoc3RhdGljX3ZhcnNfdG9fY29uc2lkZXJfYnlfdHJlZSxzdGF0aWNfdmFyc190b19jb25zaWRlcl9ieV91aWQsCglzdGF0aWNfdmFyc19pbmZvLGZ1bmN0aW9uc190b19zdGF0aWNfdmFyc19pbmZvLG1vZHVsZV9zdGF0aWNzX2VzY2FwZSwKCWFsbF9tb2R1bGVfc3RhdGljcyxzZWFyY2hjX2VudixkZnNfaW5mbyk6IE5ldyBmaWVsZHMgdG8gc3VwcG9ydAoJYW5hbHlzaXMgb2Ygc3RhdGljIGdsb2JhbCB2YXJpYWJsZXMuCgkocHJpbnRfb3JkZXIsIGNvbnZlcnRfVUlEc19pbl9iaXRtYXAsIG5ld19zdGF0aWNfdmFyc19pbmZvLAoJY2dyYXBoX3Jlc2V0X3N0YXRpY192YXJfbWFwcywgZ2V0X2dsb2JhbF9zdGF0aWNfdmFyc19pbmZvLAoJZ2V0X2dsb2JhbF9zdGF0aWNzX25vdF9yZWFkLCBnZXRfZ2xvYmFsX3N0YXRpY3Nfbm90X3dyaXR0ZW4sCglzZWFyY2hjLCBjZ3JhcGhfcmVkdWNlZF9pbm9yZGVyLCBoYXNfcHJvcGVyX3Njb3BlX2Zvcl9hbmFseXNpcywKCWNoZWNrX3Joc192YXIsIGNoZWNrX2xoc192YXIsIGdldF9hc21fZXhwcl9vcGVyYW5kcywKCXByb2Nlc3NfY2FsbF9mb3Jfc3RhdGljX3ZhcnMsIHNjYW5fZm9yX3N0YXRpY19yZWZzLAoJY2dyYXBoX2NoYXJhY3Rlcml6ZV9zdGF0aWNzX2xvY2FsLCBjZ3JhcGhfZ2V0X3N0YXRpY19uYW1lX2J5X3VpZCwKCWNsZWFyX3N0YXRpY192YXJzX21hcHMsIGNncmFwaF9wcm9wYWdhdGVfYml0cywKCWNncmFwaF9jaGFyYWN0ZXJpemVfc3RhdGljcyk6IE5ldy4gRnVuY3Rpb25zIHRvIHN1cHBvcnQgYW5hbHlzaXMKCW9mIHN0YXRpYyBnbG9iYWwgdmFyaWFibGVzLgoJKGNncmFwaF9tYXJrX2xvY2FsX2FuZF9leHRlcm5hbF9mdW5jdGlvbnMpOiBSZW5hbWVkIGZyb206CgkoY2dyYXBoX21hcmtfbG9jYWxfZnVuY3Rpb25zKQoJKGNncmFwaF9leHBhbmRfYWxsX2Z1bmN0aW9ucyk6IFJlbW92ZSBjYWxsIHRvCgljZ3JhcGhfbWFya19sb2NhbF9hbmRfZXh0ZXJuYWxfZnVuY3Rpb25zLgoJKGNncmFwaF9vcHRpbWl6ZSk6IEFkZGVkIGRyaXZlciB0byBhbmFseXplIHN0YXRpYyB2YXJpYWJsZXMgd2hvc2UKCXNjb3BlIGlzIHdpdGhpbiB0aGUgY29tcGlsYXRpb24gdW5pdC4KCSogY2dyYXBoLmggKHN0cnVjdCBjZ3JhcGhfbG9jYWxfaW5mbywgR1RZKTogQWRkZWQKCXN0YXRpY3NfcmVhZCwgc3RhdGljc193cml0dGVuLCBsb2NhbCwgY2FsbHNfcmVhZF9hbGwsCgljYWxsc193cml0ZV9hbGwsIGZvcl9mdW5jdGlvbnNfdmFsaWQuICAoc3RydWN0IGNncmFwaF9ub2RlKToKCUFkZGVkIG5leHRfY3ljbGUuCgkqIGNncmFwaC5jIChkdW1wX2NncmFwaF9ub2RlKTogQWRkZWQgcHJpbnQgcm91dGluZXMgZm9yIG5ldyBmaWVsZHMuCgkqIG1ha2VmaWxlLmluOiBtYWNyb2l6ZWQgY2dyYXBoLmgsIGFkZGVkIGNncmFwaHVuaXQuYyB0byB0aGUgZ2djCglsaXN0LgoKMjAwNC0wOS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDb3JyZWN0IGNvbW1lbnRzIGFib3V0IHdoZXJlIHN0b3JhZ2UKCWNsYXNzIHNwZWNpZmllcnMgYXJlIHJlamVjdGVkIGJ5IGdyYW1tYXIgYW5kIGFkZCBjb3JyZXNwb25kaW5nCglhc3NlcnRzLiAgRGlhZ25vc2UgdHlwZWRlZnMgYW5kIHBhcmFtZXRlcnMgZGVjbGFyZWQgaW5saW5lLgoJQ2hhbmdlIHdhcm5pbmcgZm9yIGlubGluZSBtYWluIHRvIGEgcGVkd2Fybi4gIE9ubHkgZGlhZ25vc2UgaW5saW5lCgltYWluIGlmIGhvc3RlZC4KCShkZWNsc3BlY3NfYWRkX3Njc3BlYyk6IEFsbG93IGR1cGxpY2F0ZSAiaW5saW5lIi4KCjIwMDQtMDktMTMgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3NjYWxhcl9tb2RlX3N1cHBvcnRlZF9wKTogTmV3LgoJKFRBUkdFVF9TQ0FMQVJfTU9ERV9TVVBQT1JURURfUCk6IE5ldy4KCjIwMDQtMDktMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgMTc0MzYKCSogdHJlZS5oIChUWVBFX0NPTlRBSU5TX1BMQUNFSE9MREVSX0lOVEVSTkFMKTogTmV3LgoJKHRyZWVfdHlwZSk6IFJlcGxhY2Ugc3BhcmUgd2l0aCBjb250YWluc19wbGFjZWhvbGRlcl9iaXRzLgoJKHR5cGVfY29udGFpbnNfcGxhY2Vob2xkZXJfMSk6IFJlbmFtZSBmcm9tIHR5cGVfY29udGFpbnNfcGxhY2Vob2xkZXJfcCwKCW1ha2Ugc3RhdGljLiAgUmVtb3ZlIHNlZW5fdHlwZXMgbGlzdC4KCSh0eXBlX2NvbnRhaW5zX3BsYWNlaG9sZGVyX3ApOiBOZXcuCgoyMDA0LTA5LTEzICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKENPREVfRk9SX21pcHNfc3FydF9wcyk6IE5ldy4KCShzYjFfYmRlc2MsIGJkZXNjX21hcCwgYmRlc2NfYXJyYXlzKTogTmV3LgoJKG1pcHNfZXhwYW5kX2J1aWx0aW4pOiBBZGQgU0ItMSBzdXBwb3J0LiAgVXNlIGJkZXNjX21hcCBhbmQKCWJkZXNjX2FycmF5cyBpbnN0ZWFkIG9mIG1pcHNfYmRlc2MuCgkobWlwc19pbml0X2J1aWx0aW5zKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoVEFSR0VUX1NCMSk6IE5ldy4KCShIQVZFX1NRUlRfUCk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZGl2aWRlX2NvbmRpdGlvbik6IFN1cHBvcnQgVjJTRi4KCShzcXJ0X2NvbmRpdGlvbiwgcmVjaXBfY29uZGl0aW9uKTogTmV3LgoJKGRpdjxtb2RlPjMpOiBVc2UgQU5ZRiBpbnN0ZWFkIG9mIFNDQUxBUkYuCgkoKmRpdjxtb2RlPjMpOiBVc2UgQU5ZRiBpbnN0ZWFkIG9mIFNDQUxBUkYuICBVc2UgVU5JVE1PREUgaW5zdGVhZCBvZgoJTU9ERS4KCSgqcmVjaXA8bW9kZT4zLCAqcnNxcnQ8bW9kZT5hLCAqcnNxcnQ8bW9kZT5iKTogVXNlIHJlY2lwX2NvbmRpdGlvbgoJaW5zdGVhZCBvZiBJU0FfSEFTX0ZQNC4gIFVzZSBBTllGIGluc3RlYWQgb2YgU0NBTEFSRi4gIFVzZSBVTklUTU9ERQoJaW5zdGVhZCBvZiBNT0RFLgoJKHNxcnQ8bW9kZT4yKTogVXNlIHNxcnRfY29uZGl0aW9uIGluc3RlYWQgb2YgSEFWRV9TUVJUX1AuICBVc2UgQU5ZRgoJaW5zdGVhZCBvZiBTQ0FMQVJGLiAgVXNlIFVOSVRNT0RFIGluc3RlYWQgb2YgTU9ERS4KCjIwMDQtMDktMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUgYWZ0ZXIgcmVtb3ZhbCBvZiBsaWJiYW5zaGVlLgoKMjAwNC0wOS0xMyAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE3NDAwCgkqIHRyZWUtc3NhLWNvcHlyZW5hbWUuYyAoY29weV9yZW5hbWVfcGFydGl0aW9uX2NvYWxlc2NlKTogRG9uJ3QKCWNvYWxlc2NlIHBhcnRpdGlvbnMgd2hlbiBvbmUgb2NjdXJzIGluIGFuIGFibm9ybWFsIFBISS4KCjIwMDQtMDktMTMgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKEFTTV9PVVRQVVRfQ09NTU9OKTogQ2hhbmdlIHZhcmlhYmxlIHNpemUncwoJbmFtZSB0byBfbmV3X3NpemUuCgoyMDA0LTA5LTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGlubGluZS1hc20vNjgwNgoJKiBjc2VsaWIuYyAoY3NlbGliX2ludmFsaWRhdGVfcnR4KTogRXhwb3J0LiAgUmVtb3ZlIHVudXNlZCBhcmdzLgoJKGNzZWxpYl9pbnZhbGlkYXRlX3J0eF9ub3RlX3N0b3Jlcyk6IE5ldy4KCShjc2VsaWJfcmVjb3JkX3NldHMsIGNzZWxpYl9wcm9jZXNzX2luc24pOiBVcGRhdGUgdG8gbWF0Y2guCgkqIGNzZWxpYi5oIChjc2VsaWJfaW52YWxpZGF0ZV9ydHgpOiBEZWNsYXJlLgoJKiBwb3N0cmVsb2FkLmMgKHJlbG9hZF9jc2Vfc2ltcGxpZnkpOiBJbnZhbGlkYXRlIGFzbSBjbG9iYmVycy4KCjIwMDQtMDktMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHQvMTA1MjgKCSogdHJlZS1pbmxpbmUuYyAoY29weV9ib2R5X3IpOiBSZWNvbXB1dGUgYml0cyBmb3IgQUREUl9FWFBSLAoJYWZ0ZXIgY29weWluZyBpdHMgYXJndW1lbnQuCgoyMDA0LTA5LTEzICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtY29tbW9uLmMsIGMtZGVjbC5jLCBjLWxleC5jLCBjLW9iamMtY29tbW9uLmMsIGMtb3B0cy5jLAoJYy1wYXJzZS5pbiwgYy1wcmFnbWEuYywgYy10eXBlY2suYzogVXNlICVxLCAlPCBhbmQgJT4gZm9yIHF1b3RpbmcKCWluIGRpYWdub3N0aWNzLiAgVXNlICUnIGZvciBFbmdsaXNoIGFwb3N0cm9waGVzLgoJKiBjLXRyZWUuaCAoQVRUUklCVVRFX0dDQ19DRElBRyk6IERlZmluZS4KCShwZWR3YXJuX2M5MCwgcGVkd2Fybl9jOTkpOiBVc2UgaXQuCgkqIGMtZGVjbC5jIChsb29rdXBfbGFiZWwpOiBRdW90ZSBsYWJlbCBuYW1lIGluIGRpYWdub3N0aWMuCgkqIGMtcGFyc2UuaW4gKHl5cHJpbnQpOiBVc2UgJyBpbnN0ZWFkIG9mIGAgZm9yIGxlZnQgcXVvdGUuCgkqIGMtdHlwZWNrLmMgKHdhcm5fZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCjIwMDQtMDktMTMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoeDg2X3NjaGVkdWxlKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShvdmVycmlkZV9vcHRpb25zKTogRGlzYWJsZSBzY2hlZHVsaW5nIHdoZW4gbm90IHN1cHBvcnRlZC4KCSogaTM4Ni5oICh4ODZfc2NoZWR1bGUpOiBEZWNsYXJlLgoJKFRBUkdFVF9TQ0hFRFVMRSk6IE5ldyBtYWNyby4KCjIwMDQtMDktMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgYysrLzE2MjU0CgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgPGNhc2UgQ0xFQU5VUF9QT0lOVF9FWFBSPjogUmVtb3ZlLgoJKiB0cmVlLmMsIHRyZWUuaCAoaGFzX2NsZWFudXBzKTogUmVtb3ZlLgoKMjAwNC0wOS0xMiAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jIChzcGxpdF9sb29wX2V4aXRfZWRnZSk6IEhhbmRsZSBub24tc3NhbmFtZQoJYXJndW1lbnRzIG9mIHRoZSBwaGkgbm9kZXMgY29ycmVjdGx5LgoKMjAwNC0wOS0xMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2djLWNvbW1vbi5jIChjbXBfc3RhdGlzdGljcyk6IEZpeCBzb3J0aW5nLgoKMjAwNC0wOS0xMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVBSIHRhcmdldC8xNjc5NQoJKiBleHBtZWQuYyAoZXhwYW5kX2Rpdm1vZCk6IElmIGNoZWFwIHBvd2VyIG9mIDIgZGl2aWRlIGlzCglhdmFpbGFibGUsIHVzZSBpdCBmb3IgbmVnYXRpdmUgY29uc3RhbnQgYXMgd2VsbC4KCjIwMDQtMDktMTIgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGRhcndpbi5oIChBU01fT1VUUFVUX0NPTU1PTik6IE1ha2Ugc3VyZSB3ZSBkbyBub3QgaGF2ZSBhCglzaXplIG9mIDAuCgoJKiB0cmVlLWNocmVjLmMgKGluaXRpYWxpemVfc2NhbGFyX2V2b2x1dGlvbnNfYW5hbHl6ZXIpOiBSZW1vdmUuCgoyMDA0LTA5LTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3NwbGl0X2FzaGxkaSk6IFNwZWNpYWwgY2FzZSBvcDEgYXMgb25lCglvciBtaW51cyBvbmUuCgkoaXg4Nl9zcGxpdF9hc2hyZGksIGl4ODZfc3BsaXRfbHNocmRpKTogQ2xlYW4gdXAgY29uZGl0aW9ucyBmb3IKCXBvc3QtcmVsb2FkLCBhbmQgc2NyYXRjaCBOVUxMLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh0ZXN0cWlfMSk6IFVzZSBGTEFHU19SRUcgbmFtZS4KCSh4ODZfc2hpZnRfYWRqXzIpOiBVc2UgaXg4Nl9leHBhbmRfY2xlYXIuCgkoYXNobGRpMyk6IFJlbW92ZSBDTU9WRSBleHBhbnNpb24gZGlmZmVyZW5jZS4KCShhc2hsZGkzXzEpOiBSZW1vdmUuCgkoKmFzaGxkaTNfMSk6IFJlbmFtZSBmcm9tICphc2hsZGkzXzIuICBVc2UgcmVnX29yX3BtMV9vcGVyYW5kIGFuZAoJYWRkIGNvbnN0cmFpbnRzIGZvciBpbW1lZGlhdGVzLiAgTmV3IHBlZXBob2xlIGZvciBzcGxpdC13aXRoLXRlbXAuCglSdW4gc3BsaXR0ZXIgYWZ0ZXIgcGVlcDIgcGFzcy4KCShhc2hyZGkzLCBhc2hyZGkzXzEsIGFzaHJkaTNfMik6IFNpbWlsYXJseS4KCShsc2hyZGkzLCBsc2hyZGkzXzEsIGxzaHJkaTNfMik6IFNpbWlsYXJseS4KCShzZXRjY18yKTogUmVuYW1lIHdpdGggKi4KCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAocmVnX29yX3BtMV9vcGVyYW5kKTogTmV3LgoJKGFzaGxkaV9pbnB1dF9vcGVyYW5kKTogTmV3LgoKMjAwNC0wOS0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbQoKCSogcHJpbnQtcnRsLmMgKHByaW50X2RlY2xfbmFtZSk6IE5ldy4KCShwcmludF9tZW1fZXhwcik6IFVzZSBpdC4KCjIwMDQtMDktMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20KCglQUiAxNzE4NiwgcGFydCBkZXV4CgkqIGV4Y2VwdC5jIChzamxqX2VtaXRfZnVuY3Rpb25fZXhpdCk6IEZpeCBsb2dpYyBsb2NhdGluZwoJc2psal9leGl0X2FmdGVyIGluIGZpbmFsIGJsb2NrLgoKMjAwNC0wOS0xMiAgVG9vbiBNb2VuZSAgPHRvb25AbW9lbmUuaW5kaXYubmx1dWcubmw+CgoJKiBjb21tb24ub3B0OiBSZW1vdmUgZmxhZ3MgLWZtb3ZlLWFsbC1tb3ZhYmxlcyBhbmQKCS1mcmVkdWNlLWFsbC1naXZzLgoJKiBsb29wLWludmFyaWFudC5jIChmaW5kX2ludmFyaWFudHNfdG9fbW92ZSk6CglSZW1vdmUgYWxsIHVzZXMgb2YgZmxhZ19tb3ZlX2FsbF9tb3ZhYmxlcy4KCSogbG9vcC5jIChtb3ZlX21vdmFibGVzKTogUmVtb3ZlIGFsbCB1c2VzIG9mCglmbGFnX21vdmVfYWxsX21vdmFibGVzLgoJKHN0cmVuZ3RoX3JlZHVjZSk6IFJlbW92ZSBhbGwgdXNlcyBvZgoJZmxhZ19yZWR1Y2VfYWxsX2dpdnMuCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIGRvY3VtZW50YXRpb24gb2YgZmxhZ3MKCS1mcmVtb3ZlLWFsbC1tb3ZhYmxlcyBhbmQgLWZyZWR1Y2UtYWxsLWdpdnMuCgoyMDA0LTA5LTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzE3NDExCgkqIHRyZWUtc3JhLmMgKGdlbmVyYXRlX2VsZW1lbnRfemVybyk6IFJldmVydCByZWNlbnQgYnVpbGRfaW50X2NzdAoJY2hhbmdlLiBlbHQtPnR5cGUgbWF5IGJlIGEgZmxvYXRpbmcgcG9pbnQgdHlwZSwgc28gdXNlIGZvbGRfY29udmVydC4KCjIwMDQtMDktMTEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY192YWxpZGF0ZV9zdHViX29yX25vbl9sYXp5X3B0cik6IE1hcmsKCXRoZSB0aGluZyByZWZlcmVuY2VkIGFzIHVzZWQsIG5vdCB0aGUgc3R1YiBpdHNlbGYuCgoyMDA0LTA5LTExICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtdHJlZS5oIChlbnVtIGNfc3RvcmFnZV9jbGFzcyk6IE5ldy4KCShzdHJ1Y3QgY19kZWNsc3BlY3MpOiBBZGQgc3RvcmFnZV9jbGFzcywgaW5saW5lX3AgYW5kIHRocmVhZF9wLgoJKiBjLWRlY2wuYyAoc2hhZG93X3RhZ193YXJuZWQpOiBHaXZlIGVycm9ycyBmb3IgImlubGluZSIgaW4gZW1wdHkKCWRlY2xhcmF0aW9ucyBhbmQgImF1dG8iIG9yICJyZWdpc3RlciIgaW4gZmlsZSBzY29wZSBlbXB0eQoJZGVjbGFyYXRpb25zLiAgR2l2ZSBtb3JlIHNwZWNpZmljIHdhcm5pbmdzIGZvciBvdGhlciBjYXNlcyBvZgoJc3RvcmFnZSBjbGFzcyBzcGVjaWZpZXJzIGluIGVtcHR5IGRlY2xhcmF0aW9ucy4KCShncm9rZGVjbGFyYXRvcik6IFVwZGF0ZSBmb3IgbmV3IHN0cnVjdHVyZXMuICBEb24ndCBjaGVjayBmb3IKCW11bHRpcGxlIHN0b3JhZ2UgY2xhc3Nlcy4gIERpYWdub3NlIGZpbGUtc2NvcGUgInJlZ2lzdGVyIiBpZgoJcGVkYW50aWMuCgkoYnVpbGRfbnVsbF9kZWNsc3BlY3MpOiBVcGRhdGUuCgkoZGVjbHNwZWNzX2FkZF9zY3NwZWMpOiBVcGRhdGUuICBEaWFnbm9zZSBtdWx0aXBsZSBzdG9yYWdlIGNsYXNzCglzcGVjaWZpZXJzIGFuZCBpbnZhbGlkIHVzZXMgb2YgIl9fdGhyZWFkIi4KCjIwMDQtMDktMTEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKHRyZWVfY29kZV9zaXplKTogTmV3IGZ1bmN0aW9uLCBidWxrIG9mIGNvZGUgZnJvbSB0cmVlX3NpemUuCgkodHJlZV9zaXplLCBtYWtlX25vZGUpOiBVc2UgaXQuCgkqIHRyZWUtc3NhLXByZS5jIChpbml0X3ByZSk6IFVzZSBpdC4KCSogdHJlZS5oOiBQcm90b3R5cGUgaXQuCgoyMDA0LTA5LTExICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiB0cmVlLWNmZy5jIChzZXRfYmJfZm9yX3N0bXQpOiBVc2UgUEhJX0JCLgoJKiB0cmVlLWRmYS5jIChjb21wdXRlX2ltbWVkaWF0ZV91c2VzLCBhZGRfaW1tZWRpYXRlX3VzZSwKCXJlZGlyZWN0X2ltbWVkaWF0ZV91c2UpOiBVc2UgUEhJX0RGLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKHN0bXRfYW5uKTogQWJvcnQgb24gcGhpIG5vZGVzLgoJKGJiX2Zvcl9zdG10KTogVXNlIFBISV9CQi4KCShnZXRfaW1tZWRpYXRlX3VzZXMpOiBVc2UgUEhJX0RGLgoJKiB0cmVlLXNzYS1kc2UuYyAobWF4X3N0bXRfdWlkKTogTmV3IHZhcmlhYmxlLgoJKGdldF9zdG10X3VpZCk6IE5ldyBmdW5jdGlvbi4KCShkc2Vfb3B0aW1pemVfc3RtdCwgZHNlX3JlY29yZF9waGlzLCB0cmVlX3NzYV9kc2UpOiBEbyBub3QgdXNlIHBoaQoJbm9kZSBhbm5vdGF0aW9ucy4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChMSU1fREFUQSk6IERvIG5vdCB1c2UgcGhpIHN0YXRlbWVudCBhbm5vdGF0aW9ucy4KCShtYXhfdWlkKTogUmVuYW1lZCB0byBtYXhfc3RtdF91aWQuCgkoZ2V0X3N0bXRfdWlkKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX3F1ZXVlX3Zhciwgc2luZ2xlX3JlYWNoYWJsZV9hZGRyZXNzLCBkZXRlcm1pbmVfbHNtKTogRG8gbm90IHVzZQoJcGhpIG5vZGUgYW5ub3RhdGlvbnMuCgkqIHRyZWUtc3NhLmMgKHJlcGxhY2VfaW1tZWRpYXRlX3VzZXMpOiBEbyBub3QgdXNlIHBoaSBub2RlIGFubm90YXRpb25zLgoJKiB0cmVlLmggKFBISV9CQiwgUEhJX0RGKTogTmV3IGFjY2Vzc29yIGZ1bmN0aW9ucy4KCShzdHJ1Y3QgdHJlZV9waGlfbm9kZSk6IEFkZCBiYiBhbmQgZGYgZmllbGRzLgoKMjAwNC0wOS0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzE3NDE2CgkqIGNmZ2V4cGFuZC5jIChleHBhbmRfdXNlZF92YXJzX2Zvcl9ibG9jayk6IEZpeCBvZmYtYnktb25lIGJ1ZwoJaW4gY29uZmxpY3QgbG9vcC4KCjIwMDQtMDktMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuaCAoTU9ERV9ORUVERUQpOiBDYWxscyBuZWVkIFVOSU5JVElBTElaRUQgbW9kZTsgYWRkIGNvbW1lbnQuCgkoRU1JVF9NT0RFX1NFVCk6IFVOSU5JVElBTElaRUQgbW9kZSBuZWVkcyBubyBzZXQuCgkqIGkzODYubWQgKGkzODdfY3cpOiBBZGQgJ3VuaW5pdGlhbGl6ZWQnIG1vZGUuCgoJKiBwcm9maWxlLmMgKEJCX1RPX0dDT1ZfSU5ERVgpOiBtb3ZlIG1vcmUgdG8gdGhlIGZyb250LgoJKG91dHB1dF9sb2NhdGlvbik6IEJyZWFrIG91dCBmcm9tIC4uLi4KCShicmFuY2hfcHJvYik6IC4uLiBoZXJlOyBoYW5kbGUgZ2NvdiBvdXRwdXQgb24gdHJlZXMuCgkqIHRvcGxldi5jIChwcm9jZXNzX29wdGlvbnMpOiBObyBsb25nZXIgYmUgc29ycnkgYWJvdXQgY292ZXJhZ2UgZm9yCgl0cmVlcy4KCjIwMDQtMDktMTEgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCglQUiBjKysvMTc0MTIKCSogZm9sZC1jb25zdC5jIChmb2xkKTogRG8gbm90IHRyeSB0byBmb2xkIHRoZSBvcGVyYW5kIG9mIGEKCUNMRUFOVVBfUE9JTlRfRVhQUiBpZiB0aGF0IG9wZXJhbmQgZG9lcyBpdHNlbGYgbm90IGhhdmUgYW55CglvcGVyYW5kcy4KCglQUiBtaWRkbGUtZW5kLzE3NDE3CgkqIGxhbmdob29rcy5jIChsaGRfZGVjbF9wcmludGFibGVfbmFtZSk6IE1ha2Ugc3VyZSB0aGF0IHRoaXMKCWZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGlzIGEgZGVjbCBub2RlIHRoYXQgaGFzIGFuIGlkZW50aWZpZXIuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZnVuY3Rpb25fbmFtZSk6IE5ldyBmdW5jdGlvbiB0bwoJd3JhcCBQUklOVF9GVU5DVElPTl9OQU1FIGFuZCBkdW1wX2RlY2xfbmFtZS4KCShwcmludF9jYWxsX25hbWUpOiBVc2UgaXQuCgoyMDA0LTA5LTExICBNb2hhbiBFbWJhciAgPGdudXN0dWZmQHRoaXNpc2Nvb2wuY29tPgoKCSogZ2djLW5vbmUuYzogSW5jbHVkZSAiYmNvbmZpZy5oIiBpZiAtREdFTkVSQVRPUl9GSUxFLAoJImNvbmZpZy5oIiBpZiBub3QuCgoyMDA0LTA5LTExICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbGxlY3RfcG9pbnRzX3RvX2luZm9fcik6IEhhbmRsZQoJcG9pbnRpbmcgdG8gUFRSICsgT0ZGU0VUIGFzIFBUUiwgbm90IGFzIHBvaW50aW5nIHRvIFBUUiBvciBwb2ludGluZwoJdG8gT0ZGU0VULgoKMjAwNC0wOS0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfYWRkcl9leHByXzEpIFJlbmFtZSBmcm9tIGV4cGFuZF9leHByX2FkZHJfZXhwci4KCShleHBhbmRfZXhwcl9hZGRyX2V4cHIpOiBOZXcgZnVuY3Rpb24uICBUYWtlIEFERFJfRVhQUiBpbnN0ZWFkIG9mIHRoZQoJb3BlcmFuZCBvZiB0aGUgQUREUl9FWFBSLgoJKGV4cGFuZF9leHByX3JlYWxfMSk6IFVwZGF0ZSB0byBtYXRjaC4KCjIwMDQtMDktMTEgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCglQUiB0YXJnZXQvMTcyNzcKCSogY29uZmlnL3JzNjAwMC9haXguaCAoTURfRlJPQl9VUERBVEVfQ09OVEVYVCk6IFVzZSBfXzY0QklUX18gdG8KCWNob29zZSA2NC1iaXQgdmVyc2lvbi4KCjIwMDQtMDktMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgYy8xNzM5NgoJKiBjLXR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IEFkZCBsZWdhY3kgb2Zmc2V0b2YgaGFjay4KCjIwMDQtMDktMTEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvY2ZnLnRleGksIGRvYy9ob3N0Y29uZmlnLnRleGksIGRvYy9pbnN0YWxsLnRleGksCglkb2MvaW52b2tlLnRleGksIGRvYy9tZC50ZXhpLCBkb2MvdG0udGV4aSwgZG9jL3RyZWUtc3NhLnRleGk6CglJbnNlcnQgQDogYWZ0ZXIgaS5lLiBvciBlLmcuCgoyMDA0LTA5LTEwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZGVjbF9uYW1lKTogUHJpbnQgdW5uYW1lZCBkZWNscyBhcwoJRC54eHggcmF0aGVyIHRoYW4gPER4eHg+LgoKMjAwNC0wOS0xMCAgQWRhbSBOZW1ldCAgPGFuZW1ldEBsbnh3LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAoQUNfTVNHX0NIRUNLSU5HKHdoYXQgbGlua2VyIHRvIHVzZSkpOgoJaW5fdHJlZV9sZF9pc19lbGYgc2hvdWxkIGJlIHRydWUgZm9yIEx5bnhPUy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wOS0xMCAgQWRhbSBOZW1ldCAgPGFuZW1ldEBsbnh3LmNvbT4KCgkqIE1ha2VmaWxlLmluIChhbGwuY3Jvc3MpOiBBZGQgc3JjZXh0cmEuCgoyMDA0LTA5LTEwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzE3MDI0CgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jb25kX2V4cHJfd2l0aF9jb21wYXJpc29uKTogSGFuZGxlIHVub3JkZXJlZAoJZmxvYXRpbmcgcG9pbnQgY29tcGFyaXNvbiBvcGVyYXRvcnMuICBDaGFuZ2UgYWJvcnRzIHRvIGdjY19hc3NlcnRzLgoKMjAwNC0wOS0xMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBmaW5hbC5jIChvdXRwdXRfYXNtX2luc24pOiBDb3JyZWN0IHByb2JsZW0gd2l0aCAtZnZlcmJvc2UtYXNtLgoKMjAwNC0wOS0xMCAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogTWFrZWZpbGUuaW4gKExJQkdDQ19ERVBTKTogRGVsZXRlIGR1cGxpY2F0ZSBzdG1wLWludC1oZHJzIHJlZmVyZW5jZS4KCShzdG1wLWZpeHByb3RvKTogQ2hhbmdlIHN0bXAtaW50LWhlYWRlcnMgdG8gc3RtcC1pbnQtaGRycyBpbiBjb21tZW50LgoKCSogY29udmVydC5jIChjb252ZXJ0X3RvX3ZlY3Rvcik6IFJlcGxhY2UgcmVjdXJzaXZlIGNhbGwgd2l0aAoJZXJyb3JfbWFya19ub2RlLgoKCSogZW1pdC1ydGwuYyAoZ2VuX2NvbnN0X3ZlY3Rvcik6IFJlbmFtZWQgZnJvbSBnZW5fY29uc3RfdmVjdG9yXzAuCglBZGQgaW50ZWdlciBhcmd1bWVudCBuYW1lZCBjb25zdGFudC4gIFVzZSBjb25zdF90aW55X3J0eCBpbnN0ZWFkIG9mCglDT05TVDBfUlRYLgoJKGdlbl9ydHhfQ09OU1RfVkVDVE9SKTogUmV3cml0ZSB0byBoYW5kbGUgY2hlY2tzIGZvciBib3RoIENPTlNUMF9SVFgKCWFuZCBDT05TVDFfUlRYLgoJKGluaXRfZW1pdF9vbmNlKTogRml4IHVzZXJzIG9mIGdlbl9jb25zdF92ZWN0b3IuICBTZXQgQ09OU1QxX1JUWCBmb3IKCXZlY3RvciB0eXBlcy4KCSogZXhwci5jIChjb25zdF92ZWN0b3JfZnJvbV90cmVlKTogQ2FsbCBnZW5fcnR4X0NPTlNUX1ZFQ1RPUiBpbnN0ZWFkCglvZiBnZW5fcnR4X3Jhd19DT05TVF9WRUNUT1IuCgoyMDA0LTA5LTEwICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCglQUiBjLzE2MDQ2CgkqIGMtcGFyc2UuaW4gKGF0dHJpYnV0ZSk6IEFkZCBOVUxMX1RSRUUgZm9yIGVycm9yIGNhc2UKCWZvciBlcnJvciByZWNvdmVyeS4KCjIwMDQtMDktMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChzdHJ1Y3QgY19maWxlaW5mbyk6IENvbW1lbnQgbW92ZWQgaGVyZSBmcm9tIGNwLXRyZWUuaC4KCShleHRyYWN0X2ludGVyZmFjZV9pbmZvKTogRGVsZXRlIHByb3RvdHlwZS4KCSogYy1kZWNsLmMgKGV4dHJhY3RfaW50ZXJmYWNlX2luZm8pOiBEZWxldGUgc3R1Yi4KCSogYy1sZXguYyAoZ2V0X2ZpbGVpbmZvKTogSW5pdGlhbGl6ZSBmaWxlX2luZm9fdHJlZSBoZXJlLCBpZgoJaXQncyBub3QgYWxyZWFkeSBiZWVuIGRvbmUgLi4uCgkoaW5pdF9jX2xleCk6IC4uLiBub3QgaGVyZS4KCShmZV9maWxlX2NoYW5nZSk6IERvbid0IGNhbGwgZXh0cmFjdF9pbnRlcmZhY2VfaW5mby4KCjIwMDQtMDktMTEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10cmVlLmggKHN0cnVjdCBjX2RlY2xzcGVjcyk6IFJlbW92ZSB0eXBlZGVmX2RlY2wuICBBZGQKCXR5cGVkZWZfcCBhbmQgdHlwZWRlZl9zaWduZWRfcC4KCSogYy1kZWNsLmMgKHNoYWRvd190YWdfd2FybmVkKTogQ2hlY2sgdHlwZWRlZl9wLCBub3QgdHlwZWRlZl9kZWNsLgoJKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgdXNlIHR5cGVkZWZfZGVjbCBmb3Igd2Fybl9kZXByZWNhdGVkX3VzZS4KCUNoZWNrIHR5cGVkZWZfcCBhbmQgdHlwZWRlZl9zaWduZWRfcCwgbm90IHR5cGVkZWZfZGVjbC4KCShncm9rZmllbGQpOiBDaGVjayB0eXBlZGVmX3AsIG5vdCB0eXBlZGVmX2RlY2wuCgkoYnVpbGRfbnVsbF9kZWNsc3BlY3MpOiBJbml0aWFsaXplIHR5cGVkZWZfcCBhbmQgdHlwZWRlZl9zaWduZWRfcCwKCW5vdCB0eXBlZGVmX2RlY2wuCgkoZGVjbHNwZWNzX2FkZF90eXBlKTogU2V0IHR5cGVkZWZfcCBhbmQgdHlwZWRlZl9zaWduZWRfcCwgbm90Cgl0eXBlZGVmX2RlY2wuCgoyMDA0LTA5LTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL3RtLnRleGksIGRvYy90cmVlLXNzYS50ZXhpOiBGaXggdHlwb3MuCgoyMDA0LTA5LTEwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGNyZWF0ZV90bXBfdmFyX3Jhdyk6IERvbid0IG5hbWUgb3RoZXJ3aXNlLW5hbWVsZXNzCgl0ZW1wb3JhcnkgdmFyaWFibGVzLgoKCSogZGJ4b3V0LmMgKGRieG91dF9ibG9jayk6IFVwZGF0ZSBmb3IKCWN1cnJlbnRfZnVuY3Rpb25fZnVuY19iZWdpbl9sYWJlbCBhIHN0cmluZy4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9iZWdpbl9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoZHcyX291dHB1dF9jYWxsX3NpdGVfdGFibGUpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKGN1cnJlbnRfZnVuY3Rpb25fZnVuY19iZWdpbl9sYWJlbCk6IExpa2V3aXNlLgoJKiB0cmVlLmggKGN1cnJlbnRfZnVuY3Rpb25fZnVuY19iZWdpbl9sYWJlbCk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoREJYX09VVFBVVF9CUkFDKTogTGlrZXdpc2UuCgoJKiBmaW5hbC5jIChvdXRwdXRfYXNtX2luc24pOiBVc2Ugc3RydG91bCBpbnN0ZWFkIG9mIGF0b2ksIHNhdmUgYQoJbG9vcC4KCgkqIGNvbmZpZy9kYXJ3aW4uYzogSW5jbHVkZSB0YXJnZXQuaC4KCShzdHJ1Y3QgbWFjaG9waWNfaW5kaXJlY3Rpb24pOiBNYWtlIHB0cl9uYW1lIGEgc3RyaW5nLgoJKG1hY2hvcGljX2luZGlyZWN0aW9uX2hhc2gpOiBVcGRhdGUgZm9yIHB0cl9uYW1lIGEgc3RyaW5nLgoJKG1hY2hvcGljX2luZGlyZWN0aW9uX2VxKTogTGlrZXdpc2UuCgkobWFjaG9waWNfaW5kaXJlY3Rpb25fbmFtZSk6IExpa2V3aXNlLgoJKG1hY2hvcGljX291dHB1dF9pbmRpcmVjdGlvbik6IExpa2V3aXNlLgoJKG1hY2hvcGljX3ZhbGlkYXRlX3N0dWJfb3Jfbm9uX2xhenlfcHRyKTogVXBkYXRlIGZvciBwdHJfbmFtZSBhCglzdHJpbmcuICBEb24ndCBleHBlY3Qgc3R1YiBuYW1lcyB0byBiZSBpbiB0aGUgaWRlbnRpZmllciBoYXNoIHRhYmxlLgoJRG8gY2FsbCBzdHJpcF9uYW1lX2VuY29kaW5nIGJlZm9yZSBsb29raW5nIHVwIGVudHJ5IGluIElEIGhhc2ggdGFibGUuCgkqIGNvbmZpZy90LWRhcndpbiAoZGFyd2luLm8pOiBBZGQgdGFyZ2V0LmggdG8gZGVwZW5kZW5jaWVzLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJpbnRfb3BlcmFuZCk6IFVzZSBmcHV0cyBpbnN0ZWFkCglvZiBmcHJpbnRmIGZvciByZWdpc3RlciBuYW1lcy4KCgkqIG91dHB1dC5oICh1bmxpa2VseV9zZWN0aW9uX2xhYmVsKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKHVubGlrZWx5X3RleHRfc2VjdGlvbl9uYW1lKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jICh1bmxpa2VseV9zZWN0aW9uX2xhYmVsX3ByaW50ZWQpOiBNYWtlIHN0YXRpYy4KCSh1bmxpa2VseV9zZWN0aW9uX2xhYmVsKTogTGlrZXdpc2UuCgkodW5saWtlbHlfdGV4dF9zZWN0aW9uX25hbWUpOiBMaWtld2lzZS4KCShhc3NlbWJsZV9zdGFydF9mdW5jdGlvbik6IFVzZSByZWNvbmNhdC4KCgkqIHJ0bC5kZWYgKFJFRyk6IEFkZCBjb21tZW50IHRvIGRlc2NyaWJlIHRoaXJkIGZpZWxkLgoKMjAwNC0wOS0xMCAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19tY291bnRfc3R1Yl9uYW1lKTogQ2FsbAoJbWFjaG9waWNfaW5kaXJlY3Rpb25fbmFtZSBpbnN0ZWFkIG9mIG1ha2luZyB0aGUgc3RyaW5nCglvdXJzZWx2ZXMuCgoyMDA0LTA5LTEwICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglSZXZlcnQKCgkyMDA0LTA5LTA4ICBKaWUgWmhhbmcgIDx6aGFuZ2ppZUBtYWdpbWEuY29tLmNuPgoKCSAgICAqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbXB1dGVfZmxvd19pbnNlbnNpdGl2ZV9hbGlhc2luZyk6IElmIHR5cGUKCSAgICBtZW1vcnkgdGFnIGlzIGNhbGwgY2xvYmJlcmVkLCBzbyBhcmUgaXRzIGFsaWFzZXMuCgkgICAgKGdyb3VwX2FsaWFzZXMpOiBXaGVuIHR3byBtZW1vcnkgdGFncyBiZWluZyBncm91cGVkLCBpZiBvbmUgaXMKCSAgICBjYWxsIGNsb2JiZXJlZCwgc28gYXJlIHRoZSBvdGhlciBhbmQgaXRzIGFsaWFzZXMuCgkgICAgKGFkZF9tYXlfYWxpYXMpOiBSZW1vdmUgY2FsbC1jbG9iYmVyaW5nIHN0dWZmLgoJICAgIChyZXBsYWNlX21heV9hbGlhcyk6IExpa2V3aXNlLgoJICAgIChtZXJnZV9wb2ludGVkX3RvX2luZm8pOiBNZXJnZSBwdF9nbG9iYWxfbWVtCgoyMDA0LTA5LTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYmItcmVvcmRlci5jLCBjLWNvbW1vbi5jLCBjLWluY3BhdGguYywgYy10eXBlY2suYywKCWdlbnJlY29nLmMsIGxhbWJkYS1jb2RlLmMsIG1pcHMtdGR1bXAuYywgbWlwcy10ZmlsZS5jLAoJcGFzc2VzLmMsIHRyZWUtZGF0YS1yZWYuYywgdHJlZS1kYXRhLXJlZi5oLCB0cmVlLW11ZGZsYXAuYywKCXRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jLCB0cmVlLXNzYS1jb3B5cmVuYW1lLmMsCgl0cmVlLXNzYS1saXZlLmMsIHRyZWUtc3NhLWxpdmUuaDogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTA5LTEwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5tZCAoVU5TUEVDX01BU0FDQ1MsIFVOU1BFQ19NREFTQUNDUyk6IE5ldyBjb25zdGFudHMuCgkobWFkZGFjY3MsIG1zdWJhY2NzLCAqbWFkZGFjYyk6IFR1cm4gb3BlcmFuZCAwIGludG8gYSBzaW5nbGUgQUNDL0FDQ0cKCXBhaXIuICBSZW1vdmUgbWF0Y2hfZHVwIGZyb20gaW5wdXRzLiAgUmVtb3ZlIG1hc2FjY3MgaGFuZGxpbmcuCgkobWRhZGRhY2NzLCBtZHN1YmFjY3MsICptZGFkZGFjYyk6IExpa2V3aXNlIGEgZHVhbCBBQ0MvQUNDRyBwYWlyLgoJKG1hc2FjY3MsIG1kYXNhY2NzKTogVHVybiBpbnRvIGRlZmluZV9pbnNucy4KCjIwMDQtMDktMTAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtdGFpbGNhbGwuYyAocHJvY2Vzc19hc3NpZ25tZW50KTogT25seSBkbyBhY2N1bXVsYXRvciB0cmFuc2Zvcm1zCglmb3IgZmxvYXRpbmctcG9pbnQgdHlwZXMgaWYgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zLgoKMjAwNC0wOS0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9kYXJ3aW4uYywgY29uZmlnL2FscGhhL2FscGhhLmgsIGNvbmZpZy9hcm0vYXJtLmMsCgljb25maWcvYXJtL2FybS5oLCBjb25maWcvYXJtL2FybS5tZCwgY29uZmlnL2FybS9icGFiaS5oLAoJY29uZmlnL2FybS9wcmVkaWNhdGVzLm1kLCBjb25maWcvZnJ2L2Zydi5jLCBjb25maWcvZnJ2L2Zydi5tZCwKCWNvbmZpZy9oODMwMC9oODMwMC5tZCwgY29uZmlnL2kzODYvZ21tX21hbGxvYy5oLAoJY29uZmlnL2lhNjQvaWE2NC5tZCwgY29uZmlnL2lwMmsvbGliZ2NjLlMsCgljb25maWcvbWlwcy9taXBzLXBzLTNkLm1kLCBjb25maWcvbWlwcy9taXBzLmMsCgljb25maWcvcnM2MDAwL3JzNjAwMC5jLCBjb25maWcvczM5MC9zMzkwLmMsCgljb25maWcvc2gvc3ltYmlhbi5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDQtMDktMTAgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZW1pdF9wcm9sb2d1ZSk6IEFkZGVkIG1pc3NpbmcKCSJ7fSIgYnJhY2tldHMuCgoyMDA0LTA5LTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2V4dGVuZC50ZXhpLCBkb2MvaW52b2tlLnRleGksIGRvYy9wYXNzZXMudGV4aTogRml4Cgl0eXBvcy4gIEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDQtMDktMTAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogdG9wbGV2LmMgKHdhcm5fZGVwcmVjYXRlZF91c2UpOiBDb3JyZWN0IGxvZ2ljIGZvciBzYXlpbmcgInR5cGUiCglpbiBkaWFnbm9zdGljLiAgRG9uJ3QgZGVyZWZlcmVuY2UgTlVMTCBUWVBFX05BTUUuCgoyMDA0LTA5LTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1jb21tb24uYywgYy1wY2guYywgZGVmYXVsdHMuaCwgbGFtYmRhLWNvZGUuYywgcGFzc2VzLmMsCgl0cmVlLWRhdGEtcmVmLmMsIHRyZWUtZmxvdy5oLCB0cmVlLXNzYS1vcGVyYW5kcy5jLAoJdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMsIHRyZWUtdmVjdG9yaXplci5jLCB0cmVlLXZlY3Rvcml6ZXIuaCwKCXZhbHVlLXByb2YuYzogRml4IGNvbW1lbnQgdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDA0LTA5LTEwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLXNzYS1kY2UuYyAocmVtb3ZlX2RlYWRfc3RtdCk6IFVwZGF0ZSBwcm9maWxlLgoJKiB0cmVlLXNwbGl0X2VkZ2UuYyAodHJlZV9zcGxpdF9lZGdlKTogTGlrZXdpc2UuCgkodGhyZWFkX2p1bXBzKTogTGlrZXdpc2UuCgoyMDA0LTA5LTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2dyYXBodW5pdC5jLCBwcmVkaWN0LmMsIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmM6IEZpeCBjb21tZW50Cgl0eXBvcy4KCjIwMDQtMDktMTAgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjZ3JhcGguaCAoY2dyYXBoX2R1bXBfZmlsZSk6IERvIG5vdCBkZWNsYXJlLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9kdW1wX2ZpbGUpOiBEZWNsYXJlIGFzIHN0YXRpYy4KCShpbml0X2NncmFwaCk6IE5ldy4KCSogdG9wbGV2LmMgKGNncmFwaF9kdW1wX2ZpbGUpOiBEbyBub3QgZGVjbGFyZS4KCShjb21waWxlX2ZpbGUpOiBDYWxsIGluaXRfY2dyYXBoLgoJKiB0cmVlLWR1bXAuYyAoZHVtcF9maWxlcyk6IEFkZCBJUEEgZHVtcCBmaWxlLCByZW1vdmUKCVhNTCBkdW1wIG9mIGNhbGwgZ3JhcGguCgkoZ2V0X2R1bXBfZmlsZV9uYW1lKTogU3VwcG9ydCBJUEEgZHVtcCBmaWxlIG5hbWluZyBzY2hlbWUuCgkqIHRyZWUuaCAoZW51bSB0cmVlX2R1bXBfaW5kZXgpOiBBZGQgSVBBIGR1bXAgZmlsZSwgcmVtb3ZlCglYTUwgZHVtcCBvZiBjYWxsIGdyYXBoLgoJKiBkb2MvaW52b2tlLnRleGkgKERlYnVnZ2luZyBPcHRpb25zKTogRG9jdW1lbnQgdGhlIG5ldyBvcHRpb25zLgoKMjAwNC0wOS0xMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCB0aGUgRlItViBidWlsdC1pbiBmdW5jdGlvbnMuCgoyMDA0LTA5LTA5ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogRGVsZXRlIGxpYmJhbnNoZWUgcmVmZXJlbmNlLgoKMjAwNC0wOS0xMCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChzLWd0eXBlKTogQWRkICQoYnVpbGRfZXhlZXh0KSB0byBnZW5ndHlwZSBjb21tYW5kLgoKMjAwNC0wOS0wOSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogYy10eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IENoZWNrIHRoYXQgcmhzIGhhcyBWRUNUT1JfVFlQRQoJYmVmb3JlIGNhbGxpbmcgdmVjdG9yX3R5cGVzX2NvbnZlcnRpYmxlX3AuCgkoZGlnZXN0X2luaXQpOiBDaGVjayB0aGF0IGluc2lkZV9pbml0IGhhcyBWRUNUT1JfVFlQRSBiZWZvcmUgY2FsbGluZwoJdmVjdG9yX3R5cGVzX2NvbnZlcnRpYmxlX3AuICBEb24ndCBnaXZlIGFub3RoZXIgZXJyb3IgaWYKCWNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQgcmV0dXJucyBlcnJvcl9tYXJrX25vZGUuCgoyMDA0LTA5LTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzE3MDU1CgkqIGZvbGQtY29uc3QuYyAoYnVpbGRfemVyb192ZWN0b3IpOiBOZXcgZnVuY3Rpb24gdG8gY29uc3RydWN0IGEKCXZlY3RvciAoZWl0aGVyIGZsb2F0aW5nIHBvaW50IG9yIGludGVnZXIpIG9mIHplcm9zLgoJKGZvbGRfY29udmVydCk6IEludGVybmFsbHksIGVuYWJsZSBjb252ZXJzaW9ucyBvZiBpbnRlZ2VyIHplcm8KCXRvIGFyYml0cmFyeSB2ZWN0b3IgdHlwZXMsIHVzaW5nIHRoZSBuZXcgYnVpbGRfemVyb192ZWN0b3IuCgoyMDA0LTA5LTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYXNobHNpM19jb25zdCk6IE5ldyBmdW5jdGlvbiB0bwoJZXhwYW5kIGEgbGVmdCBzaGlmdCBieSBhbiBpbW1lZGlhdGUgY29uc3RhbnQgYXMgZWl0aGVyIGFuIGFzaGwgb3IKCWEgc2VxdWVuY2Ugb2YgYWRkaXRpb25zLgoJKGl4ODZfc3BsaXRfYXNobGRpKTogVXNlIG5ldyBpeDg2X2V4cGFuZF9hc2hsc2kzX2NvbnN0IGZ1bmN0aW9uCglpbnN0ZWFkIG9mIGNhbGxpbmcgZ2VuX2FzaGxzaTMgd2l0aCBhIGNvbnN0YW50IGRpcmVjdGx5LgoKMjAwNC0wOS0wOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfc3BsaXRfbG9uZ19tb3ZlKTogV2hlbiBvcHRpbWl6aW5nIGZvcgoJc2l6ZSwgYW5kIHRoZSBsb3cgYW5kIGhpZ2ggcGFydHMgb2YgYSBESW1vZGUgY29uc3RhbnQgYXJlIGVxdWFsLAoJY29weSBvbmUgcmVnaXN0ZXIgdG8gYW5vdGhlciBpbnN0ZWFkIG9mIGxvYWRpbmcgdGhlIHNhbWUgaW1tZWRpYXRlCgl2YWx1ZSB0d2ljZS4KCjIwMDQtMDktMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNzM2NwoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybV9zZXR1cF9ibG9jayk6IE9ubHkgcHV0IFBBUkFMTEVMcyBpbnRvCglhIHJlZ2lzdGVyIGlmIHVzZV9yZWdpc3Rlcl9mb3JfZGVjbC4KCjIwMDQtMDktMDkgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogcmEtY29sb3JpemUuYyAocmVzZXRfbGlzdHMpOiBNb3ZlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluc2lkZQoJRU5BQkxFX0NIRUNLSU5HIHRvIGF2b2lkIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5ncyB3aGVuCglub3QgLS1lbmFibGUtY2hlY2tpbmcuCgkoY2hlY2tfY29sb3JzKTogRGl0dG8uCgoyMDA0LTA5LTA5ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIHZlcnNpb24uYyAodmVyc2lvbl9zdHJpbmcpOiBCdW1wIHRvIDQuMC4wLgoJKiBkb2MvaW5jbHVkZS9nY2MtY29tbW9uLnRleGkgKHZlcnNpb24tR0NDKTogTGlrZXdpc2UuCgoyMDA0LTA5LTEwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAobm90aHJvdyBhdHRyaWJ1dGUpOiBUaGUgYXR0cmlidXRlIGlzIG5vdAoJaW1wbGVtZW50ZWQgaW4gMy4yIGFuZCBlYXJsaWVyLgoKMjAwNC0wOS0wOSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBnZW5yZWNvZy5jIChjb21wdXRlX3ByZWRpY2F0ZV9jb2Rlcyk6IFVzZSBvcDBfY29kZXMKCWluc3RlYWQgb2YgY29kZXMuCgoyMDA0LTA5LTA5ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiByYS1jb2xvcml6ZS5jIChoYXJkcmVnc2V0X3RvX3N0cmluZyk6IEFkYXB0IHRvIEhBUkRfUkVHX1NFVAoJaW1wbGVtZW50YXRpb24gY2hhbmdlcy4KCjIwMDQtMDktMDkgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBXaGVuIHN3YXBwaW5nIGkyIGFuZCBpMywgbmV3aTJwYXQgbWF5IGJlCglhIFBBUkFMTEVMIGluc3RlYWQgb2YgYSBTRVQgZHVlIHRvIGFkZGVkIGNsb2JiZXJzLgoKMjAwNC0wOS0wOSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzKTogUGFzcyBjb3JyZWN0IG9wZXJhbmQgdG8KCW1heWJlX21lbW9yeV9hZGRyZXNzX3AuCgoyMDA0LTA5LTA5ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgbGliYmFuc2hlZSwgdHJlZS1hbGlhcy0qLgoJUmVtb3ZlIHRyZWUtYWxpYXMtY29tbW9uLmggZGVwZW5kZW5jaWVzLgoJKiBjb21tb24ub3B0OiBSZW1vdmUgLWZ0cmVlLXBvaW50cy10by4KCSogY29uZmlndXJlLmFjOiBSZW1vdmUgbGliYmFuc2hlZS4KCSogZmxhZ3MuaDogUmVtb3ZlIHB0YV90eXBlLCBmbGFnX3RyZWVfcG9pbnRzX3RvLgoJKiBnZW5ndHlwZS5jIChvcGVuX2Jhc2VfZmlsZXMpOiBSZW1vdmUgdHJlZS1hbGlhcy10eXBlLmguCgkqIG9wdHMuYyAoT1BUX2Z0cmVlX3BvaW50c190byk6IFJlbW92ZS4KCSogdG9wbGV2LmM6IFJlbW92ZSB0cmVlLWFsaWFzLWNvbW1vbi5oLCBmbGFnX3RyZWVfcG9pbnRzX3RvLgoJKiB0cmVlLWRmYS5jOiBSZW1vdmUgdHJlZS1hbGlhcy1jb21tb24uaAoJKiB0cmVlLWludG8tc3NhLmM6IERpdHRvLgoJKiB0cmVlLW91dG9mLXNzYS5jOiBEaXR0by4KCSogdHJlZS1zc2EtY29weXJlbmFtZS5jOiBEaXR0by4KCSogdHJlZS1zc2EtbGl2ZS5jOiBEaXR0by4KCSogdHJlZS1vcHRpbWl6ZS5jOiBEaXR0by4KCSogdHJlZS1zc2EuYzogRGl0dG8uCglSZW1vdmUgcGFzc19idWlsZF9wdGEsIHBhc3NfZGVsX3B0YS4KCSogdHJlZS1wYXNzLmg6IERpdHRvLgoJKiB0cmVlLXNzYS1hbGlhcy5jOiBSZW1vdmUgdHJlZS1hbGlhcy1jb21tb24uaC4KCShzdHJ1Y3QgYWxpYXNfc3RhdHNfZCk6CVJlbW92ZSBwdGFfcXVlcmllcywgcHRhX3Jlc29sdmVkLgoJKHBhc3NfbWF5X2FsaWFzKTogUmVtb3ZlIFBST1BfcHRhIHJlcXVpcmVtZW50LgoJKG1heV9hbGlhc19wKTogUmVtb3ZlIHB0YV9xdWVyaWVzLCBwdGFfcmVzb2x2ZWQsIHVzZSBvZiBhbmRlcnNlbnMuCgkoZ2V0X3RtdF9mb3IpOiBEaXR0by4KCShkdW1wX2FsaWFzX3N0YXRzKTogRGl0dG8uCgkqIGRvYy9wYXNzZXMudGV4aTogUmVtb3ZlIGJsdXJiIGFib3V0IHBvaW50cy10byBhbmFseXNpcy4KCSogZm9ydHJhbi9NYWtlLWxhbmcuaW46IFJlbW92ZSB0cmVlLWFsaWFzLSouby4KCjIwMDQtMDktMDkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGdlbmF0dHJ0YWIuYyAod3JpdGVfaW5zbl9jYXNlcyk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCXdyaXRlX2F0dHJfY2FzZS4gIENvcnJlY3RseSBoYW5kbGUgZGVmaW5lX3BlZXBob2xlcyB3aGVuIHByaW50aW5nCgl0aGUgaW5zdHJ1Y3Rpb24gbmFtZS4KCSh3cml0ZV9hdHRyX2Nhc2UsIHdyaXRlX2NvbnN0X251bV9kZWxheV9zbG90cyk6IFVzZSB3cml0ZV9pbnNuX2Nhc2VzLgoKMjAwNC0wOS0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJUFIgdGFyZ2V0LzE3Mzc3CgkqIGNvbmZpZy9jcmlzL2NyaXMtcHJvdG9zLmggKGNyaXNfcmV0dXJuX2FkZHJlc3Nfb25fc3RhY2spOiBEZWNsYXJlLgoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKGNyaXNfcmV0dXJuX2FkZHJlc3Nfb25fc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9jcmlzL2NyaXMubWQgKCJyZXR1cm4iKTogRm9yIGxvY2F0aW9uIG9mIHJldHVybiBhZGRyZXNzLAoJYWxzbyBjaGVjayBjcmlzX3JldHVybl9hZGRyZXNzX29uX3N0YWNrLgoKMjAwNC0wOS0wOSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLW91dG9mLXNzYS5jIChjb2FsZXNjZV9hYm5vcm1hbF9lZGdlcyk6IEZpeCB0eXBvIGluCgljYWxsaW5nIHBoaV9zc2FfbmFtZV9wLgoKMjAwNC0wOS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBjLzE3MzIyCgkqIGMtdHlwZWNrLmMgKHZhbGlkX2NvbXBvdW5kX2V4cHJfaW5pdGlhbGl6ZXIpOiBVc2Ugb25seQoJaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCwgYW5kIG5vdCBUUkVFX0NPTlNUQU5ULgoJKGRpZ2VzdF9pbml0KTogTGlrZXdpc2UuCgkob3V0cHV0X2luaXRfZWxlbWVudCk6IExpa2V3aXNlLgoKMjAwNC0wOS0wOSAgR2lvdmFubmkgQmFqbyAgPGdpb3Zhbm5pYmFqb0BnY2MuZ251Lm9yZz4KCgkqIHJhLWJ1aWxkLmMgKGNvcHlfaW5zbl9wLCByZW1lbWJlcl9tb3ZlLCBkZWZ1c2Vfb3ZlcmxhcF9wXzEsCglsaXZlX291dF8xLCBwcnVuZV9oYXJkcmVnc19mb3JfbW9kZSwgaW5pdF9vbmVfd2ViX2NvbW1vbiwKCXJlaW5pdF9vbmVfd2ViLCBhZGRfc3Vid2ViLCBhZGRfc3Vid2ViXzIsIGluaXRfd2ViX3BhcnRzLAoJcmVjb3JkX2NvbmZsaWN0LCBjb21wYXJlX2FuZF9mcmVlX3dlYnMsIGluaXRfd2Vic19kZWZzX3VzZXMsCglwYXJ0c190b193ZWJzXzEsIHBhcnRzX3RvX3dlYnMsIHJlc2V0X2NvbmZsaWN0cywKCWNoZWNrX2NvbmZsaWN0X251bWJlcnMsIHJlbWVtYmVyX3dlYl93YXNfc3BpbGxlZCwgaGFuZGxlX2FzbV9pbnNuLAoJcmFfYnVpbGRfZnJlZSk6IFVzZSBnY2NfYXNzZXJ0IGFuZCBnY2NfdW5yZWFjaGFibGUgaW5zdGVhZCBvZiBhYm9ydC4KCSogcmEtY29sb3JpemUuYyAocHVzaF9saXN0LCBwdXRfd2ViLCByZXNldF9saXN0cywgcHV0X3dlYl9hdF9lbmQsCglwdXRfbW92ZSwgcmVtb3ZlX21vdmUsIGNvbWJpbmUsIHNlbGVjdF9zcGlsbCwgY29sb3JpemVfb25lX3dlYiwKCXRyeV9yZWNvbG9yX3dlYiwgaW5zZXJ0X2NvYWxlc2NlZF9jb25mbGljdHMsIGNoZWNrX2NvbG9ycywKCWJyZWFrX3ByZWNvbG9yZWRfYWxpYXMsIHJlc3RvcmVfY29uZmxpY3RzX2Zyb21fY29hbGVzY2UsCglzb3J0X2FuZF9jb21iaW5lX3dlYl9wYWlycywgY2hlY2tfdW5jb2FsZXNjZWRfbW92ZXMpOiBMaWtld2lzZS4KCSogcmEtcmV3cml0ZS5jIChzcGlsbF9jb2FsZXNjaW5nLCBzbG90c19vdmVybGFwX3AsIGVtaXRfbG9hZHMsCglyZWxvYWRzX3RvX2xvYWRzLCByZXdyaXRlX3Byb2dyYW0yLCBlbWl0X2NvbG9ycyk6IExpa2V3aXNlLgoJKiByYS5jIChmaXJzdF9oYXJkX3JlZywgY3JlYXRlX2luc25faW5mbywgZmluZF9zdWJ3ZWIsIGluaXRfcmEsCgljaGVja19kZik6IExpa2V3aXNlLgoJKiByZWFsLmMgKGRvX2FkZCwgZG9fbXVsdGlwbHksIGRvX2RpdmlkZSwgZG9fY29tcGFyZSwgZG9fZml4X3RydW5jLAoJcmVhbF9hcml0aG1ldGljLCByZWFsX2NvbXBhcmUsIHJlYWxfZXhwb25lbnQsIHJlYWxfbGRleHAsCglyZWFsX2lkZW50aWNhbCwgcmVhbF90b19pbnRlZ2VyLCByZWFsX3RvX2ludGVnZXIyLCByZWFsX3RvX2RlY2ltYWwsCglyZWFsX3RvX2hleGFkZWNpbWFsLCByZWFsX2Zyb21faW50ZWdlciwgdGVuX3RvX3B0d28sIHRlbl90b19tcHR3bywKCXJlYWxfZGlnaXQsIHJlYWxfbmFuLCByZWFsX21heHZhbCwgcm91bmRfZm9yX2Zvcm1hdCwgcmVhbF9jb252ZXJ0LAoJcmVhbF90b190YXJnZXQsIHJlYWxfZnJvbV90YXJnZXQsIHJlYWxfaGFzaCwgZW5jb2RlX2llZWVfc2luZ2xlLAoJZW5jb2RlX2llZWVfZG91YmxlLCBlbmNvZGVfaWVlZV9leHRlbmRlZCwgZW5jb2RlX2llZWVfcXVhZCwKCWVuY29kZV92YXhfZiwgZW5jb2RlX3ZheF9kLCBlbmNvZGVfdmF4X2csIGVuY29kZV9pMzcwX3NpbmdsZSwKCWVuY29kZV9pMzcwX2RvdWJsZSwgZW5jb2RlX2M0eF9zaW5nbGUsIGVuY29kZV9jNHhfZXh0ZW5kZWQpOiBMaWtld2lzZS4KCSogcmVjb2cuYyAodmFsaWRhdGVfY2hhbmdlLCB2YWxpZGF0ZV9yZXBsYWNlX3J0eF8xLCBhc21fb3BlcmFuZF9vaywKCWV4dHJhY3RfaW5zbiwgcGVlcDJfbmV4dF9pbnNuLCBwZWVwMl9yZWdfZGVhZF9wLAoJcGVlcDJfZmluZF9mcmVlX3JlZ2lzdGVyLCBwZWVwaG9sZTJfb3B0aW1pemUsIHN0b3JlX2RhdGFfYnlwYXNzX3AsCglpZl90ZXN0X2J5cGFzc19wKTogTGlrZXdpc2UuCgkqIHJlZy1zdGFjay5jIChyZWNvcmRfbGFiZWxfcmVmZXJlbmNlcywgZ2V0X2FzbV9vcGVyYW5kX25faW5wdXRzLAoJc3RhY2tfcmVzdWx0LCByZW1vdmVfcmVnbm9fbm90ZSwgZ2V0X2hhcmRfcmVnbnVtLCBlbWl0X3BvcF9pbnNuLAoJZW1pdF9zd2FwX2luc24sIHN3YXBfdG9fdG9wLCBtb3ZlX2Zvcl9zdGFja19yZWcsCglzdWJzdF9zdGFja19yZWdzX3BhdCwgc3Vic3RfYXNtX3N0YWNrX3JlZ3MsIGNoYW5nZV9zdGFjaywKCWNvbXBlbnNhdGVfZWRnZSwgY29udmVydF9yZWdzXzEpOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYyAoaW5pdF9yZWdfc2V0cywgaW5pdF9yZWdfc2V0c18xLAoJbWVtb3J5X21vdmVfc2Vjb25kYXJ5X2Nvc3QpOiBMaWtld2lzZS4KCSogcmVncmVuYW1lLmMgKG5vdGVfc2V0cywgY2xlYXJfZGVhZF9yZWdzLCBzY2FuX3J0eF9yZWcsIHNjYW5fcnR4KToKCUxpa2V3aXNlLgoJKiByZWxvYWQuYyAocHVzaF9zZWNvbmRhcnlfcmVsb2FkLCBmaW5kX3ZhbGlkX2NsYXNzLCBwdXNoX3JlbG9hZCwKCW9wZXJhbmRzX21hdGNoX3AsIGRlY29tcG9zZSwgaW1tdW5lX3AsIGZpbmRfcmVsb2FkcywKCWZpbmRfcmVsb2Fkc190b3BsZXYsIGZpbmRfcmVsb2Fkc19hZGRyZXNzXzEsIHN1YnN0X3JlbG9hZHMsCgljb3B5X3JlcGxhY2VtZW50cywgcmVmZXJzX3RvX3JlZ25vX2Zvcl9yZWxvYWRfcCwKCXJlZ19vdmVybGFwX21lbnRpb25lZF9mb3JfcmVsb2FkX3ApOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChjb21wdXRlX3VzZV9ieV9wc2V1ZG9zLCByZXBsYWNlX3BzZXVkb3NfaW4sIHJlbG9hZCwKCWNvdW50X3BzZXVkbywgZmluZF9yZWcsIGVsaW1pbmF0ZV9yZWdzLCBlbGltaW5hdGVfcmVnc19pbl9pbnNuLAoJdmVyaWZ5X2luaXRpYWxfZWxpbV9vZmZzZXRzLCBmaW5pc2hfc3BpbGxzLCBjbGVhcl9yZWxvYWRfcmVnX2luX3VzZSwKCXJlbG9hZF9yZWdfZnJlZV9wLCByZWxvYWRfcmVnX3JlYWNoZXNfZW5kX3AsIHJlbG9hZHNfY29uZmxpY3QsCgljaG9vc2VfcmVsb2FkX3JlZ3MsIG1lcmdlX2Fzc2lnbmVkX3JlbG9hZHMsIGVtaXRfaW5wdXRfcmVsb2FkX2luc25zLAoJZG9fb3V0cHV0X3JlbG9hZCwgZml4dXBfYWJub3JtYWxfZWRnZXMpOiBMaWtld2lzZS4KCSogcmVvcmcuYyAoc3RvcF9zZWFyY2hfcCwgZW1pdF9kZWxheV9zZXF1ZW5jZSwgZ2V0X2p1bXBfZmxhZ3MsCglmaWxsX3Nsb3RzX2Zyb21fdGhyZWFkLCByZWxheF9kZWxheV9zbG90cyk6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jIChtYXJrX3JlZmVyZW5jZWRfcmVzb3VyY2VzLCBtYXJrX3NldF9yZXNvdXJjZXMpOgoJTGlrZXdpc2UuCgkqIHJ0bC5jIChjb3B5X3J0eCwgcnR4X2VxdWFsX3ApOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChpbnNuX2RlcGVuZGVudF9wLCByZWdfb3ZlcmxhcF9tZW50aW9uZWRfcCwKCWRlYWRfb3Jfc2V0X3AsIGZpbmRfcmVnX2Z1c2FnZSwgcmVtb3ZlX25vdGUsIHJlcGxhY2VfcnR4LAoJc3VicmVnX2xzYl8xLCBzdWJyZWdfcmVnbm9fb2Zmc2V0LCBzdWJyZWdfb2Zmc2V0X3JlcHJlc2VudGFibGVfcCwKCWZpbmRfZmlyc3RfcGFyYW1ldGVyX2xvYWQsIGNhbl9ob2lzdF9pbnNuX3AsIGhvaXN0X3VwZGF0ZV9zdG9yZSwKCWhvaXN0X2luc25fYWZ0ZXIsIGhvaXN0X2luc25fdG9fZWRnZSwgbm9uemVyb19iaXRzMSk6IExpa2V3aXNlLgoJKiBydGxob29rcy5jIChnZW5fbG93cGFydF9nZW5lcmFsKTogTGlrZXdpc2UuCgkqIHNiaXRtYXAuYyAoc2JpdG1hcF9kaWZmZXJlbmNlKTogTGlrZXdpc2UuCgkqIHNjaGVkLWRlcHMuYyAoYWRkX2RlcGVuZGVuY2UsIHNjaGVkX2FuYWx5emVfMSwgc2NoZWRfYW5hbHl6ZV8yLAoJc2NoZWRfYW5hbHl6ZSwgYWRkX2ZvcndhcmRfZGVwZW5kZW5jZSk6IExpa2V3aXNlLgoJKiBzY2hlZC1lYmIuYyAoZml4X2Jhc2ljX2Jsb2NrX2JvdW5kYXJpZXMsIHNjaGVkdWxlX2ViYik6IExpa2V3aXNlLgoJKiBzY2hlZC1yZ24uYyAoZGVidWdfcmVnaW9ucywgY29tcHV0ZV90cmdfaW5mbywgc2NoZWR1bGVfcmVnaW9uLAoJc2NoZWR1bGVfaW5zbnMpOiBMaWtld2lzZS4KCSogc2NoZWQtdmlzLmMgKHByaW50X3BhdHRlcm4pOiBMaWtld2lzZS4KCSogc2Rib3V0LmMgKHNkYm91dF9zeW1ib2wsIHNkYm91dF90b3BsZXZlbF9kYXRhKTogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24sIHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24sCglzaW1wbGlmeV9jb25zdF9yZWxhdGlvbmFsX29wZXJhdGlvbiwgc2ltcGxpZnlfdGVybmFyeV9vcGVyYXRpb24sCglzaW1wbGlmeV9pbW1lZF9zdWJyZWcsIHNpbXBsaWZ5X3N1YnJlZywgc2ltcGxpZnlfZ2VuX3N1YnJlZyk6CglMaWtld2lzZS4KCSogc3JlYWwuYyAoY29weSwgc3JlYWxfc3ViLCBzcmVhbF9kaXYpOiBMaWtld2lzZS4KCSogc3RtdC5jIChmb3JjZV9sYWJlbF9ydHgsIGV4cGFuZF9nb3RvLCBleHBhbmRfYXNtX29wZXJhbmRzLAoJcmVzb2x2ZV9vcGVyYW5kX25hbWVfMSwgZXhwYW5kX3JldHVybiwgZXhwYW5kX2RlY2wsCglleHBhbmRfYW5vbl91bmlvbl9kZWNsLCBlbWl0X2Nhc2VfYml0X3Rlc3RzLCBleHBhbmRfY2FzZSk6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChwdXRfcGVuZGluZ19zaXplLCBzbWFsbGVzdF9tb2RlX2Zvcl9zaXplLAoJaW50X21vZGVfZm9yX21vZGUsIGxheW91dF9kZWNsLCBmaW5pc2hfYnVpbHRpbl9zdHJ1Y3QsIGxheW91dF90eXBlLAoJc2V0X3NpemV0eXBlLCBnZXRfbW9kZV9ib3VuZHMpOiBMaWtld2lzZS4KCjIwMDQtMDktMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWZhdWx0cy5oIChNVUxUSVBMRV9TWU1CT0xfU1BBQ0VTKTogUHJvdmlkZSBkZWZhdWx0LgoJKiBjb25maWcvYXJtL3BlY29mZi5oLCBjb25maWcvaTM4Ni9iZW9zLWVsZi5oCgkqIGNvbmZpZy9pMzg2L2N5Z21pbmcuaCwgY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4Lmg6CglEZWZpbmUgTVVMVElQTEVfU1lNQk9MX1NQQUNFUyB0byAxLCBub3Qgbm90aGluZy4gIFJlbW92ZQoJY29tbWVudCBjbG9uZWQgZnJvbSBtYW51YWwuCgkqIGRvYy90bS50ZXhpOiBVcGRhdGUgZGVzY3JpcHRpb24gb2YgTVVMVElQTEVfU1lNQk9MX1NQQUNFUy4KCjIwMDQtMDktMDkgIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChidWlsZF92YV9hcmdfaW5kaXJlY3RfcmVmKTogTmV3IGZ1bmN0aW9uLgoJKHN0ZF9naW1wbGlmeV92YV9hcmdfZXhwcik6IENhbGwgaXQgaW5zdGVhZCBvZiBtdWRmbGFwIGNoZWNrIGFuZAoJYnVpbGRfZm9sZF9pbmRpcmVjdF9yZWYuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9naW1wbGlmeV92YV9hcmcpOiBEaXR0by4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2dpbXBsaWZ5X3ZhX2FyZyk6IERpdHRvLgoJKiB0cmVlLmg6IERlY2xhcmUgbmV3IGZ1bmN0aW9uLgoKMjAwNC0wOS0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX21hcmtfZnVuY3Rpb25zX3RvX291dHB1dCk6IFJlbmFibGUgbm9kZQoJZHVtcGluZyBmb3IgZGV2ZWxvcG1lbnQgYnVpbGRzLgoJKiBlbWl0LXJ0bC5jICh2ZXJpZnlfcnR4X3NoYXJpbmcpOiBHaXZlIHZlcmJvc2UgZmFpbHVyZSBmb3IKCWRldmVsb3BtZW50IGJ1aWxkcyBvbmx5LgoJKiBnZW5hdHRydGFiLmMgKHdyaXRlX2VsaWdpYmxlX2RlbGF5KTogRml4IHR5cG8gaW4gcHJldmlvdXMKCWNvbW1pdC4KCSogdHJlZS5jIChpdGVyYXRpdmVfaGFzaF9leHByKTogUmVwbGFjZSBnY2NfdW5yZWFjaGFibGUgd2l0aAoJZ2NjX2Fzc2VydC4KCjIwMDQtMDktMDkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY3NlLmMgKElOU05fQ1VJRCwgaW5zZXJ0X3NldF9pbl90YWJsZSwgZmluZF9hdmFpbF9zZXQsCgljcHJvcF9pbnNuLCBkb19sb2NhbF9jcHJvcCwgbG9jYWxfY3Byb3BfcGFzcywgZmluZF9ieXBhc3Nfc2V0LAoJcHJvY2Vzc19pbnNlcnRfaW5zbiwgaW5zZXJ0X2luc25fZW5kX2JiLCBwcmVfaW5zZXJ0X2NvcHlfaW5zbiwKCWhvaXN0X2NvZGUsIGV4dHJhY3RfbWVudGlvbmVkX3JlZ3NfaGVscGVyLCBjb21wdXRlX3N0b3JlX3RhYmxlLAoJaW5zZXJ0X3N0b3JlKTogVXNlIGdjY19hc3NlcnQgYW5kIGdjY191bnJlYWNoYWJsZS4KCSogZ2djLWNvbW1vbi5jIChnZ2Nfc3BsYXlfYWxsb2MsIGdnY19zcGxheV9kb250X2ZyZWUsCglndF9wY2hfbm90ZV9vYmplY3QsIGd0X3BjaF9ub3RlX3Jlb3JkZXIsIHJlbG9jYXRlX3B0cnMsCglnZ2NfcmVjb3JkX292ZXJoZWFkKTogTGlrZXdpc2UuCgkqIGdnYy1wYWdlLmMgKGFsbG9jX3BhZ2UsIGZyZWVfcGFnZSwgZ2djX3NldF9tYXJrLCBnZ2NfbWFya2VkX3AsCglpbml0X2dnYywgZ2djX3B1c2hfY29udGV4dCwgZ2djX3JlY2FsY3VsYXRlX2luX3VzZV9wLAoJZ2djX3BvcF9jb250ZXh0LCBjbGVhcl9tYXJrcywgdmFsaWRhdGVfZnJlZV9vYmplY3RzLAoJZ2djX3BjaF9yZWFkKTogTGlrZXdpc2UuCgkqIGdnYy16b25lLmMgKGdnY19hbGxvY2F0ZWRfcCwgZnJlZV9jaHVuaywgZ2djX3NldF9tYXJrLAoJZ2djX21hcmtlZF9wLCBnZ2NfZ2V0X3NpemUsIGluaXRfZ2djLCBkZXN0cm95X2dnY196b25lLAoJZ2djX3B1c2hfY29udGV4dCwgY2hlY2tfY29va2llcywgZ2djX2NvbGxlY3QsCglnZ2NfcHJpbnRfc3RhdGlzdGljcyk6IExpa2V3aXNlLgoJKiBnaW1wbGUtbG93LmMgKGxvd2VyX2Z1bmN0aW9uX2JvZHksIGxvd2VyX3N0bXQsCglsb3dlcl9iaW5kX2V4cHIpOiBMaWtld2lzZS4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxlX3RyZWVfZXEsIHB1c2hfZ2ltcGxpZnlfY29udGV4dCwKCXBvcF9naW1wbGlmeV9jb250ZXh0LCBnaW1wbGVfcG9wX2NvbmRpdGlvbiwgY3JlYXRlX3RtcF92YXIsCglkZWNsYXJlX3RtcF92YXJzLCBnaW1wbGVfYWRkX3RtcF92YXIsIGFubm90YXRlX2FsbF93aXRoX2xvY3VzLAoJbW9zdGx5X2NvcHlfdHJlZV9yLCBnaW1wbGlmeV9yZXR1cm5fZXhwciwgZ2ltcGxpZnlfc3dpdGNoX2V4cHIsCglnaW1wbGlmeV9jYXNlX2xhYmVsX2V4cHIsIGdpbXBsaWZ5X2V4aXRfYmxvY2tfZXhwciwKCWNhbm9uaWNhbGl6ZV9jb21wb25lbnRfcmVmLCBnaW1wbGlmeV9jb21wb3VuZF9sdmFsLAoJZ2ltcGxpZnlfc2VsZl9tb2RfZXhwciwgZ2ltcGxpZnlfY2FsbF9leHByLAoJZ2ltcGxpZnlfaW5pdF9jdG9yX2V2YWwsIGdpbXBsaWZ5X2luaXRfY29uc3RydWN0b3IsCglnaW1wbGlmeV9tb2RpZnlfZXhwciwgZ2ltcGxpZnlfc2F2ZV9leHByLCBnaW1wbGlmeV90YXJnZXRfZXhwciwKCWdpbXBsaWZ5X2V4cHIsIGNoZWNrX3BvaW50ZXJfdHlwZXNfciwKCWZvcmNlX2dpbXBsZV9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGdsb2JhbC5jIChnbG9iYWxfYWxsb2MsIGJ1aWxkX2luc25fY2hhaW4pOiBMaWtld2lzZS4KCSogZ3JhcGguYyAoY2xlYW5fZ3JhcGhfZHVtcF9maWxlLAoJZmluaXNoX2dyYXBoX2R1bXBfZmlsZSk6IExpa2V3aXNlLgoJZ2Nvdi1pby5jIChnY292X29wZW4pOiBVc2UgR0NPVl9DSEVDSy4KCjIwMDQtMDktMDkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGFjY19vcGVyYW5kLCBhY2NnX29wZXJhbmQpOiBVc2UgUkVHTk8uCgoyMDA0LTA5LTA5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJbWlkZGxlLWVuZC8xNzEyOAoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBNYWtlIG92ZXJhY3RpdmUgc2FuaXR5IGNoZWNrCgloYXBweS4KCjIwMDQtMDktMDkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKHBlZWxfYWRkcmVzcyk6IEZpeCBhYm9ydCBvbgoJVklFV19DT05WRVJUX0VYUFIuCgoyMDA0LTA5LTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKGdlbmd0eXBlKTogVXNlICQoQlVJTERfRVJST1JTKS4KCShnZW5ndHlwZS5vKTogRGVwZW5kIG9uIGVycm9ycy5oLgoJKiBnZW5hdHRydGFiLmMgKHN0cmNtcF9jaGVjayk6IFVzZSBnY2NfYXNzZXJ0IGFuZCBnY2NfdW5yZWFjaGFibGUuCgkoYXR0cl9ydHhfMSwgYXR0cl9wcmludGYsIGF0dHJfY29weV9ydHgsIGV2YWx1YXRlX2VxX2F0dHIsCglhdHRyX2FsdF9zdWJzZXRfcCwgYXR0cl9hbHRfc3Vic2V0X29mX2NvbXBsX3AsCglhdHRyX2FsdF9pbnRlcnNlY3Rpb24sIGF0dHJfYWx0X3VuaW9uLCBvcHRpbWl6ZV9hdHRycywgZ2VuX2luc24sCgl3cml0ZV90ZXN0X2V4cHIsIHdyaXRlX2F0dHJfdmFsdWUsIHdyaXRlX2VsaWdpYmxlX2RlbGF5LAoJbWFrZV9pbnRlcm5hbF9hdHRyLCBtYWtlX251bWVyaWNfdmFsdWUpOiBMaWtld2lzZS4KCSogZ2VuYXV0b21hdGEuYyAocmVnZXhwX25hbWUsIGdldF9zdHJfdmVjdCwKCWdlbl9wcmVzZW5jZV9hYnNlbmNlX3NldCwgYXV0b21hdG9uX2RlY2xfaGFzaCwKCWF1dG9tYXRvbl9kZWNsX2VxX3AsIGluc25fZGVjbF9oYXNoLCBpbnNuX2RlY2xfZXFfcCwgZGVjbF9oYXNoLAoJZGVjbF9lcV9wLCBwcm9jZXNzX3JlZ2V4cCwgbG9vcF9pbl9yZWdleHAsIGNoZWNrX2xvb3BzX2luX3JlZ2V4cHMsCglwcm9jZXNzX3JlZ2V4cF9jeWNsZXMsIHJlc2Vydl9zZXRzX2NtcCwgc2V0X3VuaXRfcmVzZXJ2LAoJdGVzdF91bml0X3Jlc2VydiwgaXRfaXNfZW1wdHlfcmVzZXJ2X3NldHMsCglyZXNlcnZfc2V0c19hcmVfaW50ZXJzZWN0ZWQsIHJlc2Vydl9zZXRzX3NoaWZ0LCByZXNlcnZfc2V0c19vciwKCXJlc2Vydl9zZXRzX2FuZCwgb3V0cHV0X2N5Y2xlX3Jlc2VydnMsIGdldF9mcmVlX3N0YXRlLAoJaW50ZXJzZWN0ZWRfc3RhdGVfcmVzZXJ2c19wLCBzdGF0ZXNfdW5pb24sIHJlbW92ZV9hcmMsCgljb3B5X2luc25fcmVnZXhwLCB0cmFuc2Zvcm1fMSwgdHJhbnNmb3JtXzIsIHRyYW5zZm9ybV8zLAoJcmVnZXhwX3RyYW5zZm9ybV9mdW5jLCBzdG9yZV9hbHRfdW5pdF91c2FnZSwKCWNoZWNrX3JlZ2V4cF91bml0c19kaXN0cmlidXRpb24sIHByb2Nlc3Nfc2VxX2Zvcl9mb3JtaW5nX3N0YXRlcywKCXByb2Nlc3NfYWx0c19mb3JfZm9ybWluZ19zdGF0ZXMsIG1ha2VfYXV0b21hdG9uLAoJZm9ybV9hcmNzX21hcmtlZF9ieV9pbnNuLCBjcmVhdGVfY29tcG9zZWRfc3RhdGUsCglzZXRfb3V0X2FyY19pbnNuc19lcXVpdl9udW0sIHBhcnRpdGlvbl9lcXVpdl9jbGFzcywKCXByb2Nlc3NfaW5zbl9lcXVpdl9jbGFzcywgc2V0X2luc25fZXF1aXZfY2xhc3NlcywKCXVuaXRzX3RvX2F1dG9tYXRhX2hldXJpc3RpY19kaXN0ciwgZm9ybV9yZWdleHAsCglsb25nZXN0X3BhdGhfbGVuZ3RoLCBvdXRwdXRfZGZhX21heF9pc3N1ZV9yYXRlLCBhZGRfdmVjdCwKCW91dF9zdGF0ZV9hcmNzX251bSwgYWRkX3ZlY3RfZWwsIG91dHB1dF90cmFuc190YWJsZSwKCW91dHB1dF9zdGF0ZV9hbHRzX3RhYmxlLCBvdXRwdXRfZGVhZF9sb2NrX3ZlY3QsCglvdXRwdXRfbWF4X2luc25fcXVldWVfaW5kZXhfZGVmLAoJb3V0cHV0X21pbl9pbnNuX2NvbmZsaWN0X2RlbGF5X2Z1bmMsCglvdXRwdXRfaW50ZXJuYWxfaW5zbl9sYXRlbmN5X2Z1bmMsIG91dHB1dF9wcmludF9yZXNlcnZhdGlvbl9mdW5jLAoJb3V0cHV0X2NwdV91bml0X3Jlc2VydmF0aW9uX3AsIG91dHB1dF9zdGF0ZV9hcmNzLAoJbWFrZV9pbnNuX2FsdHNfYXR0ciwgbWFrZV9pbnRlcm5hbF9kZmFfaW5zbl9jb2RlX2F0dHIsCgltYWtlX2RlZmF1bHRfaW5zbl9sYXRlbmN5X2F0dHIsCglmb3JtX2ltcG9ydGFudF9pbnNuX2F1dG9tYXRhX2xpc3RzKTogTGlrZXdpc2UuCgkqIGdlbmVtaXQuYyAoZ2VuX2V4cCwgb3V0cHV0X2FkZF9jbG9iYmVycywKCW91dHB1dF9hZGRlZF9jbG9iYmVyc19oYXJkX3JlZ19wKTogTGlrZXdpc2UuCgkqIGdlbmV4dHJhY3QuYyAocHJpbnRfcGF0aCwgbWFpbik6IExpa2V3aXNlLgoJKiBnZW5mbGFncy5jIChnZW5fbWFjcm8pOiBMaWtld2lzZS4KCSogZ2VuZ2VucnRsLmM6IEluY2x1ZGUgZXJyb3JzLmgKCSh0eXBlX2Zyb21fZm9ybWF0LCBhY2Nlc3Nvcl9mcm9tX2Zvcm1hdCk6IExpa2V3aXNlLgoJKiBnZW5ndHlwZS5jIChnZXRfZmlsZV9iYXNlbmFtZSwgb3V0cHV0X21hbmdsZWRfdHlwZW5hbWUsCgl3YWxrX3R5cGUsIHdyaXRlX3R5cGVzX3Byb2Nlc3NfZmllbGQsCgl3cml0ZV90eXBlc19sb2NhbF9wcm9jZXNzX2ZpZWxkKTogTGlrZXdpc2UuCgkqIGdlbm1vZGVzLmMgKGNvbXBsZXRlX21vZGUpOiBMaWtld2lzZS4KCSogZ2Vub3Bpbml0LmMgKGdlbl9pbnNuKTogTGlrZXdpc2UuCgkqIGdlbm91dHB1dC5jIChvdXRwdXRfaW5zbl9kYXRhLCBjaGVja19jb25zdHJhaW50X2xlbiwKCWNvbnN0cmFpbnRfbGVuKTogTGlrZXdpc2UuCgkqIGdlbnByZWRzLmMgKGFkZF9tb2RlX3Rlc3RzKTpMaWtld2lzZS4KCSogZ2VuLXByb3Rvcy5jIChhZGRfaGFzaCk6IExpa2V3aXNlLgoJKiBnZW5yZWNvZy5jIChmaW5kX29wZXJhbmQsIGZpbmRfbWF0Y2hpbmdfb3BlcmFuZCwKCXZhbGlkYXRlX3BhdHRlcm4sIGFkZF90b19zZXF1ZW5jZSwgbWF5YmVfYm90aF90cnVlLAoJbm9kZXNfaWRlbnRpY2FsXzEsIG1lcmdlX3RyZWVzLCB3cml0ZV9zd2l0Y2gsIHdyaXRlX2NvbmQsCgl3cml0ZV9hY3Rpb24sIGlzX3VuY29uZGl0aW9uYWwsIG1ha2VfaW5zbl9zZXF1ZW5jZSwKCWRlYnVnX2RlY2lzaW9uXzIpOiBMaWtld2lzZS4KCSogZ2Vuc3VwcG9ydC5jIChpc19wcmVkaWNhYmxlLCBjb2xsZWN0X2luc25fZGF0YSwKCWFsdGVyX3ByZWRpY2F0ZV9mb3JfaW5zbiwgbWF5YmVfZXZhbF9jX3Rlc3QpOiBMaWtld2lzZS4KCjIwMDQtMDktMDkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGJhc2ljLWJsb2NrLmggKGd1ZXNzX291dGdvaW5nX2VkZ2VfcHJvYmFiaWxpdGllcyk6IERlY2xhcmUuCgkqIGNmZ2J1aWxkLmMgKGNvbXB1dGVfb3V0Z29pbmdfZnJlcXVlbmNpZXMpOiBXaGVuIHByb2JhYmlsaXR5IGlzCgltaXNzaW5nLCBndWVzcyBpdC4KCShmaW5kX21hbnlfc3ViX2Jhc2ljX2Jsb2Nrcyk6IERvIHVwZGF0ZSBwcm9maWxlIG9ubHkgd2hlbiBpdCBpcwoJcHJlc2VudC4KCSogcHJlZGljdC5jIChzZXRfZXZlbl9wcm9iYWJpbGl0aWVzKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoY29tYmluZV9wcmVkaWN0aW9uc19mb3JfaW5zbik6IC4uLiBoZXJlOyBkZWFsIHdpdGgKCSFjYW5fcHJlZGljdF9pbnNuX3AgaW5zbnMuCgkoY29tYmluZV9wcmVkaWN0aW9uc19mb3JfYmIpOiBVc2Ugc2V0X2V2ZW5fcHJvYmFiaWxpdGllcy4KCShiYl9lc3RpbWF0ZV9wcm9iYWJpbGl0eV9sb2NhbGx5KTogQnJlYWsgb3V0IGZyb20gLi4uLgoJKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogLi4uIGhlcmUuCgkoZ3Vlc3Nfb3V0Z29pbmdfZWRnZV9wcm9iYWJpbGl0aWVzKTogTmV3IGVudHJ5IHBvaW50LgoKMjAwNC0wOS0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdjYy5jIChhZGRfc3lzcm9vdGVkX3ByZWZpeCwgZXhlY3V0ZSwgZG9fc2VsZl9zcGVjLCBkb19zcGVjXzEsCgloYW5kbGVfYnJhY2VzLCBwcm9jZXNzX2JyYWNlX2JvZHksIG1haW4sIHVzZWRfYXJnLAoJc2V0X211bHRpbGliX2RpciwgcHJpbnRfbXVsdGlsaWJfaW5mbyk6IFVzZSBmYXRhbCwgbm90IGFib3J0LgoKCSogdHJlZS1uZXN0ZWQuYyAoY3JlYXRlX3RtcF92YXJfZm9yKTogQ29ycmVjdCBtaXNzaW52ZXJ0ZWQgYXNzZXJ0LgoKCSogdHJlZS1vdXRvZi1zc2EuYyAoZnJlZV90ZW1wX2V4cHJfdGFibGUpOiBBZGQgbWlzc2VkIGFzc2VydC4KCSogdHJlZS1zc2EtY2NwLmMgKHNldF9sYXR0aWNlX3ZhbHVlKTogQ29ycmVjdCBtaXNzYXBwbGllZCBkZQoJTW9yZ2FuJ3MgdGhlb3JlbSBpbiBsYXN0IGNoZWNraW4uCgoyMDA0LTA5LTA5ICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGdjYy5nbnUub3JnPgoJICAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF91bndpbmRfZW1pdCwgZGVmYXVsdF9zY2FsYXJfbW9kZV9zdXBwb3J0ZWRfcCk6CglVc2UgZ2NjX2Fzc2VydCwgZ2NjX3VucmVhY2hhYmxlICYgaW50ZXJuYWxfZXJyb3IgaW5zdGVhZCBvZiBhYm9ydC4KCSogdGltZXZhci5jICh0aW1ldmFyX3B1c2gsIHRpbWV2YXJfcG9wLCB0aW1ldmFyX3N0YXJ0LAoJdGltZXZhcl9zdG9wKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChkZWZhdWx0X3BjaF92YWxpZF9wKTogTGlrZXdpc2UuCgkqIHRyYWNlci5jICh0YWlsX2R1cGxpY2F0ZSk6IExpa2V3aXNlLgoJKiB0cmVlLWFsaWFzLWNvbW1vbi5jIChnZXRfYWxpYXNfdmFyX2RlY2wsCglnZXRfdmFsdWVzX2Zyb21fY29uc3RydWN0b3IsIGNyZWF0ZV9hbGlhc192YXIsIGRlbGV0ZV9hbGlhc192YXJzLAoJZW1wdHlfcG9pbnRzX3RvX3NldCwgc2FtZV9wb2ludHNfdG9fc2V0LCBwdHJfbWF5X2FsaWFzX3Zhcik6CglMaWtld2lzZS4KCSogdHJlZS5jICh0cmVlX3NpemUsIG1ha2Vfbm9kZV9zdGF0LCBjb3B5X25vZGVfc3RhdCwKCWJ1aWxkX2ludF9jc3Rfd2lkZSwgaW50ZWdlcl9hbGxfb25lc3AsIGxpc3RfbGVuZ3RoLCBjaGFpbm9uLAoJdHJlZV9ub2RlX3N0cnVjdHVyZSwgdHlwZV9jb250YWluc19wbGFjZWhvbGRlcl9wLCBzdWJzdGl0dXRlX2luX2V4cHIsCglzdWJzdGl0dXRlX3BsYWNlaG9sZGVyX2luX2V4cHIsIHRhYmlsaXplX3JlZmVyZW5jZV8xLCBidWlsZDBfc3RhdCwKCWJ1aWxkMV9zdGF0LCBidWlsZDJfc3RhdCwgYnVpbGQzX3N0YXQsIGJ1aWxkNF9zdGF0LCBpc19hdHRyaWJ1dGVfcCwKCWxvb2t1cF9hdHRyaWJ1dGUsIHR5cGVfaGFzaF9jYW5vbiwgaG9zdF9pbnRlZ2VycCwgaXRlcmF0aXZlX2hhc2hfZXhwciwKCWJ1aWxkX21ldGhvZF90eXBlX2RpcmVjdGx5LCBkZWNsX3R5cGVfY29udGV4dCwgZ2V0X2NhbGxlZV9mbmRlY2wsCglnZXRfc2V0X2NvbnN0cnVjdG9yX2JpdHMsIGJ1aWxkX3ZlY3Rvcl90eXBlX2Zvcl9tb2RlLCBpbnRfY3N0X3ZhbHVlLAoJdHJlZV9mb2xkX2djZCk6IExpa2V3aXNlLgoJKiB0cmVlLWNmZy5jIChjcmVhdGVfYmIsIG1ha2VfY3RybF9zdG10X2VkZ2VzLCBtYWtlX2V4aXRfZWRnZXMsCgltYWtlX2NvbmRfZXhwcl9lZGdlcywgZ3JvdXBfY2FzZV9sYWJlbHMsIHRyZWVfbWVyZ2VfYmxvY2tzLAoJY2xlYW51cF9jb250cm9sX2V4cHJfZ3JhcGgsIGZpbmRfdGFrZW5fZWRnZSwKCWZpbmRfdGFrZW5fZWRnZV9zd2l0Y2hfZXhwciwgcGhpX2FsdGVybmF0aXZlc19lcXVhbCwKCWlzX2N0cmxfYWx0ZXJpbmdfc3RtdCwgZGlzYmFuZF9pbXBsaWNpdF9lZGdlcywgc2V0X2JiX2Zvcl9zdG10LAoJc3RtdF9mb3JfYnNpLCB0cmVlX2ZpbmRfZWRnZV9pbnNlcnRfbG9jLCBic2lfaW5zZXJ0X29uX2VkZ2VfaW1tZWRpYXRlLAoJdHJlZV9zcGxpdF9lZGdlLCB0cmVlX3ZlcmlmeV9mbG93X2luZm8sIHRocmVhZF9qdW1wcywKCXRyZWVfcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoLCB0cmVlX2Zsb3dfY2FsbF9lZGdlc19hZGQpOiBMaWtld2lzZS4KCSogdHJlZS1jaHJlYy5jIChjaHJlY19mb2xkX3BvbHlfY3N0LCBjaHJlY19mb2xkX3BsdXNfcG9seV9wb2x5LAoJY2hyZWNfZm9sZF9tdWx0aXBseV9wb2x5X3BvbHkpOiBMaWtld2lzZS4KCSogdHJlZS1jb21wbGV4LmMgKGV4dHJhY3RfY29tcG9uZW50LCBleHBhbmRfY29tcGxleF9kaXZpc2lvbiwKCWV4cGFuZF9jb21wbGV4X2NvbXBhcmlzb24sIGV4cGFuZF9jb21wbGV4X29wZXJhdGlvbnNfMSwKCWJ1aWxkX3JlcGxpY2F0ZWRfY29uc3QsIGV4cGFuZF92ZWN0b3Jfb3BlcmF0aW9uc18xKTogTGlrZXdpc2UuCgkqIHRyZWUtZGF0YS1yZWYuYyAodHJlZV9mb2xkX2Jlem91dCwgYnVpbGRfY2xhc3NpY19kaXN0X3ZlY3RvciwKCWJ1aWxkX2NsYXNzaWNfZGlyX3ZlY3Rvcik6IExpa2V3aXNlLgoJKiB0cmVlLWRmYS5jIChjb21wdXRlX2ltbWVkaWF0ZV91c2VzX2Zvcl9waGksCgljb21wdXRlX2ltbWVkaWF0ZV91c2VzX2Zvcl9zdG10LCBjcmVhdGVfdmFyX2FubiwgY3JlYXRlX3N0bXRfYW5uLAoJY3JlYXRlX3RyZWVfYW5uLCBjb2xsZWN0X2RmYV9zdGF0cywgZ2V0X3ZpcnR1YWxfdmFyKTogTGlrZXdpc2UuCgkqIHRyZWUtZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogTGlrZXdpc2UuCgkqIHRyZWUtZWguYyAocmVjb3JkX3N0bXRfZWhfcmVnaW9uLCBhZGRfc3RtdF90b19laF9yZWdpb24sCglyZWNvcmRfaW5fZmluYWxseV90cmVlLCByZXBsYWNlX2dvdG9fcXVldWVfMSwKCW1heWJlX3JlY29yZF9pbl9nb3RvX3F1ZXVlLCB2ZXJpZnlfbm9yZWNvcmRfc3dpdGNoX2V4cHIsCglkb19yZXR1cm5fcmVkaXJlY3Rpb24pOiBMaWtld2lzZS4KCSogdHJlZS1pZi1jb252LmMgKHRyZWVfaWZfY29udmVydF9zdG10LCB0cmVlX2lmX2NvbnZlcnRfY29uZF9leHByLAoJYWRkX3RvX2RzdF9wcmVkaWNhdGVfbGlzdCwgZmluZF9waGlfcmVwbGFjZW1lbnRfY29uZGl0aW9uLAoJcmVwbGFjZV9waGlfd2l0aF9jb25kX21vZGlmeV9leHByLCBnZXRfbG9vcF9ib2R5X2luX2lmX2NvbnZfb3JkZXIpOgoJTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmMgKHJlbWFwX2RlY2wsIHJlbWFwX3R5cGUsIHJlbWFwX2RlY2xzLCBjb3B5X2JvZHlfciwKCWluaXRpYWxpemVfaW5saW5lZF9wYXJhbWV0ZXJzLCBkZWNsYXJlX3JldHVybl92YXJpYWJsZSwKCWVzdGltYXRlX251bV9pbnNuc18xLCBleHBhbmRfY2FsbF9pbmxpbmUsIGV4cGFuZF9jYWxsc19pbmxpbmUsCglvcHRpbWl6ZV9pbmxpbmVfY2FsbHMsIGNvcHlfdHJlZV9yKTogTGlrZXdpc2UuCgkqIHRyZWUtaW50by1zc2EuYyAocmV3cml0ZV9pbml0aWFsaXplX2Jsb2NrX2xvY2FsX2RhdGEsIHJld3JpdGVfc3RtdCwKCXNzYV9yZXdyaXRlX3N0bXQsIHJld3JpdGVfaW50b19zc2EpOiBMaWtld2lzZS4KCSogdHJlZS1pdGVyYXRvci5jIChhbGxvY19zdG10X2xpc3QsIHRzaV9saW5rX2JlZm9yZSwgdHNpX2xpbmtfYWZ0ZXIsCgl0c2lfc3BsaXRfc3RhdGVtZW50X2xpc3RfYWZ0ZXIsIHRzaV9zcGxpdF9zdGF0ZW1lbnRfbGlzdF9iZWZvcmUpOgoJTGlrZXdpc2UuCgkqIHRyZWUtbXVkZmxhcC5jIChtZl92YXJuYW1lX3RyZWUpOiBMaWtld2lzZS4KCSogdHJlZS1uZXN0ZWQuYyAoY3JlYXRlX3RtcF92YXJfZm9yLCBsb29rdXBfZmllbGRfZm9yX2RlY2wsCglsb29rdXBfdHJhbXBfZm9yX2RlY2wsIGNvbnZlcnRfYWxsX2Z1bmN0aW9uX2NhbGxzKTogTGlrZXdpc2UuCgkqIHRyZWUtb3B0aW1pemUuYyAodHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uKTogTGlrZXdpc2UuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKGNyZWF0ZV90ZW1wLCBlbGltaW5hdGVfYnVpbGQsIGVsaW1pbmF0ZV9waGksCgljb2FsZXNjZV9hYm5vcm1hbF9lZGdlcywgY29hbGVzY2Vfc3NhX25hbWUsIGVsaW1pbmF0ZV92aXJ0dWFsX3BoaXMsCglmcmVlX3RlbXBfZXhwcl90YWJsZSwgYWRkX2RlcGVuZGFuY2UsIGZpbmlzaF9leHByLCByZXdyaXRlX3RyZWVzKToKCUxpa2V3aXNlLgoJKiB0cmVlLXBoaW5vZGVzLmMgKHJlc2l6ZV9waGlfbm9kZSwgYWRkX3BoaV9hcmcsCglyZW1vdmVfYWxsX3BoaV9ub2Rlc19mb3IpOiBMaWtld2lzZS4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAob3BfcHJpbywgcHJpbnRfY2FsbF9uYW1lKTogTGlrZXdpc2UuCgkqIHRyZWUtcHJvZmlsZS5jICh0cmVlX2dlbl9pbnRlcnZhbF9wcm9maWxlciwgdHJlZV9nZW5fcG93Ml9wcm9maWxlciwKCXRyZWVfZ2VuX29uZV92YWx1ZV9wcm9maWxlciwgdHJlZV9nZW5fY29uc3RfZGVsdGFfcHJvZmlsZXIpOiBMaWtld2lzZS4KCSogdHJlZS1zcmEuYyAodHlwZV9jYW5faW5zdGFudGlhdGVfYWxsX2VsZW1lbnRzLCBzcmFfaGFzaF90cmVlLAoJc3JhX2VsdF9lcSwgc3JhX3dhbGtfZXhwciwgaW5zdGFudGlhdGVfbWlzc2luZ19lbGVtZW50cywKCWdlbmVyYXRlX29uZV9lbGVtZW50X3JlZiwgZ2VuZXJhdGVfZWxlbWVudF9jb3B5LAoJZ2VuZXJhdGVfZWxlbWVudF96ZXJvLCBzY2FsYXJpemVfY29weSwgc2NhbGFyaXplX2luaXQsCglzY2FsYXJpemVfbGRzdCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChkZWxldGVfYWxpYXNfaW5mbywgZ3JvdXBfYWxpYXNlcywgbWF5X2FsaWFzX3AsCglhZGRfbWF5X2FsaWFzLCBhZGRfcG9pbnRlZF90b19leHByLCBhZGRfcG9pbnRlZF90b192YXIsCgljb2xsZWN0X3BvaW50c190b19pbmZvX3IsIGdldF90bXRfZm9yLCBnZXRfcHRyX2luZm8pOiBMaWtld2lzZS4KCSogdHJlZS1zc2EuYyAod2Fsa191c2VfZGVmX2NoYWlucywgY2hlY2tfcGhpX3JlZHVuZGFuY3kpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY2NwLmMgKGR1bXBfbGF0dGljZV92YWx1ZSwgZ2V0X2RlZmF1bHRfdmFsdWUsIGdldF92YWx1ZSwKCXNldF9sYXR0aWNlX3ZhbHVlLCBsaWtlbHlfdmFsdWUsIGNjcF92aXNpdF9waGlfbm9kZSwgdmlzaXRfYXNzaWdubWVudCwKCXdpZGVuX2JpdGZpZWxkLCBjY3BfZm9sZF9idWlsdGluKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWNvcHkuYyAobWF5X3Byb3BhZ2F0ZV9jb3B5LCBtZXJnZV9hbGlhc19pbmZvLAoJcmVwbGFjZV9leHBfMSwgcHJvcGFnYXRlX3RyZWVfdmFsdWUpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY29weXJlbmFtZS5jIChjb3B5X3JlbmFtZV9wYXJ0aXRpb25fY29hbGVzY2UpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtZGNlLmMgKHNldF9jb250cm9sX2RlcGVuZGVuY2VfbWFwX2JpdCwKCWZpbmRfY29udHJvbF9kZXBlbmRlbmNlLCBmaW5kX3Bkb20sIG1hcmtfb3BlcmFuZF9uZWNlc3NhcnksCgltYXJrX3N0bXRfaWZfb2J2aW91c2x5X25lY2Vzc2FyeSwKCW1hcmtfY29udHJvbF9kZXBlbmRlbnRfZWRnZXNfbmVjZXNzYXJ5LCByZW1vdmVfZGVhZF9zdG10KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRvbS5jIChkb21fb3B0X2luaXRpYWxpemVfYmxvY2tfbG9jYWxfZGF0YSwKCXNpbXBsaWZ5X3N3aXRjaF9hbmRfbG9va3VwX2F2YWlsX2V4cHIsIGNwcm9wX2ludG9fc3VjY2Vzc29yX3BoaXMsCgllbGltaW5hdGVfcmVkdW5kYW50X2NvbXB1dGF0aW9ucywgYXZhaWxfZXhwcl9lcSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kc2UuYyAoZml4X3N0bXRfdl9tYXlfZGVmcyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLWNoLmMgKHNob3VsZF9kdXBsaWNhdGVfbG9vcF9oZWFkZXJfcCwKCWR1cGxpY2F0ZV9ibG9ja3MpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChmb3JfZWFjaF9pbmRleCwgc2V0X2xldmVsLAoJaXNfY2FsbF9jbG9iYmVyZWRfcmVmKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGR1bXBfdXNlLCBkaXZpZGUsIHN0bXRfYWZ0ZXJfaXBfbm9ybWFsX3BvcywKCXN0bXRfYWZ0ZXJfaW5jcmVtZW50LCBzZXRfaXYsIGNvbnRhaW5zX2Fibm9ybWFsX3NzYV9uYW1lX3AsCglmaW5kX2ludGVyZXN0aW5nX3VzZXNfb3V0ZXJfb3Jfbm9ubGluLCBhZGRfZGVyaXZlZF9pdnNfY2FuZGlkYXRlcywKCXBlZWxfYWRkcmVzcywgcHRyX2RpZmZlcmVuY2VfY29zdCwgbWF5X3JlcGxhY2VfZmluYWxfdmFsdWUsCglkZXRlcm1pbmVfdXNlX2l2X2Nvc3QsIHJld3JpdGVfdXNlX25vbmxpbmVhcl9leHByLCByZXdyaXRlX3VzZV9vdXRlciwKCXJld3JpdGVfdXNlLCByZXdyaXRlX3VzZXMpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jIChyZXdyaXRlX2ludG9fbG9vcF9jbG9zZWRfc3NhLAoJY2hlY2tfbG9vcF9jbG9zZWRfc3NhX3VzZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYW5hbWVzLmMgKG1ha2Vfc3NhX25hbWUpOiBMaWtld2lzZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZmluYWxpemVfc3NhX2RlZnMsIGZpbmFsaXplX3NzYV91c2VzLAoJZmluYWxpemVfc3NhX3ZfbXVzdF9kZWZzLCBmaW5hbGl6ZV9zc2Ffc3RtdF9vcGVyYW5kcywKCWdldF9zdG10X29wZXJhbmRzLCBnZXRfZXhwcl9vcGVyYW5kcywgZ2V0X2FzbV9leHByX29wZXJhbmRzLAoJZ2V0X2luZGlyZWN0X3JlZl9vcGVyYW5kcywgYWRkX3N0bXRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1wcmUuYyAodmFsdWVfZXhpc3RzX2luX3NldF9iaXRtYXAsCgl2YWx1ZV9yZW1vdmVfZnJvbV9zZXRfYml0bWFwLCBiaXRtYXBfaW5zZXJ0X2ludG9fc2V0LCBpbnNlcnRfaW50b19zZXQsCglwaGlfdHJhbnNsYXRlLCB2YWxpZF9pbl9zZXQsIGNvbXB1dGVfYW50aWMsCglmaW5kX29yX2dlbmVyYXRlX2V4cHJlc3Npb24sIGNyZWF0ZV9leHByZXNzaW9uX2J5X3BpZWNlcywgaW5zZXJ0X2F1eCwKCWNyZWF0ZV92YWx1ZV9leHByX2Zyb20sIGVsaW1pbmF0ZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1wcm9wYWdhdGUuYyAoY2ZnX2Jsb2Nrc19nZXQpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKHJlbW92ZV9sYXN0X3N0bXRfYW5kX3VzZWxlc3NfZWRnZXMpOgoJTGlrZXdpc2UuCgkqIHRyZWUtdGFpbGNhbGwuYyAoaW5kZXBlbmRlbnRfb2Zfc3RtdF9wLCBhZGp1c3RfcmV0dXJuX3ZhbHVlLAoJZWxpbWluYXRlX3RhaWxfY2FsbCk6IExpa2V3aXNlLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9jcmVhdGVfaW5kZXhfZm9yX2FycmF5X3JlZiwKCXZlY3RfYWxpZ25fZGF0YV9yZWYsIHZlY3RfY3JlYXRlX2RhdGFfcmVmLAoJdmVjdF9jcmVhdGVfZGVzdGluYXRpb25fdmFyLCB2ZWN0X2dldF92ZWNfZGVmX2Zvcl9vcGVyYW5kLAoJdmVjdF9maW5pc2hfc3RtdF9nZW5lcmF0aW9uLCB2ZWN0X3RyYW5zZm9ybV9zdG10LAoJdmVjdF90cmFuc2Zvcm1fbG9vcF9ib3VuZCwgdmVjdF90cmFuc2Zvcm1fbG9vcCwKCXZlY3RfYW5hbHl6ZV9vcGVyYXRpb25zKTogTGlrZXdpc2UuCgkqIHRyZWUtdm4uYyAodm5fY29tcHV0ZSwgc2V0X3ZhbHVlX2hhbmRsZSwgZ2V0X3ZhbHVlX2hhbmRsZSk6CglMaWtld2lzZS4KCSogdHJlZS1mbG93LWlubGluZS5oICh2YXJfYW5uLCBnZXRfdmFyX2FubiwgZ2V0X2RlZl9mcm9tX3B0ciwKCWdldF91c2Vfb3BfcHRyLCBpbW1lZGlhdGVfdXNlLCBwaGlfc3NhX25hbWVfcCwgYnNpX3N0YXJ0LAoJYnNpX2FmdGVyX2xhYmVscywgYnNpX2xhc3QpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbGl2ZS5jICh2YXJfdW5pb24sIGNoYW5nZV9wYXJ0aXRpb25fdmFyLAoJY3JlYXRlX3NzYV92YXJfbWFwLCBjYWxjdWxhdGVfbGl2ZV9vbl9lbnRyeSwgcm9vdF92YXJfaW5pdCwKCXR5cGVfdmFyX2luaXQsIGFkZF9jb2FsZXNjZSwgc29ydF9jb2FsZXNjZV9saXN0LCBwb3BfYmVzdF9jb2FsZXNjZSk6CglMaWtld2lzZS4KCSogdHJlZS1zc2EtbGl2ZS5oIChwYXJ0aXRpb25faXNfZ2xvYmFsLCBsaXZlX2VudHJ5X2Jsb2NrcywKCXRwYV9maW5kX3RyZWUpOiBMaWtld2lzZS4KCShyZWdpc3Rlcl9zc2FfcGFydGl0aW9uX2NoZWNrKTogRGVjbGFyZS4KCShyZWdpc3Rlcl9zc2FfcGFydGl0aW9uKTogdXNlIGl0LgoJKiB0cmVlLXNzYS1saXZlLmM6IEluY2x1ZGUgZXJyb3JzLmguCgkocmVnaXN0ZXJfc3NhX3BhcnRpdGlvbl9jaGVjayk6IE5ldy4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYzogSW5jbHVkZSBlcnJvcnMuaC4KCSogTWFrZWZpbGUuaW4gKHRyZWUtc3NhLW9wZXJhbmRzLm8pOiBEZXBlbmQgb24gZXJyb3JzLmguCgoyMDA0LTA5LTA5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkgICAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi1wcm90b3MuaCAoRlJWX0NQVV9GUjU1MCwgRlJWX0NQVV9GUjQ1MCkKCShGUlZfQ1BVX0ZSNDA1KTogTmV3IHByb2Nlc3NvciBlbnVtcy4KCShmcnZfaXNzdWVfcmF0ZSwgZnJ2X2FjY19ncm91cCk6IERlY2xhcmUuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKENQUF9TUEVDLCBDUFBfRlJWX1NQRUMsIENQUF9GUjUwMF9TUEVDKTogRGVsZXRlLgoJKENQUF9GUjQwMF9TUEVDLCBDUFBfU0lNUExFX1NQRUMpOiBEZWxldGUuCgkoTUFTS19ERUZBVUxUX0ZSNTUwLCBNQVNLX0RFRkFVTFRfRlI0NTApOiBOZXcgbWFjcm9zLgoJKFNVQlRBUkdFVF9FWFRSQV9TUEVDUywgRVhUUkFfU1BFQ1MsIENQUF9DUFVfREVGQVVMVF9TUEVDKTogRGVsZXRlLgoJKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIHRoZSBtYWNyb3MgdGhhdCB3ZXJlIHByZXZpb3VzbHkKCWhhbmRsZWQgYnkgQ1BQX1NQRUMuCgkoTUFTS19MT05HX0NBTExTLCBUQVJHRVRfTE9OR19DQUxMUyk6IE5ldyBtYWNyb3MuCgkoTUFTS19BTElHTl9MQUJFTFMsIFRBUkdFVF9BTElHTl9MQUJFTFMpOiBOZXcgbWFjcm9zLgoJKEFDQ19NQVNLKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9NRURJQV9SRVYyKTogSW5jbHVkZSBGUlZfQ1BVX3tGUjQwNSxGUjQ1MCxGUjU1MH0uCgkoVEFSR0VUX01FRElBX0ZSNDUwKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9GUjUwMF9GUjU1MF9CVUlMVElOUywgVEFSR0VUX0ZSNDA1X0JVSUxUSU5TKTogTmV3IG1hY3Jvcy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW17bm8tLH1hbGlnbi1sYWJlbHMgYW5kIC1te25vLSx9bG9uZy1jYWxscy4KCShMQUJFTF9BTElHTl9BRlRFUl9CQVJSSUVSKTogRGVmaW5lLgoJKEFDQ19MQVNULCBBQ0NHX0xBU1QpOiBBZGQgZm91ciBuZXcgYWNjdW11bGF0b3IgcmVnaXN0ZXJzLgoJKElBQ0NfRklSU1QsIElBQ0NfTEFTVCk6IE5ldyBwYWlyIG9mIFNQUnMuCgkoQUNDR19GSVJTVCwgQVBfRklSU1QsIFNQUl9GSVJTVCwgU1BSX0xBU1QpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoRklYRURfUkVHSVNURVJTLCBDQUxMX1VTRURfUkVHSVNURVJTLCBSRUdfQUxMT0NfT1JERVIpCgkoUkVHSVNURVJfTkFNRVMpOiBBZGQgZW50cmllcyBmb3IgbmV3IHJlZ2lzdGVycy4KCShSRUdfQ0xBU1NfQ09OVEVOVFMpOiBVcGRhdGUgZm9yIG5ldyByZWdpc3RlciByYW5nZXMuCgkoRVhUUkFfQ09OU1RSQUlOVF9GT1JfUyk6IFJlZGVmaW5lIGluIHRlcm1zIG9mIGNhbGxfb3BlcmFuZC4KCShJU1NVRV9SQVRFLCBDTEVBUl9WTElXX1NUQVJULCBTRVRfVkxJV19TVEFSVCk6IERlbGV0ZS4KCShQQUNLSU5HX0ZMQUdfVVNFRF9QKTogRGVsZXRlLgoJKEZSVl9CVUlMVElOX01RTENMUkhTLCBGUlZfQlVJTFRJTl9NUUxNVEhTLCBGUlZfQlVJTFRJTl9NUVNMTEhJKQoJKEZSVl9CVUlMVElOX01RU1JBSEksIEZSVl9CVUlMVElOX1NNVUwsIEZSVl9CVUlMVElOX1VNVUwpCgkoRlJWX0JVSUxUSU5fUFJFRkVUQ0gwLCBGUlZfQlVJTFRJTl9QUkVGRVRDSCwgRlJWX0JVSUxUSU5fU01BU1MpCgkoRlJWX0JVSUxUSU5fU01TU1MsIEZSVl9CVUlMVElOX1NNVSwgRlJWX0JVSUxUSU5fU0NVVFNTKQoJKEZSVl9CVUlMVElOX0FERFNTLCBGUlZfQlVJTFRJTl9TVUJTUywgRlJWX0JVSUxUSU5fU0xBU1MpCgkoRlJWX0JVSUxUSU5fSUFDQ3JlYWR7bCxsbH0sIEZSVl9CVUlMVElOX0lBQ0NzZXR7bGwsbH0pCgkoRlJWX0JVSUxUSU5fU0NBTik6IE5ldyBtZW1iZXJzIG9mIGZydl9idWlsdGluX2VudW0uCgkoRlJWX0JVSUxUSU5fRklSU1RfTk9OTUVESUEpOiBOZXcgbWFjcm8uCgkoQ1BVX1VOSVRTX1FVRVJZKTogRGVmaW5lIHRvIDEuCgkqIGNvbmZpZy9mcnYvZnJ2LmM6IEluY2x1ZGUgZ3QtZnJ2LmgKCShOVU1fTk9QX1BBVFRFUk5TLCBOVEhfVU5JVCwgVU5JVF9OVU1CRVIsIFBBQ0tJTkdfRkxBR19QKTogTmV3IG1hY3Jvcy4KCShTRVRfUEFDS0lOR19GTEFHLCBDTEVBUl9QQUNLSU5HX0ZMQUcsIEZPUl9FQUNIX1JFR05PKTogTmV3IG1hY3Jvcy4KCShmcnZfaW5zbl9ncm91cCk6IE5ldyBlbnVtZXJhdGlvbi4KCShmcnZfdW5pdF9uYW1lcywgZnJ2X3VuaXRfZ3JvdXBzLCBmcnZfdW5pdF9jb2Rlcyk6IE5ldyB2YXJpYWJsZXMuCgkoZnJ2X3R5cGVfdG9fdW5pdCwgZnJ2X25vcHMsIGZydl9udW1fbm9wcyk6IE5ldyB2YXJpYWJsZXMuCgkoUkVHU1RBVEVfREVBRCwgUkVHU1RBVEVfTElWRSwgUkVHU1RBVEVfVU5VU0VELCBSRUdTVEFURV9NQVNLKQoJKFJFR1NUQVRFX0NPTkRKVU1QKTogRGVsZXRlLiAgU2h1ZmZsZSBvdGhlciBudW1iZXJzIHRvIGNvdmVyIHRoZQoJZ2FwIGxlZnQgYnkgUkVHU1RBVEVfTElWRS4KCShyZWdzdGF0ZV90KTogTmV3IHR5cGVkZWYuCgkoVEFSR0VUX01BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogRGVmaW5lLgoJKGZydl9kZWZhdWx0X2ZsYWdzX2Zvcl9jcHUpOiBIYW5kbGUgRlJWX0NQVV97RlI1NTAsRlI0NTAsRlI0MDV9LgoJKGZydl9vdmVycmlkZV9vcHRpb25zKTogQ2hlY2sgZm9yIC1tY3B1PXtmcjU1MCxmcjQ1MCxmcjQwNX0uCglJbml0aWFsaXplIGZydl91bml0X2NvZGVzW10gYW5kIGZydl90eXBlX3RvX3VuaXRbXS4KCShmcnZfY29uZGl0aW9uYWxfcmVnaXN0ZXJfdXNhZ2UpOiBSZW1vdmUgcmVkdW5kYW50IGZpeGluZyBvZgoJYWNjdW11bGF0b3IgcmVnaXN0ZXJzLgoJKGZydl9pbnNuX3BhY2tpbmdfZmxhZyk6IFVwZGF0ZSBzcGVjaWZpY2F0aW9uLgoJKGZydl9mdW5jdGlvbl9wcm9sb2d1ZSk6IERvbid0IHNldCBmcnZfaW5zbl9wYWNraW5nX2ZsYWcgaGVyZS4KCVplcm8gb3V0IGZydl9ub3BzW10uCgkoZnJ2X2V4cGFuZF9lcGlsb2d1ZSk6IFJlbW92ZSBjb21tZW50cyBhYm91dCB0aGUgbm8tbG9uZ2VyLXByZXNlbnQKCVNJQkNBTExfUCBhcmd1bWVudC4KCShmcnZfYXNtX291dHB1dF9taV90aHVuayk6IENoZWNrIGZydl9pc3N1ZV9yYXRlKCkgcmF0aGVyIHRoYW4KCVBBQ0tJTkdfRkxBR19VU0VEX1AoKSB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgdG8gcGFjayBpbnN0cnVjdGlvbnMuCgkoZnJ2X2FzbV9vdXRwdXRfb3Bjb2RlLCBmcnZfZmluYWxfcHJlc2Nhbl9pbnNuKTogU2ltcGxpZnkgaW4gbGlnaHQKCW9mIHRoZSBuZXcgbWVhbmluZyBvZiBmcnZfaW5zbl9wYWNraW5nX2ZsYWcuICBFbWl0IGFuIG1ub3AucCBpZgoJcGFja2luZyBpcyBkaXNhYmxlZCBhbmQgaWYgSU5TTiBjYW4gb25seSBpc3N1ZSB0byBNMS4KCShjYWxsX29wZXJhbmQpOiBDaGVjayBUQVJHRVRfTE9OR19DQUxMUy4KCShhY2Nfb3BlcmFuZCwgZXZlbl9hY2Nfb3BlcmFuZCwgcXVhZF9hY2Nfb3BlcmFuZCkKCShhY2NnX29wZXJhbmQpOiBTaW1wbGlmeS4gIERvbid0IGFjY2VwdCBwc2V1ZG8gcmVnaXN0ZXJzLgoJKG91dHB1dF9tb3ZlX3NpbmdsZSk6IEhhbmRsZSBTUFI8LXplcm8gbW92ZXMuCgkoZnJ2X2lzc3VlX3JhdGUpOiBNYWtlIG5vbi1zdGF0aWMuICBIYW5kbGUgRlJWX0NQVV97RlI1NTAsRlI0NTAsRlI0MDV9LgoJKGZydl9yZWdpc3RlcnNfdXBkYXRlLCBmcnZfcmVnaXN0ZXJzX3VzZWRfcCk6IERlbGV0ZS4KCShmcnZfcmVnaXN0ZXJzX3NldF9wKTogRGVsZXRlLgoJKGZydl9hY2NfZ3JvdXBfMSwgZnJ2X2FjY19ncm91cCwgZnJ2X2luc25fdW5pdCk6IE5ldyBmdW5jdGlvbnMuCgkoZnJ2X2lzc3Vlc190b19icmFuY2hfdW5pdF9wKTogTmV3IGZ1bmN0aW9uLgoJKGZydl9wYWNrZXQpOiBOZXcgc3RydWN0dXJlLgoJKGZydl9jb25kX2ZsYWdzLCBmcnZfcmVnc3RhdGVfY29uZmxpY3RfcCk6IE5ldyBmdW5jdGlvbnMuCgkoZnJ2X3JlZ2lzdGVyc19jb25mbGljdF9wXzEsIGZydl9yZWdpc3RlcnNfY29uZmxpY3RfcCk6IE5ldyBmdW5jdGlvbnMuCgkoZnJ2X3JlZ2lzdGVyc191cGRhdGVfMSwgZnJ2X3JlZ2lzdGVyc191cGRhdGUpOiBOZXcgZnVuY3Rpb25zLgoJKGZydl9zdGFydF9wYWNrZXQsIGZydl9zdGFydF9wYWNrZXRfYmxvY2ssIGZydl9maW5pc2hfcGFja2V0KQoJKGZydl9wYWNrX2luc25fcCwgZnJ2X2FkZF9pbnNuX3RvX3BhY2tldCwgZnJ2X2luc2VydF9ub3BfaW5fcGFja2V0KQoJKGZydl9mb3JfZWFjaF9wYWNrZXQsIGZydl9zb3J0X2luc25fZ3JvdXBfMSwgZnJ2X2NvbXBhcmVfaW5zbnMpCgkoZnJ2X3NvcnRfaW5zbl9ncm91cCwgZnJ2X3Jlb3JkZXJfcGFja2V0KTogTmV3IGZ1bmN0aW9ucy4KCShmcnZfcGFja19pbnNucyk6IFVzZSBmcnZfcmVvcmRlcl9wYWNrZXQuCgkoZnJ2X3BhY2tldF9hZGRyZXNzKTogTmV3IHZhcmlhYmxlLgoJKGZydl9maWxsX3VudXNlZF91bml0cywgZnJ2X2FsaWduX2xhYmVsLCBmcnZfcmVvcmdfcGFja2V0KQoJKGZydl9yZWdpc3Rlcl9ub3AsIGZydl9yZW9yZyk6IE5ldyBmdW5jdGlvbnMuCgkoYmRlc2NfMWFyZyk6IEFkZCBfX1NDVVRTUy4KCShiZGVzY18yYXJnKTogQWRkIF9fTVFMQ0xSSFMsIF9fTVFMTVRIUywgX19TTVVMLCBfX1VNVUwsIF9fQUREU1MsCglfX1NVQlNTLCBfX1NMQVNTIGFuZCBfX1NDQU4uCgkoYmRlc2NfMmFyZ2ltbSk6IEFkZCBfX01RU0xMSEkgYW5kIF9fTVFTUkFISS4KCShiZGVzY19pbnRfdm9pZDJhcmcsIGJkZXNjX3ByZWZldGNoZXMpOiBOZXcgYXJyYXlzLgoJKGZydl9pbml0X2J1aWx0aW5zKTogUmVnaXN0ZXIgdGhlIGFib3ZlIGJ1aWx0aW5zLgoJKGZydl9pbnRfdG9fYWNjKTogVXNlIEFDQ19NQVNLIHRvIGNoZWNrIGZvciB2YWxpZCBhY2N1bXVsYXRvcgoJcmVnaXN0ZXJzLiAgVHVybiB0aGUgcmVmZXJlbmNlZCBhY2N1bXVsYXRvcnMgaW50byBnbG9iYWwgcmVnaXN0ZXJzLgoJKGZydl9yZWFkX2lhY2NfYXJndW1lbnQpOiBOZXcgZnVuY3Rpb24uCgkoZnJ2X2V4cGFuZF9pbnRfdm9pZDJhcmcsIGZydl9leHBhbmRfcHJlZmV0Y2hlcyk6IE5ldyBmdW5jdGlvbnMuCgkoZnJ2X3NwbGl0X2lhY2NfbW92ZSk6IE5ldyBmdW5jdGlvbi4KCShmcnZfZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgdGhlIG5ldyBidWlsdGlucy4KCSogY29uZmlnL2Zydi9mcnYubWQ6IFJlcGxhY2Ugb2xkIHNjaGVkdWxlcnMgd2l0aCBuZXcgb3JkZXItaW5kZXBlbmRlbnQKCW9uZXMuICBBZGQgc2NoZWR1bGVycyBmb3IgdGhlIEZSNDA1LCBGUjQ1MCBhbmQgRlI1NTAuICBEZXNjcmliZSBuZXcKCXBhY2tpbmcgYWxnb3JpdGhtLgoJKGNwdSk6IEFkZCBmcjU1MCwgZnI0NTAgYW5kIGZyNDA1LgoJKHR5cGUpOiBBZGQgbWFjYywgc2NhbiwgY3V0LCBmbm9wLCBmc2NtcCwgZmRjbXAsIG1ub3AsIG1xbGltaCBhbmQKCW1xc2hpZnQuICBSZXBsYWNlIGZtYXMgd2l0aCBmc21hZGQgYW5kIGZtYWQgd2l0aCBmZG1hZGQuICBEZWxldGUgbTcuCgkoKm11bGFkZFtzZF1mNCwgKm11bHN1YltzZF1mNCk6IEZpeCB0eXBlcy4KCSgqY21wW3NkXWZfY2NfZnApOiBVc2UgbmV3IGZbc2RdY21wIHR5cGVzLgoJKGZub3AsIG1ub3ApOiBOZXcgcGF0dGVybnMuCgkoVU5TUEVDX01RTENMUkhTLCBVTlNQRUNfTVFMTVRIUywgVU5TUEVDX01RU0xMSEksIFVOU1BFQ19NUVNSQUhJKToKCU5ldyBjb25zdGFudHMuCgkobWV4cGRodywgKmNvbmRfZXhlY19tZXhwZGh3KTogRml4IGRlc3RpbmF0aW9uIG9wZXJhbmRzLgoJKG1jbHJhY2NhOCk6IFVzZSBBQ0NfTUFTSyB0byBkZXRlcm1pbmUgdGhlIHVwcGVyIHNldCBvZiBhY2N1bXVsYXRvcgoJcmVnaXN0ZXJzLgoJKG1xbGNscmhzLCBtcWxtdGhzLCBtcXNsbGhpLCBtcXNyYWhpKTogTmV3IHBhdHRlcm5zLgoJKFVOU1BFQ19TTVVMLCBVTlNQRUNfVU1VTCwgVU5TUEVDX1NNVSwgVU5TUEVDX0FERFNTLCBVTlNQRUNfU1VCU1MpCgkoVU5TUEVDX1NMQVNTLCBVTlNQRUNfU0NBTiwgVU5TUEVDX0lOVFNTLCBVTlNQRUNfU0NVVFNTKQoJKFVOU1BFQ19QUkVGRVRDSDAsIFVOU1BFQ19QUkVGRVRDSCwgVU5TUEVDX0lBQ0NyZWFkbGwpCgkoVU5TUEVDX0lBQ0NyZWFkbCwgVU5TUEVDX0lBQ0NzZXRsbCwgVU5TUEVDX0lBQ0NzZXRsLCBVTlNQRUNfU01BU1MpCgkoVU5TUEVDX1NNU1NTLCBVTlNQRUNfSU1VTCwgSUFDQzBfUkVHKTogTmV3IGNvbnN0YW50cy4KCShzbXVsLCB1bXVsLCBzbWFzcywgc21zc3MsIHNtdSwgYWRkc3MsIHN1YnNzLCBzbGFzcywgc2Nhbiwgc2N1dHNzKQoJKGZydl9wcmVmZXRjaDAsIGZydl9wcmVmZXRjaCk6IE5ldyBwYXR0ZXJucy4KCSogY29uZmlnL2Zydi90LWZydiAoTVVMVElMSUJfT1BUSU9OUyk6IFJlbW92ZSAtbWNwdT1mcnYgYW5kCgktbWNwdT1zaW1wbGUuICBBZGQgLW1jcHU9ZnI1NTAuCgkoTVVMVElMSUJfRElSTkFNRVMpOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgkoTVVMVElMSUJfTUFUQ0hFUyk6IFVzZSB0aGUgZnI0MDAgbXVsdGlsaWJzIGZvciAtbWNwdT1mcjQwNSBhbmQKCS1tY3B1PWZyNDUwLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IHRoZSBuZXcgLW1jcHU9e2ZyNTUwLGZyNDUwLGZyNDA1fSwKCS1tbG9uZy1jYWxscyBhbmQgLW1hbGlnbi1sYWJlbHMgb3B0aW9ucyBmb3IgRlItVi4KCjIwMDQtMDktMDkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvODQyMAoJKiBjLXRyZWUuaCAoc3RydWN0IGNfZGVjbHNwZWNzKTogTmV3LgoJKHN0cnVjdCBjX2RlY2xhcmF0b3IsIHN0cnVjdCBjX3R5cGVfbmFtZSwgc3RydWN0IGNfcGFybSk6IFVwZGF0ZQoJZWxlbWVudCB0eXBlcy4KCShidWlsZF9hcnJheV9kZWNsYXJhdG9yLCBncm9rZmllbGQsIHNoYWRvd190YWcsIHNoYWRvd190YWdfd2FybmVkLAoJc3RhcnRfZnVuY3Rpb24sIHN0YXJ0X2RlY2wsIGJ1aWxkX2NfcGFybSwKCW1ha2VfcG9pbnRlcl9kZWNsYXJhdG9yKTogVXBkYXRlIHByb3RvdHlwZXMuCgkoYnVpbGRfbnVsbF9kZWNsc3BlY3MsIGRlY2xzcGVjc19hZGRfcXVhbCwgZGVjbHNwZWNzX2FkZF90eXBlLAoJZGVjbHNwZWNzX2FkZF9zY3NwZWMsIGRlY2xzcGVjc19hZGRfYXR0cnMpOiBOZXcuCgkoc3BsaXRfc3BlY3NfYXR0cnMpOiBSZW1vdmUuCgkqIGMtcGFyc2UuaW4gKCV1bmlvbik6IEFkZCBkc3B0eXBlLgoJKGRlY2xzcGVjc19ub3NjX25vdHNfbm9zYV9ub2VhLCBkZWNsc3BlY3Nfbm9zY19ub3RzX25vc2FfZWEsCglkZWNsc3BlY3Nfbm9zY19ub3RzX3NhX25vZWEsIGRlY2xzcGVjc19ub3NjX25vdHNfc2FfZWEsCglkZWNsc3BlY3Nfbm9zY190c19ub3NhX25vZWEsIGRlY2xzcGVjc19ub3NjX3RzX25vc2FfZWEsCglkZWNsc3BlY3Nfbm9zY190c19zYV9ub2VhLCBkZWNsc3BlY3Nfbm9zY190c19zYV9lYSwKCWRlY2xzcGVjc19zY19ub3RzX25vc2Ffbm9lYSwgZGVjbHNwZWNzX3NjX25vdHNfbm9zYV9lYSwKCWRlY2xzcGVjc19zY19ub3RzX3NhX25vZWEsIGRlY2xzcGVjc19zY19ub3RzX3NhX2VhLAoJZGVjbHNwZWNzX3NjX3RzX25vc2Ffbm9lYSwgZGVjbHNwZWNzX3NjX3RzX25vc2FfZWEsCglkZWNsc3BlY3Nfc2NfdHNfc2Ffbm9lYSwgZGVjbHNwZWNzX3NjX3RzX3NhX2VhLCBkZWNsc3BlY3NfdHMsCglkZWNsc3BlY3Nfbm90cywgZGVjbHNwZWNzX3RzX25vc2EsIGRlY2xzcGVjc19ub3RzX25vc2EsCglkZWNsc3BlY3Nfbm9zY190cywgZGVjbHNwZWNzX25vc2Nfbm90cywgZGVjbHNwZWNzX25vc2MsIGRlY2xzcGVjcywKCW1heWJlX3R5cGVfcXVhbHNfYXR0cnMpOiBDaGFuZ2UgdG8gZHNwdHlwZS4KCShzdHJ1Y3QgY19kZWNsc3BlY19zdGFjayk6IE5ldy4KCShjdXJyZW50X2RlY2xzcGVjcywgZGVjbHNwZWNfc3RhY2spOiBDaGFuZ2UgdHlwZS4KCShQVVNIX0RFQ0xTUEVDX1NUQUNLLCBQT1BfREVDTFNQRUNfU1RBQ0spOiBVcGRhdGUgdG8gbmV3CglzdHJ1Y3R1cmVzLgoJKGV4dGRlZnMpOiBMaWtld2lzZS4KCShzZXRzcGVjcyk6IExpa2V3aXNlLgoJKGZuZGVmKTogVXNlIGN1cnJlbnRfZGVjbHNwZWNzIGZvciBlbXB0eSBkZWNsc3BlY3MgbGlzdC4KCShkZWNsc3BlY3Nfbm9zY19ub3RzX25vc2Ffbm9lYSwgZGVjbHNwZWNzX25vc2Nfbm90c19ub3NhX2VhLAoJZGVjbHNwZWNzX25vc2Nfbm90c19zYV9ub2VhLCBkZWNsc3BlY3Nfbm9zY19ub3RzX3NhX2VhLAoJZGVjbHNwZWNzX25vc2NfdHNfbm9zYV9ub2VhLCBkZWNsc3BlY3Nfbm9zY190c19ub3NhX2VhLAoJZGVjbHNwZWNzX25vc2NfdHNfc2Ffbm9lYSwgZGVjbHNwZWNzX25vc2NfdHNfc2FfZWEsCglkZWNsc3BlY3Nfc2Nfbm90c19ub3NhX25vZWEsIGRlY2xzcGVjc19zY19ub3RzX25vc2FfZWEsCglkZWNsc3BlY3Nfc2Nfbm90c19zYV9ub2VhLCBkZWNsc3BlY3Nfc2Nfbm90c19zYV9lYSwKCWRlY2xzcGVjc19zY190c19ub3NhX25vZWEsIGRlY2xzcGVjc19zY190c19ub3NhX2VhLAoJZGVjbHNwZWNzX3NjX3RzX3NhX25vZWEsIGRlY2xzcGVjc19zY190c19zYV9lYSk6IFVwZGF0ZSB0byBuZXcKCXN0cnVjdHVyZXMgYW5kIGhlbHBlciBmdW5jdGlvbnMuICBVcGRhdGUgY29tbWVudHMuCgkodHlwZXNwZWNfbm9uYXR0cik6IENvcnJlY3QgY29tbWVudC4KCShtYXliZV90eXBlX3F1YWxzX2F0dHJzLCB0eXBlbmFtZSk6IFVwZGF0ZSB0byBuZXcgc3RydWN0dXJlcy4KCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yLCBidWlsZF9hcnJheV9kZWNsYXJhdG9yLCBncm9rZmllbGQsCglzaGFkb3dfdGFnLCBzaGFkb3dfdGFnX3dhcm5lZCwgc3RhcnRfZnVuY3Rpb24sIHN0YXJ0X2RlY2wsCglidWlsZF9jX3Bhcm0sIG1ha2VfcG9pbnRlcl9kZWNsYXJhdG9yLAoJc2V0X2FycmF5X2RlY2xhcmF0b3JfaW5uZXIsIGdyb2t0eXBlbmFtZSk6IFVwZGF0ZSB0byBuZXcKCXN0cnVjdHVyZXMuCgkoYnVpbGRfbnVsbF9kZWNsc3BlY3MsIGRlY2xzcGVjc19hZGRfcXVhbCwgZGVjbHNwZWNzX2FkZF90eXBlLAoJZGVjbHNwZWNzX2FkZF9zY3NwZWMsIGRlY2xzcGVjc19hZGRfYXR0cnMpOiBOZXcuCgkoc3BsaXRfc3BlY3NfYXR0cnMpOiBSZW1vdmUuCgkoc2hhZG93X3RhZ193YXJuZWQpOiBNYWtlIHdhcm5pbmcgZm9yIHVzZWxlc3MgdHlwZSBuYW1lcyBhCglwZWR3YXJuLiAgR2l2ZSBoYXJkIGVycm9yIGZvciBsb25nLCBzaG9ydCwgc2lnbmVkLCB1bnNpZ25lZCBvcgoJX0NvbXBsZXggdXNlZCB3aXRoIHN0cnVjdCwgdW5pb24gb3IgZW51bSBpbiBlbXB0eSBkZWNsYXJhdGlvbi4KCU1ha2UgZm91bmRfdGFnIGEgYm9vbC4KCShncm9rZGVjbGFyYXRvcik6IFJlbW92ZSBjaGVja3Mgbm93IGRvbmUgYXQgcGFyc2UgdGltZS4KCjIwMDQtMDktMDkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10cmVlLmggKGVudW0gY19kZWNsYXJhdG9yX2tpbmQsIHN0cnVjdCBjX2FyZ19pbmZvLCBzdHJ1Y3QKCWNfZGVjbGFyYXRvciwgc3RydWN0IGNfdHlwZV9uYW1lLCBzdHJ1Y3QgY19wYXJtKTogTmV3LgoJKGJ1aWxkX2FycmF5X2RlY2xhcmF0b3IsIHNldF9hcnJheV9kZWNsYXJhdG9yX2lubmVyLAoJZ2V0X3Bhcm1faW5mbywgZ3Jva2ZpZWxkLCBncm9rdHlwZW5hbWUsIGdyb2twYXJtLCBwdXNoX3Bhcm1fZGVjbCwKCXN0YXJ0X2Z1bmN0aW9uLCBzdGFydF9kZWNsLCBidWlsZF9jX3Bhcm0sIGJ1aWxkX2F0dHJzX2RlY2xhcmF0b3IsCglidWlsZF9mdW5jdGlvbl9kZWNsYXJhdG9yLCBtYWtlX3BvaW50ZXJfZGVjbGFyYXRvciwgY19jYXN0X2V4cHIsCglzdG9yZV9wYXJtX2RlY2xzX25ld3N0eWxlLCBjX2V4cHJfc2l6ZW9mX3R5cGUpOiBVcGRhdGUgcHJvdG90eXBlcy4KCShidWlsZF9pZF9kZWNsYXJhdG9yKTogTmV3LgoJKiBjLXR5cGVjay5jIChjX2Nhc3RfZXhwciwgY19leHByX3NpemVvZl90eXBlKTogVXBkYXRlIHRvIG5ldwoJc3RydWN0dXJlcy4KCSogYy1kZWNsLmMgKEFSR19JTkZPX1BBUk1TLCBBUkdfSU5GT19UQUdTLCBBUkdfSU5GT19UWVBFUywKCUFSR19JTkZPX09USEVSUyk6IFJlbW92ZS4KCShidWlsZF9pZF9kZWNsYXJhdG9yKTogTmV3LgoJKGJ1aWxkX2FycmF5X2RlY2xhcmF0b3IsIHNldF9hcnJheV9kZWNsYXJhdG9yX2lubmVyLCBncm9rdHlwZW5hbWUsCglzdGFydF9kZWNsLCBncm9rcGFybSwgcHVzaF9wYXJtX2RlY2wsIGdyb2twYXJtcywgZ2V0X3Bhcm1faW5mbywKCWdyb2tmaWVsZCwgc3RhcnRfZnVuY3Rpb24sIHN0b3JlX3Bhcm1fZGVjbHNfbmV3c3R5bGUsCglzdG9yZV9wYXJtX2RlY2xzX29sZHN0eWxlLCBzdG9yZV9wYXJtX2RlY2xzLAoJYnVpbGRfY19wYXJtLCBidWlsZF9hdHRyc19kZWNsYXJhdG9yLCBidWlsZF9mdW5jdGlvbl9kZWNsYXJhdG9yLAoJbWFrZV9wb2ludGVyX2RlY2xhcmF0b3IsIGdyb2tkZWNsYXJhdG9yKTogVXBkYXRlIHRvIG5ldwoJc3RydWN0dXJlcy4KCSogYy1wYXJzZS5pbiAoJXVuaW9uKTogQWRkIGFyZ2luZm90eXBlLCBkdHJ0eXBlLCB0eXBlbmFtZXR5cGUgYW5kCglwYXJtdHlwZS4KCShkZWNsYXJhdG9yLCBub3R5cGVfZGVjbGFyYXRvciwgYWZ0ZXJfdHlwZV9kZWNsYXJhdG9yLAoJcGFybV9kZWNsYXJhdG9yLCBwYXJtX2RlY2xhcmF0b3Jfc3RhcnR0eXBlbmFtZSwKCXBhcm1fZGVjbGFyYXRvcl9ub3N0YXJ0dHlwZW5hbWUsIGFycmF5X2RlY2xhcmF0b3IsIHR5cGVuYW1lLAoJYWJzZGNsLCBhYnNkY2wxLCBhYnNkY2wxX2VhLCBhYnNkY2wxX25vZWEsIGRpcmVjdF9hYnNkY2wxLAoJYWJzZGNsX21heWJlX2F0dHJpYnV0ZSwgcGFybSwgZmlyc3RwYXJtLCBwYXJtcywgcGFybWxpc3QsCglwYXJtbGlzdF8xLCBwYXJtbGlzdF8yLCBwYXJtbGlzdF9vcl9pZGVudGlmaWVycywKCXBhcm1saXN0X29yX2lkZW50aWZpZXJzXzEpOiBVc2UgdGhlc2UgdHlwZXMuCgkocHJpbWFyeSwgYWZ0ZXJfdHlwZV9kZWNsYXJhdG9yLCBwYXJtX2RlY2xhcmF0b3Jfc3RhcnR0eXBlbmFtZSwKCW5vdHlwZV9kZWNsYXJhdG9yLCBjb21wb25lbnRfZGVjbCwgY29tcG9uZW50X2RlY2xhcmF0b3IsCgljb21wb25lbnRfbm90eXBlX2RlY2xhcmF0b3IsIHR5cGVuYW1lLCBhYnNkY2wsCglhYnNkY2xfbWF5YmVfYXR0cmlidXRlLCBhYnNkY2wxX2VhLCBkaXJlY3RfYWJzZGNsMSwgcGFybWxpc3RfMSwKCXBhcm1saXN0XzIsIHBhcm1saXN0X29yX2lkZW50aWZpZXJzXzEpOiBVcGRhdGUgdG8gbmV3IHN0cnVjdHVyZXMuCgoyMDA0LTA5LTA5ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtdHJlZS5oIChDX0RFQ0xfVVNFRCwgcGFyc2VyX29ic3RhY2ssIGluX2FsaWdub2YsIGluX3NpemVvZiwKCWluX3R5cGVvZiwgcmVjb3JkX21heWJlX3VzZWRfZGVjbCwgcG9wX21heWJlX3VzZWQsCgljX2V4cHJfc2l6ZW9mX2V4cHIsIGNfZXhwcl9zaXplb2ZfdHlwZSk6IE5ldy4KCSogYy1kZWNsLmMgKHBhcnNlcl9vYnN0YWNrKTogTmV3LgoJKGNfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIHBhcnNlcl9vYnN0YWNrLgoJKGNfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9uc18xKTogQ2hlY2sgZm9yIHVzZWQgYnV0IHVuZGVmaW5lZAoJc3RhdGljIGZ1bmN0aW9ucy4KCSogYy1wYXJzZS5pbiAoJXVuaW9uKTogQWRkIG90eXBlLgoJKHNhdmVfb2JzdGFja19wb3NpdGlvbik6IE5ldy4KCShleHRkZWZzKTogVXNlIGl0LgoJKHVuYXJ5X2V4cHIpOiBVcGRhdGUgaW5fc2l6ZW9mIGFuZCBpbl9hbGlnbm9mLiAgVXNlCgljX2V4cHJfc2l6ZW9mX2V4cHIgYW5kIGNfZXhwcl9zaXplb2ZfdHlwZS4KCShzaXplb2YpOiBVcGRhdGUgaW5fc2l6ZW9mLgoJKGFsaWdub2YpOiBVcGRhdGUgaW5fYWxpZ25vZi4KCSh0eXBlb2YpOiBVcGRhdGUgaW5fdHlwZW9mLgoJKHR5cGVzcGVjX25vbnJlc2VydmVkX25vbmF0dHIpOiBDYWxsIHBvcF9tYXliZV91c2VkLgoJKiBjLXR5cGVjay5jIChpbl9hbGlnbm9mLCBpbl9zaXplb2YsIGluX3R5cGVvZiwgc3RydWN0CgltYXliZV91c2VkX2RlY2wsIG1heWJlX3VzZWRfZGVjbHMsIHJlY29yZF9tYXliZV91c2VkX2RlY2wsCglwb3BfbWF5YmVfdXNlZCwgY19leHByX3NpemVvZl9leHByLCBjX2V4cHJfc2l6ZW9mX3R5cGUpOiBOZXcuCgkoYnVpbGRfZXh0ZXJuYWxfcmVmKTogU2V0IENfREVDTF9VU0VEIG9yIGNhbGwKCXJlY29yZF9tYXliZV91c2VkX2RlY2wgaWYgYXBwcm9wcmlhdGUuCgkqIHRvcGxldi5jIChjaGVja19nbG9iYWxfZGVjbGFyYXRpb25zKTogQ2hlY2sgVFJFRV9OT19XQVJOSU5HLgoKMjAwNC0wOS0wOCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jOiBGaXggcHJvdG90eXBlIGZvciBmb2xkX2J1aWx0aW5fYXRhbi4KCjIwMDQtMDktMDggIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX3N0cmxlbiwgZm9sZF9idWlsdGluX3NxcnQsIGZvbGRfYnVpbHRpbl9jYnJ0LAoJZm9sZF9idWlsdGluX3BvdywgZm9sZF9idWlsdGluX3NpbiwgZm9sZF9idWlsdGluX2NvcywgZm9sZF9idWlsdGluX3RhbiwKCWZvbGRfYnVpbHRpbl9hdGFuKTogTmV3IGZ1bmN0aW9ucy4gTWlncmF0ZSBmdW5jdGlvbiBib2RpZXMuLi4KCShmb2xkX2J1aWx0aW5fMSk6IC4uLiBmcm9tIGhlcmUuCgoyMDA0LTA5LTA5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3N0YWNrX2luZm8pOiBDb3JyZWN0IGFsaWdubWVudCBvZgoJc2F2ZV9zaXplLgoKMjAwNC0wOS0wOCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9wb3dlcjQubWQgKHBvd2VyNC1sbXVsKTogZHU0IGZlZWRzIGl1MS4KCSogY29uZmlnL3JzNjAwMC9wb3dlcjUubWQgKHBvd2VyNS1sbXVsKTogU2FtZS4KCjIwMDQtMDktMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgcnRsLW9wdC8xNzE4NgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogSGF2ZSBmYWxsLW9mZi10aGUtZW5kCglyZXR1cm4gcGF0aCBqdW1wIGFyb3VuZCByZXR1cm4gcmVnaXN0ZXIgc2V0dXAuCgoyMDA0LTA5LTA4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2luZGVudF9vcGNvZGUpOiBOZXcgdmFyaWFibGUuCgkob3V0cHV0X3JldHVybik6IERvIG5vdCB0ZXN0IGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlICd1bmltcCcgaW5zbi4KCVVzZSAnY3VycmVudF9mdW5jdGlvbl91c2VzX29ubHlfbGVhZl9yZWdzJyBhbmQgJ2ZpbmFsX3NlcXVlbmNlJwoJYXMgcHJlZGljYXRlcyBpbnN0ZWFkIG9mIGN1c3RvbSBvbmVzLiAgUmV0dXJuIHJhdyBzdHJpbmdzIHdoZW4KCXBvc3NpYmxlLgoJKG91dHB1dF9zaWJjYWxsKTogTGlrZXdpc2UuICBDb25jYXRlbmF0ZSBzdHJpbmdzLgoJKG91dHB1dF91YnJhbmNoKTogUmVtb3ZlIGtsdWRnZSBmb3IgVHVyYm9TUEFSQy4KCShvdXRwdXRfY2JyYW5jaCk6IFJlbW92ZSAnbm9vcCcgcGFyYW1ldGVyLiAgRG8gbm90IG91dHB1dCAnbm9wJy4KCShvdXRwdXRfdjlicmFuY2gpOiBMaWtld2lzZS4KCShwcmludF9vcGVyYW5kKTogVXNlICdmaW5hbF9zZXF1ZW5jZScgaW5zdGVhZCBvZiAnZGJyX3NlcXVlbmNlX2xlbmd0aCcuCgk8Iz46IFNldCBzcGFyY19pbmRlbnRfb3Bjb2RlIGlmIHRoZSBkZWxheSBzbG90IGlzIGZpbGxlZC4KCTwoPjogTGlrZXdpc2UuCgk8KT46IE5ldyBvcGVyYW5kIHRvIGVtaXQgdGhlIGRpc3BsYWNlbWVudCBmcm9tIHRoZSBzYXZlZCBQQyBvbiByZXR1cm4uCgk8QD46IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKHNwYXJjX2luZGVudF9vcGNvZGUpOiBEZWNsYXJlIGl0LgoJKEFTTV9PVVRQVVRfT1BDT0RFKTogTmV3IG1hY3JvLgoJKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6IFJlbW92ZSAnXicgYW5kIGFkZCAnKScuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobm9ybWFsX2JyYW5jaCwgaW52ZXJ0ZWRfYnJhbmNoLAoJbm9ybWFsX2ZwX2JyYW5jaCwgaW52ZXJ0ZWRfZnBfYnJhbmNoLCBub3JtYWxfZnBlX2JyYW5jaCwKCWludmVydGVkX2ZwZV9icmFuY2gpOiBBZGp1c3QgY2FsbCB0byBvdXRwdXRfY2JyYW5jaC4KCShub3JtYWxfaW50X2JyYW5jaF9zcDY0LCBpbnZlcnRlZF9pbnRfYnJhbmNoX3NwNjQpOiBBZGp1c3QKCWNhbGwgdG8gb3V0cHV0X3Y5YnJhbmNoLgoJKiBjb25maWcvc3BhcmMvc3BhcmMtcHJvdG9zLmggKG91dHB1dF9jYnJhbmNoKTogQWRqdXN0LgoJKG91dHB1dF92OWJyYW5jaCk6IExpa2V3aXNlLgoKMjAwNC0wOS0wOCAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uaCAgKFRBUkdFVF9PUFRJT05fVFJBTlNMQVRFX1RBQkxFKTogQWRkIC1zZWdhZGRyLAoJLXNlZ3NfcmVhZF9vbmx5X2FkZHIgYW5kIC1zZWdzX3JlYWRfd3JpdGVfYWRkci4KCShXT1JEX1NXSVRDSF9UQUtFU19BUkcpOiBTYW1lLgoJKExJTktfU1BFQyk6IFNhbWUuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLXNlZ2FkZHIsIC1zZWdzX3JlYWRfb25seV9hZGRyIGFuZAoJLXNlZ3NfcmVhZF93cml0ZV9hZGRyLgoKMjAwNC0wOS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHJlZmVyZW5jZV9jYWxsZWVfY29waWVkKTogTmV3LgoJKGFzc2lnbl9wYXJtX3NldHVwX3JlZyk6IFVzZSBpdC4KCSogY2FsbHMuYyAoaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdGlvbik6IExpa2V3aXNlLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uaCAocmVmZXJlbmNlX2NhbGxlZV9jb3BpZWQpOiBEZWNsYXJlLgoKCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIGNhbGxlZV9jb3BpZXMuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0NBTExFRV9DT1BJRVMpOiBOZXcuCgkoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogVXBkYXRlIGRlZmF1bHQuCgkqIGV4cHIuaCAoRlVOQ1RJT05fQVJHX0NBTExFRV9DT1BJRVMpOiBSZW1vdmUuCgkqIHRhcmdob29rcy5jIChob29rX2NhbGxlZV9jb3BpZXNfbmFtZWQpOiBOZXcuCgkoaG9va19ib29sX0NVTVVMQVRJVkVfQVJHU19tb2RlX3RyZWVfYm9vbF9mYWxzZSk6IFJlbmFtZSBmcm9tCglob29rX3Bhc3NfYnlfcmVmZXJlbmNlX2ZhbHNlLgoJKGhvb2tfYm9vbF9DVU1VTEFUSVZFX0FSR1NfbW9kZV90cmVlX2Jvb2xfdHJ1ZSk6IE5ldy4KCSogdGFyZ2hvb2tzLmg6IFVwZGF0ZSBkZWNscy4KCSogY29uZmlnL2FyYy9hcmMuYyAoVEFSR0VUX0NBTExFRV9DT1BJRVMpOiBOZXcuCgkqIGNvbmZpZy9hcmMvYXJjLmggKEZVTkNUSU9OX0FSR19DQUxMRUVfQ09QSUVTKTogUmVtb3ZlLgoJKiBjb25maWcvZnJ2L2Zydi1wcm90b3MuaCAoZnJ2X2Z1bmN0aW9uX2FyZ19jYWxsZWVfY29waWVzKTogUmVtb3ZlLgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfZnVuY3Rpb25fYXJnX2NhbGxlZV9jb3BpZXMpOiBSZW1vdmUuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKEZVTkNUSU9OX0FSR19DQUxMRUVfQ09QSUVTKTogUmVtb3ZlLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5jIChUQVJHRVRfQ0FMTEVFX0NPUElFUyk6IE5ldy4KCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuaCAoRlVOQ1RJT05fQVJHX0NBTExFRV9DT1BJRVMpOiBSZW1vdmUuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAoVEFSR0VUX0NBTExFRV9DT1BJRVMpOiBOZXcuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaCAoRlVOQ1RJT05fQVJHX0NBTExFRV9DT1BJRVMpOiBSZW1vdmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoVEFSR0VUX0NBTExFRV9DT1BJRVMpOiBOZXcuCgkobWlwc19jYWxsZWVfY29waWVzKTogTmV3LgoJKiBjb25maWcvbWlwcy9taXBzLmggKEZVTkNUSU9OX0FSR19DQUxMRUVfQ09QSUVTKTogUmVtb3ZlLgoJKiBjb25maWcvbW1peC9tbWl4LmMgKFRBUkdFVF9DQUxMRUVfQ09QSUVTKTogTmV3LgoJKiBjb25maWcvbW1peC9tbWl4LmggKEZVTkNUSU9OX0FSR19DQUxMRUVfQ09QSUVTKTogUmVtb3ZlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKFRBUkdFVF9DQUxMRUVfQ09QSUVTKTogTmV3LgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKEZVTkNUSU9OX0FSR19DQUxMRUVfQ09QSUVTKTogUmVtb3ZlLgoJKiBjb25maWcvcGEvcGEuYyAoVEFSR0VUX0NBTExFRV9DT1BJRVMpOiBOZXcuCgkqIGNvbmZpZy9wYS9wYS5oIChGVU5DVElPTl9BUkdfQ0FMTEVFX0NPUElFUyk6IFJlbW92ZS4KCSogY29uZmlnL3NoL3NoLmMgKHNoX2NhbGxlZV9jb3BpZXMpOiBOZXcuCgkoVEFSR0VUX0NBTExFRV9DT1BJRVMpOiBOZXcuCgkqIGNvbmZpZy9zaC9zaC5oIChGVU5DVElPTl9BUkdfQ0FMTEVFX0NPUElFUyk6IFJlbW92ZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5jIChUQVJHRVRfQ0FMTEVFX0NPUElFUyk6IE5ldy4KCSogY29uZmlnL3Y4NTAvdjg1MC5oIChGVU5DVElPTl9BUkdfQ0FMTEVFX0NPUElFUyk6IFJlbW92ZS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9DQUxMRUVfQ09QSUVTKTogUmVwbGFjZSBkb2N1bWVudGF0aW9uCglmb3IgRlVOQ1RJT05fQVJHX0NBTExFRV9DT1BJRVMuCgkqIGRvYy9ydGwudGV4aSAoQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFKTogVXBkYXRlLgoKMjAwNC0wOS0wOCAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIHRyZWUtaWYtY29udi5jIChmaW5kX3BoaV9yZXBsYWNlbWVudF9jb25kaXRpb24pOiBSZXR1cm4gdHJ1ZQoJZWRnZSBibG9jay4KCShyZXBsYWNlX3BoaV93aXRoX2NvbmRfbW9kaWZ5X2V4cHIpOiBTZWxlY3QgY29uZGl0aW9uYWwgZXhwciBhcmdzCgliYXNlZCBvbiB0cnVlIGVkZ2UgYmFzaWMgYmxvY2suCgoyMDA0LTA5LTA4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfc3RtdF9vcGVyYW5kKTogVXNlIFZfTVVTVF9ERUYgZXZlbiBmb3IKCXZhcmlhYmxlcyBiZWluZyBhbGlhcyBzZXQuCgoyMDA0LTA5LTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZmluYWwuYyAoc2hvcnRlbl9icmFuY2hlcywgZmluYWwsIGdldF9pbnNuX3RlbXBsYXRlLAoJb3V0cHV0X2FsdGVybmF0ZV9lbnRyeV9wb2ludCwgZmluYWxfc2Nhbl9pbnNuLCBhbHRlcl9zdWJyZWcsCglhbHRlcl9jb25kLCBvdXRwdXRfb3BlcmFuZCwgYXNtX2ZwcmludGYsIGZpbmFsX2ZvcndhcmRfYnJhbmNoX3AsCglsZWFmX3JlbnVtYmVyX3JlZ3NfaW5zbik6IFVzZSBnY2NfYXNzZXJ0IGFuZCBnY2NfdW5yZWFjaGFibGUuCgkqIGZpeC1oZWFkZXIuYyAobG9va3VwX3N0ZF9wcm90byk6IExpa2V3aXNlLgoJKiBmbG93LmMgKGZpcnN0X2luc25fYWZ0ZXJfYmFzaWNfYmxvY2tfbm90ZSwgdmVyaWZ5X3dpZGVfcmVnLAoJdmVyaWZ5X2xvY2FsX2xpdmVfYXRfc3RhcnQsIHVwZGF0ZV9saWZlX2luZm8sIG1hcmtfcmVnLAoJY2FsY3VsYXRlX2dsb2JhbF9yZWdzX2xpdmUsIGFsbG9jYXRlX3JlZ19saWZlX2RhdGEsCglpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvLCBtYXJrX3NldF9yZWdzLCBmbHVzaF9yZWdfY29uZF9yZWdfMSwKCWlvcl9yZWdfY29uZCwgbm90X3JlZ19jb25kLCBhbmRfcmVnX2NvbmQsIGVsaW1fcmVnX2NvbmQsCglhdHRlbXB0X2F1dG9faW5jLCBtYXJrX3VzZWRfcmVnLCBtYXJrX3VzZWRfcmVncyk6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKGZvcmNlX2ZpdF90eXBlLCBkaXZfYW5kX3JvdW5kX2RvdWJsZSwKCW1heV9uZWdhdGVfd2l0aG91dF9vdmVyZmxvd19wLCBpbnRfY29uc3RfYmlub3AsIGNvbnN0X2Jpbm9wLAoJc2l6ZV9iaW5vcCwgc2l6ZV9kaWZmb3AsIGZvbGRfY29udmVydF9jb25zdCwgZm9sZF9jb252ZXJ0LAoJaW52ZXJ0X3RyZWVfY29tcGFyaXNvbiwgc3dhcF90cmVlX2NvbXBhcmlzb24sCgljb21wYXJpc29uX3RvX2NvbXBjb2RlLCBjb21wY29kZV90b19jb21wYXJpc29uLCBpbnZlcnRfdHJ1dGh2YWx1ZSwKCXJhbmdlX2Jpbm9wLCBtYWtlX3JhbmdlLCBmb2xkX2NvbmRfZXhwcl93aXRoX2NvbXBhcmlzb24sCglmb2xkX2Rpdl9jb21wYXJlLCBmb2xkLCBmb2xkX2NoZWNrc3VtX3RyZWUsIGZvbGRfbmVnYXRlX2NvbnN0LAoJZm9sZF9hYnNfY29uc3QsIGZvbGRfbm90X2NvbnN0LCBmb2xkX3JlbGF0aW9uYWxfY29uc3QsIHJvdW5kX3VwLAoJcm91bmRfZG93bik6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChmaW5kX2Z1bmN0aW9uX2RhdGEsIGFzc2lnbl9zdGFja190ZW1wX2Zvcl90eXBlLAoJaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzX2xvc3NhZ2UsIGFnZ3JlZ2F0ZV92YWx1ZV9wLAoJYXNzaWduX3Bhcm1fZmluZF9lbnRyeV9ydGwsIGFzc2lnbl9wYXJtX3NldHVwX2Jsb2NrLAoJZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0LCBleHBhbmRfZnVuY3Rpb25fZW5kLCBrZWVwX3N0YWNrX2RlcHJlc3NlZCwKCWhhbmRsZV9lcGlsb2d1ZV9zZXQsIHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBMaWtld2lzZS4KCjIwMDQtMDktMDggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogTWFrZWZpbGUuaW4gKHRyZWUtbG9vcC1saW5lYXIubyk6IEFkZGVkLgoJKE9CSlMtY29tbW9uKTogQWRkIHRyZWUtbG9vcC1saW5lYXIubwoJKiBjb21tb24ub3B0OiBOZXcgZmxhZywgZnRyZWUtbG9vcC1saW5lYXIuCgkqIHRpbWV2YXIuZGVmOiBOZXcgdGltZXZhciwgVFZfVFJFRV9MT09QX0xJTkVBUi4KCSogdHJlZS1mbG93Lmg6IEFkZCBwcm90b3R5cGUgZm9yIGxpbmVhcl90cmFuc2Zvcm1fbG9vcHMuCgkqIHRyZWUtb3B0aW1pemUuYzogQWRkIGxpbmVhciB0cmFuc2Zvcm0gYWZ0ZXIgdmVjdG9yaXphdGlvbi4KCSogdHJlZS1wYXNzLmg6IEFkZCBzdHJ1Y3QgcGFzc19saW5lYXJfdHJhbnNmb3JtLgoJKiB0cmVlLXNzYS1sb29wLmM6IEFkZCBwYXNzX2xpbmVhcl90cmFuc2Zvcm0uCgkqIHRyZWUtbG9vcC1saW5lYXIuYzogTmV3IGZpbGUuCgkqIGxhbWJkYS1jb2RlLmM6IGdjY19hc3NlcnRpZnkuCgkoZ2NjX2xvb3BfdG9fbGFtYmRhX2xvb3ApOiBIYW5kbGUgYWxsIGV4aXQgdGVzdHMuCglIYW5kbGUgY2FzZSB3aGVyZSB3ZSBoYXZlIChpbnZhcmlhbnQgPj0gaW5kdWN0aW9uIHZhcikuCgkoZmluZF9pbmR1Y3Rpb25fdmFyX2Zyb21fZXhpdF9jb25kKTogRGl0dG8uCgoyMDA0LTA5LTA4ICBKaWUgWmhhbmcgIDx6aGFuZ2ppZUBtYWdpbWEuY29tLmNuPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAoY29tcHV0ZV9mbG93X2luc2Vuc2l0aXZlX2FsaWFzaW5nKTogSWYgdHlwZQoJbWVtb3J5IHRhZyBpcyBjYWxsIGNsb2JiZXJlZCwgc28gYXJlIGl0cyBhbGlhc2VzLgoJKGdyb3VwX2FsaWFzZXMpOiBXaGVuIHR3byBtZW1vcnkgdGFncyBiZWluZyBncm91cGVkLCBpZiBvbmUgaXMKCWNhbGwgY2xvYmJlcmVkLCBzbyBhcmUgdGhlIG90aGVyIGFuZCBpdHMgYWxpYXNlcy4KCShhZGRfbWF5X2FsaWFzKTogUmVtb3ZlIGNhbGwtY2xvYmJlcmluZyBzdHVmZi4KCShyZXBsYWNlX21heV9hbGlhcyk6IExpa2V3aXNlLgoJKG1lcmdlX3BvaW50ZWRfdG9faW5mbyk6IE1lcmdlIHB0X2dsb2JhbF9tZW0KCjIwMDQtMDktMDggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5jIChjZ3JhcGhfcmVtb3ZlX25vZGUpOiBGcmVlIERFQ0xfSU5JVElBTCBmaWVsZCBvZiBub2RlLgoJKiBjZ3JhcGh1bml0LmMgKHZlcmlmeV9jZ3JhcGgpOiBEb24ndCB2ZXJpZnkgb24gc3ludGF4IGVycm9ycy4KCShjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uKTogUmVtb3ZlIHN0YWxlIGNncmFwaCBlZGdlcyBvZiBjdXJyZW50bHkKCWNvbXBpbGVkIGZ1bmN0aW9uOyBmaXggbm9uLXVuaXQtYXQtYS10aW1lIGNvZGUgY29weWluZyBmdW5jdGlvbgoJbm9kZSBmb3IgbGF0ZXIgcmV1c2UuCgoyMDA0LTA5LTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmVjLmMgKHZlY19wX3Jlc2VydmUsIHZlY19vX3Jlc2VydmUpOiBSZW5hbWUgdG8gLi4uCgkodmVjX2djX3BfcmVzZXJ2ZSwgdmVjX2djX29fcmVzZXJ2ZSk6IC4uLiBoZXJlLiBDbG9uZSB0bwoJKHZlY19oZWFwX3BfcmVzZXJ2ZSwgdmVjX2hlYXBfb19yZXNlcnZlKTogLi4uIGhlcmUsIGFkanVzdC4KCSh2ZWNfZ2NfZnJlZSwgdmVjX2hlYXBfZnJlZSk6IE5ldy4KCSogdmVjLmggKERFRl9WRUNfR0NfUCwgREVGX1ZFQ19NQUxMT0NfUCk6IE5ldy4KCShERUZfVkVDX1ApOiBBZGQgYWxsb2NhdG9yIGFyZ3VtZW50LiBBZGp1c3QuCgkoREVGX1ZFQ19HQ19PLCBERUZfVkVDX01BTExPQ19PKTogTmV3LgoJKERFRl9WRUNfTyk6IEFkZCBhbGxvY2F0b3IgYXJndW1lbnQuIEFkanVzdC4KCShWRUMoZnJlZSkpOiBOZXcuCgoJKiB0cmVlLmggKHRyZWUpOiBEZWZpbmUgYSBHQydkIHZlY3Rvci4KCSogbGFtYmEtY29kZS5jIChsYW1iZGFfbG9vcCk6IExpa2V3aXNlLgoJKiB2YWx1ZS1wcm9mLmggKGhpc3RvZ3JhbV92YWx1ZSk6IExpa2V3aXNlLgoKMjAwNC0wOS0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGltbWVkX2RvdWJsZV9jb25zdCk6IFVzZSBnY2NfYXNzZXJ0IGFuZCBnY2NfdW5yZWFjaGFibGUuCgkoZ2VuX3J0eF9TVUJSRUcsIGdlbl9yZWdfcnR4LCBtYXJrX3VzZXJfcmVnLCBzdWJyZWdfaGFyZF9yZWdubywKCWdlbl9sb3dwYXJ0X2NvbW1vbiwgZ2VuX2hpZ2hwYXJ0LCBnZW5faGlnaHBhcnRfbW9kZSwKCXN1YnJlZ19oaWdocGFydF9vZmZzZXQsIG9wZXJhbmRfc3Vid29yZCwgb3BlcmFuZF9zdWJ3b3JkX2ZvcmNlLAoJbWVtX2V4cHJfZXF1YWxfcCwgc2V0X21lbV9hdHRyaWJ1dGVzX21pbnVzX2JpdHBvcywKCXNldF9tZW1fYWxpYXNfc2V0LCBjaGFuZ2VfYWRkcmVzc18xLCB2ZXJpZnlfcnR4X3NoYXJpbmcsCgljb3B5X21vc3RfcnR4LCBzZXRfZmlyc3RfaW5zbiwgc2V0X2xhc3RfaW5zbiwgcHJldl9jYzBfc2V0dGVyLAoJdHJ5X3NwbGl0LCBhZGRfaW5zbl9hZnRlciwgYWRkX2luc25fYmVmb3JlLCByZW1vdmVfaW5zbiwKCXJlbW92ZV91bm5lY2Vzc2FyeV9ub3RlcywgZW1pdF9pbnNuX2JlZm9yZSwgZW1pdF9qdW1wX2luc25fYmVmb3JlLAoJZW1pdF9jYWxsX2luc25fYmVmb3JlLCBlbWl0X2luc25fYWZ0ZXIsIGVtaXRfanVtcF9pbnNuX2FmdGVyLAoJZW1pdF9jYWxsX2luc25fYWZ0ZXIsIGVtaXRfaW5zbiwgZW1pdF9qdW1wX2luc24sIGVtaXRfY2FsbF9pbnNuLAoJc2V0X3VuaXF1ZV9yZWdfbm90ZSwgZW1pdCwgcHVzaF90b19mdWxsX3NlcXVlbmNlLCBjb3B5X2luc25fMSwKCWdlbl9jb25zdF92ZWN0b3JfMCwgZW1pdF9jb3B5X29mX2luc25fYWZ0ZXIpOiBMaWtld2lzZS4KCSogZXQtZm9yZXN0LmMgKHNldF9wcmV2LCBzZXRfbmV4dCwgZXRfY2hlY2tfb2NjX3Nhbml0eSwKCXJlY29yZF9wYXRoX2JlZm9yZV8xLCBjaGVja19wYXRoX2FmdGVyXzEsIGNoZWNrX3BhdGhfYWZ0ZXIpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKGdlbl9laF9yZWdpb24sIHJlc29sdmVfb25lX2ZpeHVwX3JlZ2lvbiwKCXJlbW92ZV91bnJlYWNoYWJsZV9yZWdpb25zLCBjb252ZXJ0X2Zyb21fZWhfcmVnaW9uX3Jhbmdlc18xLAoJYWRkX2VobF9lbnRyeSwgZHVwbGljYXRlX2VoX3JlZ2lvbl8xLCBidWlsZF9wb3N0X2xhbmRpbmdfcGFkcywKCWNvbm5lY3RfcG9zdF9sYW5kaW5nX3BhZHMsIHNqbGpfZW1pdF9mdW5jdGlvbl9leGl0LAoJcmVtb3ZlX2V4Y2VwdGlvbl9oYW5kbGVyX2xhYmVsLCByZW1vdmVfZWhfaGFuZGxlciwKCXJlYWNoYWJsZV9uZXh0X2xldmVsLCBjb2xsZWN0X29uZV9hY3Rpb25fY2hhaW4sCglvdXRwdXRfZnVuY3Rpb25fZXhjZXB0aW9uX3RhYmxlKTogTGlrZXdpc2UuCgkqIGV4cGxvdy5jICh0cnVuY19pbnRfZm9yX21vZGUsIGNvcHlfdG9fbW9kZV9yZWcsCglvcHRpbWl6ZV9zYXZlX2FyZWFfYWxsb2NhLCBhbGxvY2F0ZV9keW5hbWljX3N0YWNrX3NwYWNlLAoJcHJvYmVfc3RhY2tfcmFuZ2UsIGhhcmRfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKG1vZGVfZm9yX2V4dHJhY3Rpb24sIHN0b3JlX2JpdF9maWVsZCwKCXN0b3JlX2ZpeGVkX2JpdF9maWVsZCwgZXh0cmFjdF9iaXRfZmllbGQsIGV4cGFuZF9zaGlmdCwKCWV4cGFuZF9tdWx0X2NvbnN0LCBleHBhbmRfbXVsdCwgY2hvb3NlX211bHRpcGxpZXIsCglleHBhbmRfbXVsdF9oaWdocGFydCwgZXhwYW5kX2Rpdm1vZCwgZW1pdF9zdG9yZV9mbGFnLAoJZG9fY21wX2FuZF9qdW1wKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoY29udmVydF9tb3ZlLCBjb252ZXJ0X21vZGVzLCBtb3ZlX2J5X3BpZWNlcywKCW1vdmVfYnlfcGllY2VzX25pbnNucywgbW92ZV9ieV9waWVjZXNfMSwgZW1pdF9ibG9ja19tb3ZlLAoJbW92ZV9ibG9ja19mcm9tX3JlZywgZ2VuX2dyb3VwX3J0eCwgZW1pdF9ncm91cF9sb2FkLAoJZW1pdF9ncm91cF9tb3ZlLCBlbWl0X2dyb3VwX3N0b3JlLCB1c2VfcmVnLCB1c2VfcmVncywKCWNhbl9zdG9yZV9ieV9waWVjZXMsIHN0b3JlX2J5X3BpZWNlcywgc3RvcmVfYnlfcGllY2VzXzEsCgllbWl0X21vdmVfaW5zbiwgZW1pdF9tb3ZlX2luc25fMSwgZW1pdF9wdXNoX2luc24sCglleHBhbmRfYXNzaWdubWVudCwgc3RvcmVfZXhwciwgY291bnRfdHlwZV9lbGVtZW50cywKCXN0b3JlX2NvbnN0cnVjdG9yLCBzdG9yZV9maWVsZCwgc2FmZV9mcm9tX3AsIGV4cGFuZF92YXIsCglleHBhbmRfZXhwcl9hZGRyX2V4cHIsIGV4cGFuZF9leHByX3JlYWxfMSwgZG9fc3RvcmVfZmxhZyk6IExpa2V3aXNlLgoKMjAwNC0wOS0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSwgZGJ4b3V0X3R5cGVfbmFtZSwgZGJ4b3V0X3N5bWJvbCk6IFVzZQoJZ2NjX2Fzc2VydCBhbmQgZ2NjX3VucmVhY2hhYmxlLgoJKiBkZGcuYyAoY3JlYXRlX2RkZ19kZXBlbmRlbmNlLCBhZGRfZGVwc19mb3JfZGVmLAoJYWRkX2RlcHNfZm9yX3VzZSwgY3JlYXRlX2RkZywgYWRkX2VkZ2VfdG9fZGRnKTogTGlrZXdpc2UuCgkqIGRmLmMgKGRmX3JlZl91bmxpbmssIGRmX3JlZl9yZWNvcmQsIGRmX3VzZXNfcmVjb3JkLAoJZGZfcmVnX2RlZl9jaGFpbl9jcmVhdGUsIGRmX3JlZ191c2VfY2hhaW5fY3JlYXRlLCBkZl9hbmFseXplLAoJZGZfaW5zbl9kZWxldGUsIGRmX3JlZnNfcmVnX3JlcGxhY2UsIGRmX3JlZl9yZWdfcmVwbGFjZSwKCWRmX2luc25zX21vZGlmeSwgZGZfcGF0dGVybl9lbWl0X2JlZm9yZSwgZGZfYmJfcmVnX2xpdmVfc3RhcnRfcCwKCWRmX2JiX3JlZ19saXZlX2VuZF9wLCBkZl9iYl9yZWdzX2xpdmVzX2NvbXBhcmUsCglkZl9iYl9zaW5nbGVfZGVmX3VzZV9pbnNuX2ZpbmQsIGRhdGFmbG93X3NldF9hX29wX2IsCglkYXRhZmxvd19zZXRfY29weSwgaHlicmlkX3NlYXJjaCwgZGlhZ25vc3RpYy5jLAoJZGlhZ25vc3RpY19idWlsZF9wcmVmaXgsIGRpYWdub3N0aWNfY291bnRfZGlhZ25vc3RpYyk6IExpa2V3aXNlLgoJKiBkb2p1bXAuYyAoZG9fanVtcCk6IExpa2V3aXNlLgoJKiBkb21pbmFuY2UuYyAoY2FsY19kZnNfdHJlZV9ub25yZWMsIGNhbGNfZGZzX3RyZWUsCgljb21wdXRlX2RvbV9mYXN0X3F1ZXJ5LCBjYWxjdWxhdGVfZG9taW5hbmNlX2luZm8sCglmcmVlX2RvbWluYW5jZV9pbmZvLCBnZXRfaW1tZWRpYXRlX2RvbWluYXRvciwKCXNldF9pbW1lZGlhdGVfZG9taW5hdG9yLCBnZXRfZG9taW5hdGVkX2J5LAoJcmVkaXJlY3RfaW1tZWRpYXRlX2RvbWluYXRvcnMsIG5lYXJlc3RfY29tbW9uX2RvbWluYXRvciwKCWRvbWluYXRlZF9ieV9wLCB2ZXJpZnlfZG9taW5hdG9ycywgcmVjb3VudF9kb21pbmF0b3IsCglpdGVyYXRlX2ZpeF9kb21pbmF0b3JzLCBhZGRfdG9fZG9taW5hbmNlX2luZm8sCglkZWxldGVfZnJvbV9kb21pbmFuY2VfaW5mbyk6IExpa2V3aXNlLgoJKiBkd2FyZjJhc20uYyAoc2l6ZV9vZl9lbmNvZGVkX3ZhbHVlLCBlaF9kYXRhX2Zvcm1hdF9uYW1lLAoJZHcyX2FzbV9vdXRwdXRfZGVsdGFfdWxlYjEyOCwgZHcyX2FzbV9vdXRwdXRfZGVsdGFfc2xlYjEyOCwKCWR3Ml9mb3JjZV9jb25zdF9tZW0sIGR3Ml9hc21fb3V0cHV0X2VuY29kZWRfYWRkcl9ydHgpOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKGV4cGFuZF9idWlsdGluX2luaXRfZHdhcmZfcmVnX3NpemVzLCByZWdfc2F2ZSwKCWluaXRpYWxfcmV0dXJuX3NhdmUsIHN0YWNrX2FkanVzdF9vZmZzZXQsIGR3YXJmMm91dF9zdGFja19hZGp1c3QsCglmbHVzaF9xdWV1ZWRfcmVnX3NhdmVzLCBkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwciwKCWR3YXJmMm91dF9mcmFtZV9kZWJ1ZywgZHdfY2ZpX29wcm5kMV9kZXNjLCBvdXRwdXRfY2ZpLAoJb3V0cHV0X2NhbGxfZnJhbWVfaW5mbywgb3V0cHV0X2xvY19vcGVyYW5kcywgYnVpbGRfY2ZhX2xvYywKCWRlY2xfdWx0aW1hdGVfb3JpZ2luLCBBVF9mbGFnLCBBVF9pbnQsIEFUX3Vuc2lnbmVkLCBBVF9zdHJpbmcsCglBVF9zdHJpbmdfZm9ybSwgYWRkX0FUX3NwZWNpZmljYXRpb24sIEFUX3JlZiwgc2V0X0FUX3JlZl9leHRlcm5hbCwKCUFUX2xvYywgQVRfbG9jX2xpc3QsIEFUX2FkZHIsIEFUX2xibCwgYWRkX2NoaWxkX2RpZSwKCXNwbGljZV9jaGlsZF9kaWUsIGF0dHJfY2hlY2tzdW0sIHNhbWVfZHdfdmFsX3AsCglicmVha19vdXRfaW5jbHVkZXMsIGJ1aWxkX2FiYnJldl90YWJsZSwgc2l6ZV9vZl9kaWUsIG1hcmtfZGllcywKCXVubWFya19kaWVzLCB2YWx1ZV9mb3JtYXQsIG91dHB1dF9sb2NfbGlzdCwgb3V0cHV0X2RpZSwKCW91dHB1dF9wdWJuYW1lcywgb3V0cHV0X2FyYW5nZXMsIGJhc2VfdHlwZV9kaWUsIGlzX2Jhc2VfdHlwZSwKCW1vZGlmaWVkX3R5cGVfZGllLCBkYnhfcmVnX251bWJlciwgbXVsdGlwbGVfcmVnX2xvY19kZXNjcmlwdG9yLAoJbWVtX2xvY19kZXNjcmlwdG9yLCBsb2NfZGVzY3JpcHRvciwgbG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlXzEsCglmaWVsZF9ieXRlX29mZnNldCwgYWRkX2RhdGFfbWVtYmVyX2xvY2F0aW9uX2F0dHJpYnV0ZSwKCWFkZF9jb25zdF92YWx1ZV9hdHRyaWJ1dGUsIHJ0bF9mb3JfZGVjbF9sb2NhdGlvbiwKCWFkZF9sb2NhdGlvbl9vcl9jb25zdF92YWx1ZV9hdHRyaWJ1dGUsIGFkZF9ieXRlX3NpemVfYXR0cmlidXRlLAoJYWRkX2JpdF9vZmZzZXRfYXR0cmlidXRlLCBhZGRfYml0X3NpemVfYXR0cmlidXRlLAoJYWRkX2Fic3RyYWN0X29yaWdpbl9hdHRyaWJ1dGUsIHBvcF9kZWNsX3Njb3BlLCBzY29wZV9kaWVfZm9yLAoJZGVjbF9zdGFydF9sYWJlbCwgZ2VuX2Zvcm1hbF9wYXJhbWV0ZXJfZGllLAoJZ2VuX3R5cGVfZGllX2Zvcl9tZW1iZXIsIGdlbl9zdWJwcm9ncmFtX2RpZSwgZ2VuX2xhYmVsX2RpZSwKCWdlbl90eXBlZGVmX2RpZSwgZ2VuX3R5cGVfZGllLCBnZW5fdGFnZ2VkX3R5cGVfaW5zdGFudGlhdGlvbl9kaWUsCglmb3JjZV9kZWNsX2RpZSwgZm9yY2VfdHlwZV9kaWUsIGdlbl9kZWNsX2RpZSwKCWR3YXJmMm91dF9pbXBvcnRlZF9tb2R1bGVfb3JfZGVjbCwgcHJ1bmVfdW51c2VkX3R5cGVzX3BydW5lLAoJZHdhcmYyb3V0X2ZpbmlzaCk6IExpa2V3aXNlLgoKMjAwNC0wOS0wOCAgQW5kcmVhcyBUb2JsZXIgIDx0b2FAcG9wLmFncmkuY2g+CgoJKiBNYWtlZmlsZS5pbiAoYnVpbHRpbnMubyk6IERlcGVuZCBvbiB0cmVlLW11ZGZsYXAuaC4KCSogYnVpbHRpbnMuYzogSW5jbHVkZSB0cmVlLW11ZGZsYXAuaC4KCjIwMDQtMDktMDggIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9wcmVwYXJlX2ZwX2NvbXBhcmVfYXJncyk6IERvIG5vdAoJZm9yY2Ugb3BlcmFuZCAwLjAgaW50byByZWdpc3RlciBpbiBYRm1vZGUuIEFsc28gZG8gbm90IGZvcmNlCglvcGVyYW5kIDAuMCBpbnRvIHJlZ2lzdGVyIGlmICFUQVJHRVRfQ01PVkUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpjbXBmcF8wKTogRGVsZXRlLiBSZW1vdmUgY29tbWVudC4KCSgqY21wZnBfMF9zZiwgY21wZnBfMF9kZiwgY21wZnBfMF94Zik6IE5ldyBwYXR0ZXJucyB0bwoJaW1wbGVtZW50IGZ0c3QgeDg3IGluc3RydWN0aW9uLgoJKCpmcF9qY2NfNyk6IE5ldyBpbnNuIHBhdHRlcm4uIENoYW5nZSBjb3JyZXNwb25kaW5nIHNwbGl0CglwYXR0ZXJuIHRvIGhhbmRsZSAiZ2VuZXJhbF9vcGVyYW5kIiBpbnN0ZWFkIG9mCgkibm9uaW1tZWRpYXRlX29wZXJhbmQiLgoKMjAwNC0wOS0wOCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBkb2MvcnRsLnRleGkgKEluc25zKTogRG9jdW1lbnQgTk9URV9JTlNOX0ZVTkNUSU9OX0JFRy4KCjIwMDQtMDktMDcgIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChzdGRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBNYXJrIElORElSRUNUX1JFRiBub2RlcwoJZ2VuZXJhdGVkIGZyb20gc3RhbmRhcmQgdmFfYXJnIGV4cGFuc2lvbi4KCSogdHJlZS1tdWRmbGFwLmMgKG14X3hmb3JtX2RlcmVmc18xKTogT21pdCBpbnN0cnVtZW50YXRpb24gZnJvbQoJbWFya2VkIG5vZGVzLgoJKG1mX3Zhcm5hbWVfdHJlZSwgbWZfZmlsZV9mdW5jdGlvbl9saW5lX3RyZWUpOiBBZGQgc29tZSBzdXBwb3J0Cglmb3IgY29sdW1uIG51bWJlcnMgaWYgY29tcGlsZWQgd2l0aCBVU0VfTUFQUEVEX0xPQ0FUSU9OLgoKMjAwNC0wOS0wNyAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogYy1kZWNsLmMgKGdyb2t0eXBlbmFtZV9pbl9wYXJtX2NvbnRleHQpOiBSZW1vdmUgZnVuY3Rpb24uCgkqIGMtdHJlZS5oIChncm9rdHlwZW5hbWVfaW5fcGFybV9jb250ZXh0KTogUmVtb3ZlIHByb3RvdHlwZS4KCjIwMDQtMDktMDcgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjLXBhcnNlLm8pOiBEZXBlbmQgb24gJChDX0NPTU1PTl9IKS4KCSogYy1wYXJzZS5pbjogSW5jbHVkZSBjLWNvbW1vbi5oIGluc3RlYWQgb2Ygb2JqYy1hY3QuaC4KCShpdmFyX2RlY2xfbGlzdCwgaXZhcl9kZWNscywgaXZhcl9kZWNsLCBpdmFycywgaXZhcl9kZWNsYXJhdG9yLAoJbXlwYXJtcywgbXlwYXJtKTogUmVtb3ZlICV0eXBlIGRlY2xhcmF0aW9ucy4KCShtZXRob2R0eXBlLCBvcHRwYXJtcywgT0JKQ19UWVBFX1FVQUwsIG9iamNfcXVhbHMsIG9iamNfcXVhbCwKCW9iamNfdHlwZW5hbWUsIG9iamNfdHJ5X2NhdGNoX3N0bXQsIG9wdGVsbGlwc2lzKTogQWRkICV0eXBlCglkZWNsYXJhdGlvbnMuCgkob2JqY19pbmhlcml0X2NvZGUsIG9iamNfcHVibGljX2ZsYWcpOiBSZW1vdmUuCgkodHlwZXNwZWNfbm9ucmVzZXJ2ZWRfbm9uYXR0cik6IENhbGwKCW9iamNfZ2V0X3Byb3RvY29sX3F1YWxpZmllZF90eXBlKCkgaW5zdGVhZCBvZiBnZXRfc3RhdGljX3JlZmVyZW5jZSgpCglhbmQgZ2V0X3Byb3RvY29sX3JlZmVyZW5jZSgpLgoJKHN0bXRfbm9jb21wKTogQ2FsbCBncm9rcGFybSgpIG9uIEBjYXRjaCBwYXJhbWV0ZXIuCgkob2JqY2RlZik6IE1vdmUgc2VtYW50aWMgYWN0aW9uIHRvIG9iamNfZmluaXNoX2ltcGxlbWVudGF0aW9uKCkuCgkoY2xhc3NkZWYpOiBNb3ZlIHNlbWFudGljIGFjdGlvbiB0byBvYmpjX3N0YXJ0X2NsYXNzX2ludGVyZmFjZSgpLAoJb2JqY19jb250aW51ZV9pbnRlcmZhY2UoKSwgb2JqY19maW5pc2hfaW50ZXJmYWNlKCksCglvYmpjX3N0YXJ0X2NsYXNzX2ltcGxlbWVudGF0aW9uKCksIG9iamNfY29udGludWVfaW1wbGVtZW50YXRpb24oKSwKCW9iamNfc3RhcnRfY2F0ZWdvcnlfaW50ZXJmYWNlKCkgYW5kCglvYmpjX3N0YXJ0X2NhdGVnb3J5X2ltcGxlbWVudGF0aW9uKCkuCgkocHJvdG9jb2xkZWYpOiBNb3ZlIHNlbWFudGljIGFjdGlvbnMgdG8gb2JqY19zdGFydF9wcm90b2NvbCgpIGFuZAoJb2JqY19maW5pc2hfaW50ZXJmYWNlKCkuCgkoaXZhcl9kZWNsX2xpc3QpOiBSZW1vdmUgbm9udGVybWluYWwuCgkodmlzaWJpbGl0eV9zcGVjKTogTW92ZSBzZW1hbnRpYyBhY3Rpb25zIHRvIG9iamNfc2V0X3Zpc2liaWxpdHkoKS4KCShpdmFyX2RlY2xzKTogUmVtb3ZlIGFzc2lnbm1lbnQgdG8gJCQuCgkoaXZhcl9kZWNsKTogUmVwaHJhc2UgaW4gdGVybXMgb2YgY29tcG9uZW50X2RlY2w7IGNhbGwKCW9iamNfYWRkX2luc3RhbmNlX3ZhcmlhYmxlKCkuCgkoaXZhcnMsIGl2YXJfZGVjbGFyYXRvcik6IFJlbW92ZSBub250ZXJtaW5hbHMuCgkob3B0X3NlbWkpOiBOZXcgbm9udGVybWluYWwuCgkobWV0aG9kdHlwZSk6IFJlbW92ZSBzZW1hbnRpYyBhY3Rpb25zLgoJKG1ldGhvZGRlZik6IE1vdmUgc2VtYW50aWMgYWN0aW9ucyB0byBvYmpjX3NldF9tZXRob2RfdHlwZSgpLAoJb2JqY19zdGFydF9tZXRob2RfZGVmaW5pdGlvbigpIGFuZCBvYmpjX2ZpbmlzaF9tZXRob2RfZGVmaW5pdGlvbigpLgoJKG1ldGhvZHByb3RvKTogTW92ZSBzZW1hbnRpYyBhY3Rpb25zIHRvIG9iamNfc2V0X21ldGhvZF90eXBlKCkgYW5kCglvYmpjX2FkZF9tZXRob2RfZGVjbGFyYXRpb24oKS4KCShtZXRob2RkZWNsKTogVXNlIG9iamNfdHlwZW5hbWUgaW5zdGVhZCBvZiB0eXBlbmFtZTsgbW92ZSBzZW1hbnRpYwoJYWN0aW9ucyB0byBvYmpjX2J1aWxkX21ldGhvZF9zaWduYXR1cmUoKS4KCShvcHRhcmdsaXN0LCBteXhkZWNscywgbXlkZWNsLCBteXBhcm1zLCBteXBhcm0pOiBSZW1vdmUgbm9udGVybWluYWxzLgoJKG9wdHBhcm1saXN0KTogRXhwcmVzcyBpbiB0ZXJtcyBvZiBvcHRwYXJtcyBhbmQgb3B0ZWxsaXBzaXMuCgkob3B0cGFybXMsIG9wdGVsbGlwc2lzLCBvYmpjX3F1YWwsIG9iamNfcXVhbHMsIG9iamNfdHlwZW5hbWUpOiBOZXcKCW5vbnRlcm1pbmFscy4KCShrZXl3b3JkZGVjbCk6IFVzZSBvYmpjX3R5cGVuYW1lIGluc3RlYWQgb2YgdHlwZW5hbWUuCgkocmlkX3RvX3l5KTogTWFyayBSSURfSU4sIFJJRF9PVVQsIFJJRF9JTk9VVCwgUklEX0JZQ09QWSwgUklEX0JZUkVGCglhbmQgUklEX09ORVdBWSBhcyByZXR1cm5pbmcgT0JKQ19UWVBFX1FVQUwgdG8geXlwYXJzZSgpLgoKMjAwNC0wOS0wOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGRvYy90bS50ZXhpIChNRF9VTldJTkRfU1VQUE9SVCk6IERvY3VtZW50LgoJKE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUik6IFVwZGF0ZS4KCSogdW53aW5kLWR3Mi5jIChNRF9VTldJTkRfU1VQUE9SVCk6ICNpbmNsdWRlIGlmIGRlZmluZWQuCgkodXdfZnJhbWVfc3RhdGVfZm9yKTogQWRqdXN0IE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUiBpbnZvY2F0aW9uLgoJKE1EX0ZST0JfVVBEQVRFX0NPTlRFWFQpOiBSZW1vdmUgZGVmYXVsdC4KCSh1d191cGRhdGVfY29udGV4dF8xKTogSW5zdGVhZCAjaWZkZWYgaW52b2NhdGlvbi4KCSogY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYyAoTURfVU5XSU5EX1NVUFBPUlQpOiAjaW5jbHVkZSBpZiBkZWZpbmVkLgoJKHV3X2ZyYW1lX3N0YXRlX2Zvcik6IEFkanVzdCBNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IgaW52b2NhdGlvbi4KCSogY29uZmlnL2FscGhhL2dudS5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiBEb24ndCB1bmRlZi4KCShNRF9VTldJTkRfU1VQUE9SVCk6IFVuZGVmaW5lIHRoaXMgaW5zdGVhZC4KCSogY29uZmlnL2kzODYvZ251Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvbGludXgtdW53aW5kLmg6IE5ldyBmaWxlLCBtYWNybyBjb252ZXJ0ZWQgdG8KCWZ1bmN0aW9uLCBleHRyYWN0ZWQgZnJvbS4uCgkqIGNvbmZpZy9hbHBoYS9saW51eC5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiAuLnRoaXMuCgkoTURfVU5XSU5EX1NVUFBPUlQpOiBEZWZpbmUuCgkqIGNvbmZpZy9hbHBoYS92bXMtdW53aW5kLmgsIGNvbmZpZy9hbHBoYS92bXMuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2xpbnV4LXVud2luZC5oLCBjb25maWcvaTM4Ni9saW51eC5oLAoJY29uZmlnL2kzODYvbGludXg2NC5oOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvbGludXgtdW53aW5kLmgsIGNvbmZpZy9pYTY0L2xpbnV4Lmg6IExpa2V3aXNlLgoJTURfSEFORExFX1VOV0FCSSB0b28uCgkqIGNvbmZpZy9taXBzL2xpbnV4LXVud2luZC5oLCBjb25maWcvbWlwcy9saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL2xpbnV4LXVud2luZC5oLCBjb25maWcvcGEvcGEzMi1saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4tdW53aW5kLmgsIGNvbmZpZy9yczYwMDAvZGFyd2luLmg6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9saW51eC11bndpbmQuaCwgY29uZmlnL3MzOTAvbGludXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9saW51eC11bndpbmQuaCwgY29uZmlnL3NwYXJjL2xpbnV4LmgsCgljb25maWcvc3BhcmMvbGludXg2NC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL2xpbnV4LXVud2luZC5oLCBjb25maWcvc2gvbGludXguaDogTGlrZXdpc2UsIGJ1dCBtZXJnZQoJU0hfRkFMTEJBQ0tfRlJBTUVfRkxPQVRfU1RBVEUgaW50byBzaF9mYWxsYmFja19mcmFtZV9zdGF0ZS4KCSogY29uZmlnL3JzNjAwMC9saW51eC11bndpbmQuaCwgY29uZmlnL3JzNjAwMC9saW51eC5oLAoJY29uZmlnL3JzNjAwMC9saW51eDY0Lmg6IExpa2V3aXNlLiAgU3BsaXQgb3V0IGdldF9zaWdjb250ZXh0CglmdW5jdGlvbi4gIFVzZSBBUkdfUE9JTlRFUl9SRUdOVU0gZm9yIDMyLWJpdCB0ZW1wIHJlZyB0b28uCgoyMDA0LTA5LTA3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjc2UuYyAoZm9sZF9ydHgpOiBBdm9pZCBidWlsZGluZyBvZgoJKENPTlNUIChNSU5VUyAoQ09OU1RfSU5UKSAoU1lNQk9MX1JFRikpKQoKCSogdHJlZS1zc2EtcHJlLmMgKGdyYW5kX2JpdG1hcF9vYnN0YWNrKTogTmV3LgoJKHZhbHVlX2luc2VydF9pbnRvX3NldF9iaXRtYXAsIGJpdG1hcF9zZXRfbmV3KTogVXNlIHRoZSBvYnN0YWNrLgoJKGluaXRfcHJlKTogSW5pdGlhbGl6ZSBvYnN0YWNrLgoJKGZpbmlfcHJlKTogRnJlZSBvYnN0YWNrLgoKMjAwNC0wOS0wNyAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGNvbmZpZy5nY2M6IEFkZGVkIHN1cHBvcnQgZm9yIC0td2l0aC1kaXZpZGU9W2JyZWFrc3x0cmFwc10gZm9yCgltaXBzIHRhcmdldHMuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoTUFTS19ESVZJREVfQlJFQUtTKTogTmV3IHRhcmdldF9mbGFncyBiaXQuCgkoVEFSR0VUX0RJVklERV9UUkFQUyk6IE5ldyBtYWNyby4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGRlZCAtbWRpdmlkZS10cmFwcyBhbmQgLW1kaXZpZGUtYnJlYWtzLgoJKE9QVElPTl9ERUZBVUxUX1NQRUNTKTogQWRkZWQgLS13aXRoLWRpdmlkZT0gc3VwcG9ydC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2lkaXZfaW5zbnMpOiBHZW5lcmF0ZSBwcm9wZXIgY291bnQgb24KCUdFTkVSQVRFX0RJVklERV9UUkFQUy4KCShtaXBzX291dHB1dF9kaXZpc2lvbik6IEVtaXQgY29uZGl0aW9uYWwgdHJhcCBpZgoJR0VORVJBVEVfRElWSURFX1RSQVBTIGlzIHNldC4KCSogZG9jL2luc3RhbGwudGV4aTogRG9jdW1lbnQgLS13aXRoLWRpdmlkZS4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbWRpdmlkZS10cmFwcyBhbmQgLW1kaXZpZGUtYnJlYWtzLgoKMjAwNC0wOS0wNyAgQ2Fyb2xpbmUgVGljZSAgPGN0aWNlQGFwcGxlLmNvbT4KCgkqIGNmZ3J0bC5jIChydGxfdmVyaWZ5X2Zsb3dfaW5mb18xKTogQWRkIG5ldyBlZGdlIGZsYWcsCglFREdFX0NST1NTSU5HLCB0byBmbGFncyB0ZXN0IGNhc2UuCgoyMDA0LTA5LTA3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChjb250YWluc19hYm5vcm1hbF9zc2FfbmFtZV9wKTogRGVhbCB3aXRoICc8JwoJY2xhc3MgdG9vLgoKMjAwNC0wOS0wNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNmZ2FuYWwuYyAoZmxvd19kZXB0aF9maXJzdF9vcmRlcl9jb21wdXRlLCBkZnNfZW51bWVyYXRlX2Zyb20sCgljZmdidWlsZC5jLCBpbnNpZGVfYmFzaWNfYmxvY2tfcCwgY29udHJvbF9mbG93X2luc25fcCwKCW1ha2VfbGFiZWxfZWRnZSwgbWFrZV9lZGdlcywgZmluZF9iYXNpY19ibG9ja3NfMSk6IFVzZSBnY2NfYXNzZXJ0CglvciBnY2NfdW5yZWFjaGFibGUuCgkqIGNmZy5jIChjbGVhcl9lZGdlcywgaW5pdGlhbGl6ZV9iYl9yYmksIGNvbXBhY3RfYmxvY2tzLAoJcmVtb3ZlX2VkZ2UsIGFsbG9jX2F1eF9mb3JfYmxvY2tzLCBmcmVlX2F1eF9mb3JfYmxvY2tzLAoJYWxsb2NfYXV4X2Zvcl9lZGdlcywgZnJlZV9hdXhfZm9yX2VkZ2VzKTogTGlrZXdpc2UuCgkqIGNmZ2NsZWFudXAuYyAodHJ5X2ZvcndhcmRfZWRnZXMsCgltZXJnZV9ibG9ja3NfbW92ZV9wcmVkZWNlc3Nvcl9ub2p1bXBzLAoJbWVyZ2VfYmxvY2tzX21vdmVfc3VjY2Vzc29yX25vanVtcHMpOiBMaWtld2lzZS4KCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfY29uZF9leHByLAoJZXhwYW5kX2dpbXBsZV90YWlsY2FsbCk6IExpa2V3aXNlLgoJKiBjZmdob29rcy5jIChkdXBsaWNhdGVfYmxvY2spOiBMaWtld2lzZS4KCSogY2ZnbGF5b3V0LmMgKHJlY29yZF9lZmZlY3RpdmVfZW5kcG9pbnRzLAoJaW5zbl9sb2NhdG9yc19pbml0aWFsaXplLCBjaGFuZ2Vfc2NvcGUsIGZpeHVwX3Jlb3JkZXJfY2hhaW4sCgl2ZXJpZnlfaW5zbl9jaGFpbiwgZml4dXBfZmFsbHRocnVfZXhpdF9wcmVkZWNlc3NvciwKCWR1cGxpY2F0ZV9pbnNuX2NoYWluLCBjZmdfbGF5b3V0X2ZpbmFsaXplKTogTGlrZXdpc2UuCgkqIGNmZ2xvb3BhbmFsLmMgKGNoZWNrX2lycmVkKTogTGlrZXdpc2UuCgkqIGNmZ2xvb3AuYyAoc3VwZXJsb29wX2F0X2RlcHRoLCBmbG93X2xvb3BzX2ZyZWUsCglmbG93X2xvb3BfZW50cnlfZWRnZXNfZmluZCwgZmxvd19sb29wc19maW5kLAoJZmxvd19sb29wX291dHNpZGVfZWRnZV9wLCBnZXRfbG9vcF9ib2R5LAoJZ2V0X2xvb3BfYm9keV9pbl9kb21fb3JkZXIsIGdldF9sb29wX2JvZHlfaW5fYmZzX29yZGVyLAoJZ2V0X2xvb3BfZXhpdF9lZGdlcywgbnVtX2xvb3BfYnJhbmNoZXMsIGNhbmNlbF9sb29wLAoJdmVyaWZ5X2xvb3Bfc3RydWN0dXJlKTogTGlrZXdpc2UuCgljZmdsb29wbWFuaXAuYyAoZmluZF9wYXRoLCByZW1vdmVfcGF0aCwgbG9vcF9kZWxldGVfYnJhbmNoX2VkZ2UsCglkdXBsaWNhdGVfbG9vcF90b19oZWFkZXJfZWRnZSwgY3JlYXRlX3ByZWhlYWRlciwKCWNyZWF0ZV9sb29wX25vdGVzKTogTGlrZXdpc2UuCgkqIGNmZ3J0bC5jIChkZWxldGVfaW5zbiwgdHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wLAoJZWRpcmVjdF9icmFuY2hfZWRnZSwgZm9yY2Vfbm9uZmFsbHRocnVfYW5kX3JlZGlyZWN0LAoJcnRsX3NwbGl0X2VkZ2UsIGluc2VydF9pbnNuX29uX2VkZ2UsIGNvbW1pdF9vbmVfZWRnZV9pbnNlcnRpb24sCgljb21taXRfZWRnZV9pbnNlcnRpb25zLCBjb21taXRfZWRnZV9pbnNlcnRpb25zX3dhdGNoX2NhbGxzLAoJcHVyZ2VfZGVhZF9lZGdlcywgY2ZnX2xheW91dF9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gsCgljZmdfbGF5b3V0X3JlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaF9mb3JjZSwKCWNmZ19sYXlvdXRfbWVyZ2VfYmxvY2tzLCBydGxfZmxvd19jYWxsX2VkZ2VzX2FkZCk6IExpa2V3aXNlLgoJKiBjZ3JhcGguYyAoY2dyYXBoX25vZGUsIGNncmFwaF9jcmVhdGVfZWRnZSwgY2dyYXBoX3JlbW92ZV9lZGdlLAoJY2dyYXBoX3JlZGlyZWN0X2VkZ2VfY2FsbGVlLCBjZ3JhcGhfZ2xvYmFsX2luZm8sIGNncmFwaF9ydGxfaW5mbywKCWNncmFwaF92YXJwb29sX25vZGUpOiBMaWtld2lzZS4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24sCgljZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdCwgY2dyYXBoX21hcmtfZnVuY3Rpb25zX3RvX291dHB1dCwKCWNncmFwaF9leHBhbmRfZnVuY3Rpb24sIGNncmFwaF9yZW1vdmVfdW5yZWFjaGFibGVfbm9kZXMsCgljZ3JhcGhfY2xvbmVfaW5saW5lZF9ub2RlcywgY2dyYXBoX21hcmtfaW5saW5lX2VkZ2UsCgljZ3JhcGhfbWFya19pbmxpbmUsIGNncmFwaF9leHBhbmRfYWxsX2Z1bmN0aW9ucywKCWNncmFwaF9idWlsZF9zdGF0aWNfY2R0b3IpOiBMaWtld2lzZS4KCSogY29tYmluZS5jICAoZG9fU1VCU1QsIHRyeV9jb21iaW5lLCBzdWJzdCwgY29tYmluZV9zaW1wbGlmeV9ydHgsCglzaW1wbGlmeV9sb2dpY2FsLCBkaXN0cmlidXRlX25vdGVzLCBpbnNuX2N1aWQpOiBMaWtld2lzZS4KCSogY29uZmxpY3QuYyAoY29uZmxpY3RfZ3JhcGhfYWRkLCBwcmludF9jb25mbGljdCk6IExpa2V3aXNlLgoJKiBjb3ZlcmFnZS5jIChydGxfY292ZXJhZ2VfY291bnRlcl9yZWYsIHRyZWVfY292ZXJhZ2VfY291bnRlcl9yZWYsCgljb3ZlcmFnZV9jaGVja3N1bV9zdHJpbmcpOiBMaWtld2lzZS4KCSogY3NlLmMgKG1ha2VfbmV3X3F0eSwgbWFrZV9yZWdzX2VxdiwgaW5zZXJ0LCBpbnZhbGlkYXRlLAoJaGFzaF9ydHgsIGV4cF9lcXVpdl9wLCBjc2VfYmFzaWNfYmxvY2ssIGNvdW50X3JlZ191c2FnZSwKCWNzZV9jY19zdWNjcywgY3NlX2NvbmRpdGlvbl9jb2RlX3JlZyk6IExpa2V3aXNlLgoJKiBjc2VsaWIuYyAoZW50cnlfYW5kX3J0eF9lcXVhbF9wLCByZW1vdmVfdXNlbGVzc192YWx1ZXMsCglydHhfZXF1YWxfZm9yX2NzZWxpYl9wLCB3cmFwX2NvbnN0YW50LCBjc2VsaWJfaGFzaF9ydHgsCgluZXdfY3NlbGliX3ZhbCwgY3NlbGliX3N1YnN0X3RvX3ZhbHVlcywgY3NlbGliX2ludmFsaWRhdGVfcmVnbm8sCgljc2VsaWJfcmVjb3JkX3NldCk6IExpa2V3aXNlLgoKMjAwNC0wOS0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoaXZfdmFsdWUpOiBBdm9pZCBpbnZhbGlkIHNoYXJpbmcgb24gbml0ZXIuCgoyMDA0LTA5LTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX3N0cmNocik6IFVzZSBidWlsZF9pbnRfY3N0LCBub3QKCWZvbGRfY29udmVydC4KCShmb2xkX2J1aWx0aW5fc3RycGJyayk6IExpa2V3aXNlLgoJKiBleHByLmMgKGFycmF5X3JlZl9sb3dfYm91bmQpOiBMaWtld2lzZS4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGNocmVjX2lzX3Bvc2l0aXZlLCBhZGRfdG9fZXZvbHV0aW9uXzEsCglpbnRlcnByZXRfcmhzX21vZGlmeV9leHByLCBudW1iZXJfb2ZfaXRlcmF0aW9uc19pbl9sb29wKTogTGlrZXdpc2UuCgkqIHRyZWUtc3JhLmMgKGdlbmVyYXRlX2VsZW1lbnRfemVybyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kb20uYyAoc2ltcGxpZnlfcmhzX2FuZF9sb29rdXBfYXZhaWxfZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChkZXRlcm1pbmVfYml2X3N0ZXAsIGlkeF9maW5kX3N0ZXAsCglhZGRfb2xkX2l2X2NhbmRpZGF0ZXMsIGFkZF9pdl9jYW5kaWRhdGVzKTogTGlrZXdpc2UuCgkqIHRyZWUtdGFpbGNhbGwuYyAodHJlZV9vcHRpbWl6ZV90YWlsX2NhbGxzXzEpOiBMaWtld2lzZS4KCjIwMDQtMDktMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWF1eC1pbmZvLmMgKGdlbl90eXBlKTogVXNlIGdjY19hc3NlcnQgb3IgZ2NjX3VucmVhY2hhYmxlLgoJKiBjLWNvbW1vbi5jIChjX3R5cGVfaGFzaCwgY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zLAoJY19leHBhbmRfZXhwciwgYm9vbGVhbl9pbmNyZW1lbnQsIG5vbm51bGxfY2hlY2tfcCwKCWNoZWNrX2Z1bmN0aW9uX2FyZ3VtZW50c19yZWN1cnNlLCBmb2xkX29mZnNldG9mXzEpOiBMaWtld2lzZS4KCSogYy1jcHBidWlsdGluLmMgKGRlZmluZV9fR05VQ19fLCBidWlsdGluX2RlZmluZV9zdGRpbnRfbWFjcm9zLAoJYnVpbHRpbl9kZWZpbmVfdHlwZV9tYXgpOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKGJpbmQsIHBvcF9zY29wZSwgbWVyZ2VfZGVjbHMsIHB1c2hkZWNsX3RvcF9sZXZlbCwKCWltcGxpY2l0X2RlY2xfd2FybmluZywgYnVpbHRpbl9mdW5jdGlvbiwgYnVpbGRfY29tcG91bmRfbGl0ZXJhbCwKCWNvbXBsZXRlX2FycmF5X3R5cGUsIGdyb2tkZWNsYXJhdG9yLCBnZXRfcGFybV9pbmZvLAoJc3RhcnRfZnVuY3Rpb24sIHN0b3JlX3Bhcm1fZGVjbHNfb2xkc3R5bGUsCgljX3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBMaWtld2lzZS4KCSogYy1mb3JtYXQuYyAoZ2V0X2NvbnN0YW50LCBkZWNvZGVfZm9ybWF0X2F0dHIsCgltYXliZV9yZWFkX2RvbGxhcl9udW1iZXIsIGdldF9mbGFnX3NwZWMsIGNoZWNrX2Zvcm1hdF9hcmcsCgljaGVja19mb3JtYXRfdHlwZXMsIGZvcm1hdF90eXBlX3dhcm5pbmcsCglmaW5kX2NoYXJfaW5mb19zcGVjaWZpZXJfaW5kZXgsIGluaXRfZHluYW1pY19hc21fZnByaW50Zl9pbmZvLAoJaW5pdF9keW5hbWljX2RpYWdfaW5mbywgaGFuZGxlX2Zvcm1hdF9hdHRyaWJ1dGUpOiBMaWtld2lzZS4KCSogYy1naW1wbGlmeS5jIChwdXNoX2NvbnRleHQsIHBvcF9jb250ZXh0LCBmaW5pc2hfYmNfYmxvY2spOgoJKiBjLWxleC5jIChjX2xleF93aXRoX2ZsYWdzLCBsZXhfc3RyaW5nKTogTGlrZXdpc2UuCgkqIGMtb2JqYy1jb21tb24uYyAoY190cmVlX3ByaW50ZXIpOiBMaWtld2lzZS4KCSogYy1wY2guYyAocGNoX2luaXQpOiBMaWtld2lzZS4KCSogYy1wcmFnbWEuYyAobWF5YmVfYXBwbHlfcHJhZ21hX3dlYWspOiBMaWtld2lzZS4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY190cmVlX2RlY2xfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChjX2luY29tcGxldGVfdHlwZV9lcnJvciwgY29tcG9zaXRlX3R5cGUsCgljb21tb25fcG9pbnRlcl90eXBlLCBjb21tb25fdHlwZSwgc2FtZV90cmFuc2xhdGlvbl91bml0X3AsCgl0YWdnZWRfdHlwZXNfdHVfY29tcGF0aWJsZV9wLCBmaW5pc2hfaW5pdCwgcG9wX2luaXRfbGV2ZWwsCglzZXRfZGVzaWduYXRvciwgc2V0X25vbmluY3JlbWVudGFsX2luaXRfZnJvbV9zdHJpbmcsCglwcm9jZXNzX2luaXRfZWxlbWVudCwgY19maW5pc2hfaWZfc3RtdCk6IExpa2V3aXNlLgoJKiBjYWxsZXItc2F2ZS5jIChpbml0X2NhbGxlcl9zYXZlLCBzYXZlX2NhbGxfY2xvYmJlcmVkX3JlZ3MsCglpbnNlcnRfcmVzdG9yZSwgaW5zZXJ0X3NhdmUsIGluc2VydF9vbmVfaW5zbik6IExpa2V3aXNlLgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSwgY29tcHV0ZV9hcmd1bWVudF9ibG9ja19zaXplLAoJcHJlY29tcHV0ZV9hcmd1bWVudHMsIGV4cGFuZF9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xLAoJc3RvcmVfb25lX2FyZyk6IExpa2V3aXNlLgoKMjAwNC0wOS0wNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAoZW5hYmxlLWNoZWNraW5nKTogQWRkIHJlbGVhc2Ugb3B0aW9uLiBSZW9yZ2FuaXplCgl0byBhdm9pZCByZXBldGl0aW9uLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGRvYy9pbnN0YWxsLnRleGkgKGVuYWJsZS1jaGVja2luZyk6IEFtZW5kIGRvY3VtZW50YXRpb24uCgoyMDA0LTA5LTA2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgYm9vdHN0cmFwLzE3MzEzCgkqIE1ha2VmaWxlLmluIChzcGVjcy5yZWFkeSk6IERlcGVuZCBvbiBjYzEkKGV4ZWV4dCkuCgoyMDA0LTA5LTA2ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChtb3ZzZl9oYXJkZmxvYXQsIG1vdmRmX2hhcmRmbG9hdF82NGJpdCwKCW1vdmRmX2hhcmRmbG9hdF8zMmJpdCk6IFNwbGl0IGZHIGludG8gdHdvIGFsdGVybmF0aXZlcy4KCShtb3Z2MnNmX2hhcmRmbG9hdF82NGJpdCk6IFNwbGl0IGZZRyBpbnRvIHR3byBhbHRlcm5hdGl2ZXMuCgoJKiBlbWl0LXJ0bC5jICh0cnlfc3BsaXQpOiBDaGVjayBJTlNOX1AgYmVmb3JlIG1heV90cmFwX3AgY2FsbC4KCjIwMDQtMDktMDYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBmaW5hbC5jIChvdXRwdXRfaW5fc2xvdCk6IERlbGV0ZS4KCShmaW5hbF9zY2FuX2luc24pOiBSZXZlcnQgMjAwNC0wOS0wMyBjaGFuZ2UuCgkob3V0cHV0X2FzbV9pbnNuKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChvdXRwdXRfcmV0dXJuKTogTGlrZXdpc2UuCgkob3V0cHV0X3NpYmNhbGwpOiBMaWtld2lzZS4KCjIwMDQtMDktMDYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGxvb3AuYyAobG9vcF9kdW1wX2F1eCk6IERvIG5vdCBwcmludCBSVEwgd2hlbiBub3QgYXZhaWxhYmxlLgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChhZGRfc3RhbmRhcmRfaXZfY2FuZGlkYXRlcyk6IERvIG5vdCB1c2UKCWZyb250ZW5kIHNwZWNpZmljIHR5cGUgbm9kZXMuCgkocHJvZHVjZV9tZW1vcnlfZGVjbF9ydGwpOiBCcmVhayBvdXQgZnJvbSAuLi4KCShwcmVwYXJlX2RlY2xfcnRsKTogLi4uIGhlcmUuICBIYW5kbGUgQUREUl9FWFBSIGNvcnJlY3RseS4KCShnZXRfY29tcHV0YXRpb25fYXQpOiBBdm9pZCByYW5kb20gdHJlZSBzaGFyaW5nLgoJKHRyZWVfc3NhX2l2X29wdGltaXplKTogVmVyaWZ5IHRyZWUgc2hhcmluZzsgZHVtcCBsb29wcy4KCjIwMDQtMDktMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAocnRsLm8sIGJpdG1hcC5vKTogQ29ycmVjdCBkZXBlbmRlbmNpZXMsIHJlbW92ZQoJdW5uZWNlc3NhcnkgY29tbWFuZHMuCgoyMDA0LTA5LTA2ICBNb2hhbiBFbWJhciAgPGdudXN0dWZmQHRoaXNpc2Nvb2wuY29tPgoKCSogTWFrZWZpbGUuaW4gKHJ0bC5vKTogUmVtb3ZlIC1ER0VORVJBVE9SX0ZJTEUuCgkoYml0bWFwLm8pOiBMaWtld2lzZS4KCjIwMDQtMDktMDYgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJVW5pZnkgdGhlIG1hbmFnZW1lbnQgb2YgUlRMIGFuZCB0cmVlLWxldmVsIGR1bXAgZmlsZXMuCgoJKiBjZmdleHBhbmQuYyAodHJlZV9leHBhbmRfY2ZnKTogRml4IGluY29ycmVjdCBjb21tZW50LgoJRG9uJ3QgcHJpbnQgZnVuY3Rpb24gbmFtZSB0byB0aGUgZHVtcCBmaWxlLCB0aGUgcGFzcyBtYW5hZ2VyCgl3b3VsZCBkbyB0aGlzIGZvciB1cy4gQWRkIGNvZGUgZnJvbSB0aGUgdG9wIG9mCglyZXN0X29mX2NvbXBpbGF0aW9uLCB1cCB0byB0aGUgaW5pdGlhbCBSVEwgZHVtcC4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfaGFuZGxlX2p1bXApOiBDYWxsIGZpeHVwX3RhaWxfY2FsbHMgYW5kCgljbG9zZSB0aGUgREZJX3NpYmxpbmcgZHVtcCBmaWxlLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEb24ndCBkbyB0aGF0IGhlcmUuICBSZW1vdmUgY29kZSB1cCB0byB0aGUKCWluaXRpYWwgUlRMIGR1bXAuCgkoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogUmVtb3ZlLgoJKHBhc3NfcmVzdF9vZl9jb21waWxhdGlvbik6IENoYW5nZSBwYXNzIG5hbWUgdG8gTlVMTC4KCSogdG9wbGV2LmMgKGxhbmdfZGVwZW5kZW50X2luaXQpOiBEbyBub3QgdXNlIGFuIGVtcHR5IGR1bXAgZmlsZSBwcmVmaXguCglEbyBub3QgY2FsbCBpbml0X29wdGltaXphdGlvbl9wYXNzZXMuCgkqIHRvcGxldi5oIChpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBSZW1vdmUuCgoJKiBncmFwaC5jIChwcmludF9ydGxfZ3JhcGhfd2l0aF9iYiwgY2xlYW5fZ3JhcGhfZHVtcF9maWxlLAoJZmluaXNoX2dyYXBoX2R1bXBfZmlsZSk6IFJlbW92ZSBTVUZGSVggcGFyYW1ldGVyLgoJKiBncmFwaC5oIChwcmludF9ydGxfZ3JhcGhfd2l0aF9iYiwgY2xlYW5fZ3JhcGhfZHVtcF9maWxlLAoJZmluaXNoX2dyYXBoX2R1bXBfZmlsZSk6IExpa2V3aXNlLgoKCSogdHJlZS1wYXNzLmggKHN0cnVjdCB0cmVlX29wdF9wYXNzKTogQWRkIGBsZXR0ZXInIGZpZWxkLgoJKiBjZmdleHBhbmQuYyAocGFzc19leHBhbmQpOiBBZGp1c3QuCgkqIGdpbXBsZS1sb3cuYyAocGFzc19sb3dlcl9jZiwgcGFzc19yZW1vdmVfdXNlbGVzc192YXJzKTogQWRqdXN0LgoJKiBwYXNzZXMuYyAocGFzc19yZXN0X29mX2NvbXBpbGF0aW9uKTogQWRqdXN0LgoJKiBwcmVkaWN0LmMgKHBhc3NfcHJvZmlsZSk6IEFkanVzdC4KCSogdHJlZS1hbGlhcy1jb21tb24uYyAocGFzc19idWlsZF9wdGEsIHBhc3NfZGVsX3B0YSk6IEFkanVzdC4KCSogdHJlZS1jZmcuYyAocGFzc19idWlsZF9jZmcsIHBhc3NfcmVtb3ZlX3VzZWxlc3Nfc3RtdHMsCglwYXNzX3NwbGl0X2NyaXRfZWRnZXMsIHBhc3Nfd2Fybl9mdW5jdGlvbl9yZXR1cm4pOiBBZGp1c3QuCgkqIHRyZWUtY29tcGxleC5jIChwYXNzX2xvd2VyX3ZlY3Rvcl9zc2EsIHBhc3NfcHJlX2V4cGFuZCk6IEFkanVzdC4KCSogdHJlZS1kZmEuYyAocGFzc19yZWZlcmVuY2VkX3ZhcnMpOiBBZGp1c3QuCgkqIHRyZWUtZWguYyAocGFzc19sb3dlcl9laCk6IEFkanVzdC4KCSogdHJlZS1pZi1jb252LmMgKHBhc3NfYnVpbGRfc3NhKTogQWRqdXN0LgoJKiB0cmVlLWludG8tc3NhLmMgKHBhc3NfYnVpbGRfc3NhKTogQWRqdXN0LgoJKiB0cmVlLW11ZGZsYXAuYyAocGFzc19tdWRmbGFwXzEsIHBhc3NfbXVkZmxhcF8yKTogQWRqdXN0LgoJKiB0cmVlLW5vbXVkZmxhcC5jIChwYXNzX211ZGZsYXBfMSwgcGFzc19tdWRmbGFwXzIpOiBBZGp1c3QuCgkqIHRyZWUtbnJ2LmMgKHBhc3NfbnJ2KTogQWRqdXN0LgoJKiB0cmVlLW9wdGltaXplLmMgKHBhc3NfZ2ltcGxlLCBwYXNzX2FsbF9vcHRpbWl6YXRpb25zLAoJcGFzc19jbGVhbnVwX2NmZ19wb3N0X29wdGltaXppbmcsIHBhc3NfZnJlZV9kYXRhc3RydWN0dXJlcywKCXBhc3NfaW5pdF9kYXRhc3RydWN0dXJlcyk6IEFkanVzdC4KCSogdHJlZS1vdXRvZi1zc2EuYyAocGFzc19kZWxfc3NhKTogQWRqdXN0LgoJKiB0cmVlLXByb2ZpbGUuYyAocGFzc190cmVlX3Byb2ZpbGUpOiBBZGp1c3QuCgkqIHRyZWUtc3JhLmMgKHBhc3Nfc3JhKTogQWRqdXN0LgoJKiB0cmVlLXNzYS1hbGlhcy5jIChwYXNzX21heV9hbGlhcyk6IEFkanVzdC4KCSogdHJlZS1zc2EtY2NwLmMgKHBhc3NfY2NwLCBwYXNzX2ZvbGRfYnVpbHRpbnMpOiBBZGp1c3QuCgkqIHRyZWUtc3NhLWNvcHlyZW5hbWUuYyAocGFzc19yZW5hbWVfc3NhX2NvcGllcyk6IEFkanVzdC4KCSogdHJlZS1zc2EtZGNlLmMgKHBhc3NfZGNlLCBwYXNzX2NkX2RjZSk6IEFkanVzdC4KCSogdHJlZS1zc2EtZG9tLmMgKHBhc3NfZG9taW5hdG9yKTogQWRqdXN0LgoJKiB0cmVlLXNzYS1kc2UuYyAocGFzc19kc2UpOiBBZGp1c3QuCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKHBhc3NfZm9yd3Byb3ApOiBBZGp1c3QuCgkqIHRyZWUtc3NhLWlmLWNvbnYuYyAocGFzc19pZl9jb252ZXJzaW9uKTogQWRqdXN0LgoJKiB0cmVlLXNzYS1sb29wLWNoLmMgKHBhc3NfY2gpOiBBZGp1c3QuCgkqIHRyZWUtc3NhLWxvb3AuYyAocGFzc19sb29wLCBwYXNzX2xvb3BfaW5pdCwgcGFzc19saW0sCglwYXNzX2xvb3BfZG9uZSwgcGFzc19jb21wbGV0ZV91bnJvbGwsIHBhc3NfaXZfY2Fub24sCglwYXNzX2l2X29wdGltaXplLCBwYXNzX3ZlY3Rvcml6ZSk6IEFkanVzdC4KCSogdHJlZS1zc2EtcGhpb3B0LmMgKHBhc3NfcGhpb3B0KTogQWRqdXN0LgoJKiB0cmVlLXNzYS1wcmUuYyAocGFzc19wcmUsIHBhc3NfZnJlKTogQWRqdXN0LgoJKiB0cmVlLXNzYS5jIChwYXNzX3JlZHVuZGFudF9waGksIHBhc3NfZWFybHlfd2Fybl91bmluaXRpYWxpemVkLAoJcGFzc19sYXRlX3dhcm5fdW5pbm5pdGlhbGl6ZWQpOiBBZGp1c3QuCgkqIHRyZWUtdGFpbGNhbGwuYyAocGFzc190YWlsX3JlY3Vyc2lvbiwgcGFzc190YWlsX2NhbGxzKTogQWRqdXN0LgoKCSogTWFrZWZpbGUuaW4gKHRyZWUtZHVtcC5vKTogQWRkIG5ldyBkZXBlbmRlbmNpZXMuCgkqIGNncmFwaC5jIChjZ3JhcGhfcmVtb3ZlX25vZGUpOiBUREZfYWxsIC0+IFRERl90cmVlX2FsbC4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfcHJlc2VydmVfZnVuY3Rpb25fYm9keV9wLCBjZ3JhcGhfb3B0aW1pemUpOgoJTGlrZXdpc2UuCgkqIHRvcGxldi5jIChkdW1wX2ZpbGVfbmFtZSk6IE5ldy4KCSogdHJlZS1kdW1wLmMgKGR1bXBfZW5hYmxlX2FsbCk6IEFkZCBMRVRURVIgcGFyYW1ldGVyLgoJKHN0cnVjdCBkdW1wX2ZpbGVfaW5mbyk6IEFkZCBOVU0gYW5kIExFVFRFUiBmaWVsZHMuCgkoZHVtcF9maWxlcyk6IEFkanVzdCBhbmQgYWRkIFJUTCBkdW1wIGZpbGVzLgoJKGR1bXBfcmVnaXN0ZXIpOiBBZGQgTlVNIGFuZCBMRVRURVIgZmllbGRzLgoJKGdldF9kdW1wX2ZpbGVfbmFtZSwgZHVtcF9pbml0aWFsaXplZF9wLCBlbmFibGVfcnRsX2R1bXBfZmlsZSk6IE5ldy4KCShkdW1wX2JlZ2luKTogVXNlIGdldF9kdW1wX2ZpbGVfbmFtZS4KCShkdW1wX3N3aXRjaF9wXzEpOiBBZGp1c3QgY2FsbCB0byBkdW1wX2VuYWJsZV9hbGwuCgkqIHRyZWUtZHVtcC5oIChkdW1wX3JlZ2lzdGVyKTogQWRqdXN0IHByb3RvdHlwZS4KCSogdHJlZS1vcHRpbWl6ZS5jIChyZWdpc3Rlcl9vbmVfZHVtcF9maWxlKTogVGFrZSBkdW1wIGZpbGUgaW5kZXguCglTdXBwb3J0IGZsYWdzIGZvciBSVEwgZHVtcHMuCgkocmVnaXN0ZXJfZHVtcF9maWxlcyk6IEZpbGwgaW4gTlVNIGZpZWxkIG9mIHN0cnVjdCBkdW1wX2ZpbGVfaW5mby4KCVRyYWNrIHByb3BlcnRpZXMgYm90aCB3aGVuIHRoZSBnYXRlIGlzIGV4ZWN1dGVkIGFuZCB3aGVuIGl0IGlzIG5vdC4KCShleGVjdXRlX3RvZG8pOiBEdW1wIFJUTC4gIEFkZCBQUk9QRVJUSUVTIHBhcmFtZXRlci4KCShleGVjdXRlX29uZV9wYXNzKTogUGFzcyBwcm9wZXJ0aWVzIHRvIGV4ZWN1dGVfdG9kby4gIEhhbmRsZSBWQ0cKCWR1bXBzIG9mIFJUTC4KCSogdHJlZS1wYXNzLmggKGR1bXBfZmlsZV9uYW1lKTogTmV3LgoJKiB0cmVlLmggKFRERl9UUkVFLCBUREZfUlRMLCBnZXRfZHVtcF9maWxlX25hbWUsIGR1bXBfaW5pdGlhbGl6ZWRfcCk6CglOZXcuCgoJKiBNYWtlZmlsZS5pbiAocGFzc2VzLm8pOiBBZGQgbmV3IGRlcGVuZGVuY2llcy4KCSogcGFzc2VzLmMgKHN0cnVjdCBkdW1wX2ZpbGVfaW5mbywgZW51bSBkdW1wX2ZpbGVfaW5kZXgsCglkdW1wX2ZpbGVfdGJsLCBpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBSZW1vdmUuCgkob3Blbl9kdW1wX2ZpbGUsIGNsb3NlX2R1bXBfZmlsZSk6IFVzZSB0cmVlLWR1bXBpbmcgaW5mcmFzdHJ1Y3R1cmUuCgkocmVzdF9vZl9oYW5kbGVfbmV3X3JlZ2FsbG9jLCByZXN0X29mX2hhbmRsZV9vbGRfcmVnYWxsb2MpOiBVc2UKCWR1bXBfZW5hYmxlZF9wLgoJKGZpbmlzaF9vcHRpbWl6YXRpb25fcGFzc2VzKTogVXBkYXRlIGZpbmlzaF9ncmFwaF9kdW1wX2ZpbGUgbG9vcC4KCShlbmFibGVfcnRsX2R1bXBfZmlsZSk6IFJlbW92ZS4KCSogdHJlZS1kdW1wLmMgKGR1bXBfZmlsZXMpOiBBZGp1c3QgYW5kIGFkZCBSVEwgZHVtcCBmaWxlcy4KCShlbmFibGVfcnRsX2R1bXBfZmlsZSk6IEFkZCBoZXJlLgoJKiB0cmVlLmggKGVudW0gdHJlZV9kdW1wX2luZGV4KTogQWRkIFJUTCBkdW1wIGZpbGUgaW5kaWNlcy4KCSogZG9jL2ludm9rZS50ZXhpIChEZWJ1Z2dpbmcgb3B0aW9ucyk6IERvY3VtZW50IG5ldyBSVEwgZGVidWdnaW5nCglvcHRpb25zLiAgVXBkYXRlLgoKMjAwNC0wOS0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGMtY29tbW9uLmMsIGMtZGVjbC5jLCBjb21iaW5lLmMsIGRlZmF1bHRzLmgsIGZvbGQtY29uc3QuYywKCWdpbXBsaWZ5LmMsIGd0aHItbmtzLmgsIGhvb2tzLmMsIGxhbWJkYS1jb2RlLmMsIGxhbWJkYS1tYXQuYywKCXN0b3ItbGF5b3V0LmMsIHRhcmdldC5oLCB0cmVlLWNmZy5jLCB0cmVlLWNocmVjLmMsCgl0cmVlLWlmLWNvbnYuYywgdHJlZS1pbmxpbmUuYywgdHJlZS1pbnRvLXNzYS5jLAoJdHJlZS1tdWRmbGFwLmMsIHRyZWUtb3B0aW1pemUuYywgdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMsCgl0cmVlLXNzYS1hbGlhcy5jLCB0cmVlLXNzYS1jY3AuYywgdHJlZS1zc2EtZGNlLmMsCgl0cmVlLXNzYS1wcmUuYywgdHJlZS12ZWN0b3JpemVyLmMsIHRyZWUtdmVjdG9yaXplci5oLCB0cmVlLmgsCgl2ZWMuaDogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCjIwMDQtMDktMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWNvbW1vbi5jLCBjZmdleHBhbmQuYywgY2dyYXBodW5pdC5jLCBkZWZhdWx0cy5oLAoJZXQtZm9yZXN0LmMsIGV4cHIuYywgZ2ltcGxpZnkuYywgZ2xvYmFsLmMsIGd0aHItbHlueC5oLAoJaGFyZC1yZWctc2V0LmgsIG1vZHVsby1zY2hlZC5jLCBvcHRhYnMuYywgcG9zdHJlbG9hZC1nY3NlLmMsCgl0cmVlLWRhdGEtcmVmLmMsIHRyZWUtZmxvdy5oLCB0cmVlLWlmLWNvbnYuYywgdHJlZS1pbmxpbmUuYywKCXRyZWUtc3JhLmMsIHRyZWUtc3NhLWxvb3AtaW0uYywgdHJlZS1zc2EtbG9vcC1pdm9wdHMuYywKCXRyZWUtc3NhLWxvb3Atbml0ZXIuYywgdHJlZS1zc2Etb3BlcmFuZHMuYywKCXRyZWUtc3NhLW9wZXJhbmRzLmgsIHRyZWUtc3NhLXByb3BhZ2F0ZS5jLAoJdHJlZS1zc2EtcHJvcGFnYXRlLmgsIHRyZWUtc3NhLXRocmVhZHVwZGF0ZS5jLCB2YWx1ZS1wcm9mLmMsCgl2ZWMuYywgdmVjLmg6IEZpeCBjb21tZW50IHR5cG9zLiAgRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoKMjAwNC0wOS0wNSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLWlmLWNvbnYuYyAoZ2F0ZV90cmVlX2lmX2NvbnZlcnNpb24pOiBFbmFibGUgb25seSBpZiB0aGUKCXZlY3Rvcml6ZXIgaXMgZW5hYmxlZC4KCjIwMDQtMDktMDUgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHRyZWUtaWYtY29udi5jOiBTcGVsbCBjaGVjayBjb21tZW50cyBhbmQgY2xlYW4gdXAgd2hpdGVzcGFjZS4KCjIwMDQtMDktMDUgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAodHJlZS1zc2EtbG9vcC1pdm9wdHMuYyk6IEFkZC4KCSogY2ZnbG9vcC5oICh0YXJnZXRfYXZhaWxfcmVncywgdGFyZ2V0X3Jlc19yZWdzLCB0YXJnZXRfc21hbGxfY29zdCwKCXRhcmdldF9wcmVzX2Nvc3QsIHRhcmdldF9zcGlsbF9jb3N0KTogRGVjbGFyZS4KCSogY2ZnbG9vcGFuYWwuYyAoYXZhaWxfcmVncywgcmVzX3JlZ3MsIHNtYWxsX2Nvc3QsIHByZXNfY29zdCwKCXNwaWxsX2Nvc3QpOiBSZW5hbWVkIHRvIC4uLgoJKHRhcmdldF9hdmFpbF9yZWdzLCB0YXJnZXRfcmVzX3JlZ3MsIHRhcmdldF9zbWFsbF9jb3N0LAoJdGFyZ2V0X3ByZXNfY29zdCwgdGFyZ2V0X3NwaWxsX2Nvc3QpOiAuLi4gYW5kIGV4cG9ydGVkLgoJKGluaXRfc2V0X2Nvc3RzLCBnbG9iYWxfY29zdF9mb3Jfc2l6ZSk6IFdvcmsgd2l0aCByZW5hbWVkIHZhcmlhYmxlcy4KCSogY29tbW9uLm9wdCAoZmxhZ19pdm9wdHMpOiBOZXcgZmxhZy4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBIYW5kbGUgU1NBX05BTUUgY2FzZS4gIEhhbmRsZQoJUkVGX09SSUdJTkFMLgoJKiBnaW1wbGlmeS5jIChzdHJ1Y3QgZ2ltcGxpZnlfY3R4KTogQWRkIGludG9fc3NhIGZpZWxkLgoJKGludGVybmFsX2dldF90bXBfdmFyLCBnaW1wbGlmeV9tb2RpZnlfZXhwciwgZ2ltcGxpZnlfZXhwcik6IFN1cHBvcnQKCWdlbmVyYXRpbmcgU1NBIGZvcm0uCgkoZm9yY2VfZ2ltcGxlX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkqIHRpbWV2YXIuZGVmIChUVl9UUkVFX0xPT1BfSVZPUFRTKTogTmV3IHRpbWV2YXIuCgkqIHRyZWUtY2ZnLmMgKHN0bXRfYnNpKTogTmV3IGZ1bmN0aW9uLgoJKiBwYXJhbXMuZGVmIChQQVJBTV9JVl9DT05TSURFUl9BTExfQ0FORElEQVRFU19CT1VORCwKCVBBUkFNX0lWX01BWF9DT05TSURFUkVEX1VTRVMpOiBOZXcuCgkqIHRyZWUtZmxvdy5oIChzdG10X2JzaSwgdHJlZV9zc2FfaXZfb3B0aW1pemUsIHNwbGl0X2xvb3BfZXhpdF9lZGdlLAoJYnNpX2luc2VydF9vbl9lZGdlX2ltbWVkaWF0ZV9sb29wLiBzdGFuZGFyZF9pdl9pbmNyZW1lbnRfcG9zaXRpb24sCglpcF9lbmRfcG9zLCBpcF9ub3JtYWxfcG9zLCBmb3JjZV9naW1wbGVfb3BlcmFuZCk6IERlY2xhcmUuCgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9mb3JtYWxfdG1wX3Zhcik6IEFjY2VwdCBzc2EgbmFtZXMuCgkqIHRyZWUtbmVzdGVkLmMgKGJ1aWxkX2FkZHIpOiBFeHBvcnQuCgkqIHRyZWUtb3B0aW1pemUuYyAoaW5pdF90cmVlX29wdGltaXphdGlvbl9wYXNzZXMpOiBBZGQKCXBhc3NfaXZfb3B0aW1pemUuCgkqIHRyZWUtcGFzcy5oIChwYXNzX2l2X29wdGltaXplKTogRGVjbGFyZS4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChmb3JfZWFjaF9pbmRleCk6IEhhbmRsZSBSRUFMUEFSVF9FWFBSIGFuZAoJSU1BR1BBUlRfRVhQUi4KCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jIChjcmVhdGVfaXYpOiBGb3JjZSB0aGUgYmFzZSB0byBiZSBhY2NlcHRhYmxlCglhcyBhIHBoaSBub2RlIGFyZ3VtZW50LgoJKHNwbGl0X2xvb3BfZXhpdF9lZGdlLCBic2lfaW5zZXJ0X29uX2VkZ2VfaW1tZWRpYXRlX2xvb3AsCglpcF9lbmRfcG9zLCBpcF9ub3JtYWxfcG9zLCBzdGFuZGFyZF9pdl9pbmNyZW1lbnRfcG9zaXRpb24pOiBOZXcKCWZ1bmN0aW9ucy4KCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jICh6ZXJvX3AsIHVuc2lnbmVkX3R5cGVfZm9yKTogRXhwb3J0LgoJKiB0cmVlLXNzYS1sb29wLmMgKHRyZWVfc3NhX2xvb3BfaXZvcHRzLCBnYXRlX3RyZWVfc3NhX2xvb3BfaXZvcHRzLAoJcGFzc19pdl9vcHRpbWl6ZSk6IE5ldyBwYXNzLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfaW5kaXJlY3RfcmVmX29wZXJhbmRzKTogSGFuZGxlIFJFRl9PUklHSU5BTC4KCSogdHJlZS1zc2FuYW1lcy5jIChyZWxlYXNlX3NzYV9uYW1lKTogQWxsb3cgY2FsbGluZyB3aXRoIHZhciA9IE5VTEwuCgkqIHRyZWUuYyAoYnVpbGRfaW50X2NzdF90eXBlLCBjc3RfYW5kX2ZpdHNfaW5faHdpKTogTmV3IGZ1bmN0aW9ucy4KCSogdHJlZS5oIChSRUZfT1JJR0lOQUwpOiBOZXcgbWFjcm8uCgkoYnVpbGRfaW50X2NzdF90eXBlLCB1bnNpZ25lZF90eXBlX2ZvciwgemVyb19wLAoJY3N0X2FuZF9maXRzX2luX2h3aSwgYnVpbGRfYWRkcik6IERlY2xhcmUuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZpdm9wdHMpOiBEb2N1bWVudC4KCShQQVJBTV9JVl9DT05TSURFUl9BTExfQ0FORElEQVRFU19CT1VORCwKCVBBUkFNX0lWX01BWF9DT05TSURFUkVEX1VTRVMpOiBEb2N1bWVudC4KCSogZG9jL3Bhc3Nlcy50ZXhpOiBEb2N1bWVudCBpbmR1Y3Rpb24gdmFyaWFibGUgb3B0aW1pemF0aW9ucyBwYXNzLgoKMjAwNC0wOS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbi1hdHRycy5kZWYgKEFUVFJfTk9USFJPV19TRU5USU5FTF8xKTogTmV3LgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0VYRUNMRSk6IFNldCBBVFRSX05PVEhST1dfU0VOVElORUxfMS4KCSogYy1jb21tb24uYyAoY19jb21tb25fYXR0cmlidXRlX3RhYmxlKTogQWNjZXB0IHBhcmFtZXRlcnMgdG8KCXNlbnRpbmVsIGF0dHJpYnV0ZS4KCShjaGVja19mdW5jdGlvbl9zZW50aW5lbCwgaGFuZGxlX3NlbnRpbmVsX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoJKiBkb2MvZXh0ZW5kLnRleGk6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCjIwMDQtMDktMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW4tYXR0cnMuZGVmIChBVFRSX1NFTlRJTkVMLCBBVFRSX1NFTlRJTkVMX05PVEhST1dfTElTVCk6CglOZXcuCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fRVhFQ0wsIEJVSUxUX0lOX0VYRUNMUCk6IEFkZCBgc2VudGluZWwnCglhdHRyaWJ1dGUuCgkqIGMtY29tbW9uLmMgKGhhbmRsZV9zZW50aW5lbF9hdHRyaWJ1dGUsIGNoZWNrX2Z1bmN0aW9uX3NlbnRpbmVsKToKCU5ldyBmdW5jdGlvbnMuCgkoY19jb21tb25fYXR0cmlidXRlX3RhYmxlKTogQWRkIGBzZW50aW5lbCcgYXR0cmlidXRlLgoJKGNoZWNrX2Z1bmN0aW9uX2FyZ3VtZW50cyk6IEhhbmRsZSBgc2VudGluZWwnIGF0dHJpYnV0ZS4KCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBgc2VudGluZWwnIGF0dHJpYnV0ZS4KCjIwMDQtMDktMDQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDA0LTA5LTA0ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2ltcGxpZnkuYyAoaW50ZXJuYWxfZ2V0X3RtcF92YXIpOiBSZW1vdmUgdW51c2VkIHZhciBDTEFTUy4KCgkqIHRyZWUuYyAoc2F2ZV9leHByKTogTm8gbG9uZ2VyIFRSRUVfUkVBRE9OTFkuCgoyMDA0LTA5LTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwYXNzZXMuYyAocmVzdF9vZl9jbGVhbl9zdGF0ZSk6IEZpeCBtZXJnZSBjb25mbGljdCBtYWRlIGR1cmluZwoJY29tbWl0aW5nIHRoZSBwYXRjaC4KCjIwMDQtMDktMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHBhc3Nlcy5jIChyZXN0X29mX2NsZWFuX3N0YXRlKTogRGVjb21wb3NlIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uCgoyMDA0LTA5LTA0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBkb2MvbWQudGV4aSAoc2hpZnQgcGF0dGVybnMpOiBOZXcgYW5jaG9yLiAgQWRkIHJlZmVyZW5jZSB0bwoJVEFSR0VUX1NISUZUX1RSVU5DQVRJT05fTUFTSy4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9TSElGVF9UUlVOQ0FUSU9OX01BU0spOiBEb2N1bWVudC4KCSogdGFyZ2V0LmggKHNoaWZ0X3RydW5jYXRpb25fbWFzayk6IE5ldyB0YXJnZXQgaG9vay4KCSogdGFyZ2hvb2suaCAoZGVmYXVsdF9zaGlmdF90cnVuY2F0aW9uX21hc2spOiBEZWNsYXJlLgoJKiB0YXJnaG9vay5jIChkZWZhdWx0X3NoaWZ0X3RydW5jYXRpb25fbWFzayk6IERlZmluZS4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfU0hJRlRfVFJVTkNBVElPTl9NQVNLKTogRGVmaW5lLgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEluY2x1ZGUgaXQuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uKTogQ29tYmluZSBBU0hJRlQsIEFTSElGVFJUCglhbmQgTFNISUZUUlQgY2FzZXMuICBUcnVuY2F0ZSBhcmcxIGlmIFNISUZUX0NPVU5UX1RSVU5DQVRFRCwgb3RoZXJ3aXNlCglyZWplY3QgYWxsIG91dC1vZi1yYW5nZSB2YWx1ZXMuICBGaXggc2lnbi1leHRlbnNpb24gY29kZSBmb3IgbW9kZXMKCXdob3NlIHdpZHRoIGlzIHNtYWxsZXIgdGhhbiBIT1NUX0JJVFNfUEVSX1dJREVfSU5ULgoJKiBvcHRhYnMuYyAoc2ltcGxpZnlfZXhwYW5kX2Jpbm9wLCBmb3JjZV9leHBhbmRfYmlub3ApOiBOZXcgZnVuY3Rpb25zLgoJKGV4cGFuZF9zdXBlcndvcmRfc2hpZnQsIGV4cGFuZF9zdWJ3b3JkX3NoaWZ0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2RvdWJsZXdvcmRfc2hpZnRfY29uZG1vdmUsIGV4cGFuZF9kb3VibGV3b3JkX3NoaWZ0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2Jpbm9wKTogVXNlIHRoZW0gdG8gaW1wbGVtZW50IGRvdWJsZS13b3JkIHNoaWZ0cy4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3NoaWZ0X3RydW5jYXRpb25fbWFzayk6IE5ldyBmdW5jdGlvbi4KCShUQVJHRVRfU0hJRlRfVFJVTkNBVElPTl9NQVNLKTogRGVmaW5lLgoKMjAwNC0wOS0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS5jIChpdGVyYXRlX2hhc2hfZXhwcik6IE9wdGltaXplLCBhdm9pZCB1c2Ugb2YgaXRlcmF0aXZlX2hhc2hfb2JqZWN0LgoJKG1peCk6IE5ldyBtYWNybyBjb3BpZWQgZnJvbSBoYXNodGFiLmMKCShpdGVyYXRpdmVfaGFzaF9oYXNodmFsX3QsIGl0ZXJhdGl2ZV9oYXNoX3BvaW50ZXIsCglpdGVyYXRpdmVfaGFzaF9ob3N0X3dpZGVfaW50KTogTmV3IGZ1bmN0aW9ucyBiYXNlZCBvbiBoYXNodGFiLmMKCWltcGxlbWVudGF0aW9uLgoKMjAwNC0wOS0wNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAobWFzayk6IE5ldyBtb2RlIGF0dHJpYnV0ZS4KCSh6ZXJvX2V4dGVuZHNpZGkyKTogQWRkIG1lbW9yeSBhbHRlcm5hdGl2ZS4KCSgqemVyb19leHRlbmRzaWRpMl9tZW0pOiBEZWxldGUuCgkoemVyb19leHRlbmRbcWhdaVtzZF1pMik6IFJlZGVmaW5lIHVzaW5nIDpHUFIgYW5kIDpTSE9SVC4gIFVzZQoJbWVtb3J5X29wZXJhbmQgaW4gdGhlIFRBUkdFVF9NSVBTMTYgY2hlY2suCgkoKnplcm9fZXh0ZW5kW3FoXWlbc2RdaTJ7LF9taXBzMTZ9KTogTmFtZSBwcmV2aW91c2x5IHVubmFtZWQgcGF0dGVybnMuCglSZWRlZmluZSB1c2luZyA6R1BSIGFuZCA6U0hPUlQuCgkoemVyb19leHRlbmRxaWhpMik6IFVzZSBtZW1vcnlfb3BlcmFuZCBpbiB0aGUgVEFSR0VUX01JUFMxNiBjaGVjay4KCjIwMDQtMDktMDQgIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6IEhhbmRsZSBCVUlMVF9JTl9SSU5UeyxGLEx9Cgl1c2luZyByaW50X29wdGFiLgoJKGV4cGFuZF9idWlsdGluKTogRXhwYW5kIEJVSUxUX0lOX1JJTlR7LEYsTH0gdXNpbmcKCWV4cGFuZF9idWlsdGluX21hdGhmbi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IFJlbmFtZSB0cnVuY19vcHRhYiB0byBidHJ1bmNfb3B0YWIuIFVzZQoJYnRydW5jP2YgcGF0dGVybnMgZm9yIGJ0cnVuY19vcHRhYi4gSW1wbGVtZW50IHJpbnRfb3B0YWIgdXNpbmcKCXJpbnQ/ZiBwYXR0ZXJucy4KCSogb3B0YWJzLmMgKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSByaW50X29wdGFiLgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IFJlbmFtZSBPVElfdHJ1bmMgdG8gT1RJX2J0cnVuYy4KCUFkZCBuZXcgT1RJX3JpbnQuCgkoYnRydW5jX29wdGFiKTogUmVuYW1lIG1hY3JvIGZyb20gdHJ1bmNfb3B0YWIuCgkocmludF9vcHRhYik6IERlZmluZSBjb3JyZXNwb25kaW5nIG1hY3JvLgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogSGFuZGxlIFVOU1BFQ19GUk5ESU5UX0ZMT09SLAoJVU5TUEVDX0ZSTkRJTlRfQ0VJTCwgVU5TUEVDX0ZSTkRJTlRfVFJVTkMsIFVOU1BFQ19GUk5ESU5UX01BU0tfUE0uCgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChlbWl0X2kzODdfY3dfaW5pdGlhbGl6YXRpb24pOgoJQ2hhbmdlIHByb3RvdHlwZS4gQWRkIG5ldyBpbnQgcGFyYW1ldGVyLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGVtaXRfaTM4N19jd19pbml0aWFsaXphdGlvbik6CglIYW5kbGUgbmV3IHJvdW5kaW5nIG1vZGVzLgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChlbnVtIGZwX2N3X21vZGUpOiBEZWxldGUuCgkoTU9ERV9ORUVERUQpOiBIYW5kbGUgbmV3IHJvdW5kaW5nIG1vZGVzLgoJKEVNSVRfTU9ERV9TRVQpOiBDaGFuZ2UgY29uZGl0aW9uIHRvIGhhbmRsZSBuZXcgcm91bmRpbmcgbW9kZXMuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChVTlNQRUNfRlJORElOVF9GTE9PUiwgVU5TUEVDX0ZSTkRJTlRfQ0VJTCwKCVVOU1BFQ19GUk5ESU5UX1RSVU5DLCBVTlNQRUNfRlJORElOVF9NQVNLX1BNKTogTmV3IHVuc3BlY3MgdG8KCXJlcHJlc2VudCBkaWZmZXJlbnQgcm91bmRpbmcgbW9kZXMgb2YgZnJuZGludCBpbnNuLgoJKHR5cGUpOiBBZGQgZnJuZGludCB0eXBlLgoJKGkzODcsIGxlbmd0aCwgbWVtb3J5KTogSGFuZGxlIHRoaXMgdHlwZS4KCShpMzg3X2N3KTogTmV3IGF0dHJpYnV0ZSBkZWZpbml0aW9uLgoJKCpmaXhfdHJ1bmNkaV8xLCBmaXhfdHJ1bmNkaV9ub21lbW9yeSwgZml4X3RydW5jZGlfbWVtb3J5LAoJKmZpeF90cnVuY3NpXzEsIGZpeF90cnVuY3NpX25vbWVtb3J5LCBmaXhfdHJ1bmNzaV9tZW1vcnksCgkqZml4X3RydW5jaGlfMSwgZml4X3RydW5jaGlfbm9tZW1vcnksIGZpeF90cnVuY2hpX21lbW9yeSk6CglBZGQgImkzODdfY3ciIGF0dHJpYnV0ZSBkZWZpbmVkIHRvICJ0cnVuYyIuCgkoeDg2X2Zuc3Rjd18xKTogUmVtb3ZlIGNvbW1lbnQuCgkoKmZybmRpbnR4ZjIpOiBSZW5hbWUgaW5zbiBkZWZpbml0aW9uIHRvIGZybmRpbnR4ZjIuIE1vdmUKCWluc24gZGVmaW5pdGlvbiBuZWFyIHJpbnQ/ZjIgZXhwYW5kZXJzLgoJKHJpbnRkZjIsIHJpbnRzZjIsIHJpbnR4ZjIpOiBOZXcgZXhwYW5kZXJzIHRvIGltcGxlbWVudCByaW50LAoJcmludGYgYW5kIHJpbnRsIGJ1aWx0LWlucyBhcyBpbmxpbmUgeDg3IGludHJpbnNpY3MuCgkoZnJuZGludHhmMl9mbG9vcik6IE5ldyBwYXR0ZXJuIHRvIGltcGxlbWVudCBmbG9vciByb3VuZGluZwoJbW9kZSB3aXRoIGZybmRpbnQgeDg3IGluc3RydWN0aW9uLgoJKGZsb29yZGYyLCBmbG9vcnNmMiwgZmxvb3J4ZjIpOiBOZXcgZXhwYW5kZXJzIHRvIGltcGxlbWVudCBmbG9vciwKCWZsb29yZiBhbmQgZmxvb3JsIGJ1aWx0LWlucyBhcyBpbmxpbmUgeDg3IGludHJpbnNpY3MuCgkoZnJuZGludHhmMl9jZWlsKTogTmV3IHBhdHRlcm4gdG8gaW1wbGVtZW50IGNlaWwgcm91bmRpbmcKCW1vZGUgd2l0aCBmcm5kaW50IHg4NyBpbnN0cnVjdGlvbi4KCShjZWlsZGYyLCBjZWlsc2YyLCBjZWlseGYyKTogTmV3IGV4cGFuZGVycyB0byBpbXBsZW1lbnQgY2VpbCwKCWNlaWxmIGFuZCBjZWlsbCBidWlsdC1pbnMgYXMgaW5saW5lIHg4NyBpbnRyaW5zaWNzLgoJKGZybmRpbnR4ZjJfdHJ1bmMpOiBOZXcgcGF0dGVybiB0byBpbXBsZW1lbnQgdHJ1bmMgcm91bmRpbmcKCW1vZGUgd2l0aCBmcm5kaW50IHg4NyBpbnN0cnVjdGlvbi4KCShidHJ1bmNkZjIsIGJ0cnVuY3NmMiwgYnRydW5jeGYyKTogTmV3IGV4cGFuZGVycyB0byBpbXBsZW1lbnQgdHJ1bmMsCgl0cnVuY2YgYW5kIHRydW5jbCBidWlsdC1pbnMgYXMgaW5saW5lIHg4NyBpbnRyaW5zaWNzLgoJKGZybmRpbnR4ZjJfbWFza19wbSk6IE5ldyBwYXR0ZXJuIHRvIGltcGxlbWVudCByb3VuZGluZwoJbW9kZSB3aXRoIGV4Y2VwdGlvbnMgd2l0aCBmcm5kaW50IHg4NyBpbnN0cnVjdGlvbi4KCShuZWFyYnlpbnRkZjIsIG5lYXJieWludHNmMiwgbmVhcmJ5aW50eGYyKTogTmV3IGV4cGFuZGVycyB0bwoJaW1wbGVtZW50IG5lYXJieWludCwgbmVhcmJ5aW50ZiBhbmQgbmVhcmJ5aW50bCBidWlsdC1pbnMgYXMKCWlubGluZSB4ODcgaW50cmluc2ljcy4KCjIwMDQtMDktMDQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFNIT1JUKTogTmV3IG1vZGUgbWFjcm8uCgkoc2l6ZSk6IE5ldyBtb2RlIGF0dHJpYnV0ZS4KCShleHRlbmRbcWhdaVtzZF1pMik6IFJlZGVmaW5lIHVzaW5nIDpHUFIgYW5kIDpTSE9SVC4KCSgqZXh0ZW5kW3FoXWlbc2RdaTIpOiBOZXcgZGVmaW5lX2luc25fYW5kX3NwbGl0LCBjb21iaW5pbmcgcHJldmlvdXMKCSpleHRlbmRbcWhdaVtzZF1pMiBhbmQgKmV4dGVuZFtxaF1pW3NkXWkyX21lbSBwYXR0ZXJucy4gIFVzZSBvbmx5IGlmCgkhSVNBX0hBU19TRUJfU0VILgoJKCpleHRlbmRbcWhdaVtzZF1pMl9zZVtiaF0pOiBOZXcgcGF0dGVybiwgY29tYmluaW5nIHByZXZpb3VzCgkqZXh0ZW5kW3FoXWlzaTJfaHcgcGF0dGVybnMgYW5kIGV4dGVuZGluZyB0aGVtIHRvIGRpLgoJKGV4dGVuZHFpaGkyKTogSW1wbGVtZW50IGFzIGRlZmluZV9pbnNuX2FuZF9zcGxpdCB0aGF0IHByb2R1Y2VzCglleHRlbmRxaXNpMiBhZnRlciByZWxvYWQuCgoyMDA0LTA5LTAzICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMtY29tbW9uKTogQWRkIHRyZWUtaWYtY29udi5vCgkodHJlZS1pZi1jb252Lm8pOiBOZXcgcnVsZS4KCSogY2ZnbG9vcC5jIChmbG93X2xvb3BfZXhpdF9lZGdlc19maW5kKTogU2V0IEVER0VfTE9PUF9FWElUIGZsYWcuCgkoZ2V0X2xvb3BfYm9keV9pbl9iZnNfb3JkZXIpOiBOZXcuCgkqIGNmZ2xvb3AuaCAoZ2V0X2xvb3BfYm9keV9pbl9iZnNfb3JkZXIpOiBOZXcuCgkqIHRyZWUtZmxvdy5oIChlbnVtIG1vdmVfcG9zKTogTW92ZSBoZXJlIGZyb20gLi4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChlbnVtIG1vdmVfcG9zKTogaGVyZS4KCShtb3ZlbWVudF9wb3NzaWJpbGl0eSk6IE1ha2UgZXh0ZXJuYWxseSB2aXNpYmxlLgoJKiB0cmVlLW9wdGltaXplLmMgKGluaXRfdHJlZV9vcHRpbWl6YXRpb25fcGFzc2VzKTogTmV3IGVudHJ5IGZvcgoJaWYgY29udmVyc2lvbiBwYXNzLgoJKiB0cmVlLXBhc3MuaCAocGFzc19pZl9jb252ZXJzaW9uKTogTmV3LgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IEhhbmRsZSBDT05EX0VYUFIuCgkqIHRyZWUtaWYtY29udi5jOiBOZXcgZmlsZS4KCSogZG9jL3Bhc3Nlcy50ZXhpOiBEb2N1bWVudCB0cmVlIGlmLWNvbnZlcnNpb24gcGFzcy4KCSogZG9jL3RyZWUtc3NhLnRleGk6IFNhbWUuCgoyMDA0LTA5LTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgdGFyZ2V0LzE0OTI1OgoJTWFrZWZpbGUuaW4gKExJQjJBRERFSFNUQVRJQyk6IE5ldy4KCShMSUIyQURERUhTSEFSRUQpOiBOZXcuCgkoTElCVU5XSU5EKTogTmV3LgoJKExJQlVOV0lORERFUCk6IE5ldy4KCShTSExJQlVOV0lORF9MSU5LKTogTmV3LgoJKFNITElCVU5XSU5EX0lOU1RBTEwpOiBOZXcuCgkobGliZ2NjLm1rKTogUGFzcyBMSUIyQURERUhTVEFUSUMsIExJQjJBRERFSFNIQVJFRCwgTElCVU5XSU5ELAoJTElCVU5XSU5EREVQLCBTSExJQlVOV0lORF9MSU5LIGFuZCBTSExJQlVOV0lORF9JTlNUQUxMLgoJKGNsZWFuKTogUmVtb3ZlIGxpYnVud2luZCoKCShzdGFnZTEtc3RhcnQpOiBSZW1vdmUgYW5kIGNvcHkgc3RhZ2UxL2xpYnVud2luZCouCgkoc3RhZ2UyLXN0YXJ0KTogUmVtb3ZlIGFuZCBjb3B5IHN0YWdlMi9saWJ1bndpbmQqLgoJKHN0YWdlMy1zdGFydCk6IFJlbW92ZSBhbmQgY29weSBzdGFnZTMvbGlidW53aW5kKi4KCShzdGFnZTQtc3RhcnQpOiBSZW1vdmUgYW5kIGNvcHkgc3RhZ2U0L2xpYnVud2luZCouCgkoc3RhZ2Vwcm9maWxlLXN0YXJ0KTogUmVtb3ZlIGFuZCBjb3B5IHN0YWdlcHJvZmlsZS9saWJ1bndpbmQqLgoJKHN0YWdlZmVlZGJhY2stc3RhcnQpOiBSZW1vdmUgYW5kIGNvcHkgc3RhZ2VmZWVkYmFjay9saWJ1bndpbmQqLgoKCSogY29uZmlnLmdjYyAoaWE2NCotKi1saW51eCopOiBBbHdheXMgYWRkIHQtbGlidW53aW5kIHRvCgl0bWFrZV9maWxlLiBBZGQgdC1saWJ1bndpbmQtZWxmIGFuZCBpYTY0L3QtZ2xpYmMtbGlidW53aW5kIHRvCgl0bWFrZV9maWxlIGlmIC0td2l0aC1zeXN0ZW0tbGlidW53aW5kIGlzbid0IHVzZWQuCgoJKiBjb25maWcvaWE2NC90LWdsaWJjLWxpYnVud2luZDogTmV3IGZpbGUuCgkqIGNvbmZpZy90LWxpYnVud2luZC1lbGY6IExpa2V3aXNlLgoJKiB1bndpbmQtY29tcGF0LmM6IExpa2V3aXNlLgoJKiB1bndpbmQtY29tcGF0Lmg6IExpa2V3aXNlLgoJKiB1bndpbmQtZHcyLWZkZS1jb21wYXQuYzogTGlrZXdpc2UuCgoJKiBjb25maWcvaWE2NC90LWdsaWJjIChMSUIyQURERUgpOiBVcGRhdGVkLgoJKiBjb25maWcvaWE2NC90LWhwdXggKFRfQ0ZMQUdTKTogQWRkIC1EVVNFX0xJQlVOV0lORF9FWENFUFRJT05TLgoKCSogY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYzogSW5jbHVkZSAidW53aW5kLWNvbXBhdC5oIi4gRGVmaW5lCglhbGlhc2VzIGlmIG5lZWRlZC4KCSogdW53aW5kLWR3Mi1mZGUtZ2xpYmMuYzogTGlrZXdpc2UuCgkqIHVud2luZC1kdzIuYzogTGlrZXdpc2UuCgoJKiBjb25maWcvdC1saWJ1bndpbmQgKExJQjJBRERFSCk6IFVwZGF0ZWQuCgkoTElCMkFEREVIU1RBVElDKTogTmV3LgoJKFRfQ0ZMQUdTKTogQWRkIC1EVVNFX0xJQlVOV0lORF9FWENFUFRJT05TLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IFNldCB0byAtRFVTRV9HQVNfU1lNVkVSLgoKCSogY29uZmlndXJlLmFjOiBDaGFuZ2UgLS1lbmFibGUtbGlidW53aW5kLWV4Y2VwdGlvbnMgdG8KCS0td2l0aC1zeXN0ZW0tbGlidW53aW5kLiBEb24ndCBkZWZpbmUgVVNFX0xJQlVOV0lORF9FWENFUFRJT05TLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBjb25maWcuaW46IFVwZGF0ZWQuCgoJKiBkb2MvaW5zdGFsbC50ZXhpIChpYTY0LSotbGludXgpOiBSZXF1aXJlIGxpYnVud2luZCAwLjk4IG9yCglhYm92ZSBhbmQgbWVudGlvbiAtLXdpdGgtc3lzdGVtLWxpYnVud2luZC4KCShpYTY0LSotaHB1eCopOiBNZW50aW9uIC0tZW5hYmxlLWxpYnVud2luZC1leGNlcHRpb25zIGlzCglyZW1vdmVkIGluIGdjYyAzLjQuMyBhbmQgbGF0ZXIuCgoJKiBnY2MuYyAoaW5pdF9zcGVjKTogQWRkIC1sdW53aW5kIHRvIC1sZ2NjX3MgaWYKCVVTRV9MSUJVTldJTkRfRVhDRVBUSU9OUyBpcyBkZWZpbmVkLgoKCSogbWtsaWJnY2MuaW46IFN1cHBvcnQgbGlidW53aW5kLgoKMjAwNC0wOS0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfYnJhbmNoX2hpbnRzKTogUmVtb3ZlIG1fUEVOVDQgYW5kCgltX05PQ09OQS4KCjIwMDQtMDktMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC85OTk3CgkqIGNmZ2V4cGFuZC5jIChMT0NBTF9BTElHTk1FTlQpOiBQcm92aWRlIGRlZmF1bHQuCgkoU1RBQ0tfQUxJR05NRU5UX05FRURFRCwgRlJBTUVfR1JPV1NfRE9XTldBUkQpOiBMaWtld2lzZS4KCShzdHJ1Y3Qgc3RhY2tfdmFyLCBFT0MsIHN0YWNrX3ZhcnMsIHN0YWNrX3ZhcnNfYWxsb2MsIHN0YWNrX3ZhcnNfbnVtLAoJc3RhY2tfdmFyc19zb3J0ZWQsIHN0YWNrX3ZhcnNfY29uZmxpY3QsIHN0YWNrX3ZhcnNfY29uZmxpY3RfYWxsb2MsCglmcmFtZV9waGFzZSwgZ2V0X2RlY2xfYWxpZ25fdW5pdCwgYWRkX3N0YWNrX3ZhciwgdHJpYW5ndWxhcl9pbmRleCwKCXJlc2l6ZV9zdGFja192YXJzX2NvbmZsaWN0LCBhZGRfc3RhY2tfdmFyX2NvbmZsaWN0LAoJc3RhY2tfdmFyX2NvbmZsaWN0X3AsIGFkZF9hbGlhc19zZXRfY29uZmxpY3RzLCBzdGFja192YXJfc2l6ZV9jbXAsCgl1bmlvbl9zdGFja192YXJzLCBwYXJ0aXRpb25fc3RhY2tfdmFycywgZHVtcF9zdGFja192YXJfcGFydGl0aW9uLAoJZXhwYW5kX29uZV9zdGFja192YXJfYXQsIGV4cGFuZF9zdGFja192YXJzLCBleHBhbmRfb25lX3N0YWNrX3ZhciwKCWV4cGFuZF9vbmVfc3RhdGljX3ZhciwgZXhwYW5kX29uZV9oYXJkX3JlZ192YXIsCglleHBhbmRfb25lX3JlZ2lzdGVyX3ZhciwgZXhwYW5kX29uZV9lcnJvcl92YXIsIGRlZmVyX3N0YWNrX2FsbG9jYXRpb24sCglleHBhbmRfb25lX3ZhciwgZXhwYW5kX3VzZWRfdmFyc19mb3JfYmxvY2ssIGNsZWFyX3RyZWVfdXNlZCk6IE5ldy4KCShleHBhbmRfdXNlZF92YXJzKTogUmV3cml0ZS4KCSogTWFrZWZpbGUuaW4gKGNmZ2V4cGFuZC5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCjIwMDQtMDktMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNmZy5jIChmcmVlX2VkZ2UpOiBVc2UgZ2djX2ZyZWUuCgkoZXhwdW5nZV9ibG9jayk6IFVzZSBnZ2NfZnJlZS4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfY2xlYW5fc3RhdGUpOiBGcmVlIGFmdGVyIGNvbXBpbGF0aW9uLgoJKiB0cmVlLXNzYS5jIChkZWxldGVfdHJlZV9zc2EpOiBGcmVlIGFubm90YXRpb25zOyBjYWxsIHJlbGVhc2VfZGVmcwoJKiB0cmVlLXNzYW5hbWVzLmMgKHJlbGVhc2VfZGVmcyk6IElnbm9yZSBub24tU1NBX05BTUUgYXJndW1lbnRzLgoKMjAwNC0wOS0wMyAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAobWF5X2JlX2FsaWFzZWQpOiBNb3ZlIFRSRUVfU1RBVElDIGNoZWNrIGFmdGVyCglERUNMX0VYVEVSTkFMIGNoZWNrLgoKMjAwNC0wOS0wMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGZpbmFsLmMgKG91dHB1dF9pbl9zbG90KTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShmaW5hbF9zY2FuX2luc24pOiBBZGQgbmV3IHN0YXRlICcyJyB0byB0aGUgJ25vcGVlcGhvbGVzJyBwYXJhbWV0ZXIuCglQYXNzIDIgYXMgJ25vcGVlcGhvbGVzJyB0byBzZWxmIGZvciBpbnNucyBpbiBhIFNFUVVFTkNFLiAgU2V0Cgknb3V0cHV0X2luX3Nsb3QnIGJlZm9yZSBpbnZva2luZyBvdXRwdXRfYXNtX2luc24uCgkob3V0cHV0X2FzbV9pbnNuKTogQWRkIGEgc3BhY2UgYWZ0ZXIgdGhlIHRhYiBpZiAnb3V0cHV0X2luX3Nsb3QnCglpcyBzZXQuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChvdXRwdXRfcmV0dXJuKTogUGFzcyAyIGFzICdub3BlZXBob2xlcycgdG8KCWZpbmFsX3NjYW5faW5zbi4KCShvdXRwdXRfc2liY2FsbCk6IExpa2V3aXNlLgoKMjAwNC0wOS0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZmluaV9zc2Ffb3BlcmFuZHMpOiBnZ2NfZnJlZSB1bnVzZWQgYXJyYXlzLgoJKiB0cmVlLXNzYW5hbWVzIChpbml0X3NzYW5hbWVzKTogTGlrZXdpc2UuCgoyMDA0LTA5LTAzICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBzdHViLW9iamMuYyAob2JqY19pc19pZCwgb2JqY19kZWNsYXJlX2FsaWFzLCBvYmpjX2RlY2xhcmVfY2xhc3MsCglvYmpjX2RlY2xhcmVfcHJvdG9jb2xzLCBvYmpjX3N0YXJ0X3Byb3RvY29sLAoJb2JqY19zdGFydF9jbGFzc19pbnRlcmZhY2UsIG9iamNfc3RhcnRfY2F0ZWdvcnlfaW50ZXJmYWNlLAoJb2JqY19jb250aW51ZV9pbnRlcmZhY2UsIG9iamNfZmluaXNoX2ludGVyZmFjZSwKCW9iamNfYWRkX2luc3RhbmNlX3ZhcmlhYmxlLCBvYmpjX3NldF92aXNpYmlsaXR5LCBvYmpjX3NldF9tZXRob2RfdHlwZSwKCW9iamNfc3RhcnRfY2xhc3NfaW1wbGVtZW50YXRpb24sIG9iamNfc3RhcnRfY2F0ZWdvcnlfaW1wbGVtZW50YXRpb24sCglvYmpjX2NvbnRpbnVlX2ltcGxlbWVudGF0aW9uLCBvYmpjX2ZpbmlzaF9pbXBsZW1lbnRhdGlvbiwKCW9iamNfYWRkX21ldGhvZF9kZWNsYXJhdGlvbiwgb2JqY19zdGFydF9tZXRob2RfZGVmaW5pdGlvbiwKCW9iamNfZmluaXNoX21ldGhvZF9kZWZpbml0aW9uLCBvYmpjX2J1aWxkX2tleXdvcmRfZGVjbCwKCW9iamNfYnVpbGRfbWV0aG9kX3NpZ25hdHVyZSwgb2JqY19idWlsZF9lbmNvZGVfZXhwciwKCW9iamNfYnVpbGRfcHJvdG9jb2xfZXhwciwgb2JqY19idWlsZF9zZWxlY3Rvcl9leHByLAoJb2JqY19idWlsZF9tZXNzYWdlX2V4cHIsIG9iamNfYnVpbGRfc3RyaW5nX29iamVjdCwKCW9iamNfZ2V0X2NsYXNzX3JlZmVyZW5jZSwgb2JqY19nZXRfcHJvdG9jb2xfcXVhbGlmaWVkX3R5cGUsCglvYmpjX3N0YXRpY19pbml0X25lZWRlZF9wLCBvYmpjX2dlbmVyYXRlX3N0YXRpY19pbml0X2NhbGwpOiBOZXcgc3R1YnMuCgoyMDA0LTA5LTAzICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogQWRkIF9fbWlwczNkLgoKCSogY29uZmlnL21pcHMvZ2VuZXJpYy5tZCAoZ2VuZXJpY19mcmVjaXBfZnNxcnRfc3RlcCk6IE5ldy4KCSogY29uZmlnL21pcHMvbWlwcy1wcy0zZC5tZCAobWlwc19yc3FydDFfPGZtdD4pOiBVc2UgZnJzcXJ0MSB0eXBlLgoJKG1pcHNfcnNxcnQyXzxmbXQ+KTogVXNlIGZyc3FydDIgdHlwZS4KCShtaXBzX3JlY2lwMV88Zm10Pik6IFVzZSBmcmRpdjEgdHlwZS4KCShtaXBzX3JlY2lwMl88Zm10Pik6IFVzZSBmcmRpdjIgdHlwZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAodHlwZSk6IEFkZCBmcmRpdjEsIGZyZGl2MiwgZnJzcXJ0MSwgZnJzcXJ0Mi4KCSogY29uZmlnL21pcHMvc2IxLm1kIChpcl9zYjFfZnB1XzJwaXBlcywgaXJfc2IxX2ZwdV8xcGlwZSk6IEFkZCBmcmRpdjEKCWFuZCBmcnNxcnQxLgoJKGlyX3NiMV9mcHVfc3RlcDJfMnBpcGVzLCBpcl9zYjFfZnB1X3N0ZXAyXzFwaXBlKTogTmV3LgoKMjAwNC0wOS0wMyAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AZGViaWFuLm9yZz4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMpOiBTd2FwIG9wZXJhbmRfbG9jIHBvaW50ZXJzIGZvcgoJZmluZF9kdW1teV9yZWxvYWQgaWYgd2UgaGF2ZSBzd2FwcGVkIHR3byBvcGVyYW5kcy4KCjIwMDQtMDktMDMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY29uZmlnL2NyaXMvY3Jpcy5oIChBU01fT1VUUFVUX0NBU0VfRU5EKTogVXNlIHByZXZfbm9ubm90ZV9pbnNuCgl0byBnZXQgdGhlIHRhYmxlanVtcC1pbnNuIGJlZm9yZSB0aGUganVtcC10YWJsZSBsYWJlbC4KCjIwMDQtMDktMDMgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIGMtY29tbW9uLmggKG9iamNfaXNfaWQsIG9iamNfZGVjbGFyZV9hbGlhcywgb2JqY19kZWNsYXJlX2NsYXNzLAoJb2JqY19kZWNsYXJlX3Byb3RvY29scywgb2JqY19idWlsZF9tZXNzYWdlX2V4cHIsCglvYmpjX2ZpbmlzaF9tZXNzYWdlX2V4cHIsIG9iamNfYnVpbGRfc2VsZWN0b3JfZXhwciwKCW9iamNfYnVpbGRfcHJvdG9jb2xfZXhwciwgb2JqY19idWlsZF9lbmNvZGVfZXhwciwKCW9iamNfYnVpbGRfc3RyaW5nX29iamVjdCwgb2JqY19nZXRfcHJvdG9jb2xfcXVhbGlmaWVkX3R5cGUsCglvYmpjX2dldF9jbGFzc19yZWZlcmVuY2UsIG9iamNfZ2V0X2NsYXNzX2l2YXJzLAoJb2JqY19zdGFydF9jbGFzc19pbnRlcmZhY2UsIG9iamNfc3RhcnRfY2F0ZWdvcnlfaW50ZXJmYWNlLAoJb2JqY19zdGFydF9wcm90b2NvbCwgb2JqY19jb250aW51ZV9pbnRlcmZhY2UsIG9iamNfZmluaXNoX2ludGVyZmFjZSwKCW9iamNfc3RhcnRfY2xhc3NfaW1wbGVtZW50YXRpb24sIG9iamNfc3RhcnRfY2F0ZWdvcnlfaW1wbGVtZW50YXRpb24sCglvYmpjX2NvbnRpbnVlX2ltcGxlbWVudGF0aW9uLCBvYmpjX2ZpbmlzaF9pbXBsZW1lbnRhdGlvbiwKCW9iamNfc2V0X3Zpc2liaWxpdHksIG9iamNfc2V0X21ldGhvZF90eXBlLCBvYmpjX2J1aWxkX21ldGhvZF9zaWduYXR1cmUsCglvYmpjX2FkZF9tZXRob2RfZGVjbGFyYXRpb24sIG9iamNfc3RhcnRfbWV0aG9kX2RlZmluaXRpb24sCglvYmpjX2ZpbmlzaF9tZXRob2RfZGVmaW5pdGlvbiwgb2JqY19hZGRfaW5zdGFuY2VfdmFyaWFibGUsCglvYmpjX2J1aWxkX2tleXdvcmRfZGVjbCwgb2JqY19idWlsZF90aHJvd19zdG10LCBvYmpjX2JlZ2luX3RyeV9zdG10LAoJb2JqY19maW5pc2hfdHJ5X3N0bXQsIG9iamNfYmVnaW5fY2F0Y2hfY2xhdXNlLAoJb2JqY19maW5pc2hfY2F0Y2hfY2xhdXNlLCBvYmpjX2J1aWxkX2ZpbmFsbHlfY2xhdXNlLAoJb2JqY19idWlsZF9zeW5jaHJvbml6ZWQsIG9iamNfc3RhdGljX2luaXRfbmVlZGVkX3AsCglvYmpjX2dlbmVyYXRlX3N0YXRpY19pbml0X2NhbGwpOiBOZXcgcHJvdG90eXBlcy4KCjIwMDQtMDktMDMgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2Z1bmN0aW9uX2FyZyk6IFVzZSBQQVJBTExFTCBldmVuIGlmIHRoZXJlCglpcyBvbmx5IG9uZSByZWcuCgkoaWE2NF9mdW5jdGlvbl92YWx1ZSk6IERpdHRvLgoKMjAwNC0wOS0wMyAgSmFuIEJldWxpY2ggIDxqYmV1bGljaEBub3ZlbGwuY29tPgoKCSogY29uZmlnLmdjYzogUmVzdXJyZWN0IE5ldFdhcmUgYXMgYSB0YXJnZXQuIEhhbmRsZSBzcGVjaWFsIGNhc2Ugb2YKCU5vdmVsbCBsaW5rZXIgdG8gYmUgdXNlZCAoc3BlY2lmaWVkIHRocm91Z2ggLS13aXRoLWxkPSkgYW5kIHRocmVhZGluZwoJbW9kZWwgb2YgZWl0aGVyIFBvc2l4IChkZWZhdWx0KSBvciBOS1MuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9yZXR1cm5fcG9wc19hcmdzKTogQ29uZGl0aW9uYWxpemUgcG9wcGluZwoJb2YgaW5jb21pbmcgaGlkZGVuIGFyZ3VtZW50IG9uIEtFRVBfQUdHUkVHQVRFX1JFVFVSTl9QT0lOVEVSLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEtFRVBfQUdHUkVHQVRFX1JFVFVSTl9QT0lOVEVSKTogTmV3LgoJKiBjb25maWcvaTM4Ni9uZXR3YXJlLmMsIGNvbmZpZy9pMzg2L25ldHdhcmUuaDogTmV3LgoJKiBjb25maWcvaTM4Ni9ud2xkLmMsIGNvbmZpZy9pMzg2L253bGQuaDogTmV3LgoJKiBjb25maWcvaTM4Ni9uZXR3YXJlLWNydDAuYzogTmV3LgoJKiBjb25maWcvaTM4Ni9uZXR3YXJlLWxpYmdjYy5jOiBOZXcuCgkqIGNvbmZpZy9pMzg2L25ldHdhcmUtbGliZ2NjLmRlZjogTmV3LgoJKiBjb25maWcvaTM4Ni9uZXR3YXJlLWxpYmdjYy5leHA6IE5ldy4KCSogY29uZmlnL2kzODYvdC1uZXR3YXJlLCBjb25maWcvaTM4Ni90LW53bGQ6IE5ldy4KCSogZ3Roci1ua3MuaDogTmV3LgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCBOS1MgdGhyZWFkaW5nIG1vZGVsLgoKMjAwNC0wOS0wMyAgSmFuIEJldWxpY2ggIDxqYmV1bGljaEBub3ZlbGwuY29tPgoKCVBSIGMvNzA1NAoJKiBkZWZhdWx0cy5oIChUQVJHRVRfREVGQVVMVF9QQUNLX1NUUlVDVCk6IFByb3ZpZGUgZGVmYXVsdC4KCSogdHJlZS5oIChpbml0aWFsX21heF9mbGRfYWxpZ24pOiBEZWNsYXJlCgkqIHN0b3ItbGF5b3V0LmMgKGluaXRpYWxfbWF4X2ZsZF9hbGlnbik6IERlZmluZSBhbmQgaW5pdGlhbGl6ZS4KCShtYXhpbXVtX2ZpZWxkX2FsaWdubWVudCk6IEluaXRpYWxpemUgdG8gdGhlIHNhbWUgdmFsdWUuCgkqIGNvbW1vbi5vcHQ6IEFkZCAtZnBhY2stc3RydWN0PSB2YXJpYW50IG9mIHN3aXRjaC4KCSogb3B0cy5jOiBIYW5kbGUgLWZwYWNrLXN0cnVjdD0gdmFyaWFudCBvZiBzd2l0Y2guCgkqIGMtcHJhZ21hLmM6IENoYW5nZSAjcHJhZ21hIHBhY2soKSBoYW5kbGluZyBzbyB0aGF0IGl0IGJlY29tZXMKCWNvbXBhdGlibGUgdG8gb3RoZXIgY29tcGlsZXJzOiBhY2NlcHQgaW5kaXZpZHVhbCAncHVzaCcgYXJndW1lbnQsCgltYWtlIGZpbmFsIHBvcCByZXN0b3JlIChjb21tYW5kIGxpbmUpIGRlZmF1bHQsIGNvcnJlY3QgaW50ZXJhY3Rpb24KCW9mIHB1c2gvcG9wIGFuZCBzb2xlIHNwZWNpZmljYXRpb24gb2YgYSBuZXcgYWxpZ25tZW50IChzbyB0aGF0IHRoZQoJc2VxdWVuY2UgI3ByYWdtYSBwYWNrKHB1c2gpIC0gI3ByYWdtYSBwYWNrKDxuPikgYmVjb21lcyBpZGVudGljYWwKCXRvICNwcmFnbWEgcGFjayhwdXNoLCA8bj4pLgoJKiBkb2MvZXh0ZW5kLnRleGk6IE5ldyBub2RlICJTdHJ1Y3R1cmUtUGFja2luZyBQcmFnbWFzIiB1bmRlcgoJIlByYWdtYXMiLCBkZXNjcmliaW5nICNwcmFnbWEgcGFjay4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtZnBhY2stc3RydWN0PTxuPiB2YXJpYW50IG9mIHN3aXRjaC4KCSogZG9jL3RtLnRleGk6IEFkanVzdCBkZXNjcmlwdGlvbiBmb3IgSEFORExFX1BSQUdNQV9QQUNLX1BVU0hfUE9QLgoJRG9jdW1lbnQgbmV3IFRBUkdFVF9ERUZBVUxUX1BBQ0tfU1RSVUNULgoKMjAwNC0wOS0wMyAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChnZW5fZmllbGRfZGllKS4gRXF1YXRlIGRlY2wgbnVtYmVyIHRvIGRpZS4KCjIwMDQtMDktMDMgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNTgzMgoJKiBnbG9iYWwuYyAobW9kaWZ5X3JlZ19wYXYpOiBOZXcgZnVuY3Rpb24uCgkobWFrZV9hY2N1cmF0ZV9saXZlX2FuYWx5c2lzKTogQ2FsbCB0aGUgbmV3IGZ1bmN0aW9uLiAgTW92ZSBwYXZpbgoJbW9kaWZpY2F0aW9uIGJ5IGVhcmx5Y2xvYmJlciBzZXQgaW50byB0aGUgbmV3IGZ1bmN0aW9uLgoKMjAwNC0wOS0wMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAob3V0cHV0X2FuZHNpMyk6IFVzZSAtMSBpbnN0ZWFkIG9mCgkoSE9TVF9XSURFX0lOVCkweGZmZmZmZmZmIHNpbmNlIENPTlNUX0lOVCB2YWx1ZSBhcmUgYWx3YXlzIHNpZ24KCWV4dGVuZGVkLgoKMjAwNC0wOS0wMiAgSmFuIEJldWxpY2ggIDxqYmV1bGljaEBub3ZlbGwuY29tPgoKCSogTWFrZWZpbGUuaW4gKExJQjJBRERFSERFUCk6IEFkZCB1bndpbmQuaCBhbmQgdW53aW5kLXBlLmguCgkqIG1rbGliZ2NjLmluIChsaWJnY2NfZGVwKTogTmV3LCBjb3ZlcmluZyBnZW5lcmFsIGRlcGVuZGVuY2llcywgYnV0Cglub3QgdW53aW5kIGNvZGUgc3BlY2lmaWMgb25lcy4KCShsaWJnY2MyX2NfZGVwKTogUmVwbGFjZSBnZW5lcmFsIGRlcGVuZGVuY2llcyB3aXRoIHVzZSBvZiBsaWJnY2NfZGVwLgoJUmVtb3ZlIHVud2luZCBjb2RlIHNwZWNpZmljIGRlcGVuZGVuY2llcy4KCShsaWJnY292X2NfZGVwKTogUmVwbGFjZSBnZW5lcmFsIGRlcGVuZGVuY2llcyB3aXRoIHVzZSBvZiBsaWJnY2NfZGVwLgoJUmVtb3ZlIGdibC1jdG9ycy5oLgoJQWRkIGxpYmdjY19kZXAgdG8gb3V0cHV0IGdlbmVyYXRlZCBmb3IgTElCMkFERCwgTElCMkFEREVILCBhbmQKCUxJQjJBRERfU1QuIEFkZCBMSUIyQURERUhERVAgdG8gb3V0cHV0IGdlbmVyYXRlZCBmb3IgTElCMkFEREVILgoJKiB0c3lzdGVtLmg6IERlY2xhcmUgbWVtY3B5IGFuZCBtZW1zZXQgd2hlbiBpbmhpYml0X2xpYmMuCgoyMDA0LTA5LTAyICBSb21hbiBaaXBwZWwgIDx6aXBwZWxAbGludXgtbTY4ay5vcmc+CgoJKiBjb21iaW5lLmMgKHRyeV9jb21iaW5lKTogRGVsYXkgbW9kaWZ5aW5nIG9mIGluc25zIHdoaWNoIGNhbm5vdAoJYmUgZWFzaWx5IHVuZG9uZS4KCjIwMDQtMDktMDIgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogY29tbW9uLm9wdDogUmVuYW1lIGl2Y2Fub24gdG8gdHJlZS1sb29wLWl2Y2Fub24sIHRyZWUtbGltIHRvCgl0cmVlLWxvb3AtaW0uCgkqIHRyZWUtc3NhLWxvb3AuYzogRGl0dG8KCSogdHJlZS1zc2EtbG9vcC1pdmNhbm9uLmM6IERpdHRvCgkqIGRvYy9pbnZva2UudGV4aTogRGl0dG8uCgoyMDA0LTA5LTAyICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjLWRlY2wuYyAoc3RvcmVfcGFybV9kZWNsc19uZXdzdHlsZSk6IE1ha2Ugc3RhdGljLgoJKHN0b3JlX3Bhcm1fZGVjbHNfZnJvbSk6IE5ldyBmdW5jdGlvbi4KCSogYy10cmVlLmggKHN0b3JlX3Bhcm1fZGVjbHNfbmV3c3R5bGUpOiBSZW1vdmUgcHJvdG90eXBlLgoJKHN0b3JlX3Bhcm1fZGVjbHNfZnJvbSk6IE5ldyBwcm90b3R5cGUuCgoyMDA0LTA5LTAyICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChleHBhbmRfYmxvY2tfbW92ZSk6IFVzZSBTSW1vZGUgYW5kCglISW1vZGUgd2l0aCBTVFJJQ1RfQUxJR05NRU5ULgoKMjAwNC0wOS0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYnBhYmkuaCAoVEFSR0VUX0JQQUJJX0NQUF9CVUlMVElOUyk6IERlZmluZS4KCShUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vc3ltYmlhbi5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogSW5jbHVkZQoJVEFSR0VUX0JQQUJJX0NQUF9CVUlMVElOUy4KCjIwMDQtMDktMDIgIFJvbWFuIFppcHBlbCAgPHppcHBlbEBsaW51eC1tNjhrLm9yZz4KCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3Rlcyk6IERvbid0IGFkZCBSRUdfTEFCRUwgdG8ganVtcCBpbnNuLgoKMjAwNC0wOS0wMiAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9jYWJzKTogRGVsZXRlLgoJKGV4cGFuZF9idWlsdGluKTogSWYgdW5hYmxlIHRvIGZvbGQgdGhlIHZhbHVlcyBkbyBhIG5vcm1hbAoJbGlicmFyeSBjYWxsIGZvciBidWlsdGluX2NhYiouCgkoZm9sZF9idWlsdGluX2NhYnMpOiBEZXBlbmQgb24gb3B0aW1pemUgYW5kIG9wdGltaXplX3NpemUuCgkqIG9wdGFicy5jIChleHBhbmRfY21wbHhkaXZfc3RyYWlnaHQpOiBEZWxldGUuCgkoZXhwYW5kX2NtcGx4ZGl2X3dpZGUpOiBEaXR0by4KCShleHBhbmRfdmVjdG9yX2Jpbm9wKTogRGl0dG8uCgkoZXhwYW5kX3ZlY3Rvcl91bm9wKTogRGl0dG8uCgkoZXhwYW5kX2NvbXBsZXhfYWJzKTogRGVsZXRlLgoJKGV4cGFuZF9iaW5vcCk6IFJlbW92ZSBjYWxscyB0byBhYm92ZSBmdW5jdGlvbnMuCglSZW1vdmUgb3BlbiBjb2Rpbmcgb2YgY29tcGxleCBhcml0aG1ldGljLgoJKGV4cGFuZF91bm9wKTogRGl0dG8uCgkqIG9wdGFicy5oOiBSZW1vdmUgcHJvdG90eXBlcy4KCjIwMDQtMDktMDIgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIGMtZGVjbC5jIChzdG9yZV9wYXJtX2RlY2xzX25ld3N0eWxlKTogTWFrZSBleHRlcm5hbGx5IHZpc2libGUuCgkqIGMtdHJlZS5oIChzdG9yZV9wYXJtX2RlY2xzX25ld3N0eWxlKTogTmV3IHByb3RvdHlwZS4KCjIwMDQtMDktMDIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZXhwYW5kX2Jsb2NrX2NsZWFyKTogVXNlIHZlY3RvcgoJaW5zdHJ1Y3Rpb25zIGlmIGF2YWlsYWJsZS4KCShleHBhbmRfYmxvY2tfbW92ZSk6IExpa2V3aXNlLgoKMjAwNC0wOS0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcnRsLmRlZiAoUkFOR0VfSU5GTywgUkFOR0VfUkVHLCBSQU5HRV9WQVIsIFJBTkdFX0xJVkUpOiBLaWxsLgoKMjAwNC0wOS0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vc3ltYmlhbi5oIChMSUJfU1BFQyk6IERlZmluZSB0byBlbXB0eS4KCSogY29uZmlnL2FybS90LXN5bWJpYW4gKFNITElCX0xDKTogTGlrZXdpc2UuCgoyMDA0LTA5LTAyICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9icGFiaS5jIChfX2FlYWJpX3VsMmQsIF9fYWVhYmlfdWwyZik6IFJlbW92ZS4KCjIwMDQtMDktMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jbGFzc2lmeV9zeW1ib2wsIG1pcHNfZmV0Y2hfaW5zbnMpOgoJKG1pcHNfcmVzdG9yZV9ncCwgbWlwc19zZXRfcmV0dXJuX2FkZHJlc3MsIG1pcHNfZXhwYW5kX3Byb2xvZ3VlKQoJKG1pcHMxNl9mcF9hcmdzLCBtaXBzX2F2b2lkX2hhemFyZCk6IFJlcGxhY2UgYWJvcnQgd2l0aCBnY2NfYXNzZXJ0LgoJKGJ1aWxkX21pcHMxNl9jYWxsX3N0dWIpOiBMaWtld2lzZS4gIFJlbW92ZSBkYWZ0IENBTExfSU5TTiBjaGVja3MuCgkobWlwc19pc3N1ZV9yYXRlKTogUmVtb3ZlIHVucmVhY2hhYmxlIGFib3J0LgoJKG1pcHNfc3ltYm9saWNfY29uc3RhbnRfcCwgbWlwc19zeW1ib2xpY19hZGRyZXNzX3AsIG1pcHNfc3ltYm9sX2luc25zKQoJKG1pcHNfb3V0cHV0X21vdmUsIG1pcHNfcmVsYXRpb25hbF9vcGVyYW5kX29rX3AsIG1pcHNfYXJnX2luZm8pCgkobWlwc19ibG9ja19tb3ZlX3N0cmFpZ2h0LCBwcmludF9vcGVyYW5kX2FkZHJlc3MsIG1pcHNfZmlsZV9zdGFydCkKCShtaXBzX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0LCBtaXBzMTZfZnBfYXJncywgZHVtcF9jb25zdGFudHNfMSkKCShtaXBzX291dHB1dF9jb25kaXRpb25hbF9icmFuY2gsIG1pcHNfZXhwYW5kX2J1aWx0aW5fZGlyZWN0KQoJKG1pcHNfZXhwYW5kX2J1aWx0aW5fY29tcGFyZSk6IFJlcGxhY2UgYWJvcnQgd2l0aCBnY2NfdW5yZWFjaGFibGUuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKHJvdHI8bW9kZT4zLCBjb25zdHRhYmxlX2Zsb2F0KTogUmVwbGFjZSBhYm9ydAoJd2l0aCBnY2NfYXNzZXJ0LgoKMjAwNC0wOS0wMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKmxlYV9oaWdoNjQpOiBDaGFuZ2Ugc3BsaXQgY29uZGl0aW9uIHRvCglmbG93Ml9jb21wbGV0ZWQuICBBZGQgYSBwZWVwaG9sZTIgdG8gZ2VuZXJhdGUgYSBtb3JlIHBhcmFsbGVsIHZlcnNpb24uCgoyMDA0LTA5LTAyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jb21wb3VuZF9sdmFsKTogTW92ZSAic3RhY2siIHZhcnJheSBvdXQgb2YKCUdHQy4KCgkqIGdnYy1wYWdlLmM6IGluY2x1ZGUgdHJlZS1mbG93LmguCgkoZXh0cmFfb3JkZXJfc2l6ZV90YWJsZSk6IEFkZCBzdG10X2Fubl9kLgoJKFNUQVRfTEFCRUwpOiBSZW5hbWUgZnJvbSAuLi4uCgkoTEFCRUwpOiAuLi4gdGhpcyBvbmUuCgkqIE1ha2VmaWxlLmluIChnZ2MtcGFnZS5vKTogQWRkIGRlcGVuZGVuY3kuCgoJKiBnZ2MtY29tbW9uLmMgKGdnY19mb3JjZV9jb2xsZWN0KTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShsb2NfZGVzY3JpcHRpb24pOiBBZGQgZmllbGRzICJmcmVlZCIsICJjb2xsZWN0ZWQiCgkocHRyX2hhc2gpOiBOZXcgc3RhdGljIGhhc2gKCShwdHJfaGFzaF9lbnRyeSk6IE5ldyBzdHJ1Y3R1cmUuCgkoaGFzaF9wdHIsZXFfcHRyLGdnY19wcnVuZV9wdHIpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShnZ2NfcmVjb3JkX292ZXJoZWFkKTogVGFrZSBwdHIgYXJndW1lbnQsIHJlY29yZCBpdAoJKGdnY19wcnVuZV9vdmVyaGVhZF9saXN0LCBnZ2NfZnJlZV9vdmVyaGVhZCk6IE5ldyBmdW5jdGlvbnMuCgkoY21wX3N0YXRpc3RpY3MpOiBJbXJvdmUgc29ydGluZy4KCShkdW1wX2dnY19sb2Nfc3RhdGlzdGljcyk6IE91dHB1dCBuZXdseSBjb2xsZWN0ZWQgc3RhdGlzdGljcwoJKiBnZ2MtcGFnZS5jIChnZ2NfYWxsb2MpOiBVcGRhdGUgY2FsbCBvZiBnZ2NfcmVjb3JkX292ZXJoZWFkCgkoZ2djX2ZyZWUpOiBDYWxsIGdnY19mcmVlX292ZXJoZWFkLgoJKGdnY19jb2xsZWN0KTogRm9yY2UgY29sbGVjdGlvbiB3aGVuIGFza2VkIHRvIGJlIGZvcmNlZC4KCShnZ2NfY29sbGVjdCk6IENhbGwgZ2djX3BydW5lX292ZXJoZWFkX2xpc3QuCgkqIGdnYy5oIChnZ2NfZm9yY2VfY29sbGVjdCk6IERlY2xhcmUKCShnZ2NfcmVjb3JkX292ZXJoZWFkKTogVXBkYXRlIHByb3RvdHlwZS4KCShnZ2NfZnJlZV9vdmVyaGVhZCwgZ2djX3BydW5lX292ZXJoZWFkX2xpc3QpOiBEZWNsYXJlLgoKMjAwNC0wOS0wMiAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogY29tbW9uLm9wdCAoZnRyYXBwaW5nLW1hdGgpOiBEZWZhdWx0IHRvIG9uLgoKMjAwNC0wOS0wMiAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0vcHJlZGljYXRlcy5tZCAoYXJtX3JlbG9hZF9tZW1vcnlfb3BlcmFuZCk6IEFsbG93IE1FTS4KCjIwMDQtMDktMDIgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJUFIgdGFyZ2V0LzE2ODg0CgkqIGNvbmZpZy9hdnIvYXZyLm1kICgibW92bWVtaGkiKTogU3Vic3RpdHV0ZSBtYXRjaF9kdXAgdG8KCW1hdGNoX3NjcmF0Y2guCgkoKm1vdm1lbXFpX2luc24pOiBMaWtld2lzZS4KCSgqbW92bWVtaGkpOiBMaWtld2lzZS4KCShjbHJtZW1oaSk6IExpa2V3aXNlLgoJKCpjbHJtZW1xaSk6IExpa2V3aXNlLgoJKCpjbHJtZW1oaSk6IExpa2V3aXNlLgoKMjAwNC0wOS0wMiAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKGFybSotKi1lYWJpKiB8IGFybSotKi1zeW1iaWFuZWxmKik6IFNldAoJZGVmYXVsdF91c2VfY3hhX2F0ZXhpdD15ZXMuCgoyMDA0LTA5LTAyICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9saW51eDY0Lmg6IERvbid0IGluY2x1ZGUgc2lnbmFsLmggb3Igc3lzL3Vjb250ZXh0LmguCgkoc3RydWN0IGtlcm5lbF9vbGRfdWNvbnRleHQpOiBEZWxldGUuCgkoc3RydWN0IGdjY19wdF9yZWdzLCBnY2Nfc2lnY29udGV4dCwgZ2NjX3Vjb250ZXh0KTogTmV3LgoJKE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUik6IFVzZSBnY2NfKiBzdHJ1Y3RzLiAgT25seSBkZWZpbmUKCXdoZW4gSU5fTElHR0NDMi4KCjIwMDQtMDktMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5jIChwcm9jZXNzX29wdGlvbnMpOiBGaXggdHlwby4KCjIwMDQtMDktMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNzI1OAoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogVGlnaHRlbiBwYXNzLXRocm91Z2gKCWNvbmRpdGlvbnMgZm9yIHBhc3MtYnktcmVmZXJlbmNlLiAgUmVtb3ZlIGRlYWQgVEFSR0VUX0VYUFIgY29kZS4KCVVzZSBidWlsZF9mb2xkX2FkZHJfZXhwci4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogVXNlIGJ1aWxkX2ZvbGRfYWRkcl9leHByLiAgUmVtb3ZlIGNvZGUKCXRoYXQgYXNzdW1lcyBBRERSX0VYUFIgYWxsb2NhdGVzIHN0YWNrIHNwYWNlLgoJKiBmb2xkLWNvbnN0LmMgKGJ1aWxkX2ZvbGRfYWRkcl9leHByX3dpdGhfdHlwZSk6IExvb2sgdGhyb3VnaAoJV0lUSF9TSVpFX0VYUFIuCgoyMDA0LTA5LTAxICBEYW4gTmljb2xhZXNjdSAgPGRhbm5AaWNzLnVjaS5lZHU+CgoJKiBnZW5nZW5ydGwuYyAoZ2VuZGVmKTogVXNlIHJ0eF9hbGxvYywgZG9uJ3QgZG8gUFVUX0NPREUuCgkqIGdnYy5oIChnZ2NfYWxsb2NfcnR4KTogRGVsZXRlLgoKMjAwNC0wOS0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHBtZWQuYyAoZW51bSBhbGdfY29kZSk6IFJlbW92ZSBsb25nIHVudXNlZCBlbnVtZXJhdGlvbiB2YWx1ZXMuCgkoc3RydWN0IG11bHRfY29zdCk6IE5ldyBzdHJ1Y3R1cmUgdG8gaG9sZCB0aGUgInNjb3JlIiBvZiBhIHN5bnRoZXRpYwoJbXVsdGlwbHkgc2VxdWVuY2UsIGluY2x1ZGluZyBib3RoIGEgcnR4X2Nvc3QgYW5kIGEgbGF0ZW5jeSBmaWVsZC4KCShNVUxUX0NPU1RfTEVTUyk6IE5ldyBtYWNybyB0byBjb21wYXJlIG11bHRfY29zdCB0byBhIGNvbnN0YW50LgoJKENIRUFQRVJfTVVMVF9DT1NUKTogTmV3IG1hY3JvIHRvIGNvbXBhcmUgdHdvIG11bHRfY29zdHMuCgkoc3RydWN0IGFsZ29yaXRobSk6IENoYW5nZSB0eXBlIG9mIGNvc3QgZmllbGQgdG8gYmUgbXVsdF9jb3N0LgoJKHN5bnRoX211bHQpOiBDaGFuZ2UgdHlwZSBvZiBjb3N0X2xpbWl0IGFyZ3VtZW50IHRvIGJlIGEKCXBvaW50ZXIgdG8gYSBtdWx0X2Nvc3QuICBVcGRhdGUgYWxsIGNvc3QgY29tcGFyaXNvbnMgdG8gdXNlIHRoZQoJbmV3IG11bHRfY29zdCBpbmZyYXN0cnVjdHVyZS4gIEZvciBhbGdfYWRkX2ZhY3RvciBhbmQKCWFsZ19zdWJfZmFjdG9yIG9wZXJhdGlvbnMsIGxhdGVuY3kgaXMgbG93ZXIgdGhhbiB0aGUgcnR4X2Nvc3QuCgkoY2hvb3NlX211bHRfdmFyaWFudCk6IFVwZGF0ZSBjYWxscyB0byBzeW50aF9tdWx0LiAgUGVyZm9ybQoJY29zdCBjb21wYXJpc29ucyB1c2luZyB0aGUgbmV3IG11bHRfY29zdCBpbmZyYXN0cnVjdHVyZS4KCShleHBhbmRfbXVsdF9oaWdocGFydCk6IFVzZSBhbGcuY29zdC5jb3N0IGluc3RlYWQgb2YgYWxnLmNvc3QKCXRvIG9wdGFpbiB0aGUgdG90YWwgcnR4X2Nvc3Qgb2YgYSBzeW50aF9tdWx0ICJhbGdvcml0aG0iLgoKMjAwNC0wOS0wMSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9wb3dlcjQubWQ6IEluY3JlYXNlIHN0b3JlIGxhdGVuY3kgdG8gMTIuCgkqIGNvbmZpZy9yczYwMDAvcG93ZXI1Lm1kOiBTYW1lLgoKMjAwNC0wOS0wMSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCVBSIHRhcmdldC8xNDA2NAoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfdW5pcXVlX3NlY3Rpb24pOiBEZWxldGUgcHJvdG90eXBlIGFuZAoJZGVmaW5pdGlvbi4KCShUQVJHRVRfQVNNX1VOSVFVRV9TRUNUSU9OKTogRGVsZXRlLgoKMjAwNC0wOS0wMSAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogYy1wYXJzZS5pbiAocHJpbWFyeSk6IENhbGwgb2JqY19idWlsZF9tZXNzYWdlX2V4cHIoKSwKCW9iamNfYnVpbGRfc2VsZWN0b3JfZXhwcigpLCBvYmpjX2J1aWxkX3Byb3RvY29sX2V4cHIoKSwKCW9iamNfYnVpbGRfZW5jb2RlX2V4cHIoKSBhbmQgb2JqY19idWlsZF9zdHJpbmdfb2JqZWN0KCkgaW5zdGVhZCBvZgoJYnVpbGRfbWVzc2FnZV9leHByKCksIGJ1aWxkX3NlbGVjdG9yX2V4cHIoKSwgYnVpbGRfcHJvdG9jb2xfZXhwcigpLAoJYnVpbGRfZW5jb2RlX2V4cHIoKSBhbmQgYnVpbGRfb2JqY19zdHJpbmdfb2JqZWN0KCksIHJlc3BlY3RpdmVseS4KCShjb21wb25lbnRfZGVjbF9saXN0Mik6IENhbGwgb2JqY19nZXRfY2xhc3NfaXZhcnMoKSBpbnN0ZWFkIG9mCglnZXRfY2xhc3NfaXZhcnNfZnJvbV9uYW1lKCkuCgkoa2V5d29yZGRlY2wpOiBDYWxsIG9iamNfYnVpbGRfa2V5d29yZF9kZWNsKCkgaW5zdGVhZCBvZgoJYnVpbGRfa2V5d29yZF9kZWNsKCkuCgkocmVjZWl2ZXIpOiBDYWxsIG9iamNfZ2V0X2NsYXNzX3JlZmVyZW5jZSgpIGluc3RlYWQgb2YKCWdldF9jbGFzc19yZWZlcmVuY2UoKS4KCShyZXN3b3Jkcyk6IEFkZCBibGFuayBsaW5lIGJlZm9yZSBAQGlmb2JqYyBzZWN0aW9uLCBmb3IgY2xhcml0eS4KCjIwMDItMDktMDEgIEZhcmlib3J6IEphaGFuaWFuIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoUk9VTkRfVFlQRV9BTElHTik6IFJlc3RyaWN0IGFsaWdubWVudAoJdG8gQWx0aXZlYyB2ZXRvcnMuCgoyMDA0LTA5LTAxICBXdSBZb25nd2VpICA8YWRhaEBzaDE2My5uZXQ+CgkgICAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGd0aHItd2luMzIuaCAoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90KTogVXNlICd1bnNpZ25lZCBsb25nJywKCW5vdCBXaW5kb3dzICdEV09SRCcuCgkoX19HVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUX0ZVTkNUSU9OKTogQ29ycmVjdCB0eXBvLgoJKF9fR1RIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVF9ERUZBVUxUKTogTGlrZXdpc2UuCgkoX19ndGhyX3dpbjMyX3JlY3Vyc2l2ZV9tdXRleF9pbml0X2Z1bmN0aW9uKTogQWRkIHByb3RvdHlwZSBmb3IKCV9fR1RIUkVBRF9ISURFX1dJTjMyQVBJIGNhc2UuLgoJKF9fZ3Rocl93aW4zMl9yZWN1cnNpdmVfbXV0ZXhfbG9jayk6IExpa2V3aXNlLgoJKF9fZ3Rocl93aW4zMl9yZWN1cnNpdmVfbXV0ZXhfdHJ5bG9jayk6IExpa2V3aXNlLgoJKF9fZ3Rocl93aW4zMl9yZWN1cnNpdmVfbXV0ZXhfdW5sb2NrKTogTGlrZXdpc2UuCgkoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF9pbml0X2Z1bmN0aW9uKTsgQWRkIGRlZmluaXRpb24gZm9yCglfX0dUSFJFQURfSElERV9XSU4zMkFQSSBjYXNlLgoJKF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfbG9jayk6IENvcnJlY3QgY2FsbCB0byBJbnRlcmxvY2tlZERlY3JlbWVudC4KCSogY29uZmlnL2kzODYvZ3J0aHItd2luMzIuYyAoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF9sb2NrKTogQ29ycmVjdAoJY2FsbCB0byBJbnRlcmxvY2tlZERlY3JlbWVudC4KCjIwMDQtMDktMDEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLXRhaWxjYWxsLmMgKGZpbmRfdGFpbF9jYWxscyk6IEFsc28gZmFpbCBpcyBzdGF0ZW1lbnQgaGFzCgl2b2xhdGlsZSBvcGVyYW5kcy4KCgkqIHRyZWUtc3NhLmMgKHByb3BhZ2F0ZV9pbnRvX2FkZHIpOiBQcm9wZXJseSB0ZXN0IGZvciBMSFIuCgoJKiBkb2MvYy10cmVlLnRleGk6IERvY3VtZW50IG5ldyBvcGVyYW5kcyBmb3IgQVJSQVlfUkVGIGFuZAoJQ09NUE9ORU5UX1JFRi4KCjIwMDQtMDktMDEgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIE1ha2VmaWxlLmluIChydGwtcHJvZmlsZS5vLCB2YWx1ZS1wcm9mLm8pOiBBZGQgR0NDX0ggZGVwZW5kZW5jeS4KCSogY29tbW9uLm9wdCAoZnNwZWN1bGF0aXZlLXByZWZldGNoaW5nKTogTmV3LgoJKiBmbGFncy5oIChmbGFnX3NwZWN1bGF0aXZlX3ByZWZldGNoaW5nX3NldCk6IERlY2xhcmUuCgkqIGdjb3YtaW8uYyAoZ2Nvdl93cml0ZV9jb3VudGVyLCBnY292X3JlYWRfY291bnRlcik6IEFsbG93IG5lZ2F0aXZlCgl2YWx1ZXMuCgkqIG9wdHMuYyAoZmxhZ19zZXBjdWxhdGl2ZV9wcmVmZXRjaGluZ19zZXQpOiBOZXcgdmFyaWFibGUuCgkoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgLWZzcGVjdWxhdGl2ZS1wcmVmZXRjaGluZy4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEaXR0by4KCSogcHJvZmlsZS5jIChpbnN0cnVtZW50X3ZhbHVlcywgY29tcHV0ZV92YWx1ZV9oaXN0b2dyYW1zLCBicmFuY2hfcHJvYik6CglVc2UgdmVjdG9ycyBpbnN0ZWFkIG9mIGFycmF5cy4KCSogdG9wbGV2LmMgKHByb2Nlc3Nfb3B0aW9ucyk6IEhhbmRsZSAtZnNwZWN1bGF0aXZlLXByZWZldGNoaW5nLgoJKiBydGwtcHJvZmlsZS5jOiBJbmNsdWRlIGdnYy5oLgoJKHJ0bF9nZW5faW50ZXJ2YWxfcHJvZmlsZXIsIHJ0bF9nZW5fcG93Ml9wcm9maWxlciwKCXJ0bF9nZW5fb25lX3ZhbHVlX3Byb2ZpbGVyX25vX2VkZ2VfbWFuaXB1bGF0aW9uLAoJcnRsX2dlbl9vbmVfdmFsdWVfcHJvZmlsZXIsIHJ0bF9nZW5fY29uc3RfZGVsdGFfcHJvZmlsZXIpOiBUeXBlIG9mCglhcmd1bWVudCBjaGFuZ2VkLgoJKiB0cmVlLXByb2ZpbGUuYyAodHJlZV9nZW5faW50ZXJ2YWxfcHJvZmlsZXIsIHRyZWVfZ2VuX3BvdzJfcHJvZmlsZXIsCgl0cmVlX2dlbl9vbmVfdmFsdWVfcHJvZmlsZXIsIHRyZWVfZ2VuX2NvbnN0X2RlbHRhX3Byb2ZpbGVyKTogVHlwZSBvZgoJYXJndW1lbnQgY2hhbmdlZC4KCSogdmFsdWUtcHJvZi5jOiBJbmNsdWRlIGdnYy5oLgoJKE5PUFJFRkVUQ0hfUkFOR0VfTUlOLCBOT1BSRUZFVENIX1JBTkdFX01BWCk6IE5ldwoJbWFjcm9zLgoJKGluc25fcHJlZmV0Y2hfdmFsdWVzX3RvX3Byb2ZpbGUsIGZpbmRfbWVtX3JlZmVyZW5jZV8xLAoJZmluZF9tZW1fcmVmZXJlbmNlXzIsIGZpbmRfbWVtX3JlZmVyZW5jZSwgZ2VuX3NwZWN1bGF0aXZlX3ByZWZldGNoLAoJc3BlY3VsYXRpdmVfcHJlZmV0Y2hpbmdfdHJhbnNmb3JtKTogTmV3LgoJKHZhbHVlX3Byb2ZpbGVfdHJhbnNmb3JtYXRpb25zKTogQ2FsbCBzcGVjdWxhdGl2ZV9wcmVmZXRjaGluZ190cmFuc2Zvcm0uCgkoaW5zbl92YWx1ZXNfdG9fcHJvZmlsZSk6IENhbGwgaW5zbl9wcmVmZXRjaF92YWx1ZXNfdG9fcHJvZmlsZS4KCShpbnNuX2Rpdm1vZF92YWx1ZXNfdG9fcHJvZmlsZSwgcnRsX2ZpbmRfdmFsdWVzX3RvX3Byb2ZpbGUsCgl0cmVlX2ZpbmRfdmFsdWVzX3RvX3Byb2ZpbGUsIGZpbmRfdmFsdWVzIHRvIHByb2ZpbGUpOiBVc2UgdmVjdG9ycwoJaW5zdGVhZCBvZiBhcnJheXMuCgkoZnJlZV9wcm9maWxlZF92YWx1ZXMpOiBSZW1vdmVkLgoJKiB2YWx1ZS1wcm9mLmggKHN0cnVjdCBoaXN0b2dyYW1fdmFsdWUpOiBSZW5hbWVkIHRvCglzdHJ1Y3QgaGlzdG9ncmFtX3ZhbHVlX3QuCgkoaGlzdG9ncmFtX3ZhbHVlLCBoaXN0b2dyYW1fdmFsdWVzKTogTmV3IHR5cGVzLgoJKGZpbmRfdmFsdWVzX3RvX3Byb2ZpbGUpOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKGZyZWVfcHJvZmlsZWRfdmFsdWVzKTogUmVtb3ZlZC4KCShzdHJ1Y3QgcHJvZmlsZV9ob29rcyk6IFR5cGUgb2YgYXJndW1lbnQgb2YgdGhlIGhvb2tzIGNoYW5nZWQgdG8KCWhpc3RvZ3JhbV92YWx1ZS4KCSogZG9jL2ludm9rZS50ZXhpICgtZnNwZWN1bGF0aXZlLXByZWZldGNoaW5nKTogRG9jdW1lbnQuCgoyMDA0LTA5LTAxICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xNjQwOAoJKiBnY3NlLmMgKHJlcGxhY2Vfc3RvcmVfaW5zbik6IEZpeCBMSUJDQUxML1JFVFZBTCBub3Rlcy4KCjIwMDQtMDktMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbnMzMmsvbnMzMmsuaCAoVFJBTlNGRVJfRlJPTV9UUkFNUE9MSU5FKTogUmVtb3ZlLgoJKFRSQU1QT0xJTkVfVEVNUExBVEUpOiBNZXJnZSBjb2RlIGZyb20gX190cmFtcG9saW5lIGlubGluZS4KCjIwMDQtMDktMDEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogbGliZ2NjLXN0ZC52ZXIgKEdDQ18zLjQuMik6IEV4cG9ydCBhbHNvIF9fdHJhbXBvbGluZV9zZXR1cC4KCjIwMDQtMDktMDEgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19zeW1ib2xfZGVmaW5lZF9wKTogSW4gYWRkaXRpb24gdG8KCWJlaW5nIFNZTUJPTF9SRUZfTE9DQUxfUCwgYSBzeW1ib2wgbXVzdCBhbHNvIGJlCgkhIFNZTUJPTF9SRUZfRVhURVJOQUxfUCwgYXMgb25seSB0aG9zZSBhcmUgX2Fsd2F5c18gbG9jYWxseQoJZGVmaW5lZCBpbiB0aGlzIG91dHB1dCBmaWxlLCBvciB0cmFuc2xhdGlvbiB1bml0IGluIHRoZSBjYXNlCglvZiBJTUEgbm90IGJlaW5nIHVzZWQuCgkobWFjaG9waWNfb3V0cHV0X2luZGlyZWN0aW9uKTogU1lNQk9MX1JFRl9MT0NBTF9QIHN5bWJvbHMKCW5ldmVyIG5lZWQgLmluZGlyZWN0X3N5bWJvbCB3aGVuIGluZGlyZWN0aW5nLgoKMjAwNC0wOS0wMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYmItcmVvcmRlci5vKTogQWRkIHNldmVyYWwgZGVwZW5kZW5jaWVzLgoKMjAwNC0wOS0wMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKG9wZXJhbmRfZXF1YWxfcCk6IFJlcXVpcmUgZXF1YWwgc2lnbiBhbHNvIGZvcgoJRklYX3tDRUlMLFRSVU5DLEZMT09SLFJPVU5EfV9FWFBSLgoKMjAwNC0wOS0wMSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBjb25maWcuZ2NjICgtLXdpdGgtY3B1IG9uIEFSTSk6IFByZXNlcnZlIHRoZSBjYW5vbmljYWwgY3B1IG5hbWUKCWZvciB1c2UgaW4gY29uZmlnYXJncy5oLiAgUHV0IHRoZSBjbmFtZSBpbiBhIHNlcGFyYXRlIHZhcmlhYmxlLiAgVXNlCgl0aGF0IHRvIHNldCB0YXJnZXRfY3B1X2RlZmF1bHQyLgoKMjAwNC0wOS0wMSAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgkgICAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5tZCAoImxlbmd0aCIpOiBJbmNyZWFzZSBicmFuY2ggbGVuZ3RoIHdoZW4KCVNIMSBwaWMgY29kZSB0byAxODogMTIgYnl0ZXMgb2YgaW5zdHJ1Y3Rpb25zLCA0IGJ5dGUgZm9yIHRoZQoJY29uc3RhbnQsIDIgYnl0ZSBmb3IgYWxpZ25pbmcgdGhlIGNvbnN0YW50LgoKMjAwNC0wOS0wMSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0vYXJtLWNvcmVzLmRlZiAoQVJNX0NPUkUpOiBBZGQgbmV3IGZpZWxkIGZvciB0aGUgcmVhbCBuYW1lIG9mIHRoZQoJQ1BVLgoJKGFybTd0ZG1pLXMpOiBOZXcgQ1BVIG5hbWUuCgkqIGFybS9hcm0uYyAoQVJNX0NPUkUpOiBVcGRhdGUgZm9yIG5ldyBmb3JtYXQuCgkqIGFybS9hcm0uaCAoQVJNX0NPUkUpOiBMaWtld2lzZS4KCSogYXJtL2dlbnR1bmUuc2g6IFVwZGF0ZSBmb3IgZXh0cmEgZmllbGQuCgkqIGNvbmZpZy5nY2M6IExpa2V3aXNlLgoJKiBhcm0vYXJtLXR1bmUubWQ6IFJlZ2VuZXJhdGUuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgdGhlIHJlYWwgcHJvY2Vzc29yIG5hbWVzIGZvciBBUk0gY3B1cy4KCjIwMDQtMDktMDEgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtL2llZWU3NTQtZGYuUyAoYWVhYmlfdWwyZCwgYWVhYmlfbDJkLCBmbG9hdHVuZGlkZikKCShmbG9hdGRpZGYpOiBOZXcgZnVuY3Rpb25zLgoJKiBhcm0vaWVlZTc1NC1zZi5TIChhZWFiaV91bDJmLCBhZWFiaV9sMmYsIGZsb2F0dW5kaXNmKQoJKGZsb2F0ZGlzZik6IE5ldyBmdW5jdGlvbnMuCgkqIHQtYXJtLWVsZjogVXNlIHRoZW0uCgoyMDA0LTA5LTAxICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjLWNvbW1vbi5oIChsb29rdXBfaW50ZXJmYWNlKTogUmVtb3ZlIHByb3RvdHlwZS4KCShpc19jbGFzc19uYW1lKTogUmVuYW1lIHRvIG9iamNfaXNfY2xhc3NfbmFtZS4KCShsb29rdXBfb2JqY19pdmFyKTogUmVuYW1lIHRvIG9iamNfbG9va3VwX2l2YXIuCgkoZ2V0X2N1cnJlbnRfc2NvcGUpOiBSZW5hbWUgdG8gb2JqY19nZXRfY3VycmVudF9zY29wZS4KCSogYy1kZWNsLmMgKGdldF9jdXJyZW50X3Njb3BlKTogUmVuYW1lIHRvIG9iamNfZ2V0X2N1cnJlbnRfc2NvcGUuCgkqIGMtcGFyc2UuaW4gKHBhcm1saXN0X29yX2lkZW50aWZpZXJzXzEpOiBHZXQgcmlkIG9mIHVudXNlZCB2YXJpYWJsZS4KCSh5eWxleG5hbWUpOiBDYWxsIG9iamNfaXNfY2xhc3NfbmFtZSgpIGluc3RlYWQgb2YgaXNfY2xhc3NfbmFtZSgpLgoJKiBjLXR5cGVjay5jIChidWlsZF9leHRlcm5hbF9yZWYpOiBDYWxsIG9iamNfbG9va3VwX2l2YXIoKQoJaW5zdGVhZCBvZiBsb29rdXBfb2JqY19pdmFyKCkuCgkqIHN0dWItb2JqYy5jIChsb29rdXBfaW50ZXJmYWNlKTogUmVtb3ZlIHN0dWIuCgkoaXNfY2xhc3NfbmFtZSk6IFJlbmFtZSB0byBvYmpjX2lzX2NsYXNzX25hbWUuCgkobG9va3VwX29iamNfaXZhcik6IFJlbmFtZSB0byBvYmpjX2xvb2t1cF9pdmFyLgoKMjAwNC0wOC0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKGFybSotKi1zeW1iaWFuZWxmKik6IERvIG5vdCBpbmNsdWRlIHQtYnBhYmkuCgkqIGNvbmZpZy9hcm0vbGliMWZ1bmNzLmFzbTogRG8gbm90IGluY2x1ZGUgc3VwcGxlbWVudGFsIC5TIGZpbGVzCgl3aGVuIGNvbXBpbGluZyBmb3IgU3ltYmlhbi4KCSogY29uZmlnL2FybS9zeW1iaWFuLmggKFJFTkFNRV9MSUJSQVJZKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS90LXN5bWJpYW4gKExJQjFBU01GVU5DUyk6IERlZmluZS4KCjIwMDQtMDgtMzEgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJKiB0b3BsZXYuYyAocHJvY2Vzc19vcHRpb25zKTogRW5zdXJlIGRlYnVnX2hvb2tzIGlzIGluaXRpYWxpemVkLgoKMjAwNC0wOC0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0NYWCk6IEFkZCBUQVJHRVRfQ1hYX0VYUE9SVF9DTEFTU19EQVRBLgoJKiB0YXJnZXQuaCAoY3h4KTogQWRkIGV4cG9ydF9jbGFzc19kYXRhLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fY3h4X2V4cG9ydF9jbGFzc19kYXRhKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9DWFhfRVhQT1JUX0NMQVNTX0RBVEEpOiBVc2UgaXQuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfQ1hYX0VYUE9SVF9DTEFTU19EQVRBKTogRG9jdW1lbnQgaXQuCgoyMDA0LTA4LTMxICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5jIChvdXRwdXRfYnJhbmNoKTogQ2hlY2sgdGhlIGluc24gbGVuZ3RoIHBvc3NpYmx5CglpbiB0aGUgZGVsYXllZCBzbG90LgoKMjAwNC0wOC0zMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlLCBjYXNlIENPTlZFUlRfRVhQUik6IEFkZAoJYmxhbmsgYWZ0ZXIgJyknLgoJKG9wX3N5bWJvbCwgY2FzZSAqX3tESVYsTU9EfV9FWFBSKTogU2F5IHdoYXQgcm91bmRpbmcgaXMgYmVpbmcgdXNlZC4KCgkqIGMtY29tbW9uLmMgKGNfYWxpZ25vZl9leHByKTogVXNlIERFQ0xfQUxJR05fVU5JVCBhbmQgVFlQRV9BTElHTl9VTklULgoJKGNfc2l6ZW9mX29mX2FsaWdub2ZfdHlwZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKGFycmF5X3JlZl9lbGVtZW50X3NpemUpOiBMaWtld2lzZS4KCShoaWdoZXN0X3BvdzJfZmFjdG9yX2Zvcl90YXJnZXQpOiBMaWtld2lzZS4KCSogZ2ltcGxpZnkuYyAoY2Fub25pY2FsaXplX2FkZHJfZXhwcik6IExpa2V3aXNlLgoJKGdpbXBsaWZ5X2NvbXBvdW5kX2x2YWwpOiBMaWtld2lzZS4KCSogc3Rvci1sYXlvdXQuYyAoZmluYWxpemVfcmVjb3JkX3NpemUsIGZpbmFsaXplX3R5cGVfc2l6ZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1jY3AuYyAobWF5YmVfZm9sZF9vZmZzZXRfdG9fYXJyYXlfcmVmKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSk6IExpa2V3aXNlLgoJKG91dHB1dF9jb25zdGFudF9kZWZfY29udGVudHMpOiBBbGlnbm1lbnRzIGFyZSB1bnNpZ25lZC4KCjIwMDQtMDgtMzEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgkgICAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtY2ZnLmMgKGNmZ19yZW1vdmVfdXNlbGVzc19zdG10c19iYik6IEFsc28gaW52YWxpZGF0ZSBpZiBWQUwKCWdldHMgbW9kaWZpZWQuCgoyMDA0LTA4LTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaG9va3MuYyAoaG9va19ib29sX3ZvaWRfdHJ1ZSk6IE5ldyBmdW5jdGlvbi4KCSogaG9va3MuaCAoaG9va19ib29sX3ZvaWRfdHJ1ZSk6IERlY2xhcmUuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0NYWCk6IEFkZAoJVEFSR0VUX0NYWF9LRVlfTUVUSE9EX01BWV9CRV9JTkxJTkUuCgkqIHRhcmdldC5oIChzdHJ1Y3QgY3h4KTogQWRkIGtleV9tZXRob2RfbWF5X2JlX2lubGluZS4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2N4eF9rZXlfbWV0aG9kX21heV9iZV9pbmxpbmUpOiBOZXcKCWZ1bmN0aW9uLgoJKFRBUkdFVF9DWFhfS0VZX01FVEhPRF9NQVlfQkVfSU5MSU5FKTogTmV3IG1hY3JvLgoJKiBjb25maWcvYXJtL2JwYWJpLmg6IFVzZSBfX1RIVU1CX0lOVEVSV09SS19fIGluc3RlYWQgb2YKCV9fVEhVTUJfSU5URVJXT1JLLgoKMjAwNC0wOC0zMSAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCglQUiB0YXJnZXQvMTU0MTcKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX2hhcmRfcmVnbm9fbW9kZV9vayk6IEVuYWJsZSB1c2FnZSBvZgoJZnJhbWUgcG9pbnRlciByZWdpc3RlciBvbmx5IGluIFBtb2RlIHdoaWxlIHJlbG9hZCBpbiBwcm9ncmVzcy4KCjIwMDQtMDgtMzEgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCVBSIHRhcmdldC8xNTMzNAoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKG02OGhjMTFfb3ZlcnJpZGVfb3B0aW9ucyk6IERpc2FibGUgLWZ3ZWIKCWJlY2F1c2UgaXQgYnJlYWtzIHRoZSAzMi1iaXQgc2hpZnQgcGF0dGVybnMgdGhhdCByZWx5IG9uIGEgbWF0Y2hfZHVwLgoKMjAwNC0wOC0zMSAgTWF0dCBBdXN0ZXJuICA8YXVzdGVybkBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKGRhcndpbl9tYWtlX2RlY2xfb25lX29ubHkpOiBBbGxvY2F0ZSBzZWN0aW9uCgluYW1lcyBvbmNlIHBlciBjb21waWxhdGlvbiwgaW5zdGVhZCBvZiBvbmNlIHBlciBzeW1ib2wuCgoyMDA0LTA4LTMxICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGJ1aWxkX3N1YmRpcik6IE5ldyBzdWJzdGl0dXRpb24uCgkoZml4aW5jLnNoKTogU2ltcGxpZnkgaGVhdmlseSBzaW5jZSBmaXhpbmNsdWRlcyBpcyBhbHJlYWR5IGJ1aWx0LgoJKHN0bXAtZml4aW5jKTogRGVwZW5kIG9uIHNwZWNzLnJlYWR5LgoJKGluc3RhbGwtbWtoZWFkZXJzKTogVXNlIG5ldyBsb2NhdGlvbiBvZiBmaXhpbmNsdWRlcy4KCShjbGVhbik6IERvIG5vdCBkZXNjZW5kIGludG8gZml4aW5jLgoJKEZPUkJVSUxEKTogUmVwbGFjZSB3aXRoIC4uLyQoYnVpbGRfc3ViZGlyKS4KCSogY29uZmlndXJlLmFjIChidWlsZF9zdWJkaXIpOiBTdWJzdGl0dXRlLgoJKEZPUkJVSUxEKTogRG8gbm90IHNldC4KCShhbGxfb3V0cHV0cyk6IFJlbW92ZSBmaXhpbmMvTWFrZWZpbGUuCgkoZGVmYXVsdCBjb21tYW5kcyk6IERvIG5vdCBjcmVhdGUgbGlua3MgaW4gZml4aW5jLgoJKiBta2ZpeGluYy5zaDogTmV3LCBmcm9tIGZpeGluYy9ta2ZpeGluYy5zaCB3aXRob3V0Cgl0aGUgZml4aW5jbHVkZXMgY29uZmlndXJhdGlvbiBzdGVwcyBhbmQgc3Vic3RpdHV0aW5nCglARklYSU5DTEAgaW4gZml4aW5jLmluLgoJKiBmaXhpbmMuaW46IE5ldywgZnJvbSBmaXhpbmMvZml4aW5jbC5zaC4KCgkqIGZpeGluYy8qOiBSZW1vdmVkLgoKMjAwNC0wOC0zMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBhdHRyaWJzLmMgKHN0cmlwX2F0dHJzKTogUmVtb3ZlLgoJKHNwbGl0X3NwZWNzX2F0dHJzKTogTW92ZSAuLi4KCSogYy1kZWNsLmM6IC4uLiB0byBoZXJlLgoJKiB0cmVlLmggKHNwbGl0X3NwZWNzX2F0dHJzLCBzdHJpcF9hdHRycyk6IFJlbW92ZS4KCSogYy10cmVlLmggKHNwbGl0X3NwZWNzX2F0dHJzKTogRGVjbGFyZS4KCjIwMDQtMDgtMzEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHJlYWQtcnRsLmM6IERpc2FibGUgUlRMIGNoZWNraW5nLgoJKGFwcGx5X21hY3JvX3RvX3J0eCk6IFVzZSBYVE1QTCB0byBhY2Nlc3MgJ1QnIGZpZWxkcy4KCjIwMDQtMDgtMzEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGZjb25kKTogTmV3IGNvZGUgbWFjcm8gYW5kIGF0dHJpYnV0ZS4KCShzdW5vcmRlcmVkX1tzZF1mLCBzdW5lcV9bc2RdZiwgc3VubHRfW3NkXWYsIHN1bmxlX1tzZF1mKQoJKHNlcV9bc2RdZiwgc2x0X1tzZF1mLCBzbGVfW3NkXWYpOiBSZWRlZmluZSB1c2luZyA6U0NBTEFSRiBhbmQgZmNvbmQuCgkoc2d0X1tzZF1mLCBzZ2VfW3NkXWYpOiBSZWRlZmluZSB1c2luZyA6U0NBTEFSRi4KCjIwMDQtMDgtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUmV2ZXJ0OgoJMjAwNC0wOC0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTY1OTAKCSogZ2NzZS5jIChwcmVfZGVsZXRlKTogRG8gbm90IGNyZWF0ZSBpbnZhbGlkIFJFR19FUVVBTCBub3Rlcy4KCjIwMDQtMDgtMzAgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGhhcmQtcmVnLXNldC5oOgoJcy9IT1NUX0JJVFNfUEVSX1dJREVTX0ZBU1RfSU5UL0hPU1RfQklUU19QRVJfV0lERVNUX0ZBU1RfSU5ULgoJKiBDaGFuZ2VMb2c6IEZpeCBwcmV2aW91cyBDaGFuZ2VMb2cgZW50cnkuCgoJUFIgcnRsLW9wdC8xMzk4NwoJKiBjb25maWcuaG9zdCAodXNlX2xvbmdfbG9uZ19mb3Jfd2lkZXN0X2Zhc3RfaW50KTogTmV3LCBkZWZhdWx0IGlzCglvZmYuCgkoaWE2NC0qLWhwdXgqKTogRW5hYmxlIHVzZV9sb25nX2xvbmdfZm9yX3dpZGVzdF9mYXN0X2ludC4KCSogY29uZmlndXJlLmFjOiBJZiB1c2VfbG9uZ19sb25nX2Zvcl93aWRlc3RfZmFzdF9pbnQsIHRoZW4KCWRlZmluZSBVU0VfTE9OR19MT05HX0ZPUl9XSURFU1RfRkFTVF9JTlQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBod2ludC5oIChIT1NUX1dJREVTVF9GQVNUX0lOVCwgSE9TVF9CSVRTX1BFUl9XSURFU1RfRkFTVF9JTlQpOgoJTmV3OiB3aWRlc3QgaW50ZWdlciB0eXBlIHN1cHBvcnRlZCBlZmZpY2llbnRseSBpbiBoYXJkd2FyZSBmb3IgdGhlCglob3N0LgoJKiBzYml0bWFwLmggKFNCSVRNQVBfRUxUX0JJVFMpOiBEZWZpbmUgYmFzZWQgb24KCUhPU1RfQklUU19QRVJfV0lERVNUX0ZBU1RfSU5ULgoJKFNCSVRNQVBfRUxUX1RZUEUpOiBEZWZpbmUgYmFzZWQgb24gSE9TVF9XSURFU1RfRkFTVF9JTlQuCgkqIGhhcmQtcmVnLXNldC5oIChIQVJEX1JFR19FTFRfVFlQRSk6IERlZmluZSBiYXNlZCBvbgoJSE9TVF9XSURFU1RfRkFTVF9JTlQKCWluc3RlYWQgb2YgSE9TVF9XSURFX0lOVC4KCShIQVJEX1JFR19TRVRfTE9OR1MpOiBMaWtld2lzZS4KCShVSE9TVF9CSVRTX1BFUl9XSURFX0lOVCk6IExpa2V3aXNlLgoJQ2hhbmdlIHRoZSBjaGVja3MgZm9yIHRoZSBmYXN0IGNhc2VzIHRvIGJlIGJhc2VkIG9uCglIT1NUX0JJVFNfUEVSX1dJREVTVF9GQVNUX0lOVCBpbnN0ZWFkIG9mIEhPU1RfQklUU19QRVJfV0lERV9JTlQuCgoyMDA0LTA4LTMwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBjZmdjbGVhbnVwLmMgKG1lcmdlX21lbWF0dHJzKTogTG9vayBhdCB0aGUgdmFsdWUgb2YgTUVNX1NJWkUsCglub3QgdGhlIHBvaW50ZXJzLgoKMjAwNC0wOC0zMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUFIgMTI3MzgKCVBSIDE3MjA1CglSYWRhciAzNDYwNTI2CglSYWRhciAzNzc1NzI5CgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFByb2R1Y2UgZXJyb3IgZm9yICdzdGF0aWMnIG9uIGxvY2FsCglmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCjIwMDQtMDgtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGFycmF5X3JlZl9lbGVtZW50X3NpemUpOiBGb3JjZSBhbGlnbmVkX3NpemUgYmFjayB0bwoJc2l6ZXR5cGUuCgkoY29tcG9uZW50X3JlZl9maWVsZF9vZmZzZXQpOiBTaW1pbGFybHkgZm9yIGFsaWduZWRfb2Zmc2V0LgoJKiB0cmVlLmMgKHJlY29tcHV0ZV90cmVlX2ludmFyYW50X2Zvcl9hZGRyX2V4cHIpOiBNYXJrIHJhdwoJbG93LWJvdW5kLCBlbGVtZW50LXNpemUsIGZpZWxkLW9mZnNldCBmaWVsZHMgcmF0aGVyIHRoYW4KCWNvbXB1dGVkIHZhbHVlcy4KCjIwMDQtMDgtMzAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1wYXJzZS5pbiAocGFybWxpc3Rfb3JfaWRlbnRpZmllcnNfMSk6IFJlbW92ZSB1bnJlYWNoYWJsZSBhbmQKCXJlZHVuZGFudCBjb2RlLgoKMjAwNC0wOC0zMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLXRyZWUuaCAoc3RydWN0IGxhbmd1YWdlX2Z1bmN0aW9uKTogQWRkIGFyZ19pbmZvIGVsZW1lbnQuCgkqIGMtZGVjbC5jIChjdXJyZW50X2Z1bmN0aW9uX2FyZ19pbmZvKTogTmV3LgoJKGdyb2tkZWNsYXJhdG9yLCBzdG9yZV9wYXJtX2RlY2xzKTogVXNlIGl0IGluc3RlYWQgb2YKCURFQ0xfQVJHVU1FTlRTLgoJKGNfcHVzaF9mdW5jdGlvbl9jb250ZXh0LCBjX3BvcF9mdW5jdGlvbl9jb250ZXh0KTogU2F2ZSBhbmQKCXJlc3RvcmUgaXQuCgoyMDA0LTA4LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy10eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBEb24ndCBleHBhbmQgQUREUl9FWFBSIG9mIGEKCUNPTVBPTkVOVF9SRUYgdG8gcG9pbnRlciBhcml0aG1ldGljLgoJKiB2YXJhc20uYyAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IEFsbG93ICImKCpjKS5mIiwgZm9yCgljb25zdGFudCAiYyIgYXMgYSB2YWxpZCBjb25zdGFudCBpbml0aWFsaXplci4gIEFsbG93IG5hcnJvd2luZyBvZgoJZGlmZmVyZW5jZXMgYWdhaW5zdCB0aGUgc2FtZSBiYXNlIG9iamVjdCwgZm9yIGFueSBiYXNlIG9iamVjdC4KCjIwMDQtMDgtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByX2FkZHJfZXhwcik6IE5ldy4KCShleHBhbmRfZXhwcl9yZWFsXzEpIDxjYXNlIEFERFJfRVhQUj46IFVzZSBpdC4KCjIwMDQtMDgtMzAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoTUlQU19GUF9DT05ESVRJT05TKTogTmV3IG1hY3JvLgoJKG1pcHNfZnBfY29uZGl0aW9uKTogTmV3IGVudW0uCgkobWlwc19mcF9jb25kaXRpb25zKTogTmV3IGFycmF5LgoJKHByaW50X2ZjY19vcGVyYW5kKTogRGVsZXRlLgoJKHByaW50X29wZXJhbmQpOiBSZW1vdmUgJVYsICV2IGFuZCAlUS4gIFJlZGVmaW5lICVaIHNvIHRoYXQgaXQgcHJpbnRzCgl0aGUgb3BlcmFuZCBhbmQgY29tbWEgaWYgYW5kIG9ubHkgaWYgSVNBX0hBU184Q0MuICBBZGQgJVkuCgkoYnVpbHRpbl9kZXNjcmlwdGlvbik6IEFkZCAiY29uZCIgZmllbGQuCgkoRElSRUNUX0JVSUxUSU4pOiBJbml0aWFsaXplIGl0LgoJKENNUF97U0NBTEFSLFBTLDRTfV9CVUlMVElOUywgTU9WVEZfQlVJTFRJTlMpOiBTcGxpdCBJTlNOIHBhcmFtZXRlcgoJaW50byBJTlNOIGFuZCBDT0RFLiAgSW5pdGlhbGl6ZSB0aGUgImNvbmQiIGZpZWxkLgoJKENNUF9CVUlMVElOUyk6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCShtaXBzX2JkZXNjKTogVXNlIE1JUFNfRlBfQ09ORElUSU9OUyB0byBpbnZva2UgQ01QX0JVSUxUSU5TLgoJKG1pcHNfZXhwYW5kX2J1aWx0aW5fbW92dGYsIG1pcHNfZXhwYW5kX2J1aWx0aW5fY29tcGFyZSk6IFRha2UgdGhlCgltaXBzX2ZwX2NvbmRpdGlvbiBhcyBhcmd1bWVudC4gIE1ha2UgaXQgdGhlIGZpbmFsIG9wZXJhbmQgb2YgdGhlCgljb21wYXJpc29uIGluc3RydWN0aW9uLgoJKG1pcHNfZXhwYW5kX2J1aWx0aW4pOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFVOU1BFQ19DXyosIFVOU1BFQ19DQUJTXyopOiBEZWxldGUuCgkoVU5TUEVDX0MsIFVOU1BFQ19DQUJTKTogTmV3IGNvbnN0YW50cy4gIFNodWZmbGUgb3RoZXJzIHRvIGZpbGwKCXRoZSBnYXBzLgoJKiBjb25maWcvbWlwcy9taXBzLXBzLTNkLm1kIChtaXBzX2NvbmRfbW92ZV90Zl9wcywgYmMxYW55WzI0XVtmdF0pOgoJRG9uJ3QgdXNlIHRoZSAnUScgb3BlcmFuZCBwcmVmaXg7IGp1c3QgcHJpbnQgdGhlIG9wZXJhbmQgbm9ybWFsbHkuCgkobWlwc19jYWJzXyosIG1pcHNfY18qKTogRGVsZXRlLCByZXBsYWNpbmcgd2l0aC4uLgoJKG1pcHNfY19jb25kX3twcyw0c30sIG1pcHNfY2Fic19jb25kX3tzLGQscHMsNHN9KTogLi4udGhlc2UgbmV3CglwYXR0ZXJucy4gIFNwbGl0IHRoZSA0cyB2ZXJzaW9ucyBpbnRvIDIgcHMgcGF0dGVybnMgYWZ0ZXIgcmVsb2FkLgoKMjAwNC0wOC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAodHJlZV9leHByX25vbnplcm9fcCk6IFVzZSBnZXRfYmFzZV9hZGRyZXNzIGJlZm9yZQoJYXNzdW1pbmcgYW4gQUREUl9FWFBSIGlzIG5vbi1udWxsLgoKMjAwNC0wOC0zMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBndGhyLXBvc2l4LmgsIGd0aHItZGNlLmg6IEFkZCAjcHJhZ21hIHdlYWtzLgoKMjAwNC0wOC0zMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFsaWFzLmMgKG1lbXNfaW5fZGlzam9pbnRfYWxpYXNfc2V0c19wLCByZWNvcmRfYWxpYXNfc3Vic2V0LAoJcmVjb3JkX3NldCwgcnR4X2VxdWFsX2Zvcl9tZW1yZWZfcCwgaW5pdF9hbGlhc19hbmFseXNpcyk6IFVzZQoJZ2NjX2Fzc2VydCBhbmQgZ2NjX3VucmVhY2hhYmxlIGluc3RlYWQgb2YgYWJvcnQuCgkqIGFsbG9jLXBvb2wuYyAoYWJvcnQsIGZhbmN5X2Fib3J0KTogUmVtb3ZlLgoJKGNyZWF0ZV9hbGxvY19wb29sLCBmcmVlX2FsbG9jX3Bvb2wsIHBvb2xfYWxsb2MsIHBvb2xfZnJlZSk6IFVzZQoJZ2NjX2Fzc2VydCBvciBnY2NfdW5yZWFjaGFibGUuCgkqIGF0dHJpYnMuYyAoaW5pdF9hdHRyaWJ1dGVzLCBkZWNsX2F0dHJpYnV0ZXMpOiBMaWtld2lzZS4KCSogYmItcmVvcmRlci5jIChGUkVFLCBmaW5kX3RyYWNlc18xX3JvdW5kLCBjb3B5X2JiLAoJbWFya19iYl9mb3JfdW5saWtlbHlfZXhlY3V0ZWRfc2VjdGlvbiwKCWFkZF9sYWJlbHNfYW5kX21pc3NpbmdfanVtcHMsIGZpeF9jcm9zc2luZ19jb25kaXRpb25hbF9icmFuY2hlcywKCWZpeF9jcm9zc2luZ191bmNvbmRpdGlvbmFsX2JyYW5jaGVzKTogTGlrZXdpc2UuCgkqIGJpdG1hcC5jIChiaXRtYXBfZmlyc3Rfc2V0X2JpdCwgYml0bWFwX2xhc3Rfc2V0X2JpdCwKCWJpdG1hcF9vcGVyYXRpb24pOiBMaWtld2lzZS4KCSogYnQtbG9hZC5jIChpbnNuX3NldHNfYnRyX3AsIGF1Z21lbnRfbGl2ZV9yYW5nZSwKCW1vdmVfYnRyX2RlZik6IExpa2V3aXNlLgoJKiBidWlsdGlucy5jIChjX3JlYWRzdHIsIGV4cGFuZF9idWlsdGluX2xvbmdqbXAsIGFwcGx5X2FyZ3Nfc2l6ZSwKCWFwcGx5X3Jlc3VsdF9zaXplLCBleHBhbmRfYnVpbHRpbl9hcHBseSwgZXhwYW5kX2J1aWx0aW5fbWF0aGZuLAoJZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzIsIGV4cGFuZF9idWlsdGluX21hdGhmbl8zLAoJYnVpbHRpbl9tZW1jcHlfcmVhZF9zdHIsIGV4cGFuZF9tb3ZzdHIsIGV4cGFuZF9idWlsdGluX3N0cGNweSwKCWV4cGFuZF9idWlsdGluX21lbWNtcCwgZXhwYW5kX2J1aWx0aW5fYXJnc19pbmZvLAoJc3RkX2dpbXBsaWZ5X3ZhX2FyZ19leHByLCBleHBhbmRfYnVpbHRpbl91bm9wLAoJZXhwYW5kX2J1aWx0aW5fZnB1dHMsIGV4cGFuZF9idWlsdGluX3Byb2ZpbGVfZnVuYywKCWV4cGFuZF9idWlsdGluX2Zvcmtfb3JfZXhlYywgZm9sZF9idWlsdGluX2JpdG9wLAoJZm9sZF9idWlsdGluX2NsYXNzaWZ5LCBmb2xkX2J1aWx0aW5fZnB1dHMpOiBMaWtld2lzZS4KCjIwMDQtMDgtMzAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY292LWlvLmMgKEdDT1ZfQ0hFQ0spOiBVc2UgZ2NjX2Fzc2VydCB3aGVuIGF2YWlsYWJsZS4KCSogZ2Nvdi5jIChhYm9ydCk6IFJlbW92ZSB1bmRlZi4KCgkqIHRyZWUuaCAoQklORk9fUFJJTUFSWV9CQVNFX09GKTogUmVtb3ZlLgoJKHN0cnVjdCB0cmVlX2JpbmZvKTogUmVtb3ZlIHByaW1hcnkgZmllbGQuCgoyMDA0LTA4LTMwICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogZml4aW5jL01ha2VmaWxlLmluIChtYWNobmFtZS5oKTogUmVtb3ZlLgoJKGZpeGluY2wueCk6IERvIG5vdCBwYXNzICRAIHRvIGdlbmZpeGVzLgoJKiBmaXhpbmMvZ2VuZml4ZXM6IFJlbW92ZSBjb2RlIHRvIHByb2R1Y2UgbWFjaG5hbWUuaC4KCSogZml4aW5jL2ZpeGluY2wuc2g6IE1vdmUgaXQgaGVyZSBpbnN0ZWFkLgoJKiBmaXhpbmMvZml4bGliLmM6IERvIG5vdCBjb25kaXRpb25hbGl6ZSBvbiBNTl9OQU1FX1BBVCdzIHByZXNlbmNlLAoJaW5zdGVhZCBjaGVjayBpZiBwel9tbl9uYW1lX3BhdCBpcyBOVUxMLiAgTWFrZSBtbl9nZXRfcmVnZXhwcwoJcmV0dXJuIGEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgcHpfbW5fbmFtZV9wYXQgaXMgTlVMTC4KCSogZml4aW5jL2ZpeGxpYi5oOiBEbyBub3QgY29uZGl0aW9uYWxpemUgb24gTU5fTkFNRV9QQVQncyBwcmVzZW5jZS4KCURlY2xhcmUgZXh0ZXJuIEMgdmFyaWFibGVzIGZvciB0aGUgRU5WX1RBQkxFLgoJKiBmaXhpbmMvZml4Zml4ZXMuYzogRG8gbm90IGNvbmRpdGlvbmFsaXplIG9uIE1OX05BTUVfUEFUJ3MgcHJlc2VuY2UsCglpbnN0ZWFkIHVzZSB0aGUgcmVzdWx0IG9mIG1uX2dldF9yZWdleHBzLgoJKiBmaXhpbmMvZml4dGVzdHMuYzogTGlrZXdpc2UuCgoyMDA0LTA4LTMwICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29uZmlndXJlLmFjOiBEbyBub3QgcnVuIGZpeGluY2x1ZGVzIGFmdGVyIHN0YWdlMSBkdXJpbmcKCXRvcGxldmVsIGJvb3RzdHJhcC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wOC0zMCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBzY2hlZC1kZXBzLmMgKGdldF9jb25kaXRpb24pOiBQYXJ0aWFsbHkgcmV2ZXJ0IHByZXZpb3VzLCBieSBuZXZlcgoJdHJ5aW5nIHRvIGV4dHJhY3QgdGhlIGNvbmRpdGlvbiBmcm9tIGEgY29uZGp1bXAuCgoyMDA0LTA4LTMwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYyAoY19zaXplb2Zfb3JfYWxpZ25vZl90eXBlKTogVXNlIGdjY19hc3NlcnQuCgkoaGFuZGxlX3Zpc2liaWxpdHlfYXR0cmlidXRlLCBjX2RldGVybWluZV92aXNpYmlsaXR5KTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmggKG15X2ZyaWVuZGx5X2Fzc2VydCk6IFJlbW92ZS4KCjIwMDQtMDgtMzAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFVOU1BFQ197UlNRUlQsUkVDSVB9WzEyXV97UyxELFBTfSk6IERlbGV0ZS4KCShVTlNQRUNfe1JTUVJULFJFQ0lQfVsxMl0pOiBOZXcgY29uc3RhbnRzLgoJKFVOU1BFQ19NT1ZFX1RGX1BTKTogUmVudW1iZXIgdG8gYXZvaWQgZ2Fwcy4KCSogY29uZmlnL21pcHMvbWlwcy1wcy0zZC5tZCAoKm1vdmNjX3Yyc2ZfW3NkXWkpOiBVc2UgOkdQUi4KCShtaXBzX3tyc3FydCxyZWNpcH1bMTJdX3tzLGQscHN9KTogVXNlIDpBTllGLgoKMjAwNC0wOC0zMCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IEhhbmRsZSBWQUxVRV9IQU5ETEUKCWluIENPTVBPTkVOVF9SRUYgbm9kZXMuCgoyMDA0LTA4LTI5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglQUiBjKysvMTUzNzgKCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiA8Y2FzZSBPUFRfV2Vycm9yPiBzZXQKCWdsb2JhbF9kYy0+d2FybmluZ19hc19lcnJvcl9yZXF1ZXN0ZWQuCgkqIGRpYWdub3N0aWMuYyAoZGlhZ25vc3RpY19pbml0aWFsaXplKTogVGlkeS4KCSogZGlhZ25vc3RpYy5oIChkaWFnbm9zdGljX2NvbnRleHQ6OnhfZGF0YSk6IFJlbW92ZQoJKGRpYWdub3N0aWNfY29udGV4dDo6aXNzdWVfd2FybmluZ3NfYXJlX2Vycm9yc19tZXNzYWdlKTogUmVuYW1lCglmcm9tIHdhcm5pbmdzX2FyZV9lcnJvcnNfbWVzc2FnZS4KCShkaWFnbm9zdGljX2NvbnRleHQ6Ondhcm5pbmdfYXNfZXJyb3JfcmVxdWVzdGVkKTogTmV3LgoKMjAwNC0wOC0zMCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBzY2hlZC1kZXBzLmMgKGdldF9jb25kaXRpb24pOiBGaXggYnJlYWthZ2UgaW4gcHJldmlvdXMgcGF0Y2guCgoyMDA0LTA4LTMwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aTogRml4IGJyb2tlbiBtcGZyIGxpbmsuCgoyMDA0LTA4LTI5ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChMSU5LX09TX0ZSRUVCU0RfU1BFQyk6IFN5bmMgJy1wJyBoYW5kbGluZyB3aXRoCglvdGhlciBGcmVlQlNEIHBsYXRmb3Jtcy4KCjIwMDQtMDgtMjkgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmggKFJFVkVSU0VfQ09ORElUSU9OKTogRGVmaW5lLgoJKFJFVkVSU0lCTEVfQ0NfTU9ERSk6IEFsbCBjb21wYXJpc29ucyBhcmUgbm93IHJldmVyc2libGUuCgoyMDA0LTA4LTI5ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGZsb3cuYyAoUkVWRVJTRV9DT05ERVhFQ19QUkVESUNBVEVTX1ApOiBVc2UgdGhlIHdob2xlIGNvbXBhcmlzb24sIG5vdAoJanVzdCB0aGUgY29kZXMsIGNhbGwgcmV2ZXJzZWRfY29tcGFyaXNvbl9jb2RlICgpLgoJKGlvcl9yZWdfY29uZCk6IFVwZGF0ZSBhcmd1bWVudHMgdG8gUkVWRVJTRV9DT05ERVhFQ19QUkVESUNBVEVTX1AuCgkobm90X3JlZ19jb25kKTogVXNlIHJldmVyc2VkX2NvbXBhcmlzb25fY29kZS4KCShhbmRfcmVnX2NvbmQpOiBMaWtld2lzZS4KCSogaWZjdnQuYyAoY29uZF9leGVjX3Byb2Nlc3NfaWZfYmxvY2spOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGkgKFJFVkVSU0VfQ09OREVYRUNfUFJFRElDQVRFU19QKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgoyMDA0LTA4LTI5ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIHNjaGVkLWRlcHMuYyAoZ2V0X2NvbmRpdGlvbik6IFJld3JpdGUgdXNpbmcganVtcCBzdXBwb3J0IGZ1bmN0aW9ucy4KCVVzZSByZXZlcnNlZF9jb21wYXJpc29uX2NvZGUuCgkoY29uZGl0aW9uc19tdXRleF9wKTogVXNlIHJldmVyc2VkX2NvbXBhcmlzb25fY29kZS4KCjIwMDQtMDgtMjkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IERpc2FibGUgaG90L2NvbGQgcGFydGl0aW9uaW5nCglmb3IgTUlQUzE2LgoKMjAwNC0wOC0yOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChtaXBzX2J1aWx0aW5zLCBtaXBzX2NtcF9jaG9pY2UpOiBEZWxldGUuCgkobWlwc19mdW5jdGlvbl90eXBlKTogTW92ZSB0byBtaXBzLmMuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19idWlsdGluX3R5cGUpOiBOZXcgZW51bS4KCShidWlsdGluX2Rlc2NyaXB0aW9uKTogUmVwbGFjZSBjb2RlIGFuZCBmdHlwZSB3aXRoIGJ1aWx0aW5fdHlwZQoJYW5kIGZ1bmN0aW9uX3R5cGUuCgkoRElSRUNUX0JVSUxUSU4sIENNUF9TQ0FMQVJfQlVJTFRJTlMsIENNUF9QU19CVUlMVElOUywgQ01QXzRTX0JVSUxUSU5TKQoJKE1PVlRGX0JVSUxUSU5TLCBDTVBfQlVJTFRJTlMpOiBOZXcgbWFjcm9zLgoJKENPREVfRk9SX21pcHNfYWJzX3BzKTogRGVmaW5lLgoJKG1pcHNfYmRlc2MpOiBVc2UgbmV3IG1hY3Jvcy4KCShtaXBzX2V4cGFuZF9idWlsdGluKTogVXNlIGJ1aWx0aW5fdHlwZS4gIFVwZGF0ZSBjYWxscyB0byBzdWJyb3V0aW5lcy4KCShtaXBzX2luaXRfYnVpbHRpbnMpOiBVc2UgdGhlIG1pcHNfYmRlc2NbXSBpbmRleCBhcyB0aGUgZnVuY3Rpb24gY29kZS4KCShtaXBzX2V4cGFuZF9idWlsdGluX2RpcmVjdCk6IE5ldyBmdW5jdGlvbi4KCShtaXBzX2V4cGFuZF9idWlsdGluX21vdnRmKTogUmVuYW1lZCBmcm9tIG1pcHNfZXhwYW5kX3BzX2NvbmRfbW92ZV8KCWJ1aWx0aW4uICBSZXBsYWNlIGJvb2xlYW4gcGFyYW1ldGVyIHdpdGggYnVpbHRpbl90eXBlLgoJKG1pcHNfZXhwYW5kX2NvbXBhcmVfYnVpbHRpbiwgbWlwc19leHBhbmRfc2NhbGFyX2NvbXBhcmVfYnVpbHRpbikKCShtaXBzX2V4cGFuZF80c19jb21wYXJlX2J1aWx0aW4pOiBEZWxldGUsIHJlcGxhY2luZyB3aXRoLi4uCgkobWlwc19leHBhbmRfYnVpbHRpbl9jb21wYXJlKTogLi4udGhpcyBuZXcgZnVuY3Rpb24uCgoyMDA0LTA4LTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTY1OTAKCSogZ2NzZS5jIChwcmVfZGVsZXRlKTogRG8gbm90IGNyZWF0ZSBpbnZhbGlkIFJFR19FUVVBTCBub3Rlcy4KCjIwMDQtMDgtMjkgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtY2NwLmMgKGNjcF92aXNpdF9zdG10KTogUmVtb3ZlICNpZiAwIGd1YXJkcy4KCSogdHJlZS1zc2EtcHJvcGFnYXRlLmM6IEZpeCBkb2N1bWVudGF0aW9uLgoKMjAwNC0wOC0yOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKm1vdltzZF1mX29uXyopOiBSZWRlZmluZSB1c2luZyA6U0NBTEFSRi4KCShtb3Zbc2RdZmNjKTogTGlrZXdpc2UuCgoyMDA0LTA4LTI5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChjbXBbc2RdZik6IFJlZGVmaW5lIHVzaW5nIDpTQ0FMQVJGLgoKMjAwNC0wOC0yOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZGl2aWRlX2NvbmRpdGlvbik6IE5ldyBtb2RlIGF0dHJpYnV0ZS4KCShkaXZbc2RdZjMsICpkaXZbc2RdZjMpOiBVc2UgaXQuICBSZWRlZmluZSB1c2luZyA6U0NBTEFSRi4KCShzcXJ0W3NkXWYzKTogUmVkZWZpbmUgdXNpbmcgU0NBTEFSRi4KCSgqcmVjaXBbc2RdZjMsICpyc3FydDxtb2RlPlthYl0pOiBMaWtld2lzZS4gIE5hbWUgZm9ybWVybHkgdW5uYW1lZAoJcGF0dGVybnMuCgoyMDA0LTA4LTI5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChBTllGLCBTQ0FMQVJGKTogTmV3IG1vZGUgbWFjcm9zLgoJKGxvYWR4LCBzdG9yZXgsIGZtdCwgVU5JVE1PREUpOiBOZXcgbW9kZSBhdHRyaWJ1dGVzLgoJKGFkZHtzZixkZix2MnNmfTMsIHN1YntzZixkZix2MnNmfTMpOiBSZWRlZmluZSB1c2luZyA6QU5ZRi4KCShtdWxbc2RdZjMpOiBSZWRlZmluZSB1c2luZyA6U0NBTEFSRi4KCSgqbXVsW3NkXWYzKTogUmVuYW1lZCBmcm9tIG11bFtzZF1mM19pbnRlcm5hbC4gIFVzZSA6U0NBTEFSRi4KCSgqbXVsW3NkXTNfcjQzMDApOiBMaWtld2lzZSBtdWxbc2RdZjNfcjQzMDAuCgkoKm17YWRkLHN1Yn17c2YsZGYsdjJzZn0zKTogTmFtZSBmb3JtZXJseSB1bm5hbWVkIHBhdHRlcm5zLiAgVXNlIDpBTllGLgoJQ2hlY2sgVEFSR0VUX0ZVU0VEX01BREQgZm9yIFYyU0YgdG9vLgoJKCpubXthZGQsc3VifXtzZixkZix2MnNmfTN7LF9mYXN0bWF0aH0pOiBMaWtld2lzZSwgZXhjZXB0IHYyc2YgcGF0dGVybnMKCXdlcmUgYWxyZWFkeSBuYW1lZC4KCShhYnN7c2YsZGYsdjJzZn0zLCBuZWd7c2YsZGYsdjJzZn0zKTogUmVkZWZpbmUgdXNpbmcgOkFOWUYuCgkoKltzbF1bd2RdeGMxX1tzZF1pKTogUmVkZWZpbmUgdXNpbmcgOkFOWUYuCgoyMDA0LTA4LTI5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfaW5pdF9idWlsdGlucyk6IFNpbXBsaWZ5LiAgT25seSBjcmVhdGUKCVYyU0ZfdHlwZV9ub2RlIGlmIGl0IHdpbGwgYmUgbmVlZGVkLgoKMjAwNC0wOC0yOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChNSVBTX0NNUF9NT1ZULCBNSVBTX0NNUF9NT1ZGKTogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcHJlcGFyZV9idWlsdGluX2FyZyk6IE5ldyBmdW5jdGlvbi4KCShtaXBzX3ByZXBhcmVfYnVpbHRpbl90YXJnZXQpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19leHBhbmRfYnVpbHRpbik6IFVzZSB0aGVtLiAgVXBkYXRlIGNhbGxzIHRvIHN1YnJvdXRpbmVzLgoJKG1pcHNfZXhwYW5kX3BzX2NvbmRfbW92ZV9idWlsdGluKTogVXNlIHRoZSBuZXcgZnVuY3Rpb25zLiAgUmVwbGFjZQoJY21wX2Nob2ljZSB3aXRoIGEgYm9vbGVhbiBhcmd1bWVudCB0byBzZWxlY3QgYmV0d2VlbiBtb3Z0IGFuZCBtb3ZmLgoJVGFrZSB0aGUgY29tcGFyaXNvbidzIGljb2RlIGFzIGFuIGFyZ3VtZW50LCBub3QgdGhlIGZ1bmN0aW9uJ3MgZmNvZGUuCgkobWlwc19leHBhbmRfY29tcGFyZV9idWlsdGluKTogTmV3IGZ1bmN0aW9uLiAgUmVuYW1lIGV4aXN0aW5nIGZ1bmN0aW9uCgl0byBtaXBzX2V4cGFuZF9zY2FsYXJfY29tcGFyZV9idWlsdGluLgoJKG1pcHNfZXhwYW5kX3NjYWxhcl9jb21wYXJlX2J1aWx0aW4sIG1pcHNfZXhwYW5kXzRzX2NvbXBhcmVfYnVpbHRpbikKCShtaXBzX2V4cGFuZF9wc19jb21wYXJlX2J1aWx0aW4pOiBVc2UgdGhlIG5ldyBmdW5jdGlvbnMuICBUYWtlIHRoZQoJY29tcGFyaXNvbidzIGljb2RlIGFzIGFuIGFyZ3VtZW50LCBub3QgdGhlIGJ1aWx0aW4ncyBmY29kZS4KCjIwMDQtMDgtMjkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAocHJpbnRfb3BlcmFuZCk6IFJlbW92ZSAnJVknIGFuZCAnJXknLgoJKG1pcHNfZXhwYW5kXzRzX2NvbXBhcmVfYnVpbHRpbik6IFJlZGVmaW5lIENDVjQgdG8gYmUgMCBpZiBhbGwKCXJlZ2lzdGVycyBhcmUgZmFsc2UgYW5kIC0xIGlmIGFsbCByZWdpc3RlcnMgYXJlIHRydWUuCgkobWlwc19leHBhbmRfcHNfY29tcGFyZV9idWlsdGluKTogTGlrZXdpc2UgQ0NWMi4gIFVzZSBzdWJyZWdzIGZvcgoJTUlQU19DTVBfVVBQRVIgYW5kIE1JUFNfQ01QX0xPV0VSLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChtaXBzX2NvbmRfbW92ZV90Zl9wcyk6IFVzZSAlUSByYXRoZXIgdGhhbiAleS4KCShiYzFhbnk0dCwgYmMxYW55NGYpOiBBZGp1c3QgZm9yIG5ldyBDQ1Y0IGludGVycHJldGF0aW9uLgoJKGJjMWFueTJ0LCBiYzFhbnkyZik6IExpa2V3aXNlIENDVjIuCgkoYmMxdXBwZXIydCwgYmMxbG93ZXIydCwgYmMxdXBwZXIyZiwgYmMxbG93ZXIyZik6IERlbGV0ZS4KCjIwMDQtMDgtMjkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFVOU1BFQ19NT1ZFX1RGX1BTKTogTmV3LgoJKiBjb25maWcvbWlwcy9taXBzLXBzLTNkLm1kIChtaXBzX2NvbmRfbW92ZV90Zl9wcyk6IEV4cHJlc3MgYXMgYW4KCVVOU1BFQyByYXRoZXIgdGhhbiBhbiBJRl9USEVOX0VMU0UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19leHBhbmRfcHNfY29uZF9tb3ZlX2J1aWx0aW4pOiBFbWl0CgltaXBzX2NvbmRfbW92ZV90Zl9wcyBieSBuYW1lLgoKMjAwNC0wOC0yOSAgQ2hhby15aW5nIEZ1ICA8ZnVAbWlwcy5jb20+CgkgICAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy1tb2Rlcy5kZWYgKFYyU0YsIENDVjIsIENDVjQpOiBOZXcgbW9kZXMuIEdpdmUgQ0NWMgoJOCBieXRlIHNpemUgYW5kIGFsaWdubWVudC4gIEdpdmUgQ0NWNCAxNiBieXRlIHNpemUgYW5kIGFsaWdubWVudC4KCSogY29uZmlnL21pcHMvbWlwcy1wcy0zZC5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoVEFSR0VUX1ZFQ1RPUl9NT0RFX1NVUFBPUlRFRF9QLAoJVEFSR0VUX0lOSVRfQlVJTFRJTlMsIFRBUkdFVF9FWFBBTkRfQlVJTFRJTik6IERlZmluZS4KCShtaXBzX2NvbnN0X2luc25zKTogSGFuZGxlIENPTlNUX1ZFQ1RPUiB0aGUgc2FtZSBhcyBDT05TVF9ET1VCTEUuCgkobWlwc19vdXRwdXRfbW92ZSk6IEVtaXQgIm1vdi5wcyIgZm9yIFYyU0Ztb2RlLgoJKG1pcHNfYXJnX2luZm8pOiBBZGQgY2hlY2tzIGZvciBWRUNUT1JfRkxPQVRfVFlQRV9QIGFuZAoJTU9ERV9WRUNUT1JfRkxPQVQuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IENoZWNrIGlmIFRBUkdFVF9NSVBTM0QgYW5kIHRoZXJlIHdhcyBhbiBleHBsaWNpdAoJIVRBUkdFVF9QQUlSRURfU0lOR0xFX0ZMT0FULiAgU2V0IE1BU0tfUEFJUkVEX1NJTkdMRSwgaWYgVEFSR0VUX01JUFMzRC4KCUNoZWNrIGlmIFRBUkdFVF9GTE9BVDY0IGFuZCBUQVJHRVRfSEFSRF9GTE9BVCBhcmUgYm90aCB0cnVlLCB3aGVuCglUQVJHRVRfUEFJUkVEX1NJTkdMRV9GTE9BVCBpcyB0cnVlLiAgQ2hlY2sgaWYgdGhlIElTQSBzdXBwb3J0cwoJVEFSR0VUX1BBSVJFRF9TSU5HTEVfRkxPQVQuICBBbGxvdyBNT0RFX1ZFQ1RPUl9GTE9BVCBpbiBmcCByZWdpc3RlcnMsCglhbmQgYWxsb3cgQ0NWMiBhbmQgQ0NWNCB0byBvY2N1cHkgdHdvIGFuZCBmb3VyIENDIHJlZ2lzdGVycy4KCShwcmludF9mY2Nfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9vcGVyYW5kKTogQWRkICVZLCAleSwgJVYsICV2LCAlUSBmb3IgQ0NWMiwgQ0NWNCwgQ0MuICBNb2RpZnkKCSVaIHRvIGNhbGwgcHJpbnRfZmNjX29wZXJhbmQuCgkobWlwc19mdW5jdGlvbl92YWx1ZSk6IEhhbmRsZSBNT0RFX1ZFQ1RPUl9GTE9BVC4KCShtaXBzX2NsYXNzX21heF9ucmVncyk6IENoZWNrIGZvciBTVF9SRUdTLCBhbmQgaGFuZGxlIENDbW9kZXMuCgkobWlwc192ZWN0b3JfbW9kZV9zdXBwb3J0ZWRfcCk6IE5ldyBmdW5jdGlvbi4KCShtaXBzX2hhcmRfcmVnbm9fbnJlZ3MpOiBDaGVjayBmb3IgU1RfUkVHX1AsIGFuZCBoYW5kbGUgQ0Ntb2Rlcy4KCShidWlsdGluX2Rlc2NyaXB0aW9uKTogTmV3IHN0cnVjdC4KCShtaXBzX2JkZXNjKTogTmV3IGFycmF5IG9mIHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uLgoJKG1pcHNfZXhwYW5kX2J1aWx0aW4sIG1pcHNfaW5pdF9idWlsdGlucywKCW1pcHNfZXhwYW5kX3BzX2NvbmRfbW92ZV9idWlsdGluLCBtaXBzX2V4cGFuZF80c19jb21wYXJlX2J1aWx0aW4sCgltaXBzX2V4cGFuZF9jb21wYXJlX2J1aWx0aW4sIG1pcHNfZXhwYW5kX3BzX2NvbXBhcmVfYnVpbHRpbik6IE5ldwoJZnVuY3Rpb25zLgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1BU0tfUEFJUkVEX1NJTkdMRSwgTUFTS19NSVBTM0QpOiBOZXcgZGVmaW5lcy4KCShUQVJHRVRfUEFJUkVEX1NJTkdMRV9GTE9BVCwgVEFSR0VUX01JUFMzRCk6IE5ldyBkZWZpbmVzLgoJKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogQWRkIF9fbWlwc19wYWlyZWRfc2luZ2xlX2Zsb2F0LgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZGVkICItbXBhaXJlZC1zaW5nbGUiLCAiLW1uby1wYWlyZWQtc2luZ2xlIiwKCSItbWlwczNkIiwgYW5kICItbW5vLW1pcHMzZCIuCgkoQVNNX1NQRUMpOiBNYXAgLW1pcHMzZCB0byAtbWlwczNkIGluIGdhcy4KCShFWFRSQV9DT05TVFJBSU5UX1kpOiBOZXcgbWFjcm8uCgkoRVhUUkFfQ09OU1RSQUlOVF9TVFIpOiBSZW5hbWVkIGZyb20gRVhUUkFfQ09OU1RSQUlOVC4gIEFkZCBuZXcKCW11bHRpLWxldHRlciBjb25zdHJhaW50ICdZJy4KCShDT05TVFJBSU5UX0xFTik6IE5ldyBtYWNyby4KCShlbnVtIG1pcHNfYnVpbHRpbnMpOiBOZXcgZm9yIE1JUFMgYnVpbHRpbiBmdW5jdGlvbnMuCgkoZW51bSBtaXBzX2Z1bmN0aW9uX3R5cGUpOiBOZXcgZm9yIHRoZSB0eXBlcyBvZiBNSVBTIGJ1aWx0aW4gZnVuY3Rpb25zLgoJKGVudW0gbWlwc19jbXBfY2hvaWNlKTogTmV3IGZvciB0aGUgTUlQUyBjb21wYXJpc29uIGJ1aWx0aW4gZnVuY3Rpb25zLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBOZXcgY29uc3RhbnRzIGZvciBwYWlyZWQgc2luZ2xlIGFuZCBNSVBTLTNECglpbnN0cnVjdGlvbnMuICBJbmNsdWRlIHRoZSBuZXcgbWlwcy1wcy0zZC5tZCBmaWxlLgoJKGFkZHYyc2YzLCBzdWJ2MnNmMywgbXVsdjJzZjMsIGFic3Yyc2YyLCBuZWd2MnNmMiwgbW92djJzZiwKCW1vdnYyc2ZfaGFyZGZsb2F0XzY0Yml0KTogTmV3IG5hbWVkIHBhdHRlcm5zLgoJKG1hZGQucHMsIG1zdWIucHMsIG5tYWRkdjJzZiwgbm1hZGR2MnNmX2Zhc3RtYXRoLCBubXN1YnYyc2YsCglubXN1YnYyc2ZfZmFzdG1hdGgsIGxkeGMxX3Yyc2Zfc2ksIGxkeGMxX3Yyc2ZfZGksIHNkeGMxX3Yyc2Zfc2ksCglzZHhjMV92MnNmX2RpKTogTmV3IHVubmFtZWQgcGF0dGVybnMuCgkqIGNvbmZpZy9taXBzL3ByZWRpY2F0ZXMubWQgKGNvbnN0XzBfb3BlcmFuZCwgY29uc3RfMV9vcGVyYW5kKTogQWRkCgljb25zdF92ZWN0b3Igc3VwcG9ydC4KCShjb25zdF8wX29yXzFfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGUuCgkqIGRvYy9pbnZva2UudGV4aSAoTUlQUyBPcHRpb25zKTogQWRkIC1tcGFpcmVkLXNpbmdsZSBhbmQgLW1pcHMzZC4KCjIwMDQtMDgtMjkgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMtY29tbW9uKTogQWRkIHRyZWUtc3NhLXByb3BhZ2F0ZS5vCgkodHJlZS1zc2EtcHJvcGFnYXRlLm8pOiBOZXcgcnVsZS4KCShHVEZJTEVTKTogQWRkIHRyZWUtc3NhLXByb3BhZ2F0ZS5jLgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IHN0bXRfYW5uX2QpOiBSZW1vdmUgZmllbGQKCWluX2NjcF93b3JrbGlzdC4KCSogdHJlZS1zc2EtcHJvcGFnYXRlLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS1wcm9wYWdhdGUuaDogTmV3IGZpbGUuCgkqIHRyZWUtc3NhLWNjcC5jOiBSZS13cml0ZSB0byB1c2UgdGhlIHJvdXRpbmVzIGZyb20KCXRyZWUtc3NhLXByb3BhZ2F0ZS5jLgoKMjAwNC0wOC0yOCAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogdHJlZS1zc2EtbG9vcC5jOiBSZW1vdmUgZXh0cmEgaW5jbHVkZSBvZiBiYXNpYy1ibG9jay5oLgoKMjAwNC0wOC0yOCAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogYy1jb21tb24uaDogVXBkYXRlIGNvbW1lbnRzIGFib3V0IE9iakMvT2JqQysrIGVudHJ5IHBvaW50cy4KCShvYmpjX2lzX3Jlc2VydmVkX3dvcmQpOiBOZXcgcHJvdG90eXBlLgoJKGdldF9jdXJyZW50X3Njb3BlLCBvYmpjX21hcmtfbG9jYWxzX3ZvbGF0aWxlKTogTW92ZSBwcm90b3R5cGVzIHRvCglzZXBhcmF0ZSBzZWN0aW9uOyB0aGVzZSBhcmUgY2FsbC1iYWNrcy4KCSogYy1sZXguYyAoY19sZXhfd2l0aF9mbGFncyk6IENhbGwgb2JqY19pc19yZXNlcnZlZF93b3JkKCkgdG8gZGV0ZWN0CglPYmpDL09iakMrKyAiQCIga2V5d29yZHMuCgkqIGMtdHJlZS5oIChnZXRfY3VycmVudF9zY29wZSwgb2JqY19tYXJrX2xvY2Fsc192b2xhdGlsZSk6IFJlbW92ZQoJcHJvdG90eXBlczsgdGhleSBhbHJlYWR5IGxpdmUgaW4gYy1jb21tb24uaC4KCSogc3R1Yi1vYmpjLmM6IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLgoJKG9iamNfaXNfcmVzZXJ2ZWRfd29yZCk6IE5ldyBzdHViLgoKMjAwNC0wOC0yOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN5c3RlbS5oIChnY2NfYXNzZXJ0KTogUmVtb3ZlIF9fYnVpbHRpbl9leHBlY3QuICBFdmFsdWF0ZSBFWFBSCglldmVuIHdoZW4gbm90IGNoZWNraW5nLgoKMjAwNC0wOC0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzEzNjg0CgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2NsZWFudXBfcG9pbnRfZXhwcik6IEhhbmRsZSBDTEVBTlVQX0VIX09OTFkuCgkoZ2ltcGxlX3B1c2hfY2xlYW51cCk6IEFkZCBlaF9vbmx5IHBhcm0uCgkoZ2ltcGxpZnlfdGFyZ2V0X2V4cHIpOiBQYXNzIGl0LgoJKiBjLm9wdCAoLWZuby10aHJlYWRzYWZlLXN0YXRpY3MpOiBOZXcgb3B0aW9uLgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSBpdC4KCSogYy1jb21tb24uaCAoZmxhZ190aHJlYWRzYWZlX3N0YXRpY3MpOiBEZWNsYXJlIGl0LgoJKiBjLWNvbW1vbi5jIChmbGFnX3RocmVhZHNhZmVfc3RhdGljcyk6IFJlY29yZCBpdC4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCBpdC4KCSogdHN5c3RlbS5oIChfR05VX1NPVVJDRSk6IERlZmluZS4KCSogZ3Roci1wb3NpeC5oIChfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3QpOiBOZXcgdHlwZWRlZi4KCShfX0dUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVQpOiBOZXcgbWFjcm8uCgkoX19HVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUX0ZVTkNUSU9OKTogTmV3IG1hY3JvLgoJKF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfaW5pdF9mdW5jdGlvbik6IE5ldyBmbi4KCShfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2xvY2spOiBOZXcgZm4uCgkoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90cnlsb2NrKTogTmV3IGZuLgoJKF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdW5sb2NrKTogTmV3IGZuLgoJKiBndGhyLXNvbGFyaXMuaCwgZ3Roci1zaW5nbGUuaCwgZ3Roci1kY2UuaDogTGlrZXdpc2UuCgkqIGd0aHItd2luMzIuaCwgZ3Roci12eHdvcmtzLmg6IExpa2V3aXNlLgoJKiBndGhyLmg6IERvY3VtZW50LgoKMjAwNC0wOC0yNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBJbmNyZWFzZQoJbWF4aW11bSBza2lwIHRvIDE1LiAgU2V0IGZ1bmN0aW9uIGFsaWdubWVudCwganVtcCBhbGlnbm1lbnQsIGFuZAoJbG9vcCBhbGlnbm1lbnQgdG8gMTYgZm9yIHByb2Nlc3NvcnMgdGhhdCBmb3JtIGRpc3BhdGNoIGdyb3Vwcy4KCShyczYwMDBfcnR4X2Nvc3RzKTogb3V0ZXJfY29kZSBpcyB1c2VkLgoKMjAwNC0wOC0yNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKHNpemV0eXBlX3NldCk6IFJlbW92ZS4KCShzZXRfc2l6ZXR5cGUpOiBEb24ndCB0ZXN0IG9yIHNldCBpdC4KCgkqIHRyZWUuaCAoc2l6ZV9pbnRfdHlwZSk6IFJlbW92ZS4KCSogZm9sZC1jb25zdC5jOiBEbyBub3QgI2luY2x1ZGUgZ3QtZm9sZC1jb25zdC5oLgoJKHNpemVfaHRhYl9oYXNoLCBzaXplX2h0YWJfZXEpOiBSZW1vdmUuCgkoc2l6ZV9pbnRfa2luZCk6IFVzZSBidWlsZF9pbnRfY3N0LgoJKG5ld19jb25zdCwgc2l6ZV9odGFiKTogUmVtb3ZlLgoJKHNpemVfaW50X3R5cGUpOiBSZW1vdmUuCgkocm91bmRfdXApOiBVc2UgYnVpbGRfaW50X2NzdC4KCShyb3VuZF9kb3duKTogTGlrZXdpc2UuIFJlbW92ZSBzcHVyaW91cyBjb25zdGFudCBidWlsZC4KCjIwMDQtMDgtMjcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWM6IEFkZCBFTkFCTEVfQVNTRVJUX0NIRUNLSU5HIGNvbnRyb2wuCglBZGQgaXNfcmVsZWFzZSB2YXJpYWJsZSwgdXNlIGl0IGZvciAtLWVuYWJsZS13ZXJyb3IgYW5kCgktLWVuYWJsZS1jaGVja2luZyBkZWZhdWx0cy4KCSogc3lzdGVtLmggKGdjY19hc3NlcnQsIGdjY191bnJlYWNoYWJsZSk6IE5ldy4KCSogZG9jL2luc3RhbGwudGV4aSAoLS1lbmFibGUtY2hlY2tpbmcpOiBVcGRhdGUuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoKMjAwNC0wOC0yNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogcnRsLmggKHJlYWRfcnR4KTogQ2hhbmdlIHByb3RvdHlwZS4KCSogcmVhZC1ydGwuYyAocmVhZF9ydHgpOiBQcm92aWRlIHRoZSBjYWxsZXIgd2l0aCBib3RoIGFuIHJ0eCBhbmQgYQoJbGluZSBudW1iZXIuICBSZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLgoJKiBnZW5zdXBwb3J0LmMgKHByb2Nlc3NfaW5jbHVkZSwgaW5pdF9tZF9yZWFkZXJfYXJnc19jYik6IEFkanVzdAoJY2FsbGVycyBhY2NvcmRpbmdseS4KCjIwMDQtMDgtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLXR5cGVjay5jIChidWlsZF9vZmZzZXRvZik6IFJlbW92ZS4KCSogYy10cmVlLmggKGJ1aWxkX29mZnNldG9mKTogUmVtb3ZlLgoJKiBjLWNvbW1vbi5jIChmb2xkX29mZnNldG9mXzEsIGZvbGRfb2Zmc2V0b2YpOiBOZXcuCgkqIGMtY29tbW9uLmggKGZvbGRfb2Zmc2V0b2YpOiBEZWNsYXJlLgoJKiBjLXBhcnNlLmluIChvZmZzZXRvZl9iYXNlKTogTmV3LgoJKG9mZnNldG9mX21lbWJlcl9kZXNpZ25hdG9yKTogVXNlIGl0LiAgQnVpbGQgcmVmZXJlbmNlcywgbm90IGp1c3QKCWEgdHJlZSBsaXN0LgoJKHByaW1hcnkpOiBVc2UgZm9sZF9vZmZzZXRvZiwgbm90IGJ1aWxkX29mZnNldG9mLgoKMjAwNC0wOC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAoc3RhdGljcCk6IFJldHVybiB0aGUgc3RhdGljIG9iamVjdC4KCSogdHJlZS5oIChzdGF0aWNwKTogVXBkYXRlIGRlY2wuCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rcyk6IENoYW5nZSBzdGF0aWNwIHJldHVybiB0eXBlIHRvIHRyZWUuCgkqIGxhbmdob29rcy5jIChsaGRfc3RhdGljcCk6IFJldHVybiBOVUxMX1RSRUUuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX3N0YXRpY3ApOiBVcGRhdGUgZGVjbC4KCSogYy1jb21tb24uYyAoY19zdGF0aWNwKTogUmV0dXJuIHRoZSBzdGF0aWMgb2JqZWN0LgoJKiBjLWNvbW1vbi5oIChjX3N0YXRpY3ApOiBVcGRhdGUgZGVjbC4KCjIwMDQtMDgtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoSEFSRF9SRUdOT19NT0RFX09LKTogQWxsb3cgY29tcGxleCBmbG9hdAoJbW9kZXMuCgoyMDA0LTA4LTI2ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzEzODAxCgkqIGMtZGVjbC5jIChzdHJ1Y3QgY19iaW5kaW5nKTogQWRkIHR5cGUgYW5kIGlubmVyX2NvbXAgZmllbGRzLgoJKGJpbmQpOiBTZXQgdHlwZSBhbmQgaW5uZXJfY29tcCBmaWVsZHMuCgkocG9wX3Njb3BlKTogUmVzdG9yZSB0eXBlIG9mIGRlY2wgdG8gdGhlIGNvcnJlY3QgdHlwZSBmcm9tIGFuCglvdXRlciBzY29wZS4gIEdpdmUgZXJyb3Igd2hlbiBwb3BwaW5nIGZpbGUgc2NvcGUgZm9yIGluY29tcGxldGUKCWFycmF5cyBjb21wbGV0ZWQgaW5jb21wYXRpYmx5IHdpdGggZGVmYXVsdCBpbml0aWFsaXphdGlvbiBpbiBhbgoJaW5uZXIgc2NvcGUuCgkoZGlhZ25vc2VfbWlzbWF0Y2hlZF9kZWNscyk6IEhhbmRsZSBleHRlcm5zIHdpdGggaW5pdGlhbGl6ZXJzIGF0CglibG9jayBzY29wZS4KCShwdXNoZGVjbCk6IFNldCB0eXBlIG9mIGV4dGVybmFsIGRlY2xhcmF0aW9uIGF0IGJsb2NrIHNjb3BlIGJhc2VkCglvbmx5IG9uIHRoZSB2aXNpYmxlIGRlY2xhcmF0aW9ucy4gIFNhdmUgdHlwZSB3aGVuIGNoYW5naW5nIHRoZQoJdHlwZSBvZiBhIGRlY2xhcmF0aW9uLiAgTWVyZ2UgYW4gZXh0ZXJuYWwgZGVjbGFyYXRpb24gYXQgYmxvY2sKCXNjb3BlIHdpdGggYSB2aXNpYmxlIHN0YXRpYyBkZWNsYXJhdGlvbiBhdCBmaWxlIHNjb3BlLgoJKGltcGxpY2l0bHlfZGVjbGFyZSk6IEdpdmUgcmVjeWNsZWQgb2xkIGRlY2xhcmF0aW9uIHRoZSBuZXcgdHlwZQoJZXhjZXB0IGZvciBpbmNvbXBhdGlibGUgZGVjbGFyYXRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucywgc2F2aW5nCgl0aGUgb2xkIHR5cGUuCgoyMDA0LTA4LTI2ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjLXBhcnNlLmluIChPQkpDX1RZUEVfUVVBTCk6IE5ldyAldG9rZW4gZm9yIE9iakMgdXNlLgoKMjAwNC0wOC0yNiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLWFsaWFzLWNvbW1vbi5jIChnYXRlX3B0YSk6IE5ldyBmdW5jdGlvbi4KCShwYXNzX2J1aWxkX3B0YSk6IFVzZSBpdC4KCShwYXNzX2RlbF9wdGEpOiBVc2UgaXQuCgkoZGVsZXRlX2FsaWFzX3ZhcnMpOiBEb24ndCBjaGVjayBmbGFnX3RyZWVfcG9pbnRzX3RvLgoKMjAwNC0wOC0yNiAgRmFyaWJvcnogSmFoYW5pYW4gIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoSEFSRF9SRUdOT19DQUxMX1BBUlRfQ0xPQkJFUkVEKTogQWRkZWQKCVRGbW9kZSBhcyBhZGRpdGlvbmFsIHJlZ2lzdGVyIG1vZGUgY2xvYmVycmVkIGJ5IGNhbGwuCgoyMDA0LTA4LTI2ICBGYXJpYm9yeiBKYWhhbmlhbiAgPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbGliY2FsbF92YWx1ZSk6IEdlbmVyYXRlCglwYXJhbGxlbCBwYXR0ZXJuIGZvciBsaWJyYXJ5IGNhbGwgcmV0dXJuaW5nIERJbW9kZSBpbgoJbWl4ZWQgbW9kZS4KCjIwMDQtMDgtMjYgIEZhcmlib3J6IEphaGFuaWFuICA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGZ1bmN0aW9uX2FyZyk6IEdlbmVyYXRlIHBhcmFsbGVsCglwYXR0ZXJuIGZvciBtb3JlIHNwbGl0IGFyZ3MuCgoyMDA0LTA4LTI2ICBGYXJpYm9yeiBKYWhhbmlhbiAgPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZSk6IENhbGwKCWVpdGhlciBnZW5fbW92ZGlfZGlfdXBkYXRlIG9yIGdlbl9tb3ZkaV9zaV91cGRhdGUgZGVwZW5kaW5nIG9uCgl0YXJnZXQgbW9kZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdmRpX3VwZGF0ZSk6IENoYW5nZWQgdG8gbW92ZGlfPG1vZGU+X3VwZGF0ZSwKCXRvIGdlbmVyYXRlIHR3byB2ZXJzaW9ucy4KCjIwMDQtMDgtMjYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogTWFrZWZpbGUuaW4gKGxhbWJkYS1jb2RlLm8pOiBOZXcuCgkobGFtYmRhLXRyYW5zLm8pOiBEaXR0by4KCShUUkVFX0RBVEFfUkVGX0gpOiBEaXR0by4KCShMQU1CREFfSCk6IERpdHRvLgoJKGxhbWJkYS1tYXQubyk6IFVzZSBMQU1CREFfSC4KCSh0cmVlLWRhdGEtcmVmLm8pOiBEaXR0by4KCSogbGFtYmRhLWNvZGUuYzogTmV3IGZpbGUuICBMYW1iZGEgY29kZSBnZW5lcmF0aW9uIGFsZ29yaXRobS4KCSogbGFtYmRhLXRyYW5zLmM6IERpdHRvLiBMYW1iZGEgdHJhbnNmb3JtYXRpb24gbWF0cml4IHN1cHBvcnQuCgkqIGxhbWJkYS5oOiBBZGQgbGFtYmRhIGxvb3Agc3RydWN0dXJlcy4KCUFkZCBsYW1iZGEgbG9vcG5lc3Qgc3RydWN0dXJlcy4KCUFkZCBsYW1iZGEgYm9keSB2ZWN0b3Igc3RydWN0dXJlLgoJQWRkIGxhbWJkYSBsaW5lYXIgZXhwcmVzc2lvbiBzdHJ1Y3R1cmVzLgoJQWRkIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuZXcgZmlsZXMuCgkqIGxhbWJkYS1tYXQuYzogSW5jbHVkZSB0cmVlLmgKCjIwMDQtMDgtMjYgIERhbmllbCBCZXJsaW4gPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgkgICAgU2ViYXN0aWFuIFBvcCAgPHBvcEBjcmkuZW5zbXAuZnI+CgoJKiB0cmVlLWRhdGEtcmVmLmg6IEluY2x1ZGUgbGFtYmRhLmgKCShmcmVlX2RlcGVuZGVuY2VfcmVsYXRpb24pOiBEZWNsYXJlZCBoZXJlLgoJKGZyZWVfZGVwZW5kZW5jZV9yZWxhdGlvbnMpOiBEaXR0by4KCShmcmVlX2RhdGFfcmVmcyk6IERpdHRvLgoJKiB0cmVlLWRhdGEtcmVmLmMgKGZyZWVfZGVwZW5kZW5jZV9yZWxhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShmcmVlX2RlcGVuZGVuY2VfcmVsYXRpb25zKTogRGl0dG8uCgkoZnJlZV9kYXRhX3JlZnMpOiBEaXRvdC4KCShhbmFseXplX2FsbF9kYXRhX2RlcGVuZGVuY2VzKTogRnJlZSBkYXRhcmVmcyBhbmQgZGVwZW5kZW5jZV9yZWxhdGlvbnMuCgkoYnVpbGRfY2xhc3NpY19kaXN0X3ZlY3Rvcik6IFN0b3JlIGluIHRoZSBkZXBlbmRlbmNlX3JlbGF0aW9ucyB0aGUKCWluZm9ybWF0aW9uLiBFYWNoIGFyYyBpbiB0aGUgZGVwZW5kZW5jZV9yZWxhdGlvbnMgZ3JhcGggaXMgbGFiZWxsZWQKCXdpdGggdGhlIGRpc3RhbmNlIGFuZCBkaXJlY3Rpb24gdmVjdG9ycy4KCShidWlsZF9jbGFzc2ljX2Rpcl92ZWN0b3IpOiBEaXR0by4KCShjb21wdXRlX3J3X3dyX3d3X2RlcGVuZGVuY2VzKTogUmVuYW1lZCBhZ2FpbiBjb21wdXRlX2FsbF9kZXBlbmRlbmNlcy4KCU5vdyBjb21wdXRlcyBhZ2FpbiB0aGUgd2hvbGUgZGVwZW5kZW5jZSBncmFwaCBpbmNsdWRpbmcgcmVhZC1yZWFkCglyZWxhdGlvbnMuCgkoY29tcHV0ZV9kYXRhX2RlcGVuZGVuY2VzX2Zvcl9sb29wKTogTm93IGRlcGVuZGVuY2VfcmVsYXRpb25zIGNvbnRhaW5zCglhbGwgdGhlIGRhdGEsIGFuZCB0aHVzIGl0IGRvZXNuJ3QgbmVlZCB0byBpbml0aWFsaXplIHRoZSBjbGFzc2ljX2RpcgoJYW5kIGNsYXNzaWNfZGlzdCB2ZWN0b3JzLgoJKGFuYWx5emVfYWxsX2RhdGFfZGVwZW5kZW5jZXMpOiBBZGp1c3RlZCBmb3IgdXNpbmcgdGhlIG5ldyBpbnRlcmZhY2Ugb2YKCWNvbXB1dGVfZGF0YV9kZXBlbmRlbmNlc19mb3JfbG9vcC4gIFJlbW92ZSB0aGUgc3RhdGlzdGljcyBkdW1wLgoKMjAwNC0wOC0yNiAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9sZF9vcGNvZGVzLCB4dGVuc2Ffc3Rfb3Bjb2Rlcyk6IERlbGV0ZS4KCSh4dGVuc2FfZXhwYW5kX2Jsb2NrX21vdmUpOiBVcGRhdGUgY29tbWVudC4KCShvdmVycmlkZV9vcHRpb25zKTogUmVtb3ZlIGluaXRpYWxpemF0aW9uIG9mIHh0ZW5zYV97bGQsc3R9X29wY29kZXMuCgoyMDA0LTA4LTI2ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCglQUiB0YXJnZXQvMTM1MDYKCSogdG9wbGV2LmMgKGNyYXNoX3NpZ25hbCk6IElmIHdlIGNyYXNoZWQgd2hpbGUgZW1pdHRpbmcKCWEgdXNlciBhc20sIHRoZW4gZGllIG1vcmUgZ3JhY2VmdWxseS4KCjIwMDQtMDgtMjYgIEthenVoaXJvIEluYW9rYSAgPGluYW9rYS5rYXp1aGlyb0ByZW5lc2FzLmNvbT4KCglQUiB0YXJnZXQvMTcxMTkuCgkqIGNvbmZpZy9tMzJyLmMgKGdlbl9jb21wYXJlKTogVXNlIHJlZ19vcl9pbnQxNl9vcGVyYW5kIHdoZW4KCWNoZWNraW5nIGZvciBhIHZhbGlkIGNvbnN0YW50LCByZWdhcmRsZXNzIG9mIHNpZ24uCgoyMDA0LTA4LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNjk3NAoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGFkZGRpX2ZwX2hhY2spOiBEb24ndCByZWx5IG9uIHNwbGl0dGluZwoJaWYgdGhlIGNvbnN0YW50IHNhdGlzZmllcyBhZGRfb3BlcmFuZC4KCjIwMDQtMDgtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgZGVidWcvMTA2OTUKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGVtaXRfZnJhbWVfc3RvcmVfMSwgZW1pdF9mcmFtZV9zdG9yZSk6IE5ldy4KCShhbHBoYV9leHBhbmRfcHJvbG9ndWUpOiBIYW5kbGUgPjMyLWJpdCBmcmFtZXMuICBHZW5lcmF0ZSBwcm9wZXIKCXVud2luZCBpbmZvIGZvciA+MTYtYml0IGZyYW1lcy4KCjIwMDQtMDgtMjUgIFJpY2hhcmQgQi4gS3JlY2tlbCAgPHJpY2hhcmQua3JlY2tlbEBmcmFtYXRvbWUtYW5wLmNvbT4KCglQUiB0YXJnZXQvMTcxNzEKCSogY29uZmlnL2kzODYvZ2FzLmggKEFTTV9DT01NRU5UX1NUQVJUKTogRGVmaW5lIHRvICIjIi4KCjIwMDQtMDgtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfY2Fubm90X2ZvcmNlX2NvbnN0X21lbSk6IE5ldy4KCShUQVJHRVRfQ0FOTk9UX0ZPUkNFX0NPTlNUX01FTSk6IE5ldy4KCjIwMDQtMDgtMjUgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAcmVkaGF0LmNvbT4KCgkqIGRvYy90cmVlLXNzYS50ZXhpOiBEb2N1bWVudCBuZXcgb3BlcmFuZCBpdGVyYXRvci4KCjIwMDQtMDgtMjYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0LzE2NDgwCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3ZlKTogRG9uJ3QgYWJvcnQKCW9uICIobWVtIChzeW1ib2xfcmVmIC4uKSkiIHJ0bC4gIExvb2sgYXQgTE9fU1VNIGJhc2UgcmVncyBhcyB3ZWxsCglhcyBQTFVTIGJhc2UgcmVncy4KCjIwMDUtMDgtMjggIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL3N5bWJpYW4uaCAoU1VCVEFSR0VUX0FTTV9GTE9BVF9TUEVDKTogRGVmYXVsdCB0bwoJLW1mcHU9dmZwIC1tYXJjaD1hcm12NXQKCSogY29uZmlnL2FybS90LXN5bWJpYW46IENoYW5nZSBtdWx0aWxpYiB0byBtZmxvYXQtYWJpPXNvZnRmcC4KCjIwMDQtMDgtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9TQ0FMQVJfTU9ERV9TVVBQT1JURURfUCk6IE5ldy4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIHNjYWxhcl9tb2RlX3N1cHBvcnRlZF9wLgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9zY2FsYXJfbW9kZV9zdXBwb3J0ZWRfcCk6IE5ldy4KCSogdGFyZ2hvb2tzLmggKGRlZmF1bHRfc2NhbGFyX21vZGVfc3VwcG9ydGVkX3ApOiBEZWNsYXJlLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1NDQUxBUl9NT0RFX1NVUFBPUlRFRF9QKTogRG9jdW1lbnQuCgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfbW9kZV9hdHRyaWJ1dGUpOiBRdWVyeSBzY2FsYXJfbW9kZV9zdXBwb3J0ZWRfcAoJYmVmb3JlIGF0dGVtcHRpbmcgdG8gY3JlYXRlIHR5cGVzLiAgVGlkeS4KCSogZXhwci5jICh2ZWN0b3JfbW9kZV92YWxpZF9wKTogVXNlIHNjYWxhcl9tb2RlX3N1cHBvcnRlZF9wLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3NjYWxhcl9tb2RlX3N1cHBvcnRlZF9wKTogTmV3LgoJKFRBUkdFVF9TQ0FMQVJfTU9ERV9TVVBQT1JURURfUCk6IE5ldy4KCjIwMDQtMDgtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmggKFNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogRG9uJ3QKCXNldCBSRUFMX01PREVfRk9STUFUIGZvciBURm1vZGUuCgoyMDA0LTA4LTI1ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjLWRlY2wuYyAoZ3Jva3Bhcm0pOiBOZXcgZnVuY3Rpb24uCgkqIGMtdHJlZS5oIChncm9rcGFybSk6IE5ldyBwcm90b3R5cGUuCgoyMDA0LTA4LTI1ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5oIChzdHJ1Y3Qgc3NhX29wZXJhbmRfaXRlcmF0b3JfZCk6IE5ldy4gIFNTQSBvcGVyYW5kCglpdGVyYXRvciBjb250cm9sbGluZyBzdHJ1Y3R1cmUuCgkoU1NBX09QX1VTRSwgU1NBX09QX0RFRiwgU1NBX09QX1ZVU0UsIFNTQV9PUF9WTUFZVVNFLCBTU0FfT1BfVk1BWURFRiwKCVNTQV9PUF9WTVVTVERFRiwgU1NBX09QX1ZJUlRVQUxfVVNFUywgU1NBX09QX1ZJUlRVQUxfREVGUywKCVNTQV9PUF9BTExfVVNFUywgU1NBX09QX0FMTF9ERUZTLCBTU0FfT1BfQUxMX09QRVJBTkRTKTogTmV3LiAgT3BlcmFuZAoJaXRlcmF0b3IgZmxhZ3MuCgkoRk9SX0VBQ0hfU1NBX1RSRUVfT1BFUkFORCk6IE5ldy4gIEl0ZXJhdGUgb3ZlciBvcGVyYW5kcyBhcyB0cmVlcy4KCShGT1JfRUFDSF9TU0FfVVNFX09QRVJBTkQpOiBOZXcuICBJdGVyYXRlIG92ZXIgb3BlcmFuZHMgYXMgdXNlcy4KCShGT1JfRUFDSF9TU0FfREVGX09QRVJBTkQpOiBOZXcuICBJdGVyYXRlIG92ZXIgb3BlcmFuZHMgYXMgZGVmcy4KCShGT1JfRUFDSF9TU0FfTUFZREVGX09QRVJBTkQpOiBOZXcuICBJdGVyYXRlIG92ZXIgVl9NQVlfREVGcy4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoTlVMTF9ERUZfT1BFUkFORF9QLCBOVUxMX1VTRV9PUEVSQU5EX1ApOiBOZXcuCglFbXB0eSBvcGVyYW5kIHBvaW50ZXJzLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKG9wX2l0ZXJfZG9uZSk6IE5ldy4gIFJldHVybiB0cnVlIGlmIGZpbmlzaGVkLgoJKG9wX2l0ZXJfbmV4dF91c2UpOiBOZXcuICBSZXR1cm4gbmV4dCB1c2Vfb3BlcmFuZF9wLgoJKG9wX2l0ZXJfbmV4dF9kZWYpOiBOZXcuICBSZXR1cm4gbmV4dCBkZWZfb3BlcmFuZF9wLgoJKG9wX2l0ZXJfbmV4dF90cmVlKTogTmV3LiAgUmV0dXJuIG5leHQgb3BlcmFuZHMgYXMgYSB0cmVlLgoJKG9wX2l0ZXJfaW5pdCk6IE5ldy4gIEluaXRpYWxpemUgYW4gaXRlcmF0b3Igc3RydWN0dXJlLgoJKG9wX2l0ZXJfaW5pdF91c2UpOiBOZXcuICBJbml0aWFsaXplIHN0cnVjdHVyZSBhbmQgZ2V0IHRoZSBmaXJzdCB1c2UuCgkob3BfaXRlcl9pbml0X2RlZik6IE5ldy4gIEluaXRpYWxpemUgc3RydWN0dXJlIGFuZCBnZXQgdGhlIGZpcnN0IGRlZi4KCShvcF9pdGVyX2luaXRfdHJlZSk6IE5ldy4gIEluaXRpYWxpemUgc3RydWN0dXJlIGFuZCBnZXQgdGhlIGZpcnN0IHRyZWUuCgkob3BfaXRlcl9uZXh0X21heWRlZik6IE5ldy4gIFJldHVybiBuZXh0IFZfTUFZX0RFRiBvcGVyYW5kcy4KCShvcF9pdGVyX2luaXRfbWF5ZGVmKTogTmV3LiAgSW5pdGlhbGl6ZSBzdHJ1Y3R1cmUgYW5kIGdldCB0aGUgZmlyc3QKCVZfTUFZX0RFRiBvcGVyYW5kcy4KCSogdHJlZS1jZmcuYyAodHJlZV9kdXBsaWNhdGVfYmIpOiBVc2UgbmV3IG9wZXJhbmQgaXRlcmF0b3IuCgkqIHRyZWUtZGZhLmMgKGNvbXB1dGVfaW1tZWRpYXRlX3VzZXNfZm9yX3N0bXQsCglyZWRpcmVjdF9pbW1lZGlhdGVfdXNlcyk6IFVzZSBuZXcgb3BlcmFuZCBpdGVyYXRvci4KCSh2X21heV9kZWZzX2Rpc2FwcGVhcmVkX3AsIHZfbXVzdF9kZWZzX2Rpc2FwcGVhcmVkX3ApOiBEZWxldGUuCgkobWFya19uZXdfdmFyc190b19yZW5hbWUpOiBVc2UgbmV3IG9wZXJhbmQgaXRlcmF0b3IuICBDb3VudCB2aXJ0dWFsCglvcGVyYW5kcyBpbnN0ZWFkIG9mIHVzaW5nICpfZGlzYXBwZWFyZWRfcCByb3V0aW5lcy4KCSogdHJlZS1pbnRvLXNzYS5jIChtYXJrX2RlZl9zaXRlcywgc3NhX21hcmtfZGVmX3NpdGVzLCByZXdyaXRlX3N0bXQsCglzc2FfcmV3cml0ZV9zdG10KTogVXNlIG5ldyBvcGVyYW5kIGl0ZXJhdG9yLgoJKiB0cmVlLW91dG9mLXNzYS5jIChjaGVja19yZXBsYWNlYWJsZSwgZmluZF9yZXBsYWNlYWJsZV9pbl9iYiwKCXJld3JpdGVfdHJlZXMpOiBVc2UgbmV3IG9wZXJhbmQgaXRlcmF0b3IuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfdm9wcyk6IFVzZSBuZXcgb3BlcmFuZCBpdGVyYXRvci4KCSogdHJlZS1zcmEuYyAobWFya19hbGxfdl9kZWZzKTogVXNlIG5ldyBvcGVyYW5kIGl0ZXJhdG9yLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjb21wdXRlX3BvaW50c190b19hbmRfYWRkcl9lc2NhcGUsCglkdW1wX3BvaW50c190b19pbmZvKTogVXNlIG5ldyBvcGVyYW5kIGl0ZXJhdG9yLgoJKiB0cmVlLXNzYS1jY3AuYyAoY3BfbGF0dGljZV9tZWV0LCB2aXNpdF9zdG10LCBpbml0aWFsaXplLAoJcmVwbGFjZV91c2VzX2luLCByZXBsYWNlX3Z1c2VfaW4sIGxpa2VseV92YWx1ZSwgc2V0X3Jocyk6IFVzZSBuZXcKCW9wZXJhbmQgaXRlcmF0b3IuCgkqIHRyZWUtc3NhLWRjZS5jIChtYXJrX3N0bXRfaWZfb2J2aW91c2x5X25lY2Vzc2FyeSwKCXByb3BhZ2F0ZV9uZWNlc3NpdHkpOiBVc2UgbmV3IG9wZXJhbmQgaXRlcmF0b3IuCgkqIHRyZWUtc3NhLWRvbS5jIChjcHJvcF9pbnRvX3N0bXQsIG9wdGltaXplX3N0bXQpOiBVc2Ugb3BlcmFuZCBpdGVyYXRvci4KCShyZWdpc3Rlcl9kZWZpbml0aW9uc19mb3Jfc3RtdCk6IFVzZSBuZXcgb3BlcmFuZCBpdGVyYXRvci4gIFRha2Ugc3RtdCBhcwoJYSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHN0bXRfYW5uX3QuCgkqIHRyZWUtc3NhLWxpdmUuYyAoY3JlYXRlX3NzYV92YXJfbWFwLCBjYWxjdWxhdGVfbGl2ZV9vbl9lbnRyeSwKCWJ1aWxkX3RyZWVfY29uZmxpY3RfZ3JhcGgpOiBVc2UgbmV3IG9wZXJhbmQgaXRlcmF0b3IuCgkqIHRyZWUtc3NhLWxvb3AtaW0uYyAoZGV0ZXJtaW5lX21heF9tb3ZlbWVudCwgc2luZ2xlX3JlYWNoYWJsZV9hZGRyZXNzLAoJcmV3cml0ZV9tZW1fcmVmcyk6IFVzZSBuZXcgb3BlcmFuZCBpdGVyYXRvci4KCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jIChmaW5kX3VzZXNfdG9fcmVuYW1lX3N0bXQsCgljaGVja19sb29wX2Nsb3NlZF9zc2FfdXNlKTogVXNlIG5ldyBvcGVyYW5kIGl0ZXJhdG9yLgoJKiB0cmVlLXNzYS5jICh2ZXJpZnlfc3NhLCByZXBsYWNlX2ltbWVkaWF0ZV91c2VzKTogVXNlIG9wZXJhbmQgaXRlcmF0b3IuCgkqIHRyZWUtc3NhbmFtZXMuYyAocmVsZWFzZV9kZWZzKTogVXNlIG5ldyBvcGVyYW5kIGl0ZXJhdG9yLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9jcmVhdGVfZGF0YV9yZWYpOiBVc2UgbmV3IG9wZXJhbmQgaXRlcmF0b3IuCgoyMDA0LTA4LTI1ICBBZGFtIE5lbWV0ICA8YW5lbWV0QGxueHcuY29tPgoKCSogdGxpbmsuYyAoaW5pdGlhbF9jd2QpOiBOZXcgdmFyaWFibGUuCgkodGxpbmtfaW5pdCk6IEluaXRpYWxpemUgaXQuCgkocmVjb21waWxlX2ZpbGVzKTogVXNlIHRsaW5rX2V4ZWN1dGUoKSBpbnN0ZWFkIG9mIHN5c3RlbSgpLiAgRG9uJ3QKCWR1cGxpY2F0ZSB2ZXJib3NlIG91dHB1dCBvZiBjb2xsZWN0X2V4ZWN1dGUuICBSZXN0b3JlIGluaXRpYWxfY3dkLgoJVXBkYXRlIGNvbW1lbnQgYmVmb3JlIHRoZSBmdW5jdGlvbi4KCjIwMDQtMDgtMjUgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IEluIE9iakMsIGFsd2F5cyBwcmVzZXJ2ZSAoYW5kIHNpbGVudGx5CglhY2NlcHQpIGEgY2FzdCBmcm9tIG9uZSBPYmplY3RpdmUtQyBwb2ludGVyIHR5cGUgdG8gYW5vdGhlci4KCjIwMDQtMDgtMjUgIFBhb2xvIENhcmxpbmkgIDxwY2FybGluaUBzdXNlLmRlPgoKCSogZG9jL2luc3RhbGwudGV4aTogRG9jdW1lbnQgdGhhdCBsaWJzdGRjKystdjMgcmVxdWlyZXMKCW5vdyBhdXRvbWFrZSAxLjkuMS4KCjIwMDQtMDgtMjUgIENhcm9saW5lIFRpY2UgIDxjdGljZUBhcHBsZS5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKHBhcnRpdGlvbl9ob3RfY29sZF9iYXNpY19ibG9ja3MpOiBBZGQgbW9yZSBkZXRhaWxzCgl0byBjb21tZW50cyBhdCBzdGFydCBvZiBmdW5jdGlvbi4KCSogY2ZnYnVpbGQuYyAobWFrZV9lZGdlcyk6IEFkZCBtb3JlIGRldGFpbHMgdG8gaG90L2NvbGQgcGFydGl0aW9uaW5nCgljb21tZW50LgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9zaW1wbGlmeV9jb25kanVtcCwgdHJ5X2ZvcndhcmRfZWRnZXMsCgltZXJnZV9ibG9ja3NfbW92ZV9wcmVkZWNlc3Nvcl9ub2p1bXBzLAoJbWVyZ2VfYmxvY2tzX21vdmVfc3VjY2Vzc29yX25vanVtcHMsIG1lcmdlX2Jsb2Nrc19tb3ZlLAoJdHJ5X2Nyb3NzanVtcF90b19lZGdlLCB0cnlfY3Jvc3NqdW1wX2JiKTogTGlrZXdpc2UuCgkqIGNmZ2xheW91dC5jIChmaXh1cF9yZW9yZGVyX2NoYWluKTogTGlrZXdpc2UuCgkqIGNmZ3J0bC5jIChydGxfY2FuX21lcmdlX2Jsb2NrcywgdHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wLAoJY2ZnX2xheW91dF9jYW5fbWVyZ2VfYmxvY2tzX3ApOiBMaWtld2lzZS4KCSogaWZjdnQuYyAoZmluZF9pZl9jYXNlXzEsIGZpbmRfaWZfY2FzZV8yKTogTGlrZXdpc2UuCgkqIHBhc3Nlcy5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogVXBkYXRlIGNvbW1lbnRzIGZvciBjYWxsaW5nCglvcHRpbWl6YXRpb24gdGhhdCBwYXJ0aXRpb25zIGhvdC9jb2xkIGJhc2ljIGJsb2Nrcy4KCSogZG9jL2ludm9rZS50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBvZgoJZnJlb3JkZXItYmxvY2tzLWFuZC1wYXJ0aXRpb24gZmxhZy4KCjIwMDQtMDgtMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKHJlZyk6IFJlbmFtZWQgbW9kZSBhdHRyaWJ1dGUgZnJvbSBjY3JlZy4KCSgqbW92Kl9vbl8qKTogQWRqdXN0IGFjY29yZGluZ2x5LiAgQWRkIGFuIGV4cGxpY2l0IE1PVkVDQzogcHJlZml4LgoKMjAwNC0wOC0yNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoYW55X3NoaWZ0KTogTmV3IGNvZGUgbWFjcm8uCgkob3B0YWIsIGluc24pOiBOZXcgY29kZSBhdHRyaWJ1dGVzLgoJKHthc2hsLGFzaHIsbHNocn1bc2RdaTMpOiBSZWRlZmluZSB1c2luZyA6R1BSIGFuZCBhbnlfc2hpZnQuCglVc2UgdGhlIHN0YW5kYXJkIHJhdGhlciB0aGFuIGludGVybmFsIHBhdHRlcm5zIGZvciB0aGUgTUlQUzE2Cglkb3VibGUtc2hpZnQgb3B0aW1pemF0aW9uLgoJKCp7YXNobCxhc2hyLGxzaHJ9W3NkXWkzKTogTmV3IG5hbWVzIGZvciB0aGUgbm9uLW1pcHMxNiBzaGlmdCBwYXR0ZXJucy4KCVJlZGVmaW5lIHVzaW5nIDpHUFIgYW5kIGFueV9zaGlmdC4KCSgqe2FzaGwsYXNocixsc2hyfXNpM19leHRlbmQpOiBHZW5lcmFsaXplIGFzaGxzaTNfaW50ZXJuYWwxX2V4dGVuZAoJdG8gY292ZXIgYWxsIHRocmVlIHNoaWZ0cy4KCSgqe2FzaGwsYXNocixsc2hyfXNpM19taXBzMTYpOiBOZXcgbmFtZXMgZm9yIHRoZSBtaXBzMTYgU0ltb2RlIHNoaWZ0cy4KCVJlZGVmaW5lIHVzaW5nIGFueV9zaGlmdC4gIFVzZSA6R1BSIGFuZCBhbnlfc2hpZnQgdG8gY29tYmluZSBzcGxpdHRlcnMuCgkoKnthc2hsLGFzaHIsbHNocn1kaTNfbWlwczE2KTogTmV3IG5hbWVzIGZvciB0aGUgbWlwczE2IERJbW9kZSBzaGlmdHMuCgoyMDA0LTA4LTI0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGxvb2t1cF90bXBfdmFyKTogU2VwYXJhdGUgdGVtcG9yYXJpZXMgd2hlbiBub3QKCW9wdGltaXppbmcuCgoyMDA0LTA4LTI1ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIGxpYnN0ZGMrKy8xNzAwNSAoZml4IGZvciBIUC1VWCAxMS4xMSkKCSogY29uZmlnLmdjYyAoaHBwYSotKi0qKTogTW92ZSBNQVNLX0JJR19TV0lUQ0ggdG8gdGFyZ2V0X2NwdV9kZWZhdWx0Mi4KCShocHBhKi0qLWhwdXgqKTogQ29uc29saWRhdGUgaHBwYTEuMC0qLSogY29kZS4gIFJld29yayBoYW5kbGluZyBvZgoJdG1fZmlsZSBpbmNsdWRpbmcgcGEtaHB1eDEwMTAuaCBvciBwYS1ocHV4MTExMS5oIHdoZW4gYXBwcm9wcmlhdGUuCgkqIGNvbmZpZy9wYS9wYS1ocHV4MTAxMC5oLCBjb25maWcvcGEvcGEtaHB1eDExMTEuaDogTmV3IGZpbGVzLgoJKiBjb25maWcvcGEvcGEtaHB1eC5oIChUQVJHRVRfSFBVWCk6IERlZmluZS4KCShMSU5LX1NQRUMpOiBIYW5kbGUgbWFyY2g9MS4wIG9wdGlvbi4KCSogY29uZmlnL3BhL3BhLWhwdXgxMC5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogUHJlZGVmaW5lIF9YT1BFTl9VTklYCglhbmQgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCBmb3IgVU5JWCA5NS4KCShTVUJUQVJHRVRfT1BUSU9OUyk6IE5ldyBkZWZpbmUuCgkoTElOS19TUEVDKTogSGFuZGxlIG1hcmNoPTEuMCBvcHRpb24uCgkoU1RBUlRGSUxFX1NQRUMpOiBOZXcgZGVmaW5lLgoJKiBjb25maWcvcGEvcGEtaHB1eDExLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBQcmVkZWZpbmUgX1hPUEVOX1VOSVgKCWFuZCBfWE9QRU5fU09VUkNFX0VYVEVOREVEIGZvciBVTklYIDk1LiAgQWRkaXRpb25hbGx5LCBwcmVkZWZpbmUKCV9JTkNMVURFX19TVERDX0ExX1NPVVJDRSBhbmQgX0lOQ0xVREVfWE9QRU5fU09VUkNFXzUwMCBmb3IgVU5JWCA5OC4KCShTVUJUQVJHRVRfT1BUSU9OUyk6IE5ldyBkZWZpbmUuCgkoTElOS19TUEVDKTogSGFuZGxlIG1hcmNoPTEuMCBvcHRpb24uCgkoU1RBUlRGSUxFX1NQRUMpOiBOZXcgZGVmaW5lLgoJKiBjb25maWcvcGEvcGEuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBjb2RlIHRvIHByb2Nlc3MgLW11bml4PSBvcHRpb24uCgkqIGNvbmZpZy9wYS9wYS5oIChwYV91bml4X3N0cmluZywgZmxhZ19wYV91bml4KTogRGVjbGFyZS4KCShUQVJHRVRfSFBVWCwgVEFSR0VUX0hQVVhfMTBfMTAsIFRBUkdFVF9IUFVYXzExXzExKTogUHJvdmlkZSBkZWZhdWx0CglkZWZpbmVzLgoJKFRBUkdFVF9PUFRJT05TKTogQWRkIFNVQlRBUkdFVF9PUFRJT05TIHRvIG9wdGlvbiBsaXN0LgoJKFNVQlRBUkdFVF9PUFRJT05TKTogUHJvdmlkZSBkZWZhdWx0IGRlZmluZS4KCSogY29uZmlnL3BhL3BhNjQtaHB1eC5oIChTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEsCglTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIpOiBOZXcgZGVmaW5lcy4KCShTVEFSVEZJTEVfU1BFQyk6IFByb3ZpZGUgdW5peDk1Lm8gb3IgdW5peDk4Lm8gc3RhcnRmaWxlcyBhcyBuZWNlc3NhcnkuCgkoRU5ERklMRV9TUEVDKTogVXNlICVPLgoJKiBkb2MvaW5zdGFsbC50ZXhpIChocHBhKi0qLWhwdXgqKTogUmV3b3JkIHBhcmFncmFwaCBvbiAtZyBhbmQgZ2FzLgoJTWVudGlvbiBpc3N1ZSBjYXVzZWQgYnkgY2hhbmdpbmcgbmFtZXNwYWNlIGFuZCBydW50aW1lIHRvIFVOSVggOTUvOTguCgkqIGRvYy9pbnZva2UudGV4aSAoSFBQQSBvcHRpb25zKTogTW92ZSBtaXNwbGFjZWQgdGV4dCB0byBGUlYgb3B0aW9ucy4KCURvY3VtZW50IC1tdW5peD1zdGQgb3B0aW9uLgoKMjAwNC0wOC0yNSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY3NlLmMgKGNzZV9hcm91bmRfbG9vcCwgY3NlX2NoZWNrX2xvb3Bfc3RhcnQsCgljc2Vfc2V0X2Fyb3VuZF9sb29wKTogUmVtb3ZlLgoJKGNzZV9iYXNpY19ibG9jayk6IFJlbW92ZSB0aGUgYXJvdW5kX2xvb3AgYXJndW1lbnQuCgkoY3NlX2VuZF9vZl9iYXNpY19ibG9jayk6IFJlbW92ZSB0aGUgYWZ0ZXJfbG9vcCBhcmd1bWVudC4KCShjc2VfbWFpbik6IExpa2V3aXNlLgoJKiBydGwuaCAoY3NlX21haW4pOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfY3NlLCByZXN0X29mX2hhbmRsZV9jc2UyLAoJcmVzdF9vZl9oYW5kbGVfZ2NzZSk6IFVwZGF0ZSBjc2VfbWFpbiBjYWxscy4KCjIwMDQtMDgtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggIChidWlsZF9pbnRfY3N0KTogTmV3LCBzaWduIGV4dGVuZGVkIGNvbnN0YW50LgoJKGJ1aWxkX2ludF9jc3R1KTogTmV3LCB6ZXJvIGV4dGVuZGVkIGNvbnN0YW50LgoJKGJ1aWxkX2ludF9jc3Rfd2lkZSk6IFJlbmFtZWQgZnJvbSBidWlsZF9pbnRfY3N0LgoJKiB0cmVlLmMgKGJ1aWxkX2ludF9jc3QsIGJ1aWxkX2ludF9jc3R1KTogTmV3LgoJKGJ1aWxkX2ludF9jc3Rfd2lkZSk6IFJlbmFtZWQgZnJvbSBidWlsZF9pbnRfY3N0LgoJKG1ha2VfdmVjdG9yX3R5cGUsIGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzLAoJYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IEFkanVzdCBidWlsZF9pbnRfY3N0IGNhbGxzLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9wcmVmZXRjaCwgZXhwYW5kX2J1aWx0aW5fc3Ryc3RyLAoJZXhwYW5kX2J1aWx0aW5fc3RycGJyaywgZXhwYW5kX2J1aWx0aW5fZnB1dHMsCglidWlsZF9zdHJpbmdfbGl0ZXJhbCwgZXhwYW5kX2J1aWx0aW5fcHJpbnRmLAoJZXhwYW5kX2J1aWx0aW5fc3ByaW50ZiwgZm9sZF9idWlsdGluX2NsYXNzaWZ5X3R5cGUsCglmb2xkX2J1aWx0aW5fbHJvdW5kLCBmb2xkX2J1aWx0aW5fYml0b3AsIGZvbGRfYnVpbHRpbl9pc2FzY2lpLAoJZm9sZF9idWlsdGluX3RvYXNjaWksIGZvbGRfYnVpbHRpbl9pc2RpZ2l0LAoJc2ltcGxpZnlfYnVpbHRpbl9zdHJzdHIsIHNpbXBsaWZ5X2J1aWx0aW5fc3RycGJyaywKCWZvbGRfYnVpbHRpbl9mcHV0cywgc2ltcGxpZnlfYnVpbHRpbl9zcHJpbnRmKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmMgKHN0YXJ0X2ZuYW1lX2RlY2xzLCBmaXhfc3RyaW5nX3R5cGUsIHNob3J0ZW5fY29tcGFyZSwKCURFRl9BVFRSX0lOVCk6IExpa2V3aXNlLgoJKiBjLWRlY2wuYyAoY29tcGxldGVfYXJyYXlfdHlwZSwgY2hlY2tfYml0ZmllbGRfdHlwZV9hbmRfd2lkdGgpOgoJTGlrZXdpc2UuCgkqIGMtbGV4LmMgKGludGVycHJldF9pbnRlZ2VyLCBsZXhfY2hhcmNvbnN0KTogTGlrZXdpc2UuCgkqIGMtcGFyc2UuaW4gKHByaW1hcnkpIDxUWVBFU19DT01QQVRJQkxFX1A+IExpa2V3aXNlLgoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX2ludGVnZXJfY29uc3RhbnQpOiBMaWtld2lzZS4KCSogYy10eXBlY2suYyAocmVhbGx5X3N0YXJ0X2luY3JlbWVudGFsX2luaXQsIHB1c2hfaW5pdF9sZXZlbCwKCXNldF9ub25pbmNyZW1lbnRhbF9pbml0X2Zyb21fc3RyaW5nKTogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IExpa2V3aXNlLgoJY29udmVydC5jIChjb252ZXJ0X3RvX3BvaW50ZXIpOiBMaWtld2lzZS4KCWNvdmVyYWdlLmMgKGNvdmVyYWdlX2NvdW50ZXJfYWxsb2MsIHRyZWVfY292ZXJhZ2VfY291bnRlcl9yZWYsCglidWlsZF9mbl9pbmZvX3R5cGUsIGJ1aWxkX2ZuX2luZm9fdmFsdWUsIGJ1aWxkX2N0cl9pbmZvX3ZhbHVlLAoJYnVpbGRfZ2Nvdl9pbmZvKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChpbml0X2VoLCBhc3NpZ25fZmlsdGVyX3ZhbHVlcyk6IExpa2V3aXNlLgoJKiBleHBtZWQuYyAoc3RvcmVfZml4ZWRfYml0X2ZpZWxkLCBleHRyYWN0X2JpdF9maWVsZCwKCWV4dHJhY3RfZml4ZWRfYml0X2ZpZWxkLCBleHRyYWN0X3NwbGl0X2JpdF9maWVsZCwgZXhwYW5kX3NoaWZ0LAoJZXhwYW5kX211bHRfY29uc3QsIGV4cGFuZF9tdWx0X2hpZ2hwYXJ0X2FkanVzdCwgZXh0cmFjdF9oaWdoX2hhbGYsCglleHBhbmRfc2Rpdl9wb3cyLCBleHBhbmRfZGl2bW9kLCBtYWtlX3RyZWUpOiBMaWtld2lzZS4KCSogZXhwci5jIChjb252ZXJ0X21vdmUsIGVtaXRfZ3JvdXBfbG9hZCwgZW1pdF9ncm91cF9zdG9yZSwKCWV4cGFuZF9hc3NpZ25tZW50LCBzdG9yZV9jb25zdHJ1Y3Rvciwgc3RvcmVfZmllbGQsCglleHBhbmRfZXhwcl9yZWFsXzEsIHJlZHVjZV90b19iaXRfZmllbGRfcHJlY2lzaW9uKTogTGlrZXdpc2UuCglmb2xkLWNvbnN0LmMgKGZvcmNlX2ZpdF90eXBlLCBpbnRfY29uc3RfYmlub3AsIGZvbGRfY29udmVydF9jb25zdCwKCWludmVydF90cnV0aHZhbHVlLCBvcHRpbWl6ZV9iaXRfZmllbGRfY29tcGFyZSwKCWRlY29kZV9maWVsZF9yZWZlcmVuY2UsIGFsbF9vbmVzX21hc2tfcCwgY29uc3RhbnRfYm9vbGVhbl9ub2RlLAoJZm9sZF9kaXZfY29tcGFyZSwgZm9sZCwgZm9sZF9yZWFkX2Zyb21fY29uc3RhbnRfc3RyaW5nLAoJZm9sZF9uZWdhdGVfY29uc3QsIGZvbGRfYWJzX2NvbnN0LCBmb2xkX25vdF9jb25zdCwgcm91bmRfdXAsCglyb3VuZF9kb3duKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtX3NldHVwX2Jsb2NrKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoc2hpZnRfcmV0dXJuX3ZhbHVlLCBleHBhbmRfY2FzZSwgZXN0aW1hdGVfY2FzZV9jb3N0cyk6CglMaWtld2lzZS4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUsIGluaXRpYWxpemVfc2l6ZXR5cGVzLAoJc2V0X21pbl9hbmRfbWF4X3ZhbHVlc19mb3JfaW50ZWdyYWxfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLWNocmVjLmMgKGNocmVjX2ZvbGRfbXVsdGlwbHlfcG9seV9wb2x5LAoJcmVzZXRfZXZvbHV0aW9uX2luX2xvb3ApOiBMaWtld2lzZS4KCSogdHJlZS1jaHJlYy5oIChidWlsZF9wb2x5bm9taWFsX2NocmVjKTogTGlrZXdpc2UuCgkqIHRyZWUtY29tcGxleC5jIChidWlsZF9yZXBsaWNhdGVkX2NvbnN0KTogTGlrZXdpc2UuCgkqIHRyZWUtZWguYyAoaG9ub3JfcHJvdGVjdF9jbGVhbnVwX2FjdGlvbnMsCglsb3dlcl90cnlfZmluYWxseV9vbmVkZXN0LCBsb3dlcl90cnlfZmluYWxseV9jb3B5LAoJbG93ZXJfdHJ5X2ZpbmFsbHlfc3dpdGNoKTogTGlrZXdpc2UuCgkqIHRyZWUtbXVkZmxhcC5jIChtZl9idWlsZF9zdHJpbmcsIG14X3JlZ2lzdGVyX2RlY2xzLAoJbXVkZmxhcF9yZWdpc3Rlcl9jYWxsLCBtdWRmbGFwX2VucXVldWVfY29uc3RhbnQpOiBMaWtld2lzZS4KCSogdHJlZS1uZXN0ZWQuYyAoZ2V0X3RyYW1wb2xpbmVfdHlwZSwgZ2V0X25sX2dvdG9fZmllbGQpOiBMaWtld2lzZS4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY2NwLmMgKHdpZGVuX2JpdGZpZWxkLCBtYXliZV9mb2xkX29mZnNldF90b19hcnJheV9yZWYpOgoJTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRvbS5jIChzaW1wbGlmeV9yaHNfYW5kX2xvb2t1cF9hdmFpbF9leHByKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYyAobnVtYmVyX29mX2l0ZXJhdGlvbnNfY29uZCwKCWxvb3Bfbml0ZXJfYnlfZXZhbCwgdXBwZXJfYm91bmRfaW5fdHlwZSwgbG93ZXJfYm91bmRfaW5fdHlwZSk6CglMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1pdmNhbm9uLmMgKGNyZWF0ZV9jYW5vbmljYWxfaXYsCgljYW5vbmljYWxpemVfbG9vcF9pbmR1Y3Rpb25fdmFyaWFibGVzKTogTGlrZXdpc2UuCgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X2NyZWF0ZV9pbmRleF9mb3JfYXJyYXlfcmVmLAoJdmVjdF90cmFuc2Zvcm1fbG9vcF9ib3VuZCwgdmVjdF9jb21wdXRlX2RhdGFfcmVmX2FsaWdubWVudCk6CglMaWtld2lzZS4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9pbml0aWFsaXplX3RyYW1wb2xpbmUsIGFscGhhX3ZhX3N0YXJ0LAoJYWxwaGFfZ2ltcGxpZnlfdmFfYXJnXzEpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2dldF9jb29raWVfc2l6ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3ZhX3N0YXJ0LCBpeDg2X2dpbXBsaWZ5X3ZhX2FyZyk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19idWlsZF9idWlsdGluX3ZhX2xpc3QsIG1pcHNfdmFfc3RhcnQsCgltaXBzX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5jIChocHBhX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF92YV9zdGFydCwgcnM2MDAwX2dpbXBsaWZ5X3ZhX2FyZywKCWFkZF9jb21waWxlcl9icmFuY2hfaXNsYW5kKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF92YV9zdGFydCk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYyAoc2hfdmFfc3RhcnQpOiBMaWtld2lzZS4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKHhzdG9ybXkxNl9leHBhbmRfYnVpbHRpbl92YV9zdGFydCk6CglMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoeHRlbnNhX3ZhX3N0YXJ0LAoJeHRlbnNhX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogTGlrZXdpc2UuCgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX29iamNfc3RyaW5nX29iamVjdCwKCWJ1aWxkX29iamNfc3ltdGFiX3RlbXBsYXRlLCBpbml0X2RlZl9saXN0LCBpbml0X29iamNfc3ltdGFiLAoJaW5pdF9tb2R1bGVfZGVzY3JpcHRvciwgZ2VuZXJhdGVfc3RhdGljX3JlZmVyZW5jZXMsCglidWlsZF9zZWxlY3Rvcl90cmFuc2xhdGlvbl90YWJsZSwgZ2V0X3Byb3RvX2VuY29kaW5nLAoJYnVpbGRfdHlwZWRfc2VsZWN0b3JfcmVmZXJlbmNlLCBidWlsZF9zZWxlY3Rvcl9yZWZlcmVuY2UsCglidWlsZF9uZXh0X29iamNfZXhjZXB0aW9uX3N0dWZmLAoJYnVpbGRfbWV0aG9kX3Byb3RvdHlwZV9saXN0X3RlbXBsYXRlLCBnZW5lcmF0ZV9kZXNjcmlwdG9yX3RhYmxlLAoJZ2VuZXJhdGVfcHJvdG9jb2xzLCBidWlsZF9wcm90b2NvbF9pbml0aWFsaXplciwKCWJ1aWxkX2l2YXJfbGlzdF90ZW1wbGF0ZSwgYnVpbGRfbWV0aG9kX2xpc3RfdGVtcGxhdGUsCglidWlsZF9pdmFyX2xpc3RfaW5pdGlhbGl6ZXIsIGdlbmVyYXRlX2l2YXJzX2xpc3QsCglnZW5lcmF0ZV9kaXNwYXRjaF90YWJsZSwgZ2VuZXJhdGVfcHJvdG9jb2xfbGlzdCwKCWJ1aWxkX2NhdGVnb3J5X2luaXRpYWxpemVyLCBidWlsZF9zaGFyZWRfc3RydWN0dXJlX2luaXRpYWxpemVyLAoJZ2VuZXJhdGVfc2hhcmVkX3N0cnVjdHVyZXMsIGhhbmRsZV9pbXBlbnQsCglnZW5lcmF0ZV9vYmpjX2ltYWdlX2luZm8pOiBMaWtld2lzZS4KCjIwMDQtMDQtMjUgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjZmdsYXlvdXQuYyAoZHVwbGljYXRlX2luc25fY2hhaW4pOiBSZW1vdmUgcmVmZXJlbmNlcyB0bwoJTk9URV9JTlNOX0xPT1BfVlRPUCBhbmQgTk9URV9JTlNOX0xPT1BfQ09OVC4KCSogY2ZnbG9vcC5oIChzdHJ1Y3QgbG9vcCk6IFJlbW92ZSBmaWVsZHMgdnRvcCwgY29udCBhbmQgY29udF9kb21pbmF0b3IuCgkqIGNmZ3J0bC5jIChydGxfZGVsZXRlX2Jsb2NrKTogUmVtb3ZlIGhhbmRsaW5nIG9mIE5PVEVfSU5TTl9MT09QX0NPTlQuCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IFJlbW92ZSByZWZlcmVuY2VzIHRvIE5PVEVfSU5TTl9MT09QX1ZUT1AKCWFuZCBOT1RFX0lOU05fTE9PUF9DT05ULgoJKiBpbnNuLW5vdGVzLmRlZiAoTk9URV9JTlNOX0xPT1BfVlRPUCwgTk9URV9JTlNOX0xPT1BfQ09OVCk6IFJlbW92ZS4KCSoganVtcC5jIChzcXVlZXplX25vdGVzKTogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gTk9URV9JTlNOX0xPT1BfVlRPUAoJYW5kIE5PVEVfSU5TTl9MT09QX0NPTlQuCgkqIGxvb3AuYyAoc2Nhbl9sb29wcywgZmluZF9hbmRfdmVyaWZ5X2xvb3BzLCBmb3JfZWFjaF9pbnNuX2luX2xvb3AsCgljaGVja19kYnJhX2xvb3AsIGxvb3BfZHVtcF9hdXgpOiBSZW1vdmUgcmVmZXJlbmNlcyB0byByZW1vdmVkIG5vdGVzCglhbmQgZmllbGRzLgoJKiByZW9yZy5jIChtb3N0bHlfdHJ1ZV9qdW1wKTogRG8gbm90IHJlbHkgb24gTk9URV9JTlNOX0xPT1BfVlRPUHMuCgkqIHVucm9sbC5jICh1bnJvbGxfbG9vcCwgY29weV9sb29wX2JvZHksIGxvb3BfaXRlcmF0aW9ucyk6IFJlbW92ZQoJcmVmZXJlbmNlcyB0byByZW1vdmVkIG5vdGVzIGFuZCBmaWVsZHMuCgkoc3VidHJhY3RfcmVnX3Rlcm0sIHVqdW1wX3RvX2xvb3BfY29udCk6IFJlbW92ZS4KCjIwMDQtMDgtMjUgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCB0aGF0IGxpYmNwcCBkb2VzIG5vdCByZXF1aXJlCglBdXRvbWFrZSBhbnkgbG9uZ2VyLiAgRG9jdW1lbnQgdGhhdCBBdXRvbWFrZSAxLjkuMSBzaG91bGQKCXdvcmsgZXZlcnl3aGVyZS4KCjIwMDQtMDgtMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmbGFncy5oIChlbnVtIGRlYnVnX2luZm9fdHlwZSk6IFJlbW92ZSBEV0FSRl9ERUJVRy4KCSogZGVmYXVsdHMuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogUmVtb3ZlIGNoZWNrIGZvcgoJRFdBUkZfREVCVUdHSU5HX0lORk8gZnJvbSBjaG9pY2Utb2YtZGVmaW5pdGlvbiBjaGFpbjsKCXJlc3RydWN0dXJlIHVzaW5nIEM4OSBmZWF0dXJlcyAoI2VsaWYsICNlcnJvcikuCgkqIGMtbGV4LmMsIGZpbmFsLmMsIG9wdHMuYywgY29uZmlnL2NyaXMvY3Jpcy5jLCBjb25maWcvZnJ2L2Zydi5jCgkqIGNvbmZpZy9zaC9zaC5oOiBSZW1vdmUgcmVmZXJlbmNlcyB0byBEV0FSRl9ERUJVRy4KCSogZG9jL2ludm9rZS50ZXhpOiBSZW1vdmUgcmVmZXJlbmNlcyB0byBEV0FSRiB2ZXJzaW9uIDE7CgljbGFyaWZ5IHdoeSAtZ2R3YXJmLTI8bj4gZG9lc24ndCB3b3JrLgoKMjAwNC0wOC0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKEJCX1NFVF9QQVJUSVRJT04pOiBDbGVhciBvbGQgdmFsdWUgZmlyc3QuCgkqIGNmZy5jIChjbGVhcl9iYl9mbGFncyk6IERvbid0IGNsZWFyIHBhcnRpdGlvbiBzZXR0aW5nLgoJKiBpZmN2dC5jIChmaW5kX2lmX2Nhc2VfMSk6IFJlbW92ZSA/Pz8gY29tbWVudC4KCjIwMDQtMDgtMjUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0LzE3MDUyCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKG1hY2hpbmVfZnVuY3Rpb24pOiBSZW1vdmUgc3lzdl92YXJhcmdzX3AuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoUlM2MDAwX1ZBUkFSR1NfQVJFQSk6IFVzZQoJY3VycmVudF9mdW5jdGlvbl9zdGRhcmcgaW4gcGxhY2Ugb2Ygc3lzdl92YXJhcmdzX3AuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHNldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBEb24ndCBzZXQKCXN5c3ZfdmFyYXJnc19wLgoKMjAwNC0wOC0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTYyOTgKCSogY29uZmlnL2kzODYvaTM4Ni5jIChsZWdpdGltYXRlX2NvbnN0YW50X3ApOiBSZXdvcmsgdG8gbm90IGFjY2VwdAoJcmFuZG9tIGNvZGVzIHdpdGhpbiBDT05TVC4KCjIwMDQtMDgtMjQgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIE1ha2VmaWxlLmluIChTVEFHRUZFRURCQUNLX0ZMQUdTX1RPX1BBU1MpOiBSZW1vdmUKCS1mcmVvcmRlci1ibG9ja3MtYW5kLXBhcnRpdGlvbi4KCjIwMDQtMDgtMjQgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgbWlkZGxlLWVuZC8xNzA0NAoJKiB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYyAocmVkaXJlY3Rpb25fZGF0YSk6IE1ha2Ugc3RhdGljLgoJKHRocmVhZF9ibG9jayk6IFVzZSBnZ2NfYWxsb2NfY2xlYXJlZCB0byBhbGxvY2F0ZSBzdHJ1Y3QKCXJlZGlyZWN0aW9uX2RhdGEuICBEb24ndCBmcmVlIGVsZW1lbnRzIGluIHJlZGlyZWN0aW9uX2RhdGEuCgoyMDA0LTA4LTI0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9wcmVkaWNhdGVzLm1kIChzbWFsbF9kYXRhX3BhdHRlcm4pOiBNYXRjaCBwcmVmZXRjaGVzLgoKMjAwNC0wOC0yNCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE3MDE2CgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYyAobnVtYmVyX29mX2l0ZXJhdGlvbnNfY29uZCwKCW51bWJlcl9vZl9pdGVyYXRpb25zX2V4aXQpOiBVc2UgUE9JTlRFUl9UWVBFX1AgaW5zdGVhZAoJb2YgdGVzdGluZyBmb3IgUE9JTlRFUl9UWVBFLgoKMjAwNC0wOC0yNCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1pdmNhbm9uLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmMgKGNyZWF0ZV9pdik6IE5ldyBmdW5jdGlvbi4KCSogTWFrZWZpbGUuaW4gKHRyZWUtc3NhLWxvb3AtaXZjYW5vbi5vKTogQWRkLgoJKHRyZWUtc3NhLWxvb3AubywgdHJlZS1zc2EtbG9vcC1tYW5pcC5vKTogQWRkIFNDRVZfSCBkZXBlbmRlbmN5LgoJKiBjZmdsb29wLmMgKG1hcmtfc2luZ2xlX2V4aXRfbG9vcHMpOiBOZXcgZnVuY3Rpb24uCgkodmVyaWZ5X2xvb3Bfc3RydWN0dXJlKTogVmVyaWZ5IHNpbmdsZS1leGl0IGxvb3BzLgoJKiBjZmdsb29wLmggKHN0cnVjdCBsb29wKTogQWRkIHNpbmdsZV9leGl0IGZpZWxkLgoJKExPT1BTX0hBVkVfTUFSS0VEX1NJTkdMRV9FWElUUyk6IE5ldyBjb25zdGFudC4KCShtYXJrX3NpbmdsZV9leGl0X2xvb3BzKTogRGVjbGFyZS4KCSh0cmVlX251bV9sb29wX2luc25zKTogRGVjbGFyZS4KCSogY2ZnbG9vcG1hbmlwLmMgKHVwZGF0ZV9zaW5nbGVfZXhpdHNfYWZ0ZXJfZHVwbGljYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkoZHVwbGljYXRlX2xvb3BfdG9faGVhZGVyX2VkZ2UpOiBVc2UgaXQuCgkqIGNvbW1vbi5vcHQgKGZpdmNhbm9uKTogTmV3IGZsYWcuCgkqIHRpbWV2YXIuZGVmIChUVl9UUkVFX0xPT1BfSVZDQU5PTiwgVFZfQ09NUExFVEVfVU5ST0xMKTogTmV3IHRpbWV2YXJzLgoJKiB0cmVlLWNmZy5jICh0cmVlX2ZpbmRfZWRnZV9pbnNlcnRfbG9jKTogUmV0dXJuIG5ld2x5IGNyZWF0ZWQgYmxvY2suCgkoYnNpX2NvbW1pdF9lZGdlX2luc2VydHNfMSk6IFBhc3MgbnVsbCB0byB0cmVlX2ZpbmRfZWRnZV9pbnNlcnRfbG9jLgoJKGJzaV9pbnNlcnRfb25fZWRnZV9pbW1lZGlhdGUpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUtZmxvdy5oIChic2lfaW5zZXJ0X29uX2VkZ2VfaW1tZWRpYXRlLAoJY2Fub25pY2FsaXplX2luZHVjdGlvbl92YXJpYWJsZXMsIHRyZWVfdW5yb2xsX2xvb3BzX2NvbXBsZXRlbHksCgljcmVhdGVfaXYpOiBEZWNsYXJlLgoJKiB0cmVlLW9wdGltaXplLmMgKGluaXRfdHJlZV9vcHRpbWl6YXRpb25fcGFzc2VzKTogQWRkCglwYXNzX2l2X2Nhbm9uIGFuZCBwYXNzX2NvbXBsZXRlX3Vucm9sbC4KCSogdHJlZS1wYXNzLmggKHBhc3NfaXZfY2Fub24sIHBhc3NfY29tcGxldGVfdW5yb2xsKTogRGVjbGFyZS4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGdldF9sb29wX2V4aXRfY29uZGl0aW9uLAoJZ2V0X2V4aXRfY29uZGl0aW9uc19yZWMsIG51bWJlcl9vZl9pdGVyYXRpb25zX2luX2xvb3AsCglzY2V2X2luaXRpYWxpemUpOiBVc2Ugc2luZ2xlX2V4aXQgaW5mb3JtYXRpb24uCgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYyAobnVtYmVyX29mX2l0ZXJhdGlvbnNfY29uZCk6IFJlY29yZAoJbWlzc2luZyBhc3N1bXB0aW9ucy4KCShsb29wX25pdGVyX2J5X2V2YWwpOiBSZXR1cm4gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgYXMgdW5zaWduZWQKCWludC4KCSogdHJlZS1zc2EtbG9vcC5jICh0cmVlX3NzYV9sb29wX2luaXQpOiBNYXJrIHNpbmdsZSBleGl0IGxvb3BzLgoJKHRyZWVfc3NhX2xvb3BfaXZjYW5vbiwgZ2F0ZV90cmVlX3NzYV9sb29wX2l2Y2Fub24sIHBhc3NfaXZfY2Fub24sCgl0cmVlX2NvbXBsZXRlX3Vucm9sbCwgZ2F0ZV90cmVlX2NvbXBsZXRlX3Vucm9sbCwgcGFzc19jb21wbGV0ZV91bnJvbGwpOgoJTmV3IHBhc3Nlcy4KCSh0cmVlX3NzYV9sb29wX2RvbmUpOiBDYWxsIGZyZWVfbnVtYmVyc19vZl9pdGVyYXRpb25zX2VzdGltYXRlcy4KCSogdHJlZS1zc2FuYW1lcy5jIChtYWtlX3NzYV9uYW1lKTogQWxsb3cgY3JlYXRpbmcgc3NhIG5hbWUgYmVmb3JlCgl0aGUgZGVmaW5pbmcgc3RhdGVtZW50IGlzIHJlYWR5LgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdF9jcmVhdGVfaXZfc2ltcGxlKTogUmVtb3ZlZC4KCSh2ZWN0X2NyZWF0ZV9pbmRleF9mb3JfYXJyYXlfcmVmLCB2ZWN0X3RyYW5zZm9ybV9sb29wX2JvdW5kKToKCVVzZSBjcmVhdGVfaXYuCgkodmVjdF90cmFuc2Zvcm1fbG9vcF9ib3VuZCk6IFVzZSBzaW5nbGVfZXhpdCBpbmZvcm1hdGlvbi4KCSh2ZWN0X2FuYWx5emVfbG9vcF9mb3JtKTogQ2xlYW51cCBib2d1cyB0ZXN0cy4KCSh2ZWN0b3JpemVfbG9vcHMpOiBEbyBub3QgY2FsbCBmbG93X2xvb3Bfc2Nhbi4KCSogdHJlZS5oIChtYXlfbmVnYXRlX3dpdGhvdXRfb3ZlcmZsb3dfcCk6IERlY2xhcmUuCgkqIGZvbGQtY29uc3QuYyAobWF5X25lZ2F0ZV93aXRob3V0X292ZXJmbG93X3ApOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShuZWdhdGVfZXhwcl9wKTogLi4uIHRoaXMgZnVuY3Rpb24uCgkodHJlZV9leHByX25vbnplcm9fcCk6IEhhbmRsZSBvdmVyZmxvd2VkIGNvbnN0YW50cyBjb3JyZWN0bHkuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZpdmNhbm9uKTogRG9jdW1lbnQuCgkqIGRvYy9wYXNzZXMudGV4aTogRG9jdW1lbnQgY2Fub25pY2FsIGluZHVjdGlvbiB2YXJpYWJsZSBjcmVhdGlvbi4KCjIwMDQtMDgtMjQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19JTlRfQ09ORE1PVkUpOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAocHJpbnRfb3BlcmFuZCk6IEZvbGQgJUIvJWIgaGFuZGxpbmcgaW50byAlVC8ldCwKCXVzaW5nIHRoZSBtb2RlIG9mIHRoZSBvcGVyYW5kIHRvIGRlY2lkZSBiZXR3ZWVuIHRoZW0uCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKE1PVkVDQyk6IE5ldyBtb2RlIG1hY3JvLgoJKGNjcmVnKTogTmV3IG1vZGUgYXR0cmlidXRlLgoJKCptb3Z7c2ksZGksc2YsZGZ9X29uX3tjYyxzaSxkaX0pOiBOYW1lIGZvcm1lcmx5IHVubmFtZWQgcGF0dGVybnMuCglSZWRlZmluZSB1c2luZyA6R1BSIGFuZCA6TU9WRUNDLiAgVXNlICVUIGFuZCAldCBmb3IgdGhlIGNvbmRpdGlvbi4KCShtb3Zbc2RdaWNjKTogUmVkZWZpbmUgdXNpbmcgOkdQUi4KCjIwMDQtMDgtMjQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfZW1pdF9wcmVmZXRjaCk6IERlbGV0ZS4KCShtaXBzX3ByZWZldGNoX2Nvb2tpZSk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5jIChwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBGaXggaGFuZGxpbmcgb2YKCUFERFJFU1NfQ09OU1RfSU5ULgoJKG1pcHNfZW1pdF9wcmVmZXRjaCk6IERlbGV0ZS4KCShtaXBzX3ByZWZldGNoX2Nvb2tpZSk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAocHJlZmV0Y2gpOiBUdXJuIGludG8gYSBkZWZpbmVfaW5zbi4gIFVzZSBhCgltb2RlIG9mIFFJbW9kZSBmb3IgdGhlIGFkZHJlc3Nfb3BlcmFuZC4gIFVzZSBtaXBzX3ByZWZldGNoX2Nvb2tpZQoJdG8gY2FsY3VsYXRlIHRoZSBmaXJzdCAicHJlZiIgb3BlcmFuZC4KCShwcmVmZXRjaF9bc2RdaSwgcHJlZmV0Y2hfW3NkXWlfYWRkcmVzcyk6IERlbGV0ZS4KCShwcmVmZXRjaF9pbmRleGVkX1tzZF1pKTogUmVkZWZpbmUgdXNpbmcgOlAuICBVc2UgbWlwc19wcmVmZXRjaF9jb29raWUuCgoyMDA0LTA4LTI0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZDogSW5jbHVkZSBwcmVkaWNhdGVzLm1kLgoJKiBwcmVkaWNhdGVzLm1kOiBOZXcgZmlsZS4KCSogYXJtLmMgKHNfcmVnaXN0ZXJfb3BlcmFuZCwgYXJtX2hhcmRfcmVnaXN0ZXJfb3BlcmFuZCkKCShhcm1fZ2VuZXJhbF9yZWdpc3Rlcl9vcGVyYW5kLCBmX3JlZ2lzdGVyX29wZXJhbmQsIHJlZ19vcl9pbnRfb3BlcmFuZCkKCShhcm1faW1tZWRpYXRlX29wZXJhbmQsIGFybV9uZWdfaW1tZWRpYXRlX29wZXJhbmQpCgkoYXJtX25vdF9pbW1lZGlhdGVfb3BlcmFuZCwgYXJtX3Joc19vcGVyYW5kLCBhcm1fcmhzbV9vcGVyYW5kKQoJKGFybV9hZGRfb3BlcmFuZCwgYXJtX2FkZGltbV9vcGVyYW5kLCBhcm1fbm90X29wZXJhbmQpCgkob2Zmc2V0dGFibGVfbWVtb3J5X29wZXJhbmQsIGFsaWduYWJsZV9tZW1vcnlfb3BlcmFuZCkKCShhcm1fcmVsb2FkX21lbW9yeV9vcGVyYW5kLCBhcm1fZmxvYXRfcmhzX29wZXJhbmQpCgkoYXJtX2Zsb2F0X2FkZF9vcGVyYW5kLCB2ZnBfY29tcGFyZV9vcGVyYW5kLCBhcm1fZmxvYXRfY29tcGFyZV9vcGVyYW5kKQoJKGluZGV4X29wZXJhbmQsIHNoaWZ0YWJsZV9vcGVyYXRvciwgbG9naWNhbF9iaW5hcnlfb3BlcmF0b3IpCgkoc2hpZnRfb3BlcmF0b3IsIGVxdWFsaXR5X29wZXJhdG9yLCBhcm1fY29tcGFyaXNvbl9vcGVyYXRvcikKCShtaW5tYXhfb3BlcmF0b3IsIGNjX3JlZ2lzdGVyLCBkb21pbmFudF9jY19yZWdpc3RlcikKCShhcm1fZXh0ZW5kcWlzaV9tZW1fb3AsIHBvd2VyX29mX3R3b19vcGVyYW5kLCBub25pbW1lZGlhdGVfZGlfb3BlcmFuZCkKCShkaV9vcGVyYW5kLCBub25pbW1lZGlhdGVfc29mdF9kZl9vcGVyYW5kLCBzb2Z0X2RmX29wZXJhbmQpCgkoY29uc3Rfc2hpZnRfb3BlcmFuZCwgbG9hZF9tdWx0aXBsZV9vcGVyYXRpb24pCgkoc3RvcmVfbXVsdGlwbGVfb3BlcmF0aW9uLCBtdWx0aV9yZWdpc3Rlcl9wdXNoLCB0aHVtYl9jbXBfb3BlcmFuZCkKCSh0aHVtYl9jbXBuZWdfb3BlcmFuZCwgdGh1bWJfY2JyY2hfdGFyZ2V0X29wZXJhbmQpCgkoY2lycnVzX3JlZ2lzdGVyX29wZXJhbmQsIGNpcnJ1c19mcF9yZWdpc3RlcikKCShjaXJydXNfc2hpZnRfY29uc3QpOiBEZWxldGUsIHJlcGxhY2VkIHdpdGggZXF1aXZhbGVudHMgaW4KCXByZWRpY2F0ZXMubWQuCgkoc2hpZnRfb3ApOiBIYW5kbGUgUk9UQVRFLgoJKiBhcm0tcHJvdG9zLmg6IERlbGV0ZSBkZWNsYXJhdGlvbnMgZm9yIGFib3ZlLgoJKiBhcm0uaCAoUFJFRElDQVRFX0NPREVTLCBTUEVDSUFMX01PREVfUFJFRElDQVRFUyk6IERlbGV0ZS4KCSogdC1hcm0gKE1EX0lOQ0xVREVTKTogQWRkIHByZWRpY2F0ZXMubWQuCgkocy1wcmVkcyk6IERlcGVuZHMgb24gTURfSU5DTFVERVMuCgoyMDA0LTA4LTI0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZ2VuX2NvbmRpdGlvbmFsX3RyYXApOiBGaXggbW9kZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKmNvbmRpdGlvbmFsX3RyYXBbc2RdaSk6IE5hbWUgcHJldmlvdXNseSB1bm5hbWVkCglwYXR0ZXJucy4gIFJlZGVmaW5lIHVzaW5nIDpHUFIuICBHaXZlIHRoZSBtYXRjaF9vcGVyYXRvciBhIG1vZGUuCglVc2UgJyUyJyByYXRoZXIgdGhhbiAnJXoyJyBmb3Igb3BlcmFuZCAyLgoKMjAwNC0wOC0yNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAobG9hZF9jYWxsW3NkXWkpOiBSZWRlZmluZSB1c2luZyA6UC4gIEFkZCBtb2RlCglhdHRyaWJ1dGUuCgoyMDA0LTA4LTI0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChpbmRpcmVjdF9qdW1wKTogVXNlIGZvcmNlX3JlZy4gIEFkanVzdCBuYW1lcwoJb2YgaW50ZXJuYWwgcGF0dGVybnMuCgkoaW5kaXJlY3RfanVtcFtzZF1pKTogUmVuYW1lZCBmcm9tIGluZGlyZWN0X2p1bXBfaW50ZXJuYWxbMTJdLgoJUmVkZWZpbmUgdXNpbmcgOlAuCgkodGFibGVqdW1wKTogVXNlIGV4cGFuZF9iaW5vcCB0byBjYWxjdWxhdGUgYWRkcmVzcy4gIEFkanVzdCBuYW1lcwoJb2YgaW50ZXJuYWwgcGF0dGVybnMuCgkodGFibGVqdW1wW3NkXWkpOiBSZW5hbWVkIGZyb20gdGFibGVqdW1wX2ludGVybmFsWzEyXS4KCVJlZGVmaW5lIHVzaW5nIDpQLgoJKHRhYmxlanVtcF9taXBzMTZbMTJdKTogRGVsZXRlLgoKMjAwNC0wOC0yNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKnNlcV9bc2RdaSwgKnNlcV9bc2RdaV9taXBzMTYsICpzbmVfW3NkXWkpCgkoKnNndF9bc2RdaSwgKnNndF9bc2RdaV9taXBzMTYsICpzZ2VfW3NkXWksICpzbHRfW3NkXWkpCgkoKnNsdF9bc2RdaV9taXBzMTYsICpzbGVfW3NkXWksICpzbGVfW3NkXWlfbWlwczE2LCAqc2d0dV9bc2RdaSkKCSgqc2d0dV9bc2RdaV9taXBzMTYsICpzZ2VfW3NkXWksICpzbHR1X1tzZF1pLCAqc2x0dV9bc2RdaV9taXBzMTYpCgkoKnNsZXVfW3NkXWksICpzbGV1X1tzZF1pX21pcHMxNik6IFJlZGVmaW5lIHVzaW5nIDpHUFIuCgoyMDA0LTA4LTI0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChjbXBzaSwgY21wZGkpOiBSZWRlZmluZSB1c2luZyA6R1BSLgoJKCpicmFuY2hfemVyb1tzZF1pKTogUmVuYW1lZCBmcm9tIGJyYW5jaF96ZXJveyxfZGl9LiAgUmVkZWZpbmUKCXVzaW5nIDpHUFIuCgkoKmJyYW5jaF96ZXJvW3NkXWlfaW52ZXJ0ZWQpOiBMaWtld2lzZSBicmFuY2hfemVyb3ssX2RpfV9pbnZlcnRlZC4KCSgqYnJhbmNoX2VxdWFsaXR5W3NkXWkpOiBMaWtld2lzZSBicmFuY2hfZXF1YWxpdHl7LF9kaX0uCgkoKmJyYW5jaF9lcXVhbGl0eVtzZF1pX2ludmVydGVkKTogTGlrZXdpc2UKCWJyYW5jaF9lcXVhbGl0eXssX2RpfV9pbnZlcnRlZC4KCSgqYnJhbmNoX2VxdWFsaXR5W3NkXWlfbWlwczE2KTogTmFtZSBmb3JtZXJseSB1bm5hbWVkIHBhdHRlcm5zLgoJUmVkZWZpbmUgdXNpbmcgOkdQUi4KCjIwMDQtMDgtMjQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBydGwuZGVmOiBSZW9yZ2FuaXplLCBwbGFjaW5nIGFsbCBjb2RlcyB1c2VkIG9ubHkgaW4gbWFjaGluZQoJZGVzY3JpcHRpb25zIGF0IHRoZSBlbmQuCgoJKiBydGwuZGVmOiBXcmFwIE1ELW9ubHkgY29kZXMgaW4gI2lmZGVmIEdFTkVSQVRPUl9GSUxFLgoJKiBnZW5ndHlwZS5jOiBEb24ndCBpbmNsdWRlIHJ0bC5oLiAgRGVmaW5lIGVudW0gcnR4X2NvZGUgYW5kCglydHhfbmFtZSwgcnR4X2Zvcm1hdCBhcnJheXMgYnkgZGlyZWN0IHJlZmVyZW5jZSB0byBydGwuZGVmLAoJZmlyc3QgdW5kZWZpbmluZyBHRU5FUkFUT1JfRklMRS4gIERlZmluZSBlbnVtIGluc25fbm90ZSBhbmQKCW5vdGVfaW5zbl9uYW1lIGFycmF5IGJ5IGRpcmVjdCByZWZlcmVuY2UgdG8gaW5zbi1ub3Rlcy5kZWYuCgkoYWRqdXN0X2ZpZWxkX3J0eF9kZWYpOiBSZW1vdmUgbG9jYWwgZGVmaW5pdGlvbiBvZiBydHhfbmFtZS4KCVVzZSBzeW1ib2xpYyBuYW1lcyBmb3IgaW5zbiBub3Rlcy4KCSogTWFrZWZpbGUuaW4gKGdlbmd0eXBlLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwNC0wOC0yNCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBiYXNpY19ibG9ja19kZWYpOiBSZW9yZGVyIGZpZWxkcyB0bwoJZWxpbWluYXRlIGludGVyaW9yIHBhZGRpbmcuICBSZW1vdmUgJ3BhcnRpdGlvbicgZmllbGQuCgkoQkJfRElTQUJMRV9TQ0hFRFVMRSwgQkJfSE9UX1BBUlRJVElPTiwgQkJfQ09MRF9QQVJUSVRJT04pCgkoQkJfVU5QQVJUSVRJT05FRCwgQkJfUEFSVElUSU9OLCBCQl9TRVRfUEFSVElUSU9OKQoJKEJCX0NPUFlfUEFSVElUSU9OKTogTmV3IG1hY3Jvcy4KCSogYmItcmVvcmRlci5jLCBjZmdjbGVhbnVwLmMsIGNmZ2xheW91dC5jLCBjZmdydGwuYywgaWZjdnQuYwoJUmVwbGFjZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgJ3BhcnRpdGlvbicgZmllbGQgb2YgYSBiYXNpYwoJYmxvY2sgd2l0aCBuZXcgbWFjcm9zLgoKCSogaW5zbi1ub3Rlcy5kZWY6IERlbGV0ZSBOT1RFX0lOU05fRElTQUJMRV9TQ0hFRF9PRl9CTE9DSy4KCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRG9uJ3QgaGFuZGxlIGl0LgoJKiBtb2R1bG8tc2NoZWQuYzogU2V0IEJCX0RJU0FCTEVfU0NIRURVTEUgZmxhZyBvbiBnLT5iYgoJaW5zdGVhZCBvZiBlbWl0dGluZyBhIE5PVEVfSU5TTl9ESVNBQkxFX1NDSEVEX09GX0JMT0NLIG5vdGUuCgkqIHNjaGVkLXJnbi5jIChzY2hlZF9pc19kaXNhYmxlZF9mb3JfY3VycmVudF9yZWdpb25fcCk6CglMb29rIGZvciBhIEJCX0RJU0FCTEVfU0NIRURVTEUgZmxhZyBvbiB0aGUgYmxvY2sgaW5zdGVhZCBvZiBhIG5vdGUuCgoyMDA0LTA4LTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKGNfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGp1c3QKCWJ1aWxkX2NvbW1vbl90cmVlX25vZGVzIGNhbGwuCgkqIGV4cG1lZC5jIChjb25zdF9tdWx0X2FkZF9vdmVyZmxvd19wKTogVXNlCglidWlsZF9kaXN0aW5jdF90eXBlX2NvcHkuCgkqIHN0b3ItbGF5b3V0LmMgKGVhcmx5X3R5cGVfbGlzdCk6IFJlbW92ZS4KCShsYXlvdXRfdHlwZSk6IERvbid0IGFwcGVuZCB0byBlYXJseV90eXBlX2xpc3QuCgkoaW5pdGlhbGl6ZV9zaXpldHlwZXMpOiBBZGQgc2lnbmVkX3AgYXJndW1lbnQuCgkoc2V0X3NpemV0eXBlKTogT3ZlcndyaXRlIHRoZSBzdHViIHR5cGUgbm9kZXMgZGlyZWN0bHkuCgkqIHRyZWUuYyAoY29weV9ub2RlX3N0YXQpOiBDbGVhciBhIHR5cGUncyB2YWx1ZSBjYWNoZSBoZXJlIC4uLgoJKGJ1aWxkX2Rpc3RpbmN0X3R5cGUpOiAuLi4gbm90IGhlcmUuCgkoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXMpOiBBZGQgc2lnbmVkX3NpemV0eXBlIGFyZ3VtZW50LiBBZGp1c3QuCgkqIHRyZWUuaCAoaW5pdGlhbGl6ZV9zaXpldHlwZXMpOiBBZGQgc2lnbmVkX3AgYXJndW1lbnQuCgkoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXMpOiBMaWtld2lzZS4KCgkqIG9iamMvb2JqYy1hY3QuYyAoZ2V0X3N0YXRpY19yZWZlcmVuY2UpOiBVc2UKCWJ1aWxkX3ZhcmlhbnRfdHlwZV9jb3B5LgoJKGdldF9wcm90b2NvbF9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogb2JqYy9vYmpjLWFjdC5oIChUUkVFX1NUQVRJQ19URU1QTEFURSk6IFVzZSBUUkVFX1BSSVZBVEUuCgoyMDA0LTA4LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoJICAgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2FycmF5X3JlZl90b19wbHVzKTogRGVsZXRlLgoJKGdpbXBsaWZ5X2FkZHJfZXhwcik6IERvIG5vdCBjYWxsIGdpbXBsaWZ5X2FycmF5X3JlZl90b19wbHVzCglmb3IgQVJSQVlfUkVGLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoYWx0aXZlY19leHBhbmRfYnVpbHRpbik6IEdvIHBhc3NlZAoJQVJSQVlfUkVGIGFsc28gdG8gZ2V0IHRvIHRoZSBTVFJJTkdfQ1NULgoKMjAwNC0wOC0yNCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdmVycmlkZV9vcHRpb25zKTogVXBkYXRlIGVycm9yIG1lc3NhZ2UuCgkqIGNvbmZpZy9hcm0vYXJtLmggKFRBUkdFVF9IQVJEX0ZMT0FUKTogUmVuYW1lIHRvCglUQVJHRVRfSEFSRF9GTE9BVF9BQkkuCgkoVEFSR0VUX1NPRlRfRkxPQVRfQUJJKTogUmVuYW1lIHRvIFRBUkdFVF9IQVJEX0ZMT0FULgoJKExJQkNBTExfVkFMVUUsIEZVTkNUSU9OX1ZBTFVFX1JFR05PX1ApOiBVc2UgVEFSR0VUX0hBUkRfRkxPQVRfQUJJLgoKMjAwNC0wOC0yNCAgS2F6dWhpcm8gSW5hb2thICA8aW5hb2thLmthenVoaXJvQHJlbmVzYXMuY29tPgoKCVBSIHRhcmdldC8xNzA5MwoJKiBjb25maWcvbTMyci5tZCAobW92c2lfc2RhKTogQWRkIFNJIG1vZGUgc3BlY2lmaWNhdGlvbiB0bwoJVU5TUEVDLgoKMjAwNC0wOC0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoUFJFRElDQVRFX0NPREVTKTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uCglvZiBzZXRoX2FkZDNfb3BlcmFuZC4KCjIwMDQtMDgtMjQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoUFJPVE9fT0JKUyk6IEFkZCBlcnJvcnMuby4KCSogcHJvdG9pemUuYyAoZmFuY3lfYWJvcnQpOiBSZW1vdmUuCgkqIG1pcHMtdGZpbGUuYyAoZmFuY3lfYWJvcnQpOiBBZGQgcGFyYW1ldGVycy4KCjIwMDQtMDgtMjQgIEpvbmF0aGFuIFdha2VseSAgPHJlZGlAZ2NjLmdudS5vcmc+CgoJKiBkb2MvdHJvdWJsZS50ZXhpIChDKysgbWlzdW5kZXJzdGFuZGluZ3MpOiBGaXggZXhhbXBsZSBjb2RlLgoKMjAwNC0wOC0yNCAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogTWFrZWZpbGUuaW4gKEhPT0tTX0gpOiBBZGQgZGVwZW5kZW5jeSBvbiBNQUNITU9ERV9ILgoJKGhvc3QtZGVmYXVsdC5vKTogQWRkIGRlcGVuZGVuY3kgb24gSE9PS1NfSC4KCSogY29uZmlnL3gtbGludXg6IExpa2V3aXNlLgoJKiBjb25maWcveC1zb2xhcmlzOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYveC1taW5ndzMyOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC94LWRhcndpbjogTGlrZXdpc2UuCgoyMDA0LTA4LTIzICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiByZWctbm90ZXMuZGVmIChSRUdfTk9URSk6IEluIGNvbW1lbnQsIGNoYW5nZSBERUZfSU5TTl9OT1RFIHRvCglERUZfUkVHX05PVEUuCgoyMDA0LTA4LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMvMTQ0OTIKCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSk6IFJvYnVzdGlmeS4KCjIwMDQtMDgtMjMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogY2ZnLmMgKGNoZWNrX2JiX3Byb2ZpbGUpOiBGaXggdHlwb3MuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtX2lzX3N0YWNrX3Bhcm0pOiBMaWtld2lzZS4KCSogdHJlZS1uZXN0ZWQuYzogTGlrZXdpc2UuCgoyMDA0LTA4LTIzICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBkZWJpYW4ub3JnPgoKCSogZ2djLXpvbmUuYyAoc3RydWMgYWxsb2NfY2h1bmspOiBSZWFycmFuZ2UgZmxhZyBiaXRzIGFuZCBTSVpFLgoJUmVtb3ZlIFRZUEVDT0RFLgoJKGdnY19hbGxvY196b25lXzEpOiBNYXJrIFRZUEUgYXMgdW51c2VkLiAgRG9uJ3Qgc2F2ZSBpdCBpbiB0aGUgY2h1bmsuCgoyMDA0LTA4LTIzICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGRlZmF1bHRzLmggKFZFQ1RPUl9NT0RFX1NVUFBPUlRFRF9QKTogUmVtb3ZlIG1hY3JvLgoJKiBzeXN0ZW0uaCAoVkVDVE9SX01PREVfU1VQUE9SVEVEX1ApOiBQb2lzb24uCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX1ZFQ1RPUl9NT0RFX1NVUFBPUlRFRF9QKTogRGVmaW5lLgoJKiB0YXJnZXQuaDogRGl0dG8uCgkqIGhvb2tzLmg6IEluY2x1ZGUgbWFjaG1vZGUuaC4KCShob29rX2Jvb2xfbW9kZV9mYWxzZSk6IERlY2xhcmUuCgkqIGhvb2tzLmMgKGhvb2tfYm9vbF9tb2RlX2ZhbHNlKTogRGVmaW5lLgoJKiBleHByLmMgKHZlY3Rvcl9tb2RlX3ZhbGlkX3ApOiBVc2UgdGFyZ2V0bS52ZWN0b3JfbW9kZV9zdXBwb3J0ZWRfcC4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUpOiBEaXR0by4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3ZlY3Rvcl9tb2RlX3N1cHBvcnRlZF9wKTogTmV3IGZ1bmN0aW9uLgoJRGVmaW5lIHRvIHRhcmdldCBtYWNyby4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKFZFQ1RPUl9NT0RFX1NVUFBPUlRFRF9QKTogRGVsZXRlLgoJKiBjb25maWcvYXJtL2FybS5jOiBEaXR0by4gVXNlLgoJKiBjb25maWcvYXJtL2FybS5oOiBEaXR0by4KCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmg6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9pMzg2Lmg6IERpdHRvLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBEaXR0by4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogRGl0dG8uCgkqIGNvbmZpZy9zaC9zaC5jOiBEaXR0by4KCSogY29uZmlnL3NoL3NoLmg6IERpdHRvLgoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmg6IERpdHRvLgoJKiBjb25maWcvc2gvc2gubWQ6IFVzZS4KCSogZG9jL3RtLnRleGk6IE1vdmUgZG9jdW1lbnRhdGlvbiBmb3IgVkVDVE9SX01PREVfU1VQUE9SVEVEX1AKCXRvIFRBUkdFVF9WRUNUT1JfTU9ERV9TVVBQT1JURURfUC4KCjIwMDQtMDgtMjMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQlVJTERfRVJST1JTKTogU2V0IHRvIGJ1aWxkLWVycm9ycy4KCShlcnJvcnMubyk6IE5ldyB0YXJnZXQgZm9yIGhvc3QuCgkoYnVpbGQtZXJyb3JzLm8pOiBOZXcgdGFyZ2V0IGZvciBidWlsZC4KCShnZW5vYmpzKTogUmVwbGFjZSBlcnJvcnMubyB3aXRoIGJ1aWxkLWVycm9ycy4KCShnZW5nZW5ydGwkKGJ1aWxkZXhlZXh0KSk6IEFkZCAkKEJVSUxEX0VSUk9SUykuCgkoR0NPVl9PQkpTLCBHQ09WX0RVTVBfT0JKUyk6IEFkZCBlcnJvcnMuby4KCShmaXgtaGVhZGVycyQoYnVpbGRfZXhlZXh0KSk6IEFkZCAkKEJVSUxEX0VSUk9SUykuCgkoZml4LWhlYWRlci5vKTogQWRkIGVycm9ycy5oCgkqIGNvbGxlY3QyLmMgKGZhbmN5X2Fib3J0KTogQWRkIHBhcmFtZXRlcnMuCgkqIGNvbGxlY3QyLmggKGZhbmN5X2Fib3J0KTogRG9uJ3QgZGVjbGFyZS4KCSogZXJyb3JzLmggKGZhbmN5X2Fib3J0KTogRG9uJ3QgZGVjbGFyZS4KCSogZXJyb3JzLmM6IEluY2x1ZGUgZWl0aGVyIGJjb25maWcuaCBvciBjb25maWcuaC4KCShmYW5jeV9hYm9ydCk6IFRyaW0gZmlsZW5hbWUuCgkqIGZpeC1oZWFkZXIuYyAodl9mYXRhbCwgZmF0YWwpOiBSZW1vdmUuCgkocHJvZ25hbWUpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCShtYWluKTogU2V0IHByb2duYW1lIGhlcmUuCgkqIGdjYy5jIChmYW5jeV9hYm9ydCk6IEFkZCBwYXJhbWV0ZXJzLgoJKiBnY2MuaCAoZmFuY3lfYWJvcnQpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGdjb3YuYyAoZmFuY3lfYWJvcnQpOiBSZW1vdmUuCgkqIHJ0bC5oIChmYW5jeV9hYm9ydCk6IERvbid0IGRlY2xhcmUuCgkoYWJvcnQpOiBEb24ndCBkZWZpbmUuCgkqIHRyZWUuaCAoZmFuY3lfYWJvcnQpOiBEb24ndCBkZWNsYXJlLgoJKGFib3J0KTogRG9uJ3QgZGVmaW5lLgoJKiBzeXN0ZW0uaCAoZmFuY3lfYWJvcnQpOiBEZWNsYXJlLgoJKGFib3J0KTogRGVmaW5lIHRvIGZhbmN5X2Fib3J0LgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4gKEFMTE9CSik6IEFkZCAuLi9idWlsZC1lcnJvcnMubwoKCSogdHJlZS5oIChlbnVtIHNpemVfdHlwZV9raW5kKTogUmVtb3ZlIFVTSVpFVFlQRSwgVUJJVFNJWkVUWVBFLgoJKHVzaXplX3R5cGUsIHViaXRzaXpldHlwZSk6IFJlbW92ZS4KCSogc3Rvci1sYXlvdXQuYyAoc2V0X3NpemV0eXBlKTogRG9uJ3QgaW5pdGlhbGl6ZSB1c2l6ZXR5cGUsCgl1Yml0c2l6ZXR5cGUuCgkqIGZvbGQtY29uc3QuYyAoc2l6ZV9kaWZmb3ApOiBUWVBFIGNhbiBuZXZlciBiZSB1Yml0c2l6ZXR5cGUuCgoJKiB0cmVlLmggKGJ1aWxkX2Rpc3RpbmN0X3R5cGVfY29weSk6IE5ldy4KCShidWlsZF90eXBlX2NvcHkpOiAuLi4gaGVyZS4gIFJlbmFtZSB0byAuLi4KCShidWlsZF92YXJpYW50X3R5cGVfY29weSk6IC4uLiBoZXJlLgoJKiB0cmVlLmMgKGJ1aWxkX3F1YWxpZmllZF90eXBlKTogUmVuYW1lIGJ1aWxkX3R5cGVfY29weSBjYWxsLgoJKGJ1aWxkX2Rpc3RpbmN0X3R5cGVfY29weSk6IE5ldywgYnJva2VuIG91dCBvZiAuLi4KCShidWlsZF90eXBlX2NvcHkpOiAuLi4gaGVyZS4gIFJlbmFtZSB0byAuLi4KCShidWlsZF92YXJpYW50X3R5cGVfY29weSk6IC4uLiBoZXJlLiAgVXNlCglidWlsZF9kaXN0aW5jdF90eXBlX2NvcHkuCgkoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IFJlbmFtZSBidWlsZF90eXBlX2NvcHkgY2FsbC4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogUmVuYW1lIGJ1aWxkX3R5cGVfY29weQoJY2FsbC4KCShoYW5kbGVfcGFja2VkX2F0dHJpYnV0ZSwgaGFuZGxlX3VudXNlZF9hdHRyaWJ1dGUsCgloYW5kbGVfdHJhbnNwYXJhbmV0X3VuaW9uX2F0dHJpYnV0ZSwgaGFuZGxlX2FsaWduZWRfYXR0cmlidXRlLAoJaGFuZGxlX2RlcHJlY2F0ZWRfYXR0cmlidXRlKTogTGlrZXdpc2UuCgkqIGMtZGVjbC5jIChjbG9uZV91bmRlcmx5aW5nX3R5cGUsIHN0b3JlX3Bhcm1fZGVjbHNfb2xkc3R5bGUpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9oYW5kbGVfaXNyX2F0dHJpYnl0ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaW5pdF9idWlsdGlucyk6IFVzZQoJYnVpbGRfZGlzdGluY3RfdHlwZV9jb3B5LgoKMjAwNC0wOC0yMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAobWZoaWxvX1tzZF1pKTogUmVkZWZpbmUgdXNpbmcgOkdQUi4gIEFkZCBtb2RlCglhdHRyaWJ1dGUuCgoyMDA0LTA4LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChsZW5ndGgpOiBEb24ndCB1c2UgbWlwc19mZXRjaF9pbnNucyBmb3IgaW5kZXhlZAoJbG9hZHMgYW5kIHN0b3Jlcy4KCSgqbHd4YzFfPG1vZGU+LCAqbGR4YzFfPG1vZGU+LCAqc3d4YzFfPG1vZGU+LCAqc2R4YzFfPG1vZGU+KTogTmFtZQoJZm9ybWVybHkgdW5uYW1lZCBwYXR0ZXJucy4gIFJlZGVmaW5lIHVzaW5nIDpQIGZvciB0aGUgYWRkcmVzcy4gIFJlbW92ZQoJZXhwbGljaXQgbGVuZ3RoIGF0dHJpYnV0ZXMuCgoyMDA0LTA4LTIzICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiB0cmVlLXNzYS1sb29wLWltLmMgKGZlbV9zaW5nbGVfcmVhY2hhYmxlX2FkZHJlc3MsIGZvcl9lYWNoX21lbXJlZik6CglOZXcgZnVuY3Rpb25zLgoJKHNpbmdsZV9yZWFjaGFibGVfYWRkcmVzcyk6IFVzZSB0aGVtLgoJKHNjaGVkdWxlX3NtKTogQWRkIGR1bXAuCgkoaXNfY2FsbF9jbG9iYmVyZWRfcmVmKTogTmV3IGZ1bmN0aW9uLgoJKGRldGVybWluZV9sc21fcmVnKTogQ2hlY2sgd2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGNhbGwgY2xvYmJlcmVkLgoJT25seSB3b3JrIGZvciBnaW1wbGVfcmVnX3R5cGUgdmFsdWVzLgoKMjAwNC0wOC0yMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKm1vdjxtb2RlPl9yYSk6IE5hbWUgcHJldmlvdXNseSB1bm5hbWVkIE1JUFMxNgoJJDMxIHN0b3JlIGluc25zLiAgUmVkZWZpbmUgdXNpbmcgOkdQUi4KCjIwMDQtMDgtMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFApOiBOZXcgbW9kZSBtYWNyby4KCSgqeGdvdF9oaVtzZF1pLCAqeGdvdF9sb1tzZF1pLCAqZ290X2Rpc3Bbc2RdaSwgKmdvdF9wYWdlW3NkXWkpCgkoKmxvYWRfZ290W3NkXWksICpsb3dbc2RdaSwgKmxvd1tzZF1pX21pcHMxNik6IFJlZGVmaW5lIHVzaW5nIDpQLgoJQWRkIG1vZGUgYXR0cmlidXRlcy4KCjIwMDQtMDgtMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFVOU1BFQ19bTFNdW1dEXVtMUl0pOiBEZWxldGUgaW4gZmF2b3Igb2YuLi4KCShVTlNQRUNfe0xPQUQsU1RPUkV9X3tMRUZULFJJR0hUfSk6IC4uLnRoZXNlIG5ldyBjb25zdGFudHMuICBTaHVmZmxlCglsYXRlciBjb25zdGFudHMgdG8gY292ZXIgdGhlIGdhcC4KCShsb2FkLCBzdG9yZSk6IE5ldyBtb2RlIGF0dHJpYnV0ZXMuCgkobW92X2xbd2RdbCwgbW92X2xbd2RdciwgbW92X3Nbd2RdbCwgbW92X3Nbd2Rdcik6IFJlZGVmaW5lIHVzaW5nIDpHUFIuCglVc2UgbmV3IHVuc3BlYyBjb25zdGFudHMuCgoyMDA0LTA4LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChvbmVfY21wbFtzZF1pMik6IFJlZGVmaW5lIHVzaW5nIDpHUFIuCgkoYW5kW3NkXTMsIGlvcltzZF1pMywgeG9yW3NkXWkzKTogTGlrZXdpc2UuICBDaGFuZ2UgMzItYml0IHBhdHRlcm5zCgl0byB1c2UgcmVnaXN0ZXJfb3BlcmFuZCByYXRoZXIgdGhhbiB1bnNfYXJpdGhfb3BlcmFuZCBhcyB0aGUgcHJlZGljYXRlCglmb3Igb3BlcmFuZCAxLiAgUmVtb3ZlIHJlZHVuZGFudCBNSVBTMTYgZm9yY2VfcmVnKCkgZm9yIG9wZXJhbmQgMS4KCSgqYW5kW3NkXWkzLCAqaW9yW3NkXWkzLCAqeG9yW3NkXWkzKTogTmFtZSBmb3JtZXJseSB1bm5hbWVkIHBhdHRlcm5zLgoJUmVkZWZpbmUgdXNpbmcgOkdQUi4gIE1ha2Ugc2FtZSBwcmVkaWNhdGUgY2hhbmdlIGhlcmUuICBFeHRlbmQgdGhlCgljb21tdXRhdGl2aXR5IG9mIG9wZXJhbmRzIDEgYW5kIDIgZnJvbSB0aGUgU0ltb2RlIHZlcnNpb24gdG8gdGhlCglESW1vZGUgb25lLgoJKCphbmRbc2RdaTNfbWlwczE2LCAqaW9yW3NkXWkzX21pcHMxNiwgKnhvcltzZF1pM19taXBzMTYpOiBMaWtld2lzZSwKCWJ1dCB3aXRoIG5vIHByZWRpY2F0ZSBjaGFuZ2VzLgoJKCpub3Jbc2RdaTMpOiBSZWRlZmluZSB1c2luZyA6R1BSLgoKMjAwNC0wOC0yMyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2NhbGxfZXhwcl9vcGVyYW5kcyk6IEFkZCBWVVNFIG9wZXJhbmRzIGZvcgoJbm9yZXR1cm4gZnVuY3Rpb25zLgoKMjAwNC0wOC0yMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChJU0FfSEFTX0RDTFpfRENMTyk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoYWJzW3NkXWkyKTogUmVkZWZpbmUgdXNpbmcgOkdQUi4gIE9ubHkgdXNlCglicmFuY2gtbGlrZWx5IGluc25zIGZvciBhYnNkaTIgaWYgR0VORVJBVEVfQlJBTkNITElLRUxZLiAgVXNlICIlLiIKCXJhdGhlciB0aGFuICIlejIiICh3aXRoIGEgZmFrZSBjb25zdDBfcnR4IGZvciBvcGVyYW5kIDIpLgoJKGZmc1tzZF1pMik6IFJlZGVmaW5lIHVzaW5nIDpHUFIuCgkoY2x6W3NkXWkyKTogTGlrZXdpc2UuICBVc2UgSVNBX0hBU19DTE9fQ0xaIGZvciB0aGUgNjQtYml0IGNhc2UuCgoyMDA0LTA4LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICh7LHV9ZGl2bW9kW3NkXWk0KTogUmVkZWZpbmUgdXNpbmcgOkdQUi4KCjIwMDQtMDgtMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGFueV9leHRlbmQpOiBOZXcgY29kZSBtYWNyby4KCSh1LCBzdSk6IE5ldyBjb2RlIGF0dHJpYnV0ZXMuCgkoeyx1fW11bHNpZGkzLCB7LHV9bXVsc2lkaTNfMzJiaXRfaW50ZXJuYWwsIHssdX1tdWxzaWRpM18zMmJpdF9yNDAwMCkKCSh7dSxzfW11bHNpM19oaWdocGFydCwge3Usc31tdWxzaTNfaGlnaHBhcnRfaW50ZXJuYWwpCgkoe3Usc31tdWxzaTNfaGlnaHBhcnRfbXVsaGlfaW50ZXJuYWwsIHtzLHV9bXVsZGkzX2hpZ2hwYXJ0KQoJKCp7cyx1fW11bF9hY2NfZGkpOiBSZWRlZmluZSB1c2luZyBhbnlfZXh0ZW5kLgoJKCp7LHV9bXVsc19kaSwgKntzLHV9bXNhY19kaSk6IExpa2V3aXNlLiAgQ2hhbmdlIG5hbWVzIG9mIHBhdHRlcm5zCgl0byByZWZsZWN0IHJlYWwgaW5zbiBuYW1lcy4KCSgqbXVsc2lkaTNfNjRiaXQsICptdWxzaWRpM182NGJpdF9wYXJ0cyk6IFJlcGxhY2UgdXNlIG9mIG1hdGNoX29wZXJhdG9yCgl3aXRoIGFuIGFueV9leHRlbmQgdGVtcGxhdGUuCgkoe3Usc31tdWxzaTNfaGlnaHBhcnRfbmVnX211bGhpX2ludGVybmFsKTogUmVkZWZpbmUgdXNpbmcgYW55X2V4dGVuZC4KCUFkZCAnKicgdG8gbmFtZS4KCjIwMDQtMDgtMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoR0VORVJBVEVfTVVMVDNfU0kpOiBDaGVjayBUQVJHRVRfTUFELgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChtdWxbc2RdaTMsIG11bFtzZF1pM19pbnRlcm5hbCkKCShtdWxbc2RdaTNfcjQwMDApOiBSZWRlZmluZSB1c2luZyA6R1BSLgoJKG11bHNpM19tdWx0Myk6IERvbid0IGNoZWNrIFRBUkdFVF9NQUQgc2VwYXJhdGVseS4KCShtdWxkaTNfbXVsdDMpOiBNb3ZlZCBhZnRlciBtdWxzaV9tdWx0My4KCjIwMDQtMDgtMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKG1pcHMtKi0qKTogUmVtb3ZlIGRlZmluaXRpb25zIG9mIE1BU0tfR0FTIGFuZAoJT0JKRUNUX0ZPUk1BVF9FTEYuICBTZXQgTUFTS19TUExJVF9BRERSIGJ5IGRlZmF1bHQgaWYgdXNpbmcgR05VIGxkLgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1BU0tfR0FTKTogRGVsZXRlLiAgU2h1ZmZsZSBsYXRlciBtYXNrcyBkb3duLgoJKFRBUkdFVF9HQVMsIFRBUkdFVF9NSVBTX0FTKTogRGVsZXRlLgoJKFRBUkdFVF9HUFdPUkQpOiBEZWZpbmUgdG8gdHJ1ZSBmb3IgbjMyIG9uIElSSVguCgkoVEFSR0VUX1NXSVRDSEVTKTogUmVtb3ZlIC1tbWlwcy1hcy4gIFR1cm4gLW1nYXMgaW50byBhIG5vLW9wLgoJKE1JUFNfQVNfQVNNX1NQRUMsIFNVQlRBUkdFVF9NSVBTX0FTX0FTTV9TUEVDKTogRGVsZXRlLgoJKEdBU19BU01fU1BFQyk6IERlbGV0ZSwgZm9sZGluZyBpbnRvIEFTTV9TUEVDLgoJKEFTTV9BQklfREVGQVVMVF9TUEVDLCBUQVJHRVRfQVNNX1NQRUMpOiBEZWxldGUuCgkoTURFQlVHX0FTTV9TUEVDKTogRGVsZXRlLCBmb2xkaW5nIGludG8uLi4KCShTVUJUQVJHRVRfQVNNX0RFQlVHR0lOR19TUEVDKTogLi4uaGVyZS4KCShBU01fU1BFQyk6IElubGluZSBvbGQgR0FTX0FTTV9TUEVDLiAgVXNlIEdOVSBuYW1lcyBmb3IgQUJJIHN3aXRjaGVzLgoJKEVYVFJBX1NQRUNTKTogUmVtb3ZlIG1pcHNfYXNfYXNtX3NwZWMsIGdhc19hc21fc3BlYywgdGFyZ2V0X2FzbV9zcGVjLAoJc3VidGFyZ2V0X21pcHNfYXNfYXNtX3NwZWMsIG1kZWJ1Z19hc21fc3BlYy4gIFVzZSBNVUxUSUxJQl9BQklfREVGQVVMVAoJdG8gZGVmaW5lIGFzbV9hYmlfZGVmYXVsdF9zcGVjLgoJKEFTTV9TVEFCU19PUCwgQVNNX1NUQUJOX09QLCBBU01fU1RBQkRfT1ApOiBEZWxldGUuCgkoVEFSR0VUX0FTTV9TRUxFQ1RfU0VDVElPTik6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChNSVBTX01BWF9GSVJTVF9TVEFDS19TVEVQKTogRGVmaW5lIHRvIDB4N2ZmMAoJZm9yIG5vbi1taXBzMTYgY29kZSwgcmVtb3ZpbmcgcHJldmlvdXMgd29ya2Fyb3VuZCBmb3IgU0dJIGFzc2VtYmxlcnMuCgkoVEFSR0VUX0FTTV9JTlRFR0VSLCBtaXBzX2Fzc2VtYmxlX2ludGVnZXIpOiBEZWxldGUuCgkoVEFSR0VUX0FTTV9BTElHTkVEX0RJX09QKTogRGVmaW5lIHRoaXMgaW5zdGVhZC4KCShvdmVycmlkZV9vcHRpb25zKTogUmVtb3ZlICFUQVJHRVRfR0FTIGFuZCAhaGF2ZV9uYW1lZF9zZWN0aW9ucyBjb2RlLgoJKHByaW50X29wZXJhbmQpOiBGb2xkIFRBUkdFVF9HQVMgY29uZGl0aW9uYWxzIGludG8gYXNtIHN0cmluZ3MuCgkobWlwc19vdXRwdXRfZmlsZW5hbWUpOiBSZW1vdmUgIVRBUkdFVF9HQVMgY29kZS4gIFJlcGxhY2UgdXNlIG9mCglBU01fU1RBQlNfT1AgYW5kIEFTTV9TVEFCTl9PUC4KCShtaXBzX2ZpbGVfc3RhcnQpOiBSZW1vdmUgVEFSR0VUX01JUFNfQVMvVEFSR0VUX0dBUyBjaGVja3MuCgkobWlwc19vdXRwdXRfYWxpZ25lZF9kZWNsX2NvbW1vbik6IFJlbW92ZSBtZW50aW9uIG9mIFNHSSBvMzIgYXNzZW1ibGVyLgoJKG1pcHNfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogUmVtb3ZlICFUQVJHRVRfR0FTIGNvZGUuCgkobWlwc19zZWxlY3RfcnR4X3NlY3Rpb24pOiBSZW1vdmUgIWhhdmVfbmFtZWRfc2VjdGlvbnMgY29kZS4KCShtaXBzX3NlbGVjdF9zZWN0aW9uKTogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kICh0cmFwKTogUmVtb3ZlICFUQVJHRVRfR0FTIGNoZWNrLgoJKiBjb25maWcvbWlwcy9saW51eC5oIChUQVJHRVRfREVGQVVMVCk6IFJlbW92ZSB1c2Ugb2YgTUFTS19HQVMuCgkqIGNvbmZpZy9taXBzL3NkYi5oIChQVVRfU0RCX0RFRiwgUFVUX1NEQl9QTEFJTl9ERUYpOiBEZWxldGUuCgkoUFVUX1NEQl9CTE9DS19TVEFSVCwgUFVUX1NEQl9CTE9DS19FTkQpOiBGb2xkIFRBUkdFVF9HQVMgY29uZGl0aW9uYWwuCgkqIGNvbmZpZy9taXBzL3Z4d29ya3MuaCAoQVNNX1NQRUMpOiBBcyBmb3IgbWlwcy5oLgoJKiBjb25maWcvbWlwcy93aW5kaXNzLmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgoyMDA0LTA4LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiByZWFkLXJ0bC5jIChtYXBfdmFsdWUsIG1hcHBpbmcsIG1hY3JvX2dyb3VwKTogTmV3IHN0cnVjdHVyZXMuCgkoQkVMTFdFVEhFUl9DT0RFKTogTmV3IG1hY3JvLgoJKG1vZGVzLCBjb2RlcywgYmVsbHdldGhlcl9jb2Rlcyk6IE5ldyB2YXJpYWJsZXMuCgkoZmluZF9tb2RlLCB1c2VzX21vZGVfbWFjcm9fcCwgYXBwbHlfbW9kZV9tYWNybywgZmluZF9jb2RlKQoJKHVzZXNfY29kZV9tYWNyb19wLCBhcHBseV9jb2RlX21hY3JvLCBhcHBseV9tYWNyb190b19zdHJpbmcpCgkoYXBwbHlfbWFjcm9fdG9fcnR4LCB1c2VzX21hY3JvX3AsIGFkZF9jb25kaXRpb25fdG9fc3RyaW5nKQoJKGFkZF9jb25kaXRpb25fdG9fcnR4LCBhcHBseV9tYWNyb190cmF2ZXJzZSwgYWRkX21hcHBpbmcpCgkoYWRkX21hcF92YWx1ZSwgaW5pdGlhbGl6ZV9tYWNyb3MpOiBOZXcgZnVuY3Rpb25zLgoJKGRlZl9oYXNoLCBkZWZfaGFzaF9lcV9wKTogR2VuZXJhbGl6ZSB0byBhbnl0aGluZyB0aGF0IHBvaW50cyB0bywKCW9yIHN0YXJ0cyB3aXRoLCBhIGNoYXIgKiBmaWVsZC4KCShmaW5kX21hY3JvLCByZWFkX21hcHBpbmcsIGNoZWNrX2NvZGVfbWFjcm8pOiBOZXcgZnVuY3Rpb25zLgoJKHJlYWRfcnR4XzEpOiBOZXcsIHNwbGl0IG91dCBmcm9tIHJlYWRfcnR4LiAgSGFuZGxlIHRoZSBuZXcKCWRlZmluZV97bW9kZSxjb2RlfV97bWFjcm8sYXR0cn0gY29uc3RydWN0cy4gIFVzZSBmaW5kX21hY3JvCgl0byBwYXJzZSB0aGUgbmFtZSBvZiBhIGNvZGUgb3IgbW9kZS4gIFVzZSBCRUxMV0VUSEVSX0NPREUgdG8KCWV4dHJhY3QgdGhlIGZvcm1hdCBhbmQgdG8gY2hvb3NlIGEgc3VpdGFibGUgY29kZSBmb3IgcnR4X2FsbG9jLgoJTW9kaWZ5IHJlY3Vyc2l2ZSBpbnZvY2F0aW9ucyB0byB1c2UgcmVhZF9ydHhfMS4KCShyZWFkX3J0eCk6IENhbGwgaW5pdGlhbGl6ZV9tYWNyb3MuICBBcHBseSBjb2RlIGFuZCBtb2RlIG1hY3JvcwoJdG8gdGhlIHJ0eCByZXR1cm5lZCBieSByZWFkX3J0eF8xLiAgQ2FjaGUgZXZlcnl0aGluZyBhZnRlciB0aGUKCWZpcnN0IG1hY3JvIGV4cGFuc2lvbiBmb3Igc3Vic2VxdWVudCByZWFkX3J0eCBjYWxscy4KCSogZG9jL21kLnRleGk6IERvY3VtZW50IG5ldyAubWQgY29uc3RydWN0cy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoR1BSKTogTmV3IG1vZGUgbWFjcm8uCgkoZCwgc2k4X2RpNSk6IE5ldyBtb2RlIGF0dHJpYnV0ZXMuCgkoYW55X2NvbmQpOiBOZXcgY29kZSBtYWNyby4KCShhZGRbc2RdaTMpOiBSZWRlZmluZSB1c2luZyA6R1BSLgoJKCphZGRbc2RdaTMpOiBMaWtld2lzZSwgcmVuYW1pbmcgZnJvbSBhZGRbc2RdaTNfaW50ZXJuYWwuCgkoKmFkZFtzZF1pM19zcFsxMl0sICphZGQ8bW9kZT4zX21pcHMxNik6IFJlZGVmaW5lIHVzaW5nIDpHUFIsIG5hbWluZwoJcHJldmlvdXNseSB1bm5hbWVkIE1JUFMxNiBwYXR0ZXJucy4KCSgqYWRkc2kzX2V4dGVuZGVkKTogUmVuYW1lZCBmcm9tIGFkZHNpM19pbnRlcm5hbF8yLiAgRml4IG92ZXJseSBsb25nCglsaW5lcy4gIERvbid0IG1hdGNoIChwbHVzIChjb25zdF9pbnQgMCkgLi4uKS4KCSgqYWRkc2kzX2V4dGVuZGVkX21pcHMxNik6IE5hbWUgcHJldmlvdXNseSB1bm5hbWVkIE1JUFMxNiBwYXR0ZXJuLgoJVXNlIGEgZGVmaW5lX3NwbGl0IHRvIGdlbmVyYXRlIHRoZSBhZGRpdGlvbi4KCShzdWJbc2RdaTMpOiBSZWRlZmluZSB1c2luZyA6R1BSLiAgVHVybiBzdWJzaTMgaW50byBhIGRlZmluZV9pbnNuLgoJKHN1YnNpM19pbnRlcm5hbCk6IERlbGV0ZS4KCSgqc3Vic2kzX2V4dGVuZGVkKTogUmVuYW1lZCBmcm9tIHN1YnNpM19pbnRlcm5hbF8yLgoJKGJ1bm9yZGVyZWQsIGJvcmRlcmVkLCBidW5sdCwgYnVuZ2UsIGJ1bmVxLCBibHRndCwgYnVubGUsIGJ1bmd0KQoJKGJlcSwgYm5lLCBiZ3QsIGJnZSwgYmx0LCBibGUsIGJndHUsIGJnZXUsIGJsdHUsIGJsZXUpOiBSZWRlZmluZQoJdXNpbmcgYW4gYW55X2NvbmQgdGVtcGxhdGUuCgoyMDA0LTA4LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiByZWFkLXJ0bC5jIChyZWFkX3J0eCk6IFRpZHkgdXNlIG9mIGZvcm1hdF9wdHIuCgoyMDA0LTA4LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiByZWFkLXJ0bC5jIChzdHJpbmdfb2JzdGFjayk6IE5ldyBmaWxlLXNjb3BlIHZhcmlhYmxlLgoJKHJlYWRfc3RyaW5nLCByZWFkX3F1b3RlZF9zdHJpbmcsIHJlYWRfYnJhY2VkX3N0cmluZykKCShyZWFkX2VzY2FwZSk6IFJlbW92ZSBvYnN0YWNrIHBhcmFtZXRlciBhbmQgdXNlIHN0cmluZ19vYnN0YWNrIGluc3RlYWQuCgkocmVhZF9ydHgpOiBSZW1vdmUgZnVuY3Rpb24tbG9jYWwgcnRsX29ic3RhY2sgYW5kIGluaXRpYWxpemUKCXN0cmluZ19vYnN0YWNrIGluc3RlYWQuICBVcGRhdGUgY2FsbCB0byByZWFkX3N0cmluZy4KCjIwMDQtMDgtMjIgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCglQUiBjLzE1MjYyCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogVXNlICZhLmIgaWYgdGhlIGZvbGRkZWQgbG93ZXJlZAoJZXhwcmVzc2lvbiBpcyBub3QgY29uc3RhbnQuCgkoY19maW5pc2hfcmV0dXJuKTogRG8gbm90IGdvIHRocm91Z2ggSU5ESVJFQ1RfUkVGIHdoZW4gbG9va2luZwoJZm9yIHRoZSBpbm5lciBleHByZXNzaW9uIG9mIGFuIEFERFJfRVhQUiBmb3Igd2FybmluZyBhYm91dC4KCjIwMDQtMDgtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgMTcwNzUKCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfdGFpbGNhbGwpOiBEZXRlY3Qgd2hlbiB3ZSBjYW4gYm90aAoJY3JlYXRlIG5ldyBibG9ja3MgYW5kIGZhbGwgdGhyb3VnaC4KCShleHBhbmRfZ2ltcGxlX2Jhc2ljX2Jsb2NrKTogVXBkYXRlIHRvIG1hdGNoLgoKMjAwNC0wOC0yMiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzKTogTWFrZSByZXR1cm4gdmFsdWUgdHJpLXN0YXRlLgoJUmV0dXJuIC0xIGlmIExFR0lUSU1JWkVfUkVMT0FEX0FERFJFU1Mgc3VjY2VlZGVkLgoJKGZpbmRfcmVsb2Fkcyk6IEFzc3VtZSB0aGF0IHJlbG9hZGVkIGFkZHJlc3NlcyBtYXRjaCAnbycgb3IKCUVYVFJBX01FTU9SWV9DT05TVFJBSU5UIGNvbnN0cmFpbnRzIG9ubHkgaWYgZmluZF9yZWxvYWRzX2FkZHJlc3MKCXJldHVybmVkIDEgKG5vdCAtMSkuICBPbWl0IG9wdGlvbmFsIHJlbG9hZHMgZm9yIGFkZHJlc3Mgb3BlcmFuZHMKCW9ubHkgaWYgZmluZF9yZWxvYWRzX2FkZHJlc3MgcmV0dXJuZWQgMSAobm90IC0xKS4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAobGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAobGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyk6IERlY2xhcmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoTEVHSVRJTUlaRV9SRUxPQURfQUREUkVTUyk6IERlZmluZS4gIENhbGwKCWxlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MuCgoyMDA0LTA4LTIyICBSaWNoYXJkIEhlbmRlcnNpb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuaCAoU0FWRV9FWFBSX1JFU09MVkVEX1ApOiBOZXcuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X3NhdmVfZXhwcik6IFVzZSBpdC4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBMaWtld2lzZS4gIEFsc28gc2V0IERFQ0xfSUdOT1JFRF9QCglvbiB0aGUgdGVtcG9yYXJ5IHZhcmlhYmxlLgoKMjAwNC0wOC0yMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKHJ0bF9leHByX25vbm5lZ2F0aXZlX3ApOiBEZWxldGUuCgkqIHRyZWUuaCAocnRsX2V4cHJfbm9ubmVnYXRpdmVfcCk6IFJlbW92ZS4KCjIwMDQtMDgtMjIgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGNvbmZpZy9pMzg2L3Bwcm8ubWQgKHBwcm9fY29tcGxleF9pbnNuKTogQWRkIG1pc3NpbmcgY2hlY2sKCWZvciBjcHU9PXBlbnRpdW1wcm8uCgoJKiBjb21iaW5lLmMgKHN0cnVjdCByZWdfc3RhdCk6IEZpeCBjb21tZW50IHR5cG8uCgoyMDA0LTA4LTIyICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtdHJlZS5oIChjX3NpemVvZl9ub3dhcm4pOiBSZW1vdmUuCgoyMDA0LTA4LTIxICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtZGVjbC5jIChzZXRfYXJyYXlfZGVjbGFyYXRvcl90eXBlKTogUmVuYW1lIHRvCglzZXRfYXJyYXlfZGVjbGFyYXRvcl9pbm5lci4KCShidWlsZF9jX3Bhcm0sIGJ1aWxkX2F0dHJzX2RlY2xhcmF0b3IsIGJ1aWxkX2Z1bmN0aW9uX2RlY2xhcmF0b3IpOgoJTmV3IGZ1bmN0aW9ucy4KCShtYWtlX3BvaW50ZXJfZGVjbGFyYXRvcik6IENhbGwgYnVpbGRfYXR0cnNfZGVjbGFyYXRvci4KCSogYy10cmVlLmggKHNldF9hcnJheV9kZWNsYXJhdG9yX3R5cGUpOiBSZW5hbWUgdG8KCXNldF9hcnJheV9kZWNsYXJhdG9yX2lubmVyLgoJKGJ1aWxkX2NfcGFybSwgYnVpbGRfYXR0cnNfZGVjbGFyYXRvciwgYnVpbGRfZnVuY3Rpb25fZGVjbGFyYXRvcik6CglOZXcgcHJvdG90eXBlcy4KCSogYy1wYXJzZS5pbiAoYWZ0ZXJfdHlwZV9kZWNsYXJhdG9yLAoJcGFybV9kZWNsYXJhdG9yX3N0YXJ0dHlwZW5hbWUsIHBhcm1fZGVjbGFyYXRvcl9ub3N0YXJ0dHlwZW5hbWUsCglub3R5cGVfZGVjbGFyYXRvciwgYWJzZGNsX21heWJlX2F0dHJpYnV0ZSwgZGlyZWN0X2Fic2RjbDEsIHBhcm0sCglmaXJzdHBhcm0pOiBVc2UgdGhlc2UgZnVuY3Rpb25zCgoyMDA0LTA4LTIxICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtZGVjbC5jIChidWlsZF9hcnJheV9kZWNsYXJhdG9yLCBzZXRfYXJyYXlfZGVjbGFyYXRvcl90eXBlLAoJc3RhcnRfZGVjbCwgZ3Jva2RlY2xhcmF0b3IsIGdyb2twYXJtcyk6IENoYW5nZSBib29sZWFuIHBhcmFtZXRlcnMKCXRvIHR5cGUgYm9vbC4KCSogYy10cmVlLmggKGJ1aWxkX2FycmF5X2RlY2xhcmF0b3IsIHNldF9hcnJheV9kZWNsYXJhdG9yX3R5cGUsCglzdGFydF9kZWNsKTogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGMtZGVjbC5jLCBjLXBhcnNlLmluOiBBbGwgY2FsbGVycyBjaGFuZ2VkLgoKMjAwNC0wOC0yMSAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChTVUJUQVJHRVRfT1BUSU9OUyk6IE1vdmUgZnJvbSBoZXJlLCB0by4uLgoJKGRhcndpbl9maXhfYW5kX2NvbnRpbnVlKTogTGlrZXdpc2UuCgkoZGFyd2luX2ZpeF9hbmRfY29udGludWVfc3dpdGNoKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoU1VCVEFSR0VUX09QVElPTlMpOiAuLi5oZXJlLCB0byBmaXggLW1vbmUtYnl0ZS1ib29sLgoJKGRhcndpbl9maXhfYW5kX2NvbnRpbnVlKTogTGlrZXdpc2UuCgkoZGFyd2luX2ZpeF9hbmRfY29udGludWVfc3dpdGNoKTogTGlrZXdpc2UuCgoyMDA0LTA4LTIxICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSICBjKysvMTYwMzAKCSogY29uZmlnL2kzODYvd2lubnQvYyAoZ2VuX3N0ZGNhbGxfc3VmZml4LCBnZW5fZmFzdGNhbGxfc3VmZml4KToKCVJlbW92ZSwgbWVyZ2luZyBpbnRvIC4uLgoJKGdlbl9zdGRjYWxsX29yX2Zhc3RjYWxsX3N1ZmZpeCk6IE5ldyBmdW5jdGlvbiwgcmV0dXJuaW5nIHRyZWUKCXJhdGhlciB0aGFuIGNvbnN0IGNoYXIqLCBhbmQgYWNjZXB0aW5nIGFkZGl0aW9uYWwgcGFyYW1ldGVyLgoJRG9uJ3QgYWRkIHN1ZmZpeCB0byAnKictcHJlZml4ZWQgc3ltYm9scyBvciB2YXJpYWRpYyBmdW5jdGlvbnMuCgkoaTM4Nl9wZV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogQWRqdXN0IGZvciBjYWxsIHRvIG5ldyBmdW5jdGlvbi4KCUNhbGwgY2hhbmdlX2RlY2xfYXNzZW1ibGVyX25hbWUuCgoyMDA0LTA4LTIwICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfaW5kaXJlY3RfZGF0YV9yZWZlcmVuY2UpOiBNYXJrCglzdHVicyBhcyBkZWZpbmVkLgoJKiBjb25maWcvMzg2LzM4Ni5jIChkYXJ3aW5fbG9jYWxfZGF0YV9waWMpOiBBZGQuCgkobGVnaXRpbWF0ZV9jb25zdGFudF9wKTogUmVvcmRlciBzbyB0aGF0IFBMVVMgaGFuZGxpbmcgcnVucwoJYmVmb3JlIGRhcndpbl9sb2NhbF9kYXRhX3BpYyB0byBtYXRjaCB0aGUgb3JkZXJpbmcgaW4KCWxlZ2l0aW1hdGVfcGljX2FkZHJlc3NfZGlzcF9wIGFuZCBzbyB0aGF0IE1JTlVTIHJ1bnMgYWZ0ZXIKCWRhcndpbl9sb2NhbF9kYXRhX3BpYyBhcyBvdGhlcndpc2UgdGhlIGRhcndpbl9sb2NhbF9kYXRhX3BpYwoJbG9naWMgY2FuIGJlIHNraXBwZWQsIHdoaWNoIHdvdWxkIGJlIHZlcnkgYmFkLgoJKGxlZ2l0aW1hdGVfcGljX2FkZHJlc3NfZGlzcF9wKTogTW92ZSBmcm9tIGZyb20gaGVyZSB0bwoJZGFyd2luX2xvY2FsX2RhdGFfcGljIHNvIGl0IGNhbiBiZSByZXVzZWQuCgoyMDA0LTA4LTIxICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKERPVF9TWU1CT0xTKTogRGVmaW5lLgoJKENSVF9DQUxMX1NUQVRJQ19GVU5DVElPTik6IERlZmluZSAhRE9UX1NZTUJPTFMgdmVyc2lvbi4KCShBU01fREVDTEFSRV9GVU5DVElPTl9TSVpFKTogTW9kaWZ5IGZvciAhRE9UX1NZTUJPTFMuCgkoQVNNX09VVFBVVF9TT1VSQ0VfTElORSwgREJYX09VVFBVVF9CUkFDLCBEQlhfT1VUUFVUX05GVU4pOiBMaWtld2lzZS4KCShSUzYwMDBfQUJJX05BTUUpOiBEZWZpbmUgYXMgImxpbnV4Ii4KCShTVUJTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IFNldCBkb3Rfc3ltYm9scy4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IFNlbGVjdAoJQUJJX0FJWCB3aGVuIHJzNjAwMF9hYmlfbmFtZSBpcyAibGludXgiIGFuZCBUQVJHRVRfNjRCSVQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfb3V0cHV0X2Z1bmN0aW9uX2VudHJ5KTogRGVjbC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZG90X3N5bWJvbHMpOiBOZXcgZ2xvYmFsIHZhci4KCShyczYwMDBfb3V0cHV0X2Z1bmN0aW9uX2VudHJ5KTogTmV3IGZ1bmN0aW9uLCBtb2RpZmllZCBmb3IKCSFET1RfU1lNQk9MUy4uCgkocHJpbnRfb3BlcmFuZCA8Y2FzZSAneic+KTogLi5leHRyYWN0ZWQgZnJvbSBoZXJlLgoJKHJzNjAwMF9hc3NlbWJsZV92aXNpYmlsaXR5KTogTW9kaWZ5IGZvciAhRE9UX1NZTUJPTFMuCgkocnM2MDAwX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKHJzNjAwMF9lbGZfZGVjbGFyZV9mdW5jdGlvbl9uYW1lKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKERPVF9TWU1CT0xTKTogRGVmaW5lLgoJKEFTTV9XRUFLRU5fREVDTCwgQVNNX09VVFBVVF9ERUZfRlJPTV9ERUNMUyk6IE1vZGlmeSBmb3IgIURPVF9TWU1CT0xTLgoJKiBjb25maWd1cmUuYWMgKEhBVkVfTERfTk9fRE9UX1NZTVMpOiBBZGQgbmV3IEFDX0RFRklORS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoyMDA0LTA4LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzKTogRml4IHRoaW5rbyBpbiBwcmV2aW91cyBjaGFuZ2UuCgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX2FkZHJlc3MpOiBSZWxvYWQgdGhlIHN1bSBvZiBhIExPX1NVTSBhbmQKCWEgQ09OU1RfSU5ULgoKMjAwNC0wOC0yMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xNzA5OQoJKiBjb21iaW5lLmMgKGZvcmNlX3RvX21vZGUpOiBDaGVjayBpZiBpbm5lcl9tYXNrIGhhcyBhbnkgYml0cyBzZXQKCW91dHNpZGUgb2YgR0VUX01PREUgKHgpIGluc3RlYWQgb2Ygb3BfbW9kZS4KCjIwMDQtMDgtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjIChhcm0qLSotc3ltYmlhbmVsZiopOiBBZGQgdC1zeW1iaWFuIE1ha2VmaWxlCglmcmFnbWVudC4KCSogY29uZmlnL2FybS9icGFiaS5oIChSRU5BTUVfTElCUkFSWV9TRVQpOiBGaXggdHlwby4KCShTVUJUQVJHRVRfRVhUUkFfQVNNX1NQRUMpOiBQYXNzIC1tZWFiaT0zIHRvIHRoZSBhc3NlbWJsZXIuCgkqIGNvbmZpZy9hcm0vc3ltYmlhbi5oIChTVUJUQVJHRVRfQ1BVX0RFRkFVTFQpOiBBc3N1bWUgQVJNVjUKCWFyY2hpdGVjdHVyZS4KCShTVUJUQVJHRVRfQVNNX0ZMT0FUX1NQRUMpOiBEZWZhdWx0IHRvIC1tZnB1PXZmcCBmb3IgaGFyZC1mbG9hdAoJY29uZmlndXJhdGlvbnMuCgkqIGNvbmZpZy9hcm0vdC1zeW1iaWFuOiBOZXcgZmlsZS4KCjIwMDQtMDgtMjAgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChraWxsX3ZhbHVlX3JlZ25vKTogQU5TSWZ5LgoKMjAwNC0wOC0yMCAgRGFsZSBKb2hhbm5lc2VuICA8ZGFsZWpAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3J0eF9jb3N0cyk6IEltcHJvdmUgRElWL01PRC4KCjIwMDQtMDgtMjAgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGRlYmlhbi5vcmc+CgoJKiByZWdyZW5hbWUuYyAoa2lsbF92YWx1ZV9vbmVfcmVnbm8pOiBSZW5hbWVkIGZyb20ga2lsbF92YWx1ZV9yZWduby4KCShraWxsX3ZhbHVlX3JlZ25vKTogTmV3IGZ1bmN0aW9uLCBkZXJpdmVkIGZyb20ga2lsbF92YWx1ZS4KCShraWxsX3ZhbHVlKTogVXBkYXRlLgoJKGNvcHlwcm9wX2hhcmRyZWdfZm9yd2FyZF8xKTogVXBkYXRlIGNhbGwgdG8ga2lsbF92YWx1ZV9yZWduby4KCjIwMDQtMDgtMjAgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8xNzExMQoJKiB0cmVlLXNzYS1wcmUuYyAoY3JlYXRlX3ZhbHVlX2V4cHJfZnJvbSk6IERvbid0IGNoYW5nZSB0aGUgdHlwZXMKCW9mIG5vbi12YWx1ZV9oYW5kbGVzLgoJKGJpdG1hcF9zZXRfY29udGFpbnMpOiBBbGwgY29uc3RhbnRzIGFyZSBpbiBldmVyeSBzZXQuCgoyMDA0LTA4LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZm9sZC1jb25zdC5jIChyb3VuZF91cCwgcm91bmRfZG93bik6IFVzZSBidWlsZF9pbnRfY3N0LgoJT3B0aW1pemUgY29tbW9uIGNhc2UuCgoyMDA0LTA4LTIwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoJICAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBjb25maWcvcGEvcGEtcHJvdG9zLmggKHJlYWRvbmx5X2RhdGEsIG9uZV9vbmx5X3JlYWRvbmx5X2RhdGFfc2VjdGlvbiwKCW9uZV9vbmx5X2RhdGFfc2VjdGlvbik6IFJlbmFtZSB0byBzb21fcmVhZG9ubHlfZGF0YV9zZWN0aW9uLAoJc29tX29uZV9vbmx5X3JlYWRvbmx5X2RhdGFfc2VjdGlvbiBhbmQgc29tX29uZV9vbmx5X2RhdGFfc2VjdGlvbi4KCSogY29uZmlnL3BhL3BhLmMgKE9ORV9PTkxZX1RFWFRfU0VDVElPTl9BU01fT1AsCglORVdfVEVYVF9TRUNUSU9OX0FTTV9PUCwgREVGQVVMVF9URVhUX1NFQ1RJT05fQVNNX09QKTogRGVsZXRlCgljb25kaXRpb25hbCBkZWZpbmVzLgoJKHNvbV90ZXh0X3NlY3Rpb25fYXNtX29wKTogUmVwbGFjZSBPTkVfT05MWV9URVhUX1NFQ1RJT05fQVNNX09QLAoJTkVXX1RFWFRfU0VDVElPTl9BU01fT1AgYW5kIERFRkFVTFRfVEVYVF9TRUNUSU9OX0FTTV9PUCB3aXRoIGFjdHVhbAoJc3RyaW5nIHZhbHVlcy4KCShwYV9zZWxlY3Rfc2VjdGlvbik6IFVzZSByZW5hbWVkIHNlY3Rpb24gZnVuY3Rpb25zLgoJKiBjb25maWcvcGEvcGEuaCAoRVhUUkFfU0VDVElPTlMsIEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TLAoJU09NX1JFQURPTkxZX0RBVEFfU0VDVElPTl9GVU5DVElPTiwKCVNPTV9PTkVfT05MWV9SRUFET05MWV9EQVRBX1NFQ1RJT05fRlVOQ1RJT04sCglTT01fT05FX09OTFlfREFUQV9TRUNUSU9OX0ZVTkNUSU9OLCBGT1JHRVRfU0VDVElPTl9GVU5DVElPTik6CglEZWZpbmUgaGVyZSAuLi4KCSogY29uZmlnL3BhL3NvbS5oOiAuLi4gbm90IGhlcmUuCgkoREVGQVVMVF9URVhUX1NFQ1RJT05fQVNNX09QLCBORVdfVEVYVF9TRUNUSU9OX0FTTV9PUCwKCU9ORV9PTkxZX1RFWFRfU0VDVElPTl9BU01fT1AsIFJFQURPTkxZX0RBVEFfQVNNX09QLAoJT05FX09OTFlfUkVBRE9OTFlfREFUQV9TRUNUSU9OX0FTTV9PUCwKCU9ORV9PTkxZX0RBVEFfU0VDVElPTl9BU01fT1ApOiBEZWxldGUuCgkoUkVBRE9OTFlfREFUQV9TRUNUSU9OKTogVXNlIHNvbV9yZWFkb25seV9kYXRhX3NlY3Rpb24uCgoyMDA0LTA4LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZm9sZC1jb25zdC5jIChpbnRfY29uc3RfYmlub3ApOiBEb24ndCBnZW5lcmF0ZSBub24tb3ZlcmZsb3dpbmcKCXNpemUtdHlwZXMgc3BlY2lhbGx5LgoJKGZvbGRfY29udmVydF9jb25zdCk6IExpa2V3aXNlLgoKCSogc3Rvci1sYXlvdXQuYyAoaW5pdGlhbGl6ZV9zaXpldHlwZXMpOiBTZXQgU0laRVRZUEUgZWFybGllciwKCWNsZWFyIGNhY2hlIG9uIGNvcGllZCBzaXpldHlwZS4KCjIwMDQtMDgtMjAgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY29uZmlndXJlLmFjOiBEb24ndCBlc2NhcGUgYXBvc3Ryb3BoZSBpbiAtLWVuYWJsZS1jb3ZlcmFnZSBoZWxwLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTA4LTIwICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIDU2MjAKCSogZ2NjLmMgKHN0cnVjdCBzdGF0IGlucHV0X3N0YXQpOiBEb24ndCBkZWZpbmUgaWYKCUhPU1RfTEFDS1NfSU5PREVfTlVNQkVSUwoJKGRvX3NwZWNfMSk6IElmIEhPU1RfTEFDS1NfSU5PREVfTlVNQkVSUywgdXNlIGxyZWFscGF0aCByYXRoZXIKCXRoYW4gc3RhdCB0byBkZXRlcm1pbmUgaWYgdGVtcCBmaWxlIGlzIHNhbWUgYXMgaW5wdXQgZmlsZS4KCSogZG9jL2hvc3Rjb25maWcudGV4aTogRG9jdW1lbnQgSE9TVF9MQUNLU19JTk9ERV9OVU1CRVJTLgoJKiBjb25maWcvaTM4Ni94bS1taW5ndzMyLmg6IERlZmluZSBIT1NUX0xBQ0tTX0lOT0RFX05VTUJFUlMKCjIwMDQtMDgtMjAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAobWlwcyotKi0qKTogUHJpbnQgYW4gZXJyb3IgaWYgbm90IHVzaW5nIEdBUy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogZG9jL2luc3RhbGwudGV4aTogUmVtb3ZlIGlyaXg1IGJ1bGxldCBmcm9tIC0td2l0aC1nbnUtYXMuICBSZW1vdmUKCWNvbW1lbnRzIGFib3V0IGJ1Z2d5IE1JUFNwcm8gYXNzZW1ibGVycy4KCSogY29uZmlnLmdjYyAobWlwcy1zZ2ktaXJpeFs1Nl0qKTogQ29tYmluZSBzdGFuemFzLiAgSW5jbHVkZSBlbGZvcy5oCgliZWZvcmUgbWlwcy5oIGFuZCBpcmlzLmggYWZ0ZXIgaXQuICBVc2UgdC1pcmlzIGFuZCB0LXNsaWJnY2MtaXJpeC4KCVVzZSBpcmlzNS5oIG9ubHkgZm9yIElSSVggNSBjb25maWdzLiAgVXNlIGlyaXM2LmggYW5kIHQtaXJpczYgZm9yCglJUklYIDYgY29uZmlncy4gIERlZmluZSBJUklYX1VTSU5HX0dOVV9MRCBpZiB1c2luZyBHTlUgbGQuCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKFRBUkdFVF9JUklYLCBTV0lUQ0hFU19ORUVEX1NQQUNFUykKCShERUZBVUxUX1NJR05FRF9DSEFSLCBXT1JEX1NXSVRDSF9UQUtFU19BUkcsIFNVQlRBUkdFVF9DQzFfU1BFQykKCShOT19JTVBMSUNJVF9FWFRFUk5fQywgTUlQU19ERUZBVUxUX0dWQUxVRSkKCShUQVJHRVRfQVNNX0VYVEVSTkFMX0xJQkNBTEwpOiBNb3ZlIHRvIGlyaXMuaC4KCShXQ0hBUl9UWVBFLCBXQ0hBUl9UWVBFX1NJWkUsIFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBEZWxldGUgaW4gZmF2b3IKCW9mIG1vcmUgZ2VuZXJhbCBJUklYIDYgZGVmaW5pdGlvbnMuCgkoT0JKRUNUX0ZPUk1BVF9FTEYsIEFTTV9PVVRQVVRfQVNDSUksIEFTTV9XRUFLRU5fTEFCRUwpCgkoSEFORExFX1NZU1ZfUFJBR01BKTogRGVsZXRlIGluIGZhdm9yIG9mIGVsZm9zLmggZGVmaW5pdGlvbnMuCgkoVEFSR0VUX0lSSVg1LCBBQklDQUxMU19BU01fT1AsIEJTU19TRUNUSU9OX0FTTV9PUCwgSEFTX0lOSVRfU0VDVElPTikKCShMRF9JTklUX1NXSVRDSCwgTERfRklOSV9TV0lUQ0gsIFNVQlRBUkdFVF9BU01fT1BUSU1JWklOR19TUEVDKQoJKEFTTV9GSU5BTF9TUEVDLCBEQlhfREVCVUdHSU5HX0lORk8sIE1JUFNfREVCVUdHSU5HX0lORk8pCgkoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFLCBEV0FSRjJfVU5XSU5EX0lORk8sIFNFVF9GSUxFX05VTUJFUikKCShMQUJFTF9BRlRFUl9MT0MsIERPTExBUlNfSU5fSURFTlRJRklFUlMsIE5PX0RPTExBUl9JTl9MQUJFTCkKCShUQVJHRVRfQVNNX05BTUVEX1NFQ1RJT04sIEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKQoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUsIEFTTV9PVVRQVVRfV0VBS19BTElBUykKCShTVUJUQVJHRVRfRVhUUkFfU1BFQ1MpOiBEZWxldGUgZGVmaW5pdGlvbnMgb3IgdW5kZWZzLgoJKExJTktfU1BFQyk6IE1vdmUgbW9zdCBvZiBkZWZpbml0aW9uIHRvIGlyaXMuaC4KCShTVUJUQVJHRVRfTElOS19TUEVDKTogTmV3IG1hY3JvLgoJKElSSVhfU1RBUlRGSUxFX1NQRUMpOiBGb2xkIGludG8uLi4KCShTVEFSVEZJTEVfU1BFQyk6IC4uLmhlcmUuCgkoSVJJWF9FTkRGSUxFX1NQRUMpOiBGb2xkIGludG8uLi4KCShFTkRGSUxFX1NQRUMpOiAuLi5oZXJlLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChUQVJHRVRfSVJJWDUpOiBSZW1vdmUgb3ZlcnJpZGUuCgkoV0NIQVJfVFlQRSwgV0NIQVJfVFlQRV9TSVpFLCBXSU5UX1RZUEUsIFdJTlRfVFlQRV9TSVpFKQoJKERXQVJGX09GRlNFVF9TSVpFLCBEV0FSRl9JTklUSUFMX0xFTkdUSF9TSVpFLCBTRVRfQVNNX09QKQoJKExJTktfRUxJTUlOQVRFX0RVUExJQ0FURV9MRElSRUNUT1JJRVMsIEFTTV9ERUNMQVJFX09CSkVDVF9OQU1FKQoJKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QsIExPQ0FMX0xBQkVMX1BSRUZJWCk6IE1vdmUgdG8gaXJpcy5oLgoJKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBMaWtld2lzZS4gIEd1YXJkIElSSVg2LXNwZWNpZmljIGJpdHMuCgkoRFdBUkYyX1VOV0lORF9JTkZPLCBEV0FSRjJfR0VORVJBVEVfVEVYVF9TRUNUSU9OX0xBQkVMKQoJKFNVQlRBUkdFVF9DUFBfU1BFQywgRFdBUkYyX0RFQlVHR0lOR19JTkZPLCBNSVBTX0RFQlVHR0lOR19JTkZPKQoJKFBSRUZFUlJFRF9ERUJVR0dJTkdfVFlQRSwgRFdBUkYyX0ZSQU1FX0lORk8sIE1EX0VYRUNfUFJFRklYKQoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUsIEFTTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUpCgkoRlVOQ1RJT05fTkFNRV9BTFJFQURZX0RFQ0xBUkVELCBTVVBQT1JUU19JTklUX1BSSU9SSVRZKQoJKFBPUFNFQ1RJT05fQVNNX09QLCBTVUJUQVJHRVRfQVNNX1NQRUMsIFNVQlRBUkdFVF9NSVBTX0FTX0FTTV9TUEVDKQoJKFNVQlRBUkdFVF9BU01fREVCVUdHSU5HX1NQRUMsIFNVQlRBUkdFVF9BU01fT1BUSU1JWklOR19TUEVDKQoJKEJTU19TRUNUSU9OX0FTTV9PUCosIFJFQURPTkxZX0RBVEFfU0VDVElPTl9BU01fT1AqKQoJKEVIX0ZSQU1FX1NFQ1RJT05fTkFNRSwgTVVTVF9VU0VfU0pMSl9FWENFUFRJT05TLCBDVE9SU19TRUNUSU9OX0FTTV9PUCkKCShEVE9SU19TRUNUSU9OX0FTTV9PUCwgVEFSR0VUX0FTTV9OQU1FRF9TRUNUSU9OLCBFSF9GUkFNRV9TRUNUSU9OX05BTUUpCgkoQVNNX09VVFBVVF9BTElHTiwgQVNNX09VVFBVVF9GSUxFTkFNRSwgQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKQoJKEFTTV9PVVRQVVRfQUxJR05FRF9CU1MpOiBSZW1vdmUgZGVmaW5pdGlvbnMgb3IgdW5kZWZzLgoJKFRBUkdFVF9JUklYNik6IERlZmluZSB0byAxLgoJKERSSVZFUl9TRUxGX1NQRUNTKTogRGVmaW5lLgoJKERXQVJGMl9GUkFNRV9JTkZPKTogRGVmaW5lIHRvIDEgcmF0aGVyIHRoYW4gIVRBUkdFVF9TR0lfTzMyX0FTLgoJKFNVQlRBUkdFVF9DQzFfU1BFQyk6IFJlbW92ZSBpbiBmYXZvciBvZiBEUklWRVJfU0VMRl9TUEVDUy4KCShTVUJUQVJHRVRfTElOS19TUEVDKTogTmV3IG1hY3JvLgoJKElSSVhfU1RBUlRGSUxFX1NQRUMpOiBGb2xkIGludG8uLi4KCShTVEFSVEZJTEVfU1BFQyk6IC4uLmhlcmUuICBSZW1vdmUgIW1hYmk9KiBjYXNlLgoJKFNVQlRBUkdFVF97LERPTlRffVdBUk5fVU5VU0VEX1NQRUMpOiBOZXcgbWFjcm9zLgoJKExJQl9TUEVDLCBMSUJHQ0NfU1BFQyk6IFVzZSB0aGVtLgoJKExJQl9TUEVDKTogUmVtb3ZlICFtYWJpPSogY2FzZS4KCShJUklYX0VOREZJTEVfU1BFQyk6IEZvbGQgaW50by4uLgoJKEVOREZJTEVfU1BFQyk6IC4uLmhlcmUuICBSZW1vdmUgIW1hYmk9KiBjYXNlLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChpcml4X291dHB1dF9leHRlcm5hbF9saWJjYWxsKTogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFRBUkdFVF9JUklYNSwgVEFSR0VUX1NHSV9PMzJfQVMpOiBEZWxldGUuCgkoVEFSR0VUX0lSSVg2KTogTmV3IG1hY3JvLgoJKEFTTV9BQklfREVGQVVMVF9TUEVDKTogUmVtb3ZlICFFTEYgZGVmaW5pdGlvbi4KCShNRF9FWEVDX1BSRUZJWCwgTURfU1RBUlRGSUxFX1BSRUZJWCwgU0VUX0ZJTEVfTlVNQkVSKQoJKExBQkVMX0FGVEVSX0xPQyk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChUQVJHRVRfQVNNX0ZJTEVfU1RBUlQsIFRBUkdFVF9BU01fRklMRV9FTkQpCgkoVEFSR0VUX1NFQ1RJT05fVFlQRV9GTEFHUyk6IFJlbW92ZSBUQVJHRVRfSVJJWCB2ZXJzaW9ucy4KCShtaXBzX2J1aWxkX2J1aWx0aW5fdmFfbGlzdCk6IENoZWNrIFRBUkdFVF9JUklYNi4KCShvdmVycmlkZV9vcHRpb25zKTogUmVtb3ZlIFRBUkdFVF9TR0lfTzMyX0FTLXJlbGF0ZWQgY29kZS4KCShpcml4X291dHB1dF9leHRlcm5hbF9saWJjYWxsKTogTWFrZSBzdGF0aWMuCgkobWlwc19vdXRwdXRfZmlsZW5hbWUpOiBBdm9pZCB1c2Ugb2YgU0VUX0ZJTEVfTlVNQkVSIGFuZAoJTEFCRUxfQUZURVJfTE9DLgoJKG1pcHNfZmlsZV9zdGFydCk6IFRpZHkgZ3VhcmQgZm9yIEFCSSBzZWN0aW9ucy4gIFJlbW92ZSB1c2Ugb2YKCUFCSUNBTExTX0FTTV9PUDsgdXNlIC5hYmljYWxscyBpbnN0ZWFkLgoJKG1pcHNfb3V0cHV0X2FsaWduZWRfZGVjbF9jb21tb24sIG1pcHNfZGVjbGFyZV9vYmplY3RfbmFtZSkKCShtaXBzX2ZpbmlzaF9kZWNsYXJlX29iamVjdCk6IFJlbW92ZSB1c2Ugb2YgVEFSR0VUX1NHSV9PMzJfQVMuCgkobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBTZXQgVFJFRV9BU01fV1JJVFRFTiBpZiBlbWl0dGluZwoJLmdsb2JsIGZvbyAudGV4dCBkaXJlY3RpdmVzLgoJKGlyaXhfYXNtX25hbWVkX3NlY3Rpb25fMSwgaXJpeF9hc21fbmFtZWRfc2VjdGlvbikKCShpcml4X3NlY3Rpb25fYWxpZ25fZW50cnksIGlyaXhfc2VjdGlvbl9hbGlnbl9odGFiKQoJKGlyaXhfb3JpZ19hc21fb3V0X2ZpbGUsIGlyaXhfc2VjdGlvbl9hbGlnbl9lbnRyeV9lcSkKCShpcml4X3NlY3Rpb25fYWxpZ25fZW50cnlfaGFzaCwgaXJpeF9hc21fb3V0cHV0X2FsaWduKQoJKGlyaXhfZmlsZV9zdGFydCwgaXJpeF9zZWN0aW9uX2FsaWduXzEsIGNvcHlfZmlsZV9kYXRhKQoJKGlyaXhfZmlsZV9lbmQsIGlyaXhfc2VjdGlvbl90eXBlX2ZsYWdzKTogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9pcml4LWNydGkuYXNtIChfX2djY19pbml0KTogTW92ZSB0byAuZ2NjX2luaXQgc2VjdGlvbi4KCVVzZSBzdGFuZGFyZCBzZWN0aW9uIHN5bnRheC4gIFJlbW92ZSBwcm90ZWN0aXZlICJqciAkMzEiLgoJKF9fZ2NjX2ZpbmkpOiBMaWtld2lzZSAuZ2NjX2ZpbmkuCgkqIGNvbmZpZy9taXBzL2lyaXgtY3J0bi5hc206IEFkanVzdCBzZWN0aW9ucyBhY2NvcmRpbmdseS4KCSogY29uZmlnL21pcHMvc2RiLmggKFBVVF9TREJfU0laRSwgUFVUX1NEQl9UWVBFKTogTW92ZWQgZnJvbQoJaXJpczVnYXMuaC4KCSogY29uZmlnL21pcHMvdC1pcmlzIChpcml4LWNydGkubywgaXJpeC1jcnRuLm8pOiBOZXcgcnVsZXMsIG1vdmVkCglmcm9tIHQtaXJpeC1nbGQuCgkoRVhUUkFfTVVMVElMSUJfUEFSVFMpOiBEZWZpbmUuCgkqIGNvbmZpZy9taXBzL3QtaXJpczY6IFJlbW92ZSBib2d1cyBjb21tZW50LgoJKEVYVFJBX01VTFRJTElCX1BBUlRTLCBDUlRTVFVGRl9UX0NGTEFHUyk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvaXJpczVnYXMuaCwgY29uZmlnL21pcHMvaXJpczVnbGQuaCwKCWNvbmZpZy9taXBzL2lyaXM2Z2FzLmgsIGNvbmZpZy9taXBzL2lyaXM2Z2xkLmgsCgljb25maWcvbWlwcy90LWlyaXM1LWFzLCBjb25maWcvbWlwcy90LWlyaXM1LWdhcwoJY29uZmlnL21pcHMvdC1pcml4LWdsZDogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9pcmlzLmg6IE5ldyBmaWxlLgoJKiBjb25maWcvbWlwcy90LXNsaWJnY2MtaXJpeDogUmVuYW1lZCBmcm9tIHQtaXJpczUtNi4KCjIwMDQtMDgtMjAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogcG9zdHJlbG9hZC5jIChyZWxvYWRfY3NlX21vdmUyYWRkKTogQWxsb3cgYW55IGNvbmRqdW1wLCBidXQgY2hlY2sKCXRoYXQgdGhlIGltcGxpY2l0IHNldCBpc24ndCBjbG9iYmVyZWQgaW4gdGhlIGp1bXAgaW5zbi4KCjIwMDQtMDgtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWZhdWx0cy5oIChUQVJHRVRfTElCR0NDX0xJQkZVTkNTKTogUmVtb3ZlLgoJKiBvcHRhYnMuYyAoaW5pdF9vcHRhYnMpOiBEb24ndCBjaGVjayBpdC4KCSogY29uZmlnL2FybS9icGFiaS5oIChUQVJHRVRfTElCR0NDX0xJQkZVTkNTKTogRG8gbm90IGRlZmluZS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9MSUJHQ0NfRlVOQ1MpOiBSZW1vdmUuCgoyMDA0LTA4LTE4ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoczM5MF93YXJuX2ZyYW1lc2l6ZV9zdHJpbmcpCgkoczM5MF93YXJuX2R5bmFtaWNfc3RyaW5nLCBzMzkwX3N0YWNrX3NpemVfc3RyaW5nKQoJKHMzOTBfc3RhY2tfZ3VhcmRfc3RyaW5nKTogTmV3IGdsb2JhbCBzdHJpbmcgdmFyaWFibGVzLgoJKHMzOTBfd2Fybl9mcmFtZXNpemUsIHMzOTBfd2Fybl9keW5hbWljc3RhY2tfcCwgczM5MF9zdGFja19zaXplKQoJKHMzOTBfc3RhY2tfZ3VhcmQpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlcy4KCShvdmVycmlkZV9vcHRpb25zKTogQWRkZWQgY2hlY2tzIGZvciB0aGUgbmV3IG9wdGlvbnMuCgkoczM5MF9lbWl0X3Byb2xvZ3VlKTogRW1pdCBzdGFjayBjaGVjayBhbmQgdHJhcCBjb2RlIGFuZCBwZXJmb3JtCgljb21waWxlIHRpbWUgc3RhY2sgc2l6ZSBjaGVja2luZy4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoVEFSR0VUX09QVElPTlMpOiBBZGRlZCBuZXcgb3B0aW9ucwoJIndhcm4tZnJhbWVzaXplIiwgIndhcm4tZHluYW1pY3N0YWNrIiwgInN0YWNrLXNpemUiIGFuZAoJInN0YWNrLWd1YXJkIi4KCgkqIGRvYy9pbnZva2UudGV4aTogQWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIG5ldyBvcHRpb25zLgoKMjAwNC0wOC0xOSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogdW53aW5kLWR3Mi1mZGUuYyAoZ2V0X2NpZV9lbmNvZGluZyk6IENhc3QgYXJndW1lbnQgdG8gc3RybGVuCgl0byBlbGltaW5hdGUgd2FybmluZy4KCShsaW5lYXJfc2VhcmNoX2ZkZXMpOiBEZWNsYXJlIHAgYXMgdW5zaWduZWQuCgkoYmluYXJ5X3NlYXJjaF9taXhlZF9lbmNvZGluZ19mZGVzKTogTGlrZXdpc2UuCgkqIHVud2luZC1kdzIuYyAoZ2V0X2NpZV9lbmNvZGluZyk6IENhc3QgYXJndW1lbnQgdG8gc3RybGVuCgl0byBlbGltaW5hdGUgd2FybmluZy4KCSogY29uZmlnL3MzOTAvbGludXguaCAoTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SKTogQWRkIG1pc3NpbmcKCXR5cGUgY2FzdC4KCjIwMDQtMDgtMTkgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHByZWZlcnJlZF9sYV9vcGVyYW5kX3ApOiBBZGFwdCBwcm90b3R5cGUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAocHJlZmVycmVkX2xhX29wZXJhbmRfcCk6IEFjY2VwdCB0d28gb3BlcmFuZHMKCWluc3RlYWQgb2Ygb25lLiAgQ2hlY2sgZm9yIHN0cmljdGx5IGxlZ2l0aW1hdGUgYWRkcmVzcy4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIipsYV8zMSIvIipsYV82NCIgcGVlcGhvbGVzKTogQWRhcHQgY2FsbAoJdG8gcHJlZmVycmVkX2xhX29wZXJhbmRfcCwgZG8gbm90IGNhbGwgZ2VuX3J0eF9QTFVTIGluIHByZWRpY2F0ZS4KCjIwMDQtMDgtMTkgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX1VOU0FWRV9FWFBSX05PVyk6IFJlbW92ZS4KCSogbGFuZ2hvb2tzLmggKHVuc2F2ZV9leHByX25vdyk6IERpdHRvLgoJKiB0cmVlLmggKHVuc2F2ZV9leHByXzEpOiBSZW1vdmUgcHJvdG90eXBlLgoJKGxoZF91bnNhdmVfZXhwcl9ub3cpOiBSZW5hbWUgdG8gdW5zYXZlX2V4cHJfbm93LgoJKiB0cmVlLWlubGluZS5jICh1bnNhdmVfZXhwcl8xKTogTW92ZSBoZXJlCglmcm9tIHRyZWUuYy4gTWFrZSBzdGF0aWMuCgkodW5zYXZlX2V4cHJfbm93KTogUmVuYW1lIGZyb20gbGhkX3Vuc2F2ZV9leHByX25vdy4KCSogdHJlZS1zcmEuYzogRml4IHVwIGZvciByZW5hbWUuCgkqIHRyZWUtc3NhLWNvcHkuYzogRGl0dG8uCgkqIHRyZWUtZWguYzogRGl0dG8uCgkqIHRyZWUuYyAodW5zYXZlX2V4cHJfMSk6IE1vdmUgdG8gdHJlZS1pbmxpbmUuYy4KCjIwMDQtMDgtMTkgIENhcm9saW5lIFRpY2UgIDxjdGljZUBhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmggKHN3aXRjaF90b19zZWN0aW9uKTogRml4IHR5cG8gKGNoYW5nZQoJaW5fdW5saWtlbHlfdGV4dF9zZWN0aW9uIHRvIGluX3VubGlrZWx5X2V4ZWN1dGVkX3RleHQpLgoKMjAwNC0wOC0xOSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB2ZWMuaCAoVkVDX2xvd2VyX2JvdW5kKTogTmV3IG1hY3JvLgoKMjAwNC0wOC0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNjQ0NgoJKiBjb25maWcvbWlwcy9taXBzLmMgKHN0cnVjdCBtaXBzX2FyZ19pbmZvKTogRGVsZXRlIG51bV9ieXRlcy4KCShtaXBzX2FyZ19pbmZvKTogVXBkYXRlIGFjY29yZGluZ2x5LiAgUmVtb3ZlIGNvbW1vbiB0cmVhdG1lbnQgb2YgZnByX3A7Cgl0cmVhdCBlYWNoIEFCSSBzZXBhcmF0ZWx5LiAgRGVhbCB3aXRoIG4zMi9uNjQgY29tcGxleCBmbG9hdCBhcmd1bWVudHMuCgkoZnVuY3Rpb25fYXJnKTogQWRkIGFzc29jaWF0ZWQgY29tcGxleCBoYW5kbGluZyBoZXJlLgoKMjAwNC0wOC0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9nZW5fbG9hZF9tdWx0aXBsZSk6IFVzZQoJYWRqdXN0X2F1dG9tb2RpZnlfYWRkcmVzcy4gIFRha2UgYmFzZSBtZW1vcnkgYW5kIG9mZnNldCBpbnN0ZWFkCglvZiB1bmNoYW5naW5nL3N0cnVjdC9zY2FsYXIgYml0cy4KCShhcm1fZ2VuX3N0b3JlX211bHRpcGxlKTogTGlrZXdpc2UuCgkoYXJtX2dlbl9tb3ZtZW1xaSk6IFVzZSBhZGp1c3RfYXV0b21vZGlmeV9hZGRyZXNzLgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogVXBkYXRlIGRlY2xzLgoJKiBjb25maWcvYXJtL2FybS5tZCAobG9hZF9tdWx0aXBsZSk6IFVwZGF0ZSBhcm1fZ2VuX2xvYWRfbXVsdGlwbGUgY2FsbC4KCShzdG9yZV9tdWx0aXBsZSk6IFNpbWlsYXJseS4KCjIwMDQtMDgtMTkgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogcmVnY2xhc3MuYyAoZ2xvYmFsaXplX3JlZyk6IFVwZGF0ZSBjYWxsX3JlYWxseV91c2VkX3JlZ3MuCgoyMDA0LTA4LTE5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChpbnRlZ2VyLXNoYXJlLWxpbWl0KTogRG9jdW1lbnQuCgoJKiB0cmVlLmggKFRZUEVfQ0FDSEVEX1ZBTFVFU19QKTogTmV3LgoJKFRZUEVfQ0FDSEVEX1ZBTFVFUyk6IE5ldy4KCShUWVBFX09SSUdfU0laRV9UWVBFKTogQWRqdXN0LgoJKiB0cmVlLmRlZiAoSU5URUdFUl9DU1QpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCSogdHJlZS5jOiBJbmxjdWRlIHBhcmFtcy5oLgoJKGJ1aWxkX2ludF9jc3QpOiBDYWNoZSBzbWFsbCB2YWx1ZXMuCgkoYnVpbGRfdHlwZV9jb3B5KTogRG8gbm90IGNvcHkgdGhlIHZhbHVlIGNhY2hlLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBBZGQgY29tbWVudCwgcmVtb3ZlCgl1bm5lZWRlZCB6ZXJvaW5nLgoJKiBjLXR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBBZGQgY29tbWVudCBhYm91dCBPVkVSRkxPVyBzZXR0aW5nLgoJKiBleHBtZWQuYyAoY29uc3RfbXVsdF9hZGRfb3ZlcmZsb3dfcCk6IENsZWFyIHR5cGUgY29weSdzIHZhbHVlCgljYWNoZS4KCSogZm9sZC1jb25zdC5jIChmb3JjZV9maXRfdHlwZSk6IENvcHkgdmFsdWUgd2hlbiBzZXR0aW5nCglvdmVyZmxvd3MuCgkoaW50X2NvbnN0X2Jpbm9wKTogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmM6IEluY2x1ZGUgcGFyYW1zLmgKCShzZXRfc2l6ZXR5cGUpOiBDcmVhdGUgdmFsdWVzIGNhY2hlLgoJKGZpeHVwX3Vuc2lnbmVkX3R5cGUpOiBTZXQgVU5TSUdORURfUCBiZWZvcmUgY2FjaGluZyBhbnkgdmFsdWVzLgoJKiBwYXJhbXMuZGVmIChQQVJBTV9JTlRFR0VSX1NIQVJFX0xJTUlUKTogTmV3LgoJKiBwYXJhbXMuaCAoSU5URUdFUl9TSEFSRV9MSU1JVCk6IE5ldy4KCSogTWFrZWZpbGUuaW4gKHRyZWUubywgc3Rvci1sYXlvdXQubyk6IERlcGVuZCBvbiBQQVJBTVNfSC4KCjIwMDQtMDgtMTkgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9taW5pbWF4X2V4cHIpOiBSZW1vdmUuCgkoZ2ltcGxpZnlfZXhwcikgPE1JTl9FWFBSLCBNQVhfRVhQUj46IFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nLgoKMjAwNC0wOC0xOSAgRG9yaXQgTmFpc2hsb3MgIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0b3JpemVyLmMgKHZlY3RfY2FuX2ZvcmNlX2RyX2FsaWdubWVudF9wKTogUmVwbGFjZQoJU1RBQ0tfQk9VREFSWSB3aXRoIFBSRUZFUlJFRF9TVEFDS19CT1VOREFSWS4KCjIwMDQtMDgtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBicGFiaS5oIChGUFVUWVBFX0RFRkFVTFQpOiBTZXQgaXQgdG8gRlBVVFlQRV9WRlAuCgoyMDA0LTA4LTE4ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiB2YXJhc20uYyAoZWNvZGVfcmVnX25hbWUpOiBEbyBub3RoaW5nIGlmIHRoZSBhc21zcGVjIGlzIGVtcHR5LgoKMjAwNC0wOC0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYnBhYmkuYyAoX19hZWFiaV91bDJkKTogR2l2ZSBpdCBkZWZhdWx0IHZpc2liaWxpdHkuCgkoX19hZWFiaV91bDJmKTogTGlrZXdpc2UuCgoyMDA0LTA4LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoeHRlbnNhX2V4cGFuZF9ibG9ja19tb3ZlKTogRXhwYW5kIGJsb2NrCgltb3ZlIHRvIHJ0bCBjb21wbGV0ZWx5LgoJKHN0cnVjdCBtZW1pbnNuYnVmLCB4dGVuc2FfZW1pdF9ibG9ja19tb3ZlKTogUmVtb3ZlLgoJKHh0ZW5zYV9maW5kX21vZGVfZm9yX3NpemUpOiBSZW1vdmUuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLXByb3Rvcy5oICh4dGVuc2FfZW1pdF9ibG9ja19tb3ZlKTogUmVtb3ZlLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5tZCAobW92bWVtc2lfaW50ZXJuYWwpOiBSZW1vdmUuCgoyMDA0LTA4LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL21jb3JlL21jb3JlLmMgKG1vZGVfZnJvbV9hbGlnbik6IFJlbW92ZSBESW1vZGUuCgkoYmxvY2tfbW92ZV9zZXF1ZW5jZSk6IFJld3JpdGUgdG8gdXNlIGFkanVzdF9hZGRyZXNzLgoJKG1jb3JlX2V4cGFuZF9ibG9ja19tb3ZlKTogQ2xlYW51cCBsb2dpYy4gIEFjY2VwdCBvbmx5IG9wZXJhbmRzLgoJUmV0dXJuIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzL2ZhaWx1cmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS1wcm90b3MuaCAobWNvcmVfZXhwYW5kX2Jsb2NrX21vdmUpOiBVcGRhdGUgZGVjbC4KCSogY29uZmlnL21jb3JlL21jb3JlLm1kIChtb3ZtZW1zaSk6IFVwZGF0ZSB0byBtYXRjaC4KCjIwMDQtMDgtMTggIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpICgtbWZpeC1hbmQtY29udGludWUpOiBBZGQgc3VwcG9ydCBmb3IKCWZhc3QgdHVybiBhcm91bmQgZGVidWdnaW5nLgoJKC1mZml4LWFuZC1jb250aW51ZSk6IExpa2V3aXNlLgoJKC1taW5kaXJlY3QtZGF0YSk6IExpa2V3aXNlLgoJKC1maW5kaXJlY3QtZGF0YSk6IExpa2V3aXNlLgoJKiBjb25maWcvZGFyd2luLmMgKFRBUkdFVF9GSVhfQU5EX0NPTlRJTlVFKTogTGlrZXdpc2UuCgkoaW5kaXJlY3RfZGF0YSk6IExpa2V3aXNlLgoJKG1hY2hvcGljX2RhdGFfZGVmaW5lZF9wKTogTGlrZXdpc2UuCgkobWFjaG9waWNfb3V0cHV0X2luZGlyZWN0aW9uKTogTGlrZXdpc2UuCgkoZGFyd2luX2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCShkYXJ3aW5fZml4X2FuZF9jb250aW51ZSk6IExpa2V3aXNlLgoJKGRhcndpbl9maXhfYW5kX2NvbnRpbnVlX3N3aXRjaCk6IExpa2V3aXNlLgoJKiBjb25maWcvZGFyd2luLmggKE1BQ0hPX1NZTUJPTF9TVEFUSUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBMaWtld2lzZS4KCShTVUJUQVJHRVRfT1BUSU9OX1RSQU5TTEFURV9UQUJMRSk6IExpa2V3aXNlLgoJKFNVQlRBUkdFVF9PUFRJT05TKTogTGlrZXdpc2UuCgkoZGFyd2luX2ZpeF9hbmRfY29udGludWUpOiBMaWtld2lzZS4KCShkYXJ3aW5fZml4X2FuZF9jb250aW51ZV9zd2l0Y2gpOiBMaWtld2lzZS4KCShUQVJHRVRfRklYX0FORF9DT05USU5VRSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogTGlrZXdpc2UuCgoyMDA0LTA4LTE5ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgZWRnZV9kZWYpOiBSZW1vdmUgY3Jvc3NpbmdfZWRnZS4KCShFREdFX0NST1NTSU5HKTogTmV3IGRlZmluZS4KCShFREdFX0FMTF9GTEFHUyk6IFVwZGF0ZS4KCSogYmItcmVvcmRlci5jIChmaW5kX3RyYWNlc18xX3JvdW5kLCBiZXR0ZXJfZWRnZV9wLAoJZmluZF9yYXJlbHlfZXhlY3V0ZWRfYmFzaWNfYmxvY2tzX2FuZF9jciwgZml4X3VwX2ZhbGxfdGhydV9lZGdlcywKCWZpbmRfanVtcF9ibG9jaywgZml4X2Nyb3NzaW5nX2NvbmRpdGlvbmFsX2JyYW5jaGVzLAoJZml4X2Nyb3NzaW5nX3VuY29uZGl0aW9uYWxfYnJhbmNoZXMsIGFkZF9yZWdfY3Jvc3NpbmdfanVtcF9ub3Rlcyk6CglSZXBsYWNlIGFsbCBvY2N1cmVuY2VzIG9mIGNyb3NzaW5nX2VkZ2Ugd2l0aCBhbiBlZGdlIGZsYWcgY2hlY2sKCW9yIHNldC9yZXNldC4KCSogY2ZnY2xlYW51cC5jICh0cnlfc2ltcGxpZnlfY29uZGp1bXAsIHRyeV9mb3J3YXJkX2VkZ2VzLAoJdHJ5X2Nyb3NzanVtcF9iYik6IExpa2V3aXNlLgoJKiBjZmdsYXlvdXQuYyAoZml4dXBfcmVvcmRlcl9jaGFpbik6IExpa2V3aXNlLgoJKiBjZmdydGwuYyAoZm9yY2Vfbm9uZmFsbHRocnVfYW5kX3JlZGlyZWN0LAoJY29tbWl0X29uZV9lZGdlX2luc2VydGlvbik6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuaW4gKGNmZ2FuYWwubyk6IERlcGVuZCBvbiBUSU1FVkFSX0guCgkqIHRyZWUtZmxvdy5oIChjb21wdXRlX2RvbWluYW5jZV9mcm9udGllcnMpOiBNb3ZlIHByb3RvdHlwZS4uLgoJKiBiYXNpYy1ibG9jay5oOiAuLi5oZXJlLgoJKiB0cmVlLWNmZy5jIChjb21wdXRlX2RvbWluYW5jZV9mcm9udGllcnNfMSwKCWNvbXB1dGVfZG9taW5hbmNlX2Zyb250aWVycyk6IE1vdmUgZnJvbSBoZXJlLi4uCgkqIGNmZ2FuYWwuYzogLi4udG8gaGVyZS4gIEluY2x1ZGUgdGltZXZhci5oLgoKMjAwNC0wOC0xOCAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChBU01fU1BFQyk6IEluIGNvbW1lbnQsIGNoYW5nZSAtbWVhYmk9IHRvIC1tYWJpPS4KCSogY29uZmlnL21pcHMvc2IxLm1kIChpcl9zYjFfZGl2c2ZfMXBpcGUpOiBSZW5hbWVkIGZyb20gLi4uMXBpcGVzLgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAodHlwZSk6IEFkZCBmcmRpdi4KCShkaXZzZjMrMSwgZGl2c2YzKzIpOiBDaGFuZ2UgdHlwZSB0byBmcmRpdi4KCSogY29uZmlnL21pcHMvc2IxLm1kIChpcl9zYjFfcmVjaXBzZl8ycGlwZXMsIGlyX3NiMV9yZWNpcHNmXzFwaXBlLAoJaXJfc2IxX3JlY2lwZGZfMnBpcGVzLCBpcl9zYjFfcmVjaXBkZl8xcGlwZSk6IE5ldy4KCgkqIGNvbmZpZy9taXBzLzMwMDAubWQgKHIza19mZGl2X3NpbmdsZSwgcjNrX2ZkaXZfZG91YmxlKTogQWRkIGZyZGl2LgoJKiBjb25maWcvbWlwcy80MzAwLm1kIChyNDMwMF9mZGl2X3NpbmdsZSwgcjQzMDBfZmRpdl9kb3VibGUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvNDYwMC5tZCAocjQ2MDBfZmRpdl9zaW5nbGUsIGY0NjAwX2ZkaXZfZG91YmxlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzLzUwMDAubWQgKHI1a19mZGl2X3NpbmdsZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy81NDAwLm1kIChpcl92cjU0X2ZkaXZfc2YsIGlyX3ZyNTRfZmRpdl9kZik6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy81NTAwLm1kIChpcl92cjU1X2ZkaXZfc2YsIGlyX3ZyNTVfZmRpdl9kZik6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy82MDAwLm1kIChyNmtfZmRpdl9zaW5nbGUsIHI2a19mZGl2X2RvdWJsZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy83MDAwLm1kIChybTdfZnBfZGl2c3FydF9kZiwgcm03X2ZwX2RpdnNxcnRfc2YpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvOTAwMC5tZCAocm04a19mZGl2cywgcm05a19mZGl2ZCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9nZW5lcmljLm1kIChnZW5lcmljX2ZkaXZfc2luZ2xlLCBnZW5lcmljX2ZkaXZfZG91YmxlKToKCUxpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9zcjcxay5tZCAoaXJfc3I3MF9mZGl2X3NmLCBpcl9zcjcwX2ZkaXZfZGYpOiBMaWtld2lzZS4KCjIwMDQtMDgtMTggIFJvYmVydCBCb3dkaWRnZSA8Ym93ZGlkZ2VAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC94LWRhcndpbjogUmVtb3ZlIFhDRkxBR1MgLW1keW5hbWljLW5vLXBpYyB0bwoJZ2V0IHJlZ3Jlc3Npb24gdGVzdGVyIHdvcmtpbmcgYWdhaW4uCgoyMDA0LTA4LTE4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaW5zbi1ub3Rlcy5kZWYsIHJlZy1ub3Rlcy5kZWY6IE5ldyBmaWxlcy4KCSogcnRsLmg6IFVzZSB0aGVtIHRvIGRlZmluZSBlbnVtIGluc25fbm90ZSBhbmQgZW51bSByZWdfbm90ZS4KCSogcnRsLmM6IFVzZSB0aGVtIHRvIGRlZmluZSBub3RlX2luc25fbmFtZSBhbmQgcmVnX25vdGVfbmFtZS4KCSogTWFrZWZpbGUuaW4gKFJUTF9CQVNFX0gpOiBVcGRhdGUuCgoJKiBtb2R1bG8tc2NoZWQuYywgc2NoZWQtcmduLmMsIGZpbmFsLmM6IE5PVEVfRElTQUJMRV9TQ0hFRF9PRl9CTE9DSwoJcmVuYW1lZCB0byBOT1RFX0lOU05fRElTQUJMRV9TQ0hFRF9PRl9CTE9DSy4KCjIwMDQtMDgtMTggIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFybV9zaXplX3J0eF9jb3N0cyk6IE5ldyBmdW5jdGlvbi4KCShhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSBpdCBpZiBvcHRpbWl6aW5nIGZvciBzcGFjZS4KCjIwMDQtMDgtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbWl0LXJ0bC5jIChnZW5fY29uc3RfbWVtKTogTmV3LgoJKiBydGwuaCAoZ2VuX2NvbnN0X21lbSk6IERlY2xhcmUuCgkqIGV4cHIuYyAoZG9fdGFibGVqdW1wKTogVXNlIGl0LgoJKiB2YXJhc20uYyAoZm9yY2VfY29uc3RfbWVtKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfaW5kaXJlY3RfZGF0YV9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCShtYWNob3BpY19sZWdpdGltaXplX3BpY19hZGRyZXNzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTGlrZXdpc2UuCgkobGVnaXRpbWl6ZV90bHNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXhwYW5kX3Rsc19hZGRyZXNzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGxvYWRfZnB0cik6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyci9tMzJyLmMgKG0zMnJfbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEuYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbGVnaXRpbWl6ZV90bHNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKHJzNjAwMF9lbWl0X21vdmUpOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTGlrZXdpc2UuCgkobGVnaXRpbWl6ZV90bHNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChjYXNlc2kpOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmMgKHNoX3Jlb3JnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy92ODUwL3Y4NTAubWQgKGNhc2VzaSk6IExpa2V3aXNlLgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19pbmRpcmVjdF9jYWxsX3RhcmdldCk6IFNldCBNRU1fTk9UUkFQX1AuCgkqIGNvbmZpZy9zaC9zaC5jIChwcmVwYXJlX21vdmVfb3BlcmFuZHMpOiBSZW1vdmUgaW5jb3JyZWN0Cgl1c2Ugb2YgTUVNX1JFQURPTkxZX1AuCgoyMDA0LTA4LTE4ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUy1jb21tb24pOiBBZGQgcG9zdHJlbG9hZC1nY3NlLmMuCglBZGQgbmV3IHBvc3RyZWxvYWQtZ2NzZS5vLgoJKiBjc2UuYyAoU0FGRV9IQVNIKTogRGVmaW5lIGFzIHdyYXBwZXIgYXJvdW5kIHNhZmVfaGFzaC4KCShsb29rdXBfYXNfZnVuY3Rpb24sIGluc2VydCwgcmVoYXNoX3VzaW5nX3JlZywgdXNlX3JlbGF0ZWRfdmFsdWUsCgllcXVpdl9jb25zdGFudCk6IFVzZSBTQUZFX0hBU0ggaW5zdGVhZCBvZiBzYWZlX2hhc2guCgkoZXhwX2VxdWl2X3ApOiBFeHBvcnQuICBBZGQgZm9yX2djc2UgYXJndW1lbnQgd2hlbiBjb21wYXJpbmcKCWZvciBHQ1NFLgoJKGxvb2t1cCwgbG9va3VwX2Zvcl9yZW1vdmUsIG1lcmdlX2VxdWl2X2NsYXNzZXMsIGZpbmRfYmVzdF9hZGRyLAoJZmluZF9jb21wYXJpc29uX2FyZ3MsIGZvbGRfcnR4LCBjc2VfaW5zbik6IFVwZGF0ZSBjYWxsZXJzLgoJKGhhc2hfcnR4KTogTmV3IGZ1bmN0aW9uIGRlcml2ZWQgZnJvbSBvbGQgY2Fub25faGFzaCBhbmQgYml0cwoJZnJvbSBnY3NlLmMgaGFzaF9leHByXzEuCgkoY2Fub25faGFzaF9zdHJpbmcpOiBSZW5hbWUgdG8gaGFzaF9ydHhfc3RyaW5nLgoJKGNhbm9uX2hhc2gsIHNhZmVfaGFzaCk6IE1ha2Ugc3RhdGljIGlubGluZS4gIENhbGwgaGFzaF9ydHguCgkqIGNzZWxpYi5jIChoYXNoX3J0eCk6IFJlbmFtZSB0byBjc2VsaWJfaGFzaF9ydHguCgkoY3NlbGliX2xvb2t1cCk6IFVwZGF0ZSB0aGlzIGNhbGxlci4KCSogZ2NzZS5jIChtb2RpZnlfbWVtX2xpc3Rfc2V0LCBjYW5vbl9tb2RpZnlfbWVtX2xpc3Rfc2V0KToKCU1ha2Ugc3RhdGljLgoJKGhhc2hfZXhwcik6IENhbGwgaGFzaF9ydHguCgkobGRzdF9lbnRyeSk6IExpa2V3aXNlLgoJKGV4cHJfZXF1aXZfcCk6IENhbGwgZXhwX2VxdWl2X3AuCgkoc3RydWN0IHVub2NjciwgaGFzaF9leHByXzEsIGhhc2hfc3RyaW5nXzEsIGxvb2t1cF9leHByLAoJcmVnX3VzZWRfb25fZWRnZSwgcmVnX3NldF9iZXR3ZWVuX2FmdGVyX3JlbG9hZF9wLAoJcmVnX3VzZWRfYmV0d2Vlbl9hZnRlcl9yZWxvYWRfcCwgZ2V0X2F2YWlsX2xvYWRfc3RvcmVfcmVnLAoJaXNfanVtcF90YWJsZV9iYXNpY19ibG9jaywgYmJfaGFzX3dlbGxfYmVoYXZlZF9wcmVkZWNlc3NvcnMsCglnZXRfYmJfYXZhaWxfaW5zbiwgaGFzaF9zY2FuX3NldF9hZnRlcl9yZWxvYWQsCgljb21wdXRlX2hhc2hfdGFibGVfYWZ0ZXJfcmVsb2FkLAoJZWxpbWluYXRlX3BhcnRpYWxseV9yZWR1bmRhbnRfbG9hZHMsIGdjc2VfYWZ0ZXJfcmVsb2FkLAoJZ2V0X2JiX2F2YWlsX2luc24sIGdjc2VfYWZ0ZXJfcmVsb2FkX21haW4pOiBSZW1vdmUuCgkqIHBvc3RyZWxvYWQtZ2NzZS5jOiBOZXcgZmlsZSwgcmVpbmNhcm5hdGluZyBtb3N0IG9mIHRoZSBhYm92ZS4KCSogcnRsLmggKGV4cF9lcXVpdl9wLCBoYXNoX3J0eCk6IE5ldyBwcm90b3R5cGVzLgoJKGdjc2VfYWZ0ZXJfcmVsb2FkX21haW4pOiBVcGRhdGUgcHJvdG90eXBlLgoJKiB0aW1ldmFyLmRlZiAoVFZfR0NTRV9BRlRFUl9SRUxPQUQpOiBOZXcgdGltZXZhci4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfaGFuZGxlX2djc2UyKTogVXNlIGl0LgoKMjAwNC0wOC0xOCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1sb29wLmMgKHBhc3NfbG9vcF9pbml0KTogQWRkIFRPRE9fZHVtcF9mdW5jLgoJKHBhc3NfbG9vcF9kb25lKTogTGlrZXdpc2UuCgoyMDA0LTA4LTE4ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5tZDogRGVsZXRlIHRoZSBhbHRpdmVjIHBhdHRlcm5zIHdoaWNoIGFyZQoJaGFuZGxlZCBkaWZmZXJlbnRseSBub3cuCgkobG9hZF9tYWNob19waWNiYXNlX2RpKTogTWFrZSBzdXJlIHRoYXQgaXMgb25seSBoYXBwZW5zIGZvciBUQVJHRVRfNjRCSVQKCShtYWNob19jb3JyZWN0X3BpY19kaSk6IExpa2V3aXNlLgoJKGNhbGxfaW5kaXJlY3Rfbm9ubG9jYWxfZGFyd2luNjQpOiBMaWtld2lzZS4KCURlbGV0ZSB0aGUgc2F2ZSB3b3JsZC9zYXZlRlAvc2F2ZVZlYyBwYXR0ZXJucy4KCglSZXZlcnQgdGhlIHJldmVyc2lvbiBvZjogMjAwNC0wOC0xNiAgU3RhbiBTaGVicyAgPHNoZWJzQGFwcGxlLmNvbT4KCSogY29uZmlnL2Rhcndpbi5jIChtYWNob19pbmRpcmVjdF9kYXRhX3JlZmVyZW5jZSk6IEFkZCBESW1vZGUgY2FzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IEluY2x1ZGUgZGFyd2luLm1kLgoJKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogQWRkIERJbW9kZSBjYXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9tb3ZlKTogQWRkIERJbW9kZSBjYXNlIHRvCglEYXJ3aW4gYml0cy4KCjIwMDQtMDgtMTggIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCURlYWQgY29kZSBzdHJpcHBpbmcKCSogZGFyd2luLmggKEVIX0ZSQU1FX1NFQ1RJT05fQVRUUik6IE1hcmsgc28gaXQgZG9lc24ndCBnZXQgc3RyaXBwZWQuCgkqIGRhcndpbi5jIChkYXJ3aW5fZmlsZV9lbmQpOiBNYXJrIGZpbGUgYXMgcG90ZW50aWFsbHkgc3RyaXBwYWJsZS4KCjIwMDQtMDgtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBhbGlhcy5jIChyZWFkb25seV9maWVsZHNfcCk6IFJlbW92ZS4KCShvYmplY3RzX211c3RfY29uZmxpY3RfcCk6IERvbid0IGNhbGwgaXQuCgkqIHRyZWUuaCAocmVhZG9ubHlfZmllbGRzX3ApOiBSZW1vdmUuCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rcyk6IFJlbW92ZSBob25vcl9yZWFkb25seS4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX0hPTk9SX1JFQURPTkxZKTogUmVtb3ZlLgoKMjAwNC0wOC0xOCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLWRmYS5jIChhZGRfcmVmZXJlbmNlZF92YXIpOiBPbmx5IGdsb2JhbCB2YXJpYWJsZXMgYXJlCgljYWxsLWNsb2JiZXJlZC4KCSogdHJlZS1mbG93LmggKHN0cnVjdCBwdHJfaW5mb19kZWYpOiBBZGQgZmllbGQgcHRfZ2xvYmFsX21lbS4KCSogdHJlZS1zc2EtYWxpYXMuYyAoY29tcHV0ZV9wb2ludHNfdG9fYW5kX2FkZHJfZXNjYXBlKTogTWFyawoJYWxsIHBvaW50ZXJzIGRlcmVmZXJlbmNlZCBpZiB0aGUgc3RhdGVtZW50IGRlcmVmZXJlbmNlcyB0aGVtLgoJKGNyZWF0ZV9uYW1lX3RhZ3MpOiBEbyBub3QgY3JlYXRlIG1lbW9yeSB0YWdzIGZvciBwb2ludGVycwoJdGhhdCBoYXZlIFBUX0FOWVRISU5HIHNldC4KCUFsc28gY2hlY2sgaWYgUFRfVkFSUyBpcyBub3QgZW1wdHkgYmVmb3JlIGNyZWF0aW5nIGEgbmFtZSB0YWcuCgkoY29tcHV0ZV9mbG93X3NlbnNpdGl2ZV9hbGlhc2luZyk6IERvbid0IG1hcmsgY2FsbC1jbG9iYmVyZWQKCXZhcmlhYmxlcyB0aGF0IHNoYXJlIHRoZSBzYW1lIGFsaWFzIHNldCB3aXRoIGEgcG9pbnRlciB0aGF0CgltYXkgcG9pbnQgYW55d2hlcmUuCgkoYWRkX21heV9hbGlhcyk6IEFkZCBGSVhNRSBjb21tZW50IHRvIHJlbW92ZSBjbG9iYmVyaW5nCglhbGlhc2VkIHZhcmlhYmxlcyBhbmQgdGFncy4KCShyZXBsYWNlX21heV9hbGlhcyk6IExpa2V3aXNlLgoJKHNldF9wdF9hbnl0aGluZyk6IERvIG5vdCBjbGVhciBQVF9WQVJTIG5vciBJU19ERVJFRkVSRU5DRUQuCgkobWVyZ2VfcG9pbnRlZF90b19pbmZvKTogSWYgdGhlIG9yaWdpbmFsIHZhcmlhYmxlIGhhcyBub3QKCXBvaW50cy10byBpbmZvcm1hdGlvbiwgY2FsbCBzZXRfcHRfYW55dGhpbmcuCgkoYWRkX3BvaW50ZWRfdG9fdmFyKTogRG8gbm90IHByZXZlbnQgYWRkaW5nIGEgcG9pbnRlZC10bwoJdmFyaWFibGUgaWYgdGhlIHBvaW50ZXJzIGlzIFBUX0FOWVRISU5HLgoJSWYgdGhlIHZhcmlhYmxlIGlzIGEgZ2xvYmFsLCBzZXQgUFRfR0xPQkFMX01FTS4KCShjb2xsZWN0X3BvaW50c190b19pbmZvX3IpOiBEb24ndCBhc3N1bWUgdGhhdCBQTFVTX0VYUFJzIG9mCglwb2ludGVyIHR5cGUgb25seSBjb21lIGluIFBUUitPRkZTRVQgZmxhdm91cnMuCglBbHdheXMgY2FsbCBtZXJnZV9wb2ludGVkX3RvX2luZm8gb24gUEhJIGFyZ3VtZW50cyB0aGF0IGFyZQoJU1NBX05BTUVzLgoJKGdldF9ubXRfZm9yKTogTWFyayBjYWxsLWNsb2JiZXJlZCB0YWdzIHdob3NlIHBvaW50ZXIgcG9pbnRzCgl0byBnbG9iYWwgbWVtb3J5LgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChvcGZfa2lsbF9kZWYsIG9wZl9ub192b3BzKTogU3dpdGNoCgl2YWx1ZXMuCgkoZ2V0X2luZGlyZWN0X3JlZl9vcGVyYW5kcyk6IEFsd2F5cyBjbGVhciBPUEZfS0lMTF9ERUYgZnJvbQoJRkxBR1MuCgkoYWRkX3N0bXRfb3BlcmFuZCk6IEFib3J0IGlmIHRoZSBjYWxsZXIgdHJpZWQgdG8gYWRkIGEga2lsbGluZwoJZGVmaW5pdGlvbiBmb3IgYSBtZW1vcnkgdGFnLgoJKiB0cmVlLXNzYS5jICh2ZXJpZnlfZmxvd19zZW5zaXRpdmVfYWxpYXNfaW5mbyk6IFJlbW92ZQoJdW5uZWNlc3NhcnkgY2hlY2tzLgoKMjAwNC0wOC0xOCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IERvbid0IGV4Y2x1ZGUgZml4ZWQgcmVnaXN0ZXJzCglmcm9tIGNhbGxfdXNlZF9yZWdzLiAgVXBkYXRlIGNhbGxfcmVhbGx5X3VzZWRfcmVncy4KCShDQUxMX1JFQUxMWV9VU0VEX1JFR0lTVEVSUyk6IERlZmluZS4KCSogc2guYyAob3V0cHV0X3N0YWNrX2FkanVzdCwgc2htZWRpYV90YXJnZXRfcmVnc19zdGFja19zcGFjZSk6CglSZXBsYWNlIGNhbGxfdXNlZF9yZWdzIHdpdGggY2FsbF9yZWFsbHlfdXNlZF9yZWdzLgoJKGNhbGNfbGl2ZV9yZWdzLCBzaF9tZWRpYV9yZWdpc3Rlcl9mb3JfcmV0dXJuKTogTGlrZXdpc2UuCgkoc2g1X3NjaGVkdWxlX3NhdmVzLCBzaF9leHBhbmRfcHJvbG9ndWUsIHJlZ191bnVzZWRfYWZ0ZXIpOiBMaWtld2lzZS4KCSogc2gubWQgKHJldHVybl9tZWRpYSk6IExpa2V3aXNlLgoKMjAwNC0wOC0xOCAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19sZWdpdGltaXplX3BpY19hZGRyZXNzKTogT25seSBzZXQKCU1FTV9SRUFET05MWV9QIGluIHRoZSBub24gVEFSR0VUX1RPQyBjYXNlLgoKMjAwNC0wOC0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0bC5kZWYgKE5JTCk6IERlbGV0ZS4KCSogcmVhZC1ydGwuYyAocmVhZF9ydHgpOiBIYW5kbGUgKG5pbCkgbGlrZSAoZGVmaW5lX2NvbnN0YW50cykuCglUaWdodGVuIHRoZSBzeW50YXggYSBsaXR0bGUuCgoJKiBjZmdsb29wLmgsIGNvbWJpbmUuYywgY3NlLmMsIGxvb3AtaXYuYywgcG9zdHJlbG9hZC5jLCByZWxvYWQuYwoJKiBjb25maWcvYWxwaGEvYWxwaGEuYywgY29uZmlnL2FscGhhL2FscGhhLmgsIGNvbmZpZy9hcmMvYXJjLmgKCSogY29uZmlnL2FybS9hcm0uaCwgY29uZmlnL2Zydi9mcnYuaCwgY29uZmlnL2kzODYvaTM4Ni5jCgkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQsIGNvbmZpZy9tMzJyL20zMnIuaAoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMsIGNvbmZpZy9tY29yZS9tY29yZS5oLCBjb25maWcvbWlwcy9taXBzLmMKCSogY29uZmlnL21taXgvbW1peC5jLCBjb25maWcvcGEvcGEuaCwgY29uZmlnL3NoL3NoLmgKCSogY29uZmlnL3NwYXJjL3NwYXJjLmgsIGRvYy90bS50ZXhpOgoJUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgTklMIHdpdGggVU5LTk9XTi4KCjIwMDQtMDgtMTggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2p1bXAuYyAoZG9fanVtcCA8dW5vcmRlcmVkX2JjYz4pOiBEbyBub3QgcmVjdXJzaXZlbHkgY2FsbAoJc2VsZiB3aXRoIGEgVFJVVEhfT1JJRl9FWFBSOyBnZW5lcmF0ZSB0aGUgYXBwcm9wcmlhdGUganVtcAoJc2VxdWVuY2UgaW5saW5lLiAgTW92ZSBkcm9wX3Rocm91Z2hfbGFiZWwgY29kZSBpbnRvIHRoaXMKCWJsb2NrLCBiZWluZyB0aGUgb25seSBwbGFjZSBpdCBpcyB1c2VkLiAgQWRqdXN0IGNvbW1lbnRzLgoKMjAwNC0wOC0xOCAgRmFyaWJvcnogSmFoYW5pYW4gPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQ6IEFkZCBuZXcgcGF0dGVybnMgZm9yIGNhbGxzIHRvCglzYXZlX3dvcmxkL3Jlc3Rfd29ybGQgZnVuY3Rpb25zLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IChzYXZlX3dvcmxkX29wZXJhdGlvbiwKCXJlc3RvcmVfd29ybGRfb3BlcmF0aW9uKSBuZXcgZGVjbGFyYXRpb25zLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogKHN0cnVjdCByczYwMDBfc3RhY2spIG5ldyB3b3JsZF9zYXZlX3AKCWZpZWxkIGFkZGVkLgoJKHJzNjAwMF9zdGFja19pbmZvKTogU2V0IHdvcmxkX3NhdmVfcCBmaWVsZC4KCShzYXZlX3dvcmxkX29wZXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShyZXN0b3JlX3dvcmxkX29wZXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShjb21wdXRlX3NhdmVfd29ybGRfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfc3RhY2tfaW5mbyk6IENhbGwgY29tcHV0ZV9zYXZlX3dvcmxkX2luZm8uCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBDaGVjayBmb3Igd29ybGRfc2F2ZV9wIGFuZCBnZW5lcmF0ZQoJcGF0dGVybiB0byBjYWxsIHNhdmVfd29ybGQgZm9yIHNhdmluZyBhbGwgbm9uLXZvbGF0aWxlIGFuZAoJc3BlY2lhbCByZWdpc3RlcnMuCgkocnM2MDAwX2VtaXRfZXBpbG9ndWUpOiBDaGVjayBmb3Igd29ybGRfc2F2ZV9wIGFuZCBnZW5lcmF0ZQoJcGF0dGVybiB0byBjYWxsIHJlc3Rfd29ybGQgdG8gcmVzdG9yZSBzYXZlZCByZWdpc3RlcnMuCgoJY29uZmlnL3JzNjAwMC9yczYwMDAuaDogbWFjcm9zIEZJUlNUX1NBVkVEX0FMVElWRUNfUkVHTk8sCglGSVJTVF9TQVZFRF9GUF9SRUdOTywgRklSU1RfU0FWRURfR1BfUkVHTk8gZGVmaW5lZC4KCShyczYwMDBfcmVnX25hbWVzKTogTmV3IGVudHJpZXMgYWRkZWQgZm9yIHNhdmVfd29ybGRfb3BlcmF0aW9uIGFuZAoJcmVzdG9yZV93b3JsZF9vcGVyYXRpb24uCgoyMDA0LTA4LTE4ICBDYXJvbGluZSBUaWNlICA8Y3RpY2VAYXBwbGUuY29tPgoKCSogTWFrZWZpbGUuaW4gKFNUQUdFRkVFREJBQ0tfRkxBR1NfVE9fUEFTUykgQWRkCgkiLWZyZW9yZGVyLWJsb2Nrcy1hbmQtcGFydGl0aW9uIiB0byB0aGUgZmxhZ3MgdXNlZCBpbiBzZWNvbmQKCXN0YWdlIG9mIHByb2ZpbGVkYm9vdHN0cmFwLgoJKiBiYi1yZW9yZGVyLmMgKHB1c2hfdG9fbmV4dF9yb3VuZF9wKTogQWRkIG5ldyB2YXJpYWJsZSwKCW5leHRfcm91bmRfaXNfbGFzdDsgc2V0IGFuZCB1c2UgdmFyaWFibGUgdG8gbWFrZSBzdXJlLCB3aGVuCglwYXJ0aXRpb25pbmcsIHRoYXQgdGhlIGxhc3QgdHJhY2UgY29uc3RydWN0aW9uIHJvdW5kIGNvbnNpc3RzCglvZiBhbGwgKGFuZCBvbmx5KSBjb2xkIGJhc2ljIGJsb2Nrcy4KCShyb3RhdGVfbG9vcCk6IERvbid0IGNvcHkgYmxvY2tzIHRoYXQgZW5kIGluIGEgc2VjdGlvbgoJY3Jvc3NpbmcganVtcC4KCShjb3B5X2JiKTogQ29ycmVjdGx5IGluaXRpYWxpemUgInBhcnRpdGlvbiIgb2YgZHVwbGljYXRlZCBiYi4KCShhZGRfdW5saWtlbHlfZXhlY3V0ZWRfbm90ZXMpOiBBZGQgYSBjb21tZW50LgoJKGZpbmRfcmFyZWx5X2V4ZWN1dGVkX2Jhc2ljX2Jsb2Nrc19hbmRfY3Jvc3NpbmdfZWRnZXMpOiBNb2RpZnkKCXRvIG1ha2Ugc3VyZSwgaWYgZnVuY3Rpb24gY29udGFpbnMgaG90IGJsb2NrcywgdGhhdCB0aGUKCXN1Y2Nlc3NvcnMgb2YgRU5UUllfQkxPQ0tfUFRSIGFyZSBob3Q7IGFsc28sIG9ubHkgbG9vayBmb3IKCWNyb3NzaW5nIGVkZ2VzIGlmIHRoZSBhcmNoaXRlY3R1cmUgc3VwcG9ydHMgbmFtZWQgc2VjdGlvbnMuCgkobWFya19iYl9mb3JfdW5saWtlbHlfZXhlY3V0ZWRfc2VjdGlvbik6IE1vZGlmeSB0byBhbHdheXMKCWluc2VydCB0aGUgTk9URV9JTlNOX1VOTElLRUxZX0VYRUNVVEVEX0NPREUgaW1tZWRpYXRlbHkgYWZ0ZXIKCXRoZSBiYXNpYyBibG9jayBub3RlIGluc24uCgkoZml4X2Nyb3NzaW5nX3VuY29uZGl0aW9uYWxfYnJhbmNoZXMpOiBSZW1vdmUgZXh0cmEgc3BhY2UuCgkoZml4X2VkZ2VzX2Zvcl9yYXJlbHlfZXhlY3V0ZWRfY29kZSk6IE1vZGlmeSB0byBvbmx5IGRvCglwYXJ0aXRpb25pbmcgd29yayBpZiB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIG5hbWVkIHNlY3Rpb25zLgoJKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogTW9kaWZ5IHRvIG9ubHkgYWRkCglOT1RFX0lOU05fVU5MSUtFTFlfRVhFQ1VURURfQ09ERSBub3RlcyBpZiB0aGUgYXJjaGl0ZWN0dXJlCglzdXBwb3J0cyBuYW1lZCBzZWN0aW9ucy4KCSogYy1jb21tb24uYyAoaGFuZGxlX3NlY3Rpb25fYXR0cmlidXRlKTogSW5pdGlhbGl6ZSBuZXcgZ2xvYmFsCgl2YXJpYWJsZSwgdXNlcl9kZWZpbmVkX3NlY3Rpb25fYXR0cmlidXRlLCB0byB0cnVlIGlmIHVzZXIgaGFzCglzcGVjaWZpZWQgb25lLgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9mb3J3YXJkX2VkZ2VzKTogTW9kaWZ5IHRvIG5vdCBhdHRlbXB0IHRvCglmb3J3YXJkIGVkZ2VzIHRoYXQgY3Jvc3Mgc2VjdGlvbiBib3VuZGFyaWVzLgoJKiBjZmdsYXlvdXQuYyAoZml4dXBfcmVvcmRlcl9jaGFpbik6IE1vZGlmeSB0byBvbmx5IGZpeCB1cAoJcGFydGl0aW9uaW5nIGluZm9ybWF0aW9uIGlmIHRoZSBhcmNoaXRlY3R1cmUgc3VwcG9ydHMgbmFtZWQKCXNlY3Rpb25zLgoJKiBjZmdydGwuYyAodGFyZ2V0LmgpOiBBZGQgc3RhdGVtZW50IHRvIGluY2x1ZGUgdGhpcy4KCShydGxfc3BsaXRfYmxvY2spOiBNYWtlIHN1cmUgbmV3bHkgY3JlYXRlZCBiYiBnZXRzIGNvcnJlY3QKCXBhcnRpdGlvbi4KCSh0cnlfcmVkaXJlY3RfYnlfcmVwbGFjaW5nX2p1bXApOiBNYWtlIHN1cmUgcmVkaXJlY3Rpb24gaXNuJ3QKCWF0dGVtcHRpbmcgdG8gY3Jvc3Mgc2VjdGlvbiBib3VuZGFyaWVzLgoJKGZvcmNlX25vbmZhbGx0aHJ1X2FuZF9yZWRpcmVjdCk6IE9ubHkgZG8gcGFydGl0aW9uIGZpeCB1cCBpZgoJYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIG5hbWVkIHNlY3Rpb25zLgoJKHJ0bF9zcGxpdF9lZGdlKTogTWFrZSBzdXJlIG5ld2x5IGNyZWF0ZWQgYmIgZW5kcyB1cCBpbgoJY29ycmVjdCBwYXJ0aXRpb24uCgkoY29tbWl0X29uZV9lZGdlX2luc2VydGlvbik6IFJlbW92ZSBjb2RlIHRoYXQgaW5jb3JyZWN0bHkKCXVwZGF0ZWQgYmFzaWMgYmxvY2sgcGFydGl0aW9uOyBNYWtlIHN1cmUgcGFydGl0aW9uIGZpeCB1cCBvbmx5CgloYXBwZW5zIGlmIGFyY2hpdGVjdHVyZSBzdXBwb3J0cyBuYW1lZCBzZWN0aW9ucyBhbmQgaXQncyBub3QKCWFscmVhZHkgZG9uZS4KCShydGxfdmVyaWZ5X2Zsb3dfaW5mb18xKTogRml4IGlmLWNvbmRpdGlvbiBvbiB0ZXN0L2Vycm9yCgljb25kaXRpb24gdGhhdCBmYWxsdGhydSBlZGdlcyBhcmUgbm90IGFsbG93ZWQgdG8gY3Jvc3Mgc2VjdGlvbgoJYm91bmRhcmllcy4KCSogZGVmYXVsdHMuaCAoTk9STUFMX1RFWFRfU0VDVElPTl9OQU1FKTogUmVtb3ZlIHRoaXMuCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IFJlbW92ZSByZWR1bmRhbnQgdGVzdCBmcm9tIGlmLXN0YXRlbWVudDsKCWNoYW5nZSBjYWxscyB0byB0ZXh0X3NlY3Rpb24gaW50byBjYWxscyB0byBmdW5jdGlvbl9zZWN0aW9uOyBhZGQgY29kZQoJdG8gb25seSB0byBwYXJ0aXRpb25pbmcgZml4IHVwIGlmIGFyY2hpdGVjdHVyZSBzdXBwb3J0cyBuYW1lZAoJc2VjdGlvbnMuCgkqIGlmY3Z0LmMgKGZpbmRfaWZfY2FzZV8xKTogTWFrZSBzdXJlIG5ld2x5IGNyZWF0ZWQgYmIgaGFzIGNvcnJlY3QKCXBhcnRpdGlvbi4KCShpZl9jb252ZXJ0KTogQWRkIHRhcmdldG0uaGF2ZV9uYW1lZF9zZWN0aW9ucyB0byB0ZXN0LgoJKiBvdXRwdXQuaCAodW5saWtlbHlfc2VjdGlvbl9sYWJlbCk6IEV4dGVybiBkZWNsYXJhdGlvbiBmb3IgbmV3IGdsb2JhbAoJdmFyaWFibGUuCgkodW5saWtlbHlfdGV4dF9zZWN0aW9uX25hbWUpOiBMaWtld2lzZS4KCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IElmIGJvdGggcGFydGl0aW9uaW5nIGFuZCBEV0FSRiBkZWJ1Z2dpbmcKCWFyZSB0dXJuZWQgb24sIGlzc3VlIGEgd2FybmluZyB0aGF0IHRoaXMgZG9lc24ndCB3b3JrLCBhbmQgY2hhbmdlCglwYXJ0aXRpb25nIHRvIGJhc2ljIGJsb2NrIHJlb3JkZXJpbmcgKHdpdGhvdXQgaG90L2NvbGQgcGFydGl0aW9ucykuCgkqIHBhc3Nlcy5jIChyZXN0X29mX2hhbmRsZV9maW5hbCk6IFJlLXNldCBuZXcgZ2xvYmFsIHZhcmlhYmxlLAoJdXNlcl9kZWZpbmVkX3NlY3Rpb25fYXR0cmlidXRlLCB0byBmYWxzZS4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2hhbmdlIG9wdGlvbnMgZm9yIGNhbGxpbmcgcGFydGl0aW9uaW5nCglmdW5jdGlvbjogRG9uJ3QgY2FsbCBpZiB0aGUgdXNlciBkZWZpbmVkIHRoZSBzZWN0aW9uIGF0dHJpYnV0ZSwgYW5kCglkb24ndCBjYWxsIGlmIERFQ0xfT05FX09OTFkgaXMgdHJ1ZSBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCgkqIHByZWRpY3QuYyAoY2hvb3NlX2Z1bmN0aW9uX3NlY3Rpb24pOiBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgd2UKCWFyZSBkb2luZyBob3QvY29sZCBwYXJ0aXRpb25pbmcgKGkuZS4gbGV0IHRoZSBiYXNpYyBibG9jayBwYXJ0aXRpb25pbmcKCWRldGVybWluZSB3aGVyZSB0aGUgZnVuY3Rpb24gYmVsb25ncykuCgkqIHJlZy1zdGFjay5jIChlbWl0X3N3YXBfaW5zbik6IEFkZCBjb25kaXRpb24gdG8gc3RlcCBvdmVyCglOT1RFX0lOU05fVU5MSUtFTFlfRVhFQ1VURURfQ09ERSBub3Rlcy4KCSogdG9wbGV2LmMgKHVzZXJfZGVmaW5lZF9zZWN0aW9uX2F0dHJpYnV0ZSk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkqIHRvcGxldi5oICh1c2VyX2RlZmluZWRfc2VjdGlvbl9hdHRyaWJ1dGUpOiBFeHRlcm4gZGVjbGFyYXRpb24KCWZvciBuZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKiB2YXJhc20uYyAodW5saWtlbHlfc2VjdGlvbl9sYWJlbCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkodW5saWtlbHlfdGV4dF9zZWN0aW9uX25hbWUpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKHVubGlrZWx5X3RleHRfc2VjdGlvbik6IEFkZCBjb2RlIHRvIGluaXRpYWxpemUKCXVubGlrZWx5X3RleHRfc2VjdGlvbl9uYW1lIGlmIG5lY2Vzc2FyeTsgbW9kaWZ5IHRvIHVzZQoJdW5saWtlbHlfdGV4dF9zZWN0aW9uX25hbWUgYW5kIHVubGlrZWx5X3NlY3Rpb25fbGFiZWw7IGFsc28gdG8gdXNlCgluYW1lZF9zZWN0aW9uIHByb3Blcmx5LgoJKGluX3VubGlrZWx5X3RleHRfc2VjdGlvbik6IE1vZGlmeSB0byB3b3JrIGNvcnJlY3RseSB3aXRoCgluYW1lZF9zZWN0aW9uIGFuZCB0byB1c2UgdW5saWtlbHlfdGV4dF9zZWN0aW9uX25hbWUuCgkobmFtZWRfc2VjdGlvbik6IEFkZCBjb2RlIHRvIHdvcmsgcHJvcGVybHkgd2l0aCBjb2xkIHNlY3Rpb24uCgkoZnVuY3Rpb25fc2VjdGlvbik6IENsZWFuIHVwIGlmLXN0YXRlbWVudC4KCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fYXNtX25hbWVkX3NlY3Rpb24pOiBSZXR1cm4gdG8gb3JpZ2luYWwKCWNvZGUsIHJlbW92aW5nIHVzZSBvZiBTRUNUSU9OX0ZPUk1BVF9TVFJJTkcuCgkqIGNvbmZpZy9hcm0vcGUuaCAoc3dpdGNoX3RvX3NlY3Rpb24pOiBBZGQgY2FzZSBmb3IKCWluX3VubGlrZWx5X2V4ZWN1dGVkX3RleHQgdG8gc3dpdGNoIHN0YXRlbWVudC4KCSogY29uZmlnL2kzODYvY3lnbWluZy5oIChzd2l0Y2hfdG9fc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoTk9STUFMX1RFWFRfU0VDVElPTl9OQU1FKTogUmVtb3ZlLgoJKFNFQ1RJT05fRk9STUFUX1NUUklORyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuaCAoc3dpdGNoX3RvX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoTk9STUFMX1RFWFRfU0VDVElPTl9OQU1FKTogUmVtb3ZlLgoJKFNFQ1RJT05fRk9STUFUX1NUUklORyk6IFJlbW92ZS4KCjIwMDQtMDgtMTggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChGSVhFRF9SRUdJU1RFUlMpOiBVcGRhdGUgZW5jb2RpbmcgdG8gYmUKCS1mZml4ZWQtcmVnIHNhZmUsIGJ5IHByZXNlcnZpbmcgdGhlIG1lYW5pbmdzIG9mIHplcm8gYW5kIG9uZS4KCShDQUxMX1VTRURfUkVHSVNURVJTKTogTGlrZXdpc2UuCgkoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBVcGRhdGUgdG8gcHJvY2VzcyBuZXcgZW5jb2RpbmdzLgoKMjAwNC0wOC0xOCAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvc2guYyAoc3BsaXRfYnJhbmNoZXMpOiBDaGVjayB0aGUgcmVzdWx0IG9mCgluZXh0X2FjdGl2ZV9pbnNuLgoJKHNoX291dHB1dF9taV90aHVuayk6IENhbGwgaW5pdF9mbG93IGlmIGJhc2ljX2Jsb2NrX2luZm8gaXMgbnVsbC4KCUNhbGwgcnRsX3JlZ2lzdGVyX2NmZ19ob29rcy4KCjIwMDQtMDgtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBydGwuaCAoTUVNX1JFQURPTkxZX1ApOiBSZXBsYWNlIFJUWF9VTkNIQU5HSU5HX1AuCgkqIGFsaWFzLmMgKHRydWVfZGVwZW5kZW5jZSk6IFVwZGF0ZSB0byBtYXRjaCBuZXcgc2VtYW50aWNzLgoJKGNhbm9uX3RydWVfZGVwZW5kZW5jZSwgd3JpdGVfZGVwZW5kZW5jZV9wKTogTGlrZXdpc2UuCgkoYW50aV9kZXBlbmRlbmNlLCBvdXRwdXRfZGVwZW5kZW5jZSk6IFVwZGF0ZSB3cml0ZV9kZXBlbmRlbmNlX3AgYXJncy4KCSh1bmNoYW5naW5nX2FudGlfZGVwZW5kZW5jZSk6IFJlbW92ZS4KCSogY2FsbHMuYyAocHVyZ2VfbWVtX3VuY2hhbmdpbmdfZmxhZyk6IFJlbW92ZS4KCShmaXh1cF90YWlsX2NhbGxzKTogRG9uJ3QgY2FsbCBpdC4KCShleHBhbmRfY2FsbCk6IERvbid0IGFkZCB1bmNoYW5naW5nIG1lbW9yeSB0byBmdW5jdGlvbiB1c2FnZS4KCSogZXhwci5jIChlbWl0X2Jsb2NrX21vdmVfdmlhX2xpYmNhbGwpOiBMaWtld2lzZS4KCShjbGVhcl9zdG9yYWdlX3ZpYV9saWJjYWxsKTogRG9uJ3QgY2xvYmJlciBSVFhfVU5DSEFOR0lOR19QIG1lbXMuCgkoZ2V0X3N1YnRhcmdldCk6IERvbid0IHVzZSBSVFhfVU5DSEFOR0lOR19QLgoJKGV4cGFuZF9hc3NpZ25tZW50LCBzdG9yZV9jb25zdHJ1Y3RvciwgZXhwYW5kX2V4cHJfcmVhbF8xKTogTGlrZXdpc2UuCgkoZG9fdGFibGVqdW1wKTogU2V0IE1FTV9SRUFET05MWV9QLCBub3QgUlRYX1VOQ0hBTkdJTkdfUC4KCSogY29tYmluZS5jIChnZXRfbGFzdF92YWx1ZV92YWxpZGF0ZSk6IFVzZSBNRU1fUkVBRE9OTFlfUC4KCSogY3NlLmMgKGluc2VydCk6IERvbid0IHVzZSBSVFhfVU5DSEFOR0lOR19QLgoJKGNzZV9pbnNuLCBjYW5vbl9oYXNoKTogVXNlIE1FTV9SRUFET05MWV9QLgoJKiBlbWl0LXJ0bC5jIChzZXRfbWVtX2F0dHJpYnV0ZXNfbWludXNfYml0cG9zKTogVXNlIE1FTV9SRUFET05MWV9QCglpbnN0ZWFkIG9mIFJUWF9VTkNIQU5HSU5HX1AuCgkqIGV4cGxvdy5jIChtYXliZV9zZXRfdW5jaGFuZ2luZyk6IFJlbW92ZS4KCSogZXhwci5oIChtYXliZV9zZXRfdW5jaGFuZ2luZyk6IFJlbW92ZS4KCSogZmxvdy5jIChpbnNuX2RlYWRfcCwgbWFya191c2VkX3JlZ3MpOiBVc2UgYW50aV9kZXBlbmRlbmNlLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fc3RhY2tfdGVtcF9mb3JfdHlwZSk6IERvbid0IHVzZSBSVFhfVU5DSEFOR0lOR19QLgoJKGFzc2lnbl9wYXJtX3NldHVwX3JlZywgZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChjb3B5X3J0eF9hbmRfc3Vic3RpdHV0ZSk6IExpa2V3aXNlLgoJKiByYS1yZXdyaXRlLmMgKGVtaXRfY29sb3JzKTogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYyAoY29weV9zcmNfdG9fZGVzdCwgcmVnbW92ZV9vcHRpbWl6ZSk6IExpa2V3aXNlLgoJKGZpeHVwX21hdGNoXzEpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChyZWxvYWQsIGFsdGVyX3JlZyk6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jICh2YWxpZGF0ZV9lcXVpdl9tZW0pOiBDaGVjayBNRU1fUkVBRE9OTFlfUCwKCW5vdCBSVFhfVU5DSEFOR0lOR19QLgoJKGVxdWl2X2luaXRfdmFyaWVzX3ApOiBMaWtld2lzZS4KCSogbG9vcC1pbnZhcmlhbnQuYyAoY2hlY2tfbWF5YmVfaW52YXJpYW50KTogTGlrZXdpc2UuCgkqIHJlc291cmNlLmMgKG1hcmtfcmVmZXJlbmNlZF9yZXNvdXJjZXMsIG1hcmtfc2V0X3Jlc291cmNlcyk6IExpa2V3aXNlLgoJKiBsb29wLmMgKG5vdGVfYWRkcl9zdG9yZWQpOiBMaWtld2lzZS4KCShwcmVzY2FuX2xvb3ApOiBMaWtld2lzZS4gRG9uJ3QgY2hlY2sgZnVuY3Rpb24gdXNhZ2UgZm9yIGNsb2JiZXJlZAoJdW5jaGFuZ2luZyBtZW1vcnkuCgkqIHJ0bGFuYWwuYyAocnR4X3Vuc3RhYmxlX3ApOiBDaGVjayBNRU1fUkVBRE9OTFlfUCwKCW5vdCBSVFhfVU5DSEFOR0lOR19QLgoJKHJ0eF92YXJpZXNfcCwgbW9kaWZpZWRfYmV0d2Vlbl9wLCBtb2RpZmllZF9pbl9wKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jIChmb3JjZV9jb25zdF9tZW0pOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IERvbid0IHNldCBSVFhfVU5DSEFOR0lOR19QLgoJKiB3ZWIuYyAoZW50cnlfcmVnaXN0ZXIpOiBMaWtld2lzZS4KCSogdHJlZS1naW1wbGUuaCAoZ2V0X2Jhc2VfYWRkcmVzcyk6IE1vdmUgZGVjbCAuLi4KCSogdHJlZS5oOiAuLi4gaGVyZS4KCSogZG9jL3J0bC50ZXhpIChNRU1fUkVBRE9OTFlfUCk6IFJlcGxhY2UgUlRYX1VOQ0hBTkdJTkdfUC4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9zZXRfbWVtZmxhZ3NfMSk6IFJld3JpdGUgdG8gYmUKCWNhbGxlZCB2aWEgZm9yX2VhY2hfcnR4LiAgQ29weSBNRU1fU0NBTEFSX1AsIE1FTV9OT1RSQVBfUCB0b28uCgkoYWxwaGFfc2V0X21lbWZsYWdzKTogVXBkYXRlIHRvIG1hdGNoLgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19pbmRpcmVjdF9kYXRhX3JlZmVyZW5jZSk6IFNldAoJTUVNX1JFQURPTkxZX1AgaW5zdGVhZCBvZiBSVFhfVU5DSEFOR0lOR19QLgoJKG1hY2hvcGljX2luZGlyZWN0X2NhbGxfdGFyZ2V0KTogTGlrZXdpc2UuCgkobWFjaG9waWNfbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzLCBhcm1fZ2VuX2xvYWRfbXVsdGlwbGUsCglhcm1fZ2VuX3N0b3JlX211bHRpcGxlLCBhcm1fZ2VuX21vdm1lbXFpKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChsb2FkX211bHRpcGxlLCBzdG9yZV9tdWx0aXBsZSk6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5tZCAoc3ltR09UMnJlZyk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MsCglsZWdpdGltaXplX3Rsc19hZGRyZXNzLCBpeDg2X3NwbGl0X3RvX3BhcnRzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfdGxzX2FkZHJlc3MpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobG9hZF9mcHRyKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAobTMycl9sZWdpdGltaXplX3BpY19hZGRyZXNzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYyAoYmxvY2tfbW92ZV9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChzeW1HT1QycmVnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9sZWdpdGltaXplX3Rsc19hZGRyZXNzKTogTGlrZXdpc2UuCgkocnM2MDAwX2VtaXRfbW92ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBMaWtld2lzZS4KCShsZWdpdGltaXplX3Rsc19hZGRyZXNzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKGNhc2VzaSk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYyAocHJlcGFyZV9tb3ZlX29wZXJhbmRzLCBzaF9yZW9yZyk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2gubWQgKHN5bUdPVDJyZWcpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBMaWtld2lzZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5tZCAoY2FzZXNpKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGdlbl90aHJlYWRfcG9pbnRlcik6IERvbid0IHNldCBSVFhfVU5DSEFOR0lOR19QLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5jIChzYXZlX3Jlc3RvcmVfaW5zbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3Jlc3RvcmVfZ3ApOiBMaWtld2lzZS4KCShtaXBzX3NhdmVfcmVzdG9yZV9yZWcsIG1pcHMxNl9ncF9wc2V1ZG9fcmVnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9yZW9yZyk6IExpa2V3aXNlLgoKMjAwNC0wOC0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfZGVjbCk6IEFkZCBnaW1wbGVfZm9ybWFsX3RlbXAuCgkoREVDTF9HSU1QTEVfRk9STUFMX1RFTVBfUCk6IE5ldy4KCSogZ2ltcGxpZnkuYyAocG9wX2dpbXBsaWZ5X2NvbnRleHQpOiBDbGVhciBpdC4KCShsb29rdXBfdG1wX3Zhcik6IFNldCBpdCwgaWYgaXNfZm9ybWFsLgoJKGdpbXBsaWZ5X2luaXRfY29uc3RydWN0b3IpOiBVc2UgcmhzX3ByZWRpY2F0ZV9mb3IgZm9yIENPTVBMRVguCglVc2UgaXNfZ2ltcGxlX3ZhbCBmb3IgVkVDVE9SLiAgU2ltcGxpZnkgcmV0dXJuIHZhbHVlLgoJKGdpbXBsaWZ5X3NhdmVfZXhwcik6IFVzZSBhbmQgc2V0IERFQ0xfR0lNUExFX0ZPUk1BTF9URU1QX1AuCgkoZ2ltcGxpZnlfZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLWdpbXBsZS5jIChpc19naW1wbGVfZm9ybWFsX3RtcF9yaHMpOiBSZW5hbWUgZnJvbQoJaXNfZ2ltcGxlX3RtcF9yaHMgZm9yIGNsYXJpdHkuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkoaXNfZ2ltcGxlX3JlZ19yaHMpOiBTaW1wbGlmeSBsb2dpYy4KCShpc19naW1wbGVfZm9ybWFsX3RtcF92YXIpOiBSZW5hbWUgZnJvbSBpc19naW1wbGVfdG1wX3ZhciBmb3IKCWNsYXJpdHk7IHVzZSBERUNMX0dJTVBMRV9GT1JNQUxfVEVNUF9QLgoJKGlzX2dpbXBsZV9mb3JtYWxfdG1wX3JlZyk6IFNpbWlsYXJseS4KCSogdHJlZS1naW1wbGUuaDogVXBkYXRlIGRlY2xzLgoJKiB0cmVlLXNzYS1jb3B5cmVuYW1lLmMgKGNvcHlfcmVuYW1lX3BhcnRpdGlvbl9jb2FsZXNjZSk6IFVzZQoJREVDTF9JR05PUkVEX1AsIG5vdCBERUNMX0FSVElGSUNJQUwuICBUaWR5IGZvcm1hdHRpbmcuCgkqIHRyZWUtc3NhLWxpdmUuYyAodmFyX3VuaW9uLCB0eXBlX3Zhcl9pbml0KTogTGlrZXdpc2UuCgoyMDA0LTA4LTE4ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogYzR4LmMgKGxlZ2l0aW1pemVfb3BlcmFuZHMpOiBSZW1vdmUgY2FsbHMgdG8KCXByZXNlcnZlX3N1YmV4cHJlc3Npb25zX3AuCgoyMDA0LTA4LTE4ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiB2YXJhc20uYyAoTUFYX09GSUxFX0FMSUdOTUVOVCk6IE1vdmUgLi4uCgkqIGRlZmF1bHRzLmggKE1BWF9PRklMRV9BTElHTk1FTlQpOiAuLi4gaGVyZS4KCjIwMDQtMDgtMTggIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIGdjYy5jIChkZWZhdWx0X2NvbXBpbGVycyk6IEFkZCBpbmZvIGFib3V0ICIubW0iLCAiLk0iIGFuZCAiLm1paSIKCU9iamVjdGl2ZS1DKysgZXh0ZW5zaW9ucy4KCSogZ2VuZ3R5cGUuYyAoZ2V0X2ZpbGVfYmFzZW5hbWUpOiBNYXRjaCBlbnRpcmUgc3ViZGlyZWN0b3J5IG5hbWUKCSgnY3AnLCAnb2JqYycsICdvYmpjcCcpIHJhdGhlciB0aGFuIGp1c3QgaXRzIHN1ZmZpeC4KCShnZXRfYmFzZV9maWxlX2JpdG1hcCk6IEFsbG93IGZvciBmaWxlcyB0byBiZWxvbmcgdG8gbW9yZSB0aGFuIG9uZQoJbGFuZ3VhZ2UuCgkoZ2V0X291dHB1dF9maWxlX3dpdGhfdmlzaWJpbGl0eSk6IFRyZWF0IG9iamMvb2JqYy1hY3QuaCBhcyBhIGhlYWRlcgoJdXNlZCBieSBtb3JlIHRoYW4gb25lIGZyb250LWVuZC4KCjIwMDQtMDgtMTggIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChhZGRzaTMsIHN1YnNpMywgYW5kc2kzLCBpb3JzaTMsIG1vdnNpLCBtb3ZoaSk6IFJld29yayB0bwoJYXZvaWQgdXNlIG9mIHByZXNlcnZlX3N1YmV4cHJlc3Npb25zX3AuCgoyMDA0LTA4LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIDE3MDUxCgkqIHRyZWUtc3JhLmMgKHNjYWxhcml6ZV91c2UpOiBNYXJrIGFsbCB2X2RlZnMgZm9yICFpc19vdXRwdXQgdG9vLgoKMjAwNC0wOC0xNyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IG5ldyB4c3Rvcm15MTYgYXR0cmlidXRlLgoKCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKHhzdG9ybXkxNl9zcGxpdHRhYmxlX2JlbG93MTAwX29wZXJhbmQpOiBOZXcuCgkoeHN0b3JteTE2X3NwbGl0dGFibGVfYmVsb3cxMDBfb3JfcmVnaXN0ZXIpOiBOZXcuCgkoY29tYmluZV9ibnApOiBOZXcuCgkoeHN0b3JteTE2X3Jlb3JnKTogTmV3LgoJKFRBUkdFVF9NQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IERlZmluZS4KCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5tZCAobW92cWlfaW50ZXJuYWwpOiBNYWtlIG5hbWUgcHVibGljLgoJKG1vdmhpX2ludGVybmFsKTogTGlrZXdpc2UuCgkoY2JocmFuY2hoaSk6IExpa2V3aXNlLgoJKGNiaHJhbmNoaGlfbmVnKTogTGlrZXdpc2UuCgkoYW5kaGkzKTogT25seSBhbGxvdyBzcGxpdHRhYmxlIGJlbG93MTAwIG9wZXJhbmRzLgoJKGlvcmhpMyk6IExpa2V3aXNlLgoJKHBlZXBob2xlMik6IE5ldyBhbmQvemVyb19leHRlbmQtPmFuZCBwZWVwaG9sZS4KCShwZWVwaG9sZTIpOiBOZXcgbG9hZC9pb3Ivc2F2ZS0+c2V0MSBwZWVwaG9sZS4KCShwZWVwaG9sZTIpOiBOZXcgbG9hZC9hbmQvc2F2ZS0+Y2xyMSBwZWVwaG9sZS4KCShiY2xyeCwgYmNscngyLCBiY2xyNywgYmNscjE1KTogTmV3LgoJKGJzZXR4LCBic2V0eDIsIGJzZXQ3LCBic2V0MTUpOiBOZXcuCgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X3ByaW50X29wZXJhbmQpOiBCZSBtb3JlCglsaWJlcmFsIGFib3V0IGFjY2VwdGFibGUgJ0InIG1hc2tzLgoKCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LXByb3Rvcy5oCgkoeHN0b3JteTE2X2FzbV9vdXRwdXRfYWxpZ25lZF9jb21tb24sIHhzdG9ybXkxNl9iZWxvdzEwMF9zeW1ib2wsCgl4c3Rvcm15MTZfYmVsb3cxMDBfb3BlcmFuZCwgeHN0b3JteTE2X2JlbG93MTAwX29yX3JlZ2lzdGVyLAoJeHN0b3JteTE2X29uZWJpdF9zZXRfb3BlcmFuZCwgeHN0b3JteTE2X29uZWJpdF9jbHJfb3BlcmFuZCk6IE5ldy4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgbmV3IHByZWRpY2F0ZXMuCgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYwoJKHhzdG9ybXkxNl9hc21fb3V0cHV0X2FsaWduZWRfY29tbW9uLCB4c3Rvcm15MTZfYmVsb3cxMDBfc3ltYm9sLAoJeHN0b3JteTE2X2JlbG93MTAwX29wZXJhbmQsIHhzdG9ybXkxNl9iZWxvdzEwMF9vcl9yZWdpc3RlciwKCXhzdG9ybXkxNl9vbmViaXRfc2V0X29wZXJhbmQsIHhzdG9ybXkxNl9vbmViaXRfY2xyX29wZXJhbmQpOiBOZXcuCgkoeHN0b3JteTE2X2V4cGFuZF9pb3JxaTMsIHhzdG9ybXkxNl9leHBhbmRfYW5kcWkzKTogTmV3LgoJKHhzdG9ybXkxNl9sZWdpdGltYXRlX2FkZHJlc3NfcCk6IEFsbG93IGJlbG93MTAwIHN5bWJvbHMuCgkoeHN0b3JteTE2X2V4dHJhX2NvbnN0cmFpbnRfcCk6IEFkZCAnVycgZm9yIGJlbG93MTAwIG9wZXJhbmRzLgoJKHhzdG9ybXkxNl9leHBhbmRfbW92ZSk6IExlYXZlIGJlbG93MTAwIG9wZXJhbmRzIGFzLWlzLgoJKHhzdG9ybXkxNl9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRW5jb2RlIGJlbG93MTAwIHN5bWJvbHMuCgkoeHN0b3JteTE2X3N0cmlwX25hbWVfZW5jb2RpbmcpOiBOZXcuCgkoeHN0b3JteTE2X3ByaW50X29wZXJhbmQpOiBQcmludCAnYicgYXMgc2hpZnQgbWFzay4KCSh4c3Rvcm15MTZfYXR0cmlidXRlX3RhYmxlKTogQWRkIGJlbG93MTAwIGF0dHJpYnV0ZXMuCgkoeHN0b3JteTE2X2hhbmRsZV9iZWxvdzEwMF9hdHRyaWJ1dGUpOiBOZXcuCgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaCAoRVhUUkFfU0VDVElPTlMpOiBhZGQgaW5fYnNzMTAwLgoJKFhTVE9STVkxNl9TRUNUSU9OX0ZVTkNUSU9OKTogTmV3LgoJKEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogRGVmaW5lIHVzaW5nIHRoZSBhYm92ZS4KCShBU01fT1VUUFVUX0FMSUdORURfREVDTF9DT01NT04sIEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0xPQ0FMKTogTmV3LgoJKEFTTV9PVVRQVVRfU1lNQk9MX1JFRik6IEhhbmRsZSBlbmNvZGVkIHN5bWJvbHMuCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IERlZmluZS4KCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5tZCAobW92cWlfaW50ZXJuYWwpOiBBZGQgYmVsb3cxMDAgc3VwcG9ydC4KCShtb3ZoaV9pbnRlcm5hbCk6IEFkZCBiZWxvdzEwMCBzdXBwb3J0LgoJKGFuZGhpMyk6IEFkZCBiZWxvdzEwMCBzdXBwb3J0LgoJKGlvcmhpMyk6IEFkZCBiZWxvdzEwMCBzdXBwb3J0LgoJKGlvcnFpMywgaW9ycWkzX2ludGVybmFsLCBhbmRxaTMsIGFuZHFpM19pbnRlcm5hbCk6IE5ldy4KCjIwMDQtMDgtMTcgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoZ2VuX2NvbmRpdGlvbmFsX21vdmUpOiBVc2UgR0VUX01PREUgKG9wMCkgaW5zdGVhZAoJb2YgVk9JRG1vZGUgZm9yIGNvbXBhcmlzb24gY29kZSBtb2RlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBGb3IgY29uZGl0aW9uYWwgbW92ZSBwYXR0ZXJucywgdXNlIG1vZGUgb2YKCWZpcnN0IGNvbXBhcmUgb3BlcmFuZCBmb3IgY29tcGFyaXNvbiBtb2RlLCBpbnN0ZWFkIG9mIFZPSURtb2RlLgoKCSogY29uZmlnL21pcHMvbWlwcy5tZDogQWRkIGNhbm9uaWNhbCBubWFkZCBhbmQgbm1zdWIgcGF0dGVybnMgZm9yIGJvdGgKCW5vcm1hbCBhbmQgLWZmYXN0LW1hdGggY29kZS4KCjIwMDQtMDgtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE1ODcxCgkqIGRvYy9pbnZva2UudGV4aSAoLWZrZWVwLWlubGluZS1mdW5jdGlvbnMpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCjIwMDQtMDgtMTcgIFJvYmVydCBCb3dkaWRnZSAgPGJvd2RpZGdlQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAveC1kYXJ3aW46IEFkZCAtbWR5bmFtaWMtbm8tcGljIHRvIGdjYyBidWlsZCBmbGFncy4KCjIwMDQtMDgtMTcgIEFuZHJlYXMgVG9ibGVyICA8YS50b2JsZXJAc2Nod2Vpei5jaD4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLm1kICgqY2FsbF9ub25sb2NhbF9kYXJ3aW42NCk6IEFkZCAjZWxzZSBjbGF1c2UKCWZvciBub24gRGFyd2luIHRhcmdldHMuCgkoKmNhbGxfdmFsdWVfbm9ubG9jYWxfZGFyd2luNjQpOiBMaWtld2lzZS4KCjIwMDQtMDgtMTcgIEZhcmlib3J6IEphaGFuaWFuIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2Z1bmN0aW9uX3ZhbHVlKTogQ2hlY2sgZm9yCglhbHRpdmVjIG1vZGUgZm9yIGFsdGl2ZWMgcmV0dXJuIHJlZ2lzdGVyLgoKMjAwNC0wOC0xNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVJldmVydCAyMDA0LTA4LTE2ICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvX2luZGlyZWN0X2RhdGFfcmVmZXJlbmNlKTogQWRkIERJbW9kZSBjYXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogSW5jbHVkZSBkYXJ3aW4ubWQuCgkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBBZGQgREltb2RlIGNhc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X21vdmUpOiBBZGQgREltb2RlIGNhc2UgdG8KCURhcndpbiBiaXRzLgoKMjAwNC0wOC0xNyAgRG9yaXQgTmFpc2hsb3MgIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogdHJlZS12ZWN0b3JpemVyLmM6IE5ldyBGaWxlOiBsb29wIHZlY3Rvcml6YXRpb24gb24gU1NBZWQgR0lNUExFCgl0cmVlcy4KCSogdHJlZS12ZWN0b3JpemVyLmg6IE5ldyBGaWxlOiBTYW1lLgoJKiBNYWtlZmlsZS5pbiAodHJlZS12ZWN0b3JpemVyLmMsIHRyZWUtdmVjdG9yaXplci5oKTogQWRkIG5ldyBmaWxlcy4KCSogY29tbW9uLm9wdCAoZnRyZWUtdmVjdG9yaXplKTogTmV3IGZsYWcgdG8gZW5hYmxlIHZlY3Rvcml6YXRpb24uCgkqIHRpbWV2YXIuZGVmIChUVl9UUkVFX1ZFQ1RPUklaQVRJT04pOiBOZXcgZHVtcCBmaWxlIGZvcgoJdmVjdG9yaXphdGlvbiBwYXNzLgoJKiB0cmVlLWRhdGEtcmVmLmggKGluaXRfZGF0YV9yZWYpOiBBZGRpdGlvbmFsIGFyZ3VtZW50LgoJKGFycmF5X2Jhc2VfbmFtZV9kaWZmZXJfcCk6IE1vdmVkIHRvIHRyZWUtZGF0YS1yZWYuYy4KCSogdHJlZS1kYXRhLXJlZi5jIChhcnJheV9iYXNlX25hbWVfZGlmZmVyX3ApOiBSZXZpc2VkLgoJKGluaXRpYWxpemVfZGF0YV9kZXBlbmRlbmNlX3JlbGF0aW9uKTogQ2FsbCBhcnJheV9iYXNlX25hbWVfZGlmZmVyX3AKCXdpdGggYW4gZXh0cmEgYXJndW1lbnQuCgkoYW5hbHl6ZV9hbGxfZGF0YV9kZXBlbmRlbmNlcyk6IFNhbWUuCgkoaW5pdF9kYXRhX3JlZik6IEFkZGl0aW9uYWwgYXJndW1lbnQgaXNfcmVhZCB0byBzZXQgRFJfSVNfUkVBRC4KCSogdHJlZS1zc2EtcGhpb3B0LmMgKGVtcHR5X2Jsb2NrX3ApOiBFeHBvc2UgZm9yIHVzYWdlIG91dCBvZiB0aGlzCglmaWxlLgoJKiB0cmVlLWZsb3cuaCAodmVjdG9yaXplX2xvb3BzLCBlbXB0eV9ibG9ja19wKTogQWRkIGRlY2xhcmF0aW9uLgoJKiB0cmVlLW9wdGltaXplLmMgKHBhc3NfdmVjdG9yaXplKTogU2NoZWR1bGUgdGhlIHZlY3Rvcml6YXRpb24gcGFzcy4KCSogdHJlZS1wYXNzLmggKHRyZWVfb3B0X3Bhc3MgcGFzc192ZWN0b3JpemUpOiBEZWNsYXJlIHRoZSBuZXcKCXZlY3Rvcml6YXRpb24gcGFzcy4KCSogdHJlZS1zc2EtbG9vcC5jICh0cmVlX3NzYV9sb29wX2luaXQpOiBDYWxsIHNjZXZfaW5pdGlhbGl6ZS4KCSh0cmVlX3NzYV9sb29wX2RvbmUpOiBDYWxsIHNjZXZfZmluYWxpemUuCgkodHJlZV92ZWN0b3JpemUpOiBEZWZpbmUgdGhlIG5ldyB2ZWN0b3JpemF0aW9uIHBhc3MuCgkqIGRlZmF1bHRzLmggKFVOSVRTX1BFUl9TSU1EX1dPUkQpOiBBbGxvdyB0YXJnZXRzIHRvIHNwZWNpZnkgdGhlCglzaXplIG9mIHRoZSB2ZWN0b3IgdGhleSBzdXBwb3J0ICh1bnRpbCBzdXBwb3J0IGZvciBtdWx0aXBsZSB2ZWN0b3IKCXNpemVzIGlzIGFkZGVkIHRvIHRoZSB2ZWN0b3JpemVyKS4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChVTklUU19QRVJfU0lNRF9XT1JEKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChVTklUU19QRVJfU0lNRF9XT1JEKTogRGVmaW5lLgoJKiBpbnZva2UudGV4aSAoZmR1bXAtdHJlZS12ZWN0LCBmdHJlZS12ZWN0b3JpemUpOiBBZGQKCWRvY3VtZW50YXRpb24uCgoyMDA0LTA4LTE3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogb2JqYy9vYmpjLWFjdC5jIChidWlsZF9wcm90b2NvbF9pbml0aWFsaXplcik6IEZpeCBidWlsZF9pbnRfY3N0Cgl1c2FnZS4KCShnZW5lcmF0ZV9wcm90b2NvbF9saXN0LCBoYW5kbGVfaW1wZW50KTogTGlrZXdpc2UuCgoyMDA0LTA4LTE3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHJlZ2NsYXNzLmMgKGluaXRfcmVnX3NldHNfMSk6IEFkZCBFTkFCTEVfQ0hFQ0tJTkcgc2FuaXR5IHRlc3RzIHRvCgllbnN1cmUgdGhhdCBjYWxsX3VzZWRfcmVncyBpcyBhIHN1cGVyc2V0IG9mIGJvdGggZml4ZWRfcmVncyBhbmQKCWNhbGxfcmVhbGx5X3VzZWRfcmVncy4KCjIwMDQtMDgtMTcgIERhbmllbCBCb3Juc3RlaW4gIDxkYW5mdXp6QG1pbGsuY29tPgoKCVBSIHRhcmdldC8xNzAxOQoJKiBhcm0ubWQgKGFkZHNpM19jYnJhbmNoX3NjcmF0Y2gpOiBDb3JyZWN0IGNhc2UgbGFiZWxzLgoKMjAwNC0wOC0xNyAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiBtaWRkbGUtZW5kLzE3MDM2CgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IENoZWNrIGZvciBpbnRlZ2VyIG9wZXJhbmQgd2hlbgoJZm9sZGluZyAoQSA+PiBOKSAmIDEgPyAoMSA8PCBOKSA6IDAuICBGaXggZnJvbSBBbmRyZXcKCVBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+LgoKMjAwNC0wOC0xNyAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogVHJ1c3QgdG9wbGV2ZWwncyBub3Rpb24gb2YgQklTT04vRkxFWC9NQUtFSU5GTy4KCU5vIG5lZWQgdG8gY2hlY2sgaWYgaW4gYSBjcm9zcyBjb25maWd1cmF0aW9uLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBjYWxscy5jIChwcmVjb21wdXRlX3JlZ2lzdGVyX3BhcmFtZXRlcnMpOgoJSW5saW5lIHByZXNlcnZlX3N1YmV4cHJlc3Npb25zX3AgKCkuCgkqIGV4cG1lZC5jIChleHBhbmRfbXVsdF9jb25zdCwgZW1pdF9zdG9yZV9mbGFnKTogTGlrZXdpc2UuCgkqIG9wdGFicy5jIChleHBhbmRfYmlub3AsIGV4cGFuZF90d292YWxfYmlub3AsIHByZXBhcmVfY21wX2luc24pOgoJTGlrZXdpc2UuCgkqIGV4cHIuYyAoZ2V0X3N1YnRhcmdldCk6IExpa2V3aXNlLgoJKiBydGwuaCAocHJlc2VydmVfc3ViZXhwcmVzc2lvbnNfcCk6IFJlbW92ZS4KCSogc3RtdC5jIChwcmVzZXJ2ZV9zdWJleHByZXNzaW9uc19wKTogUmVtb3ZlLgoKCSogZG9qdW1wLmMgKGRvX2p1bXApIDxDT05EX0VYUFIsIEVRX0VYUFIsIE5FX0VYUFIsCglUUlVUSF9BTkRJRl9FWFBSLCBUUlVUSF9PUklGX0VYUFIsIENPTVBPVU5EX0VYUFI+OgoJQWJvcnQgb24gZ2ltcGxpZmllZCBjYXNlcy4KCjIwMDQtMDgtMTYgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIHRyZWUuaCAoVkVDVE9SX0ZMT0FUX1RZUEVfUCk6IE5ldy4KCShGTE9BVF9UWVBFX1ApOiBVc2UgaXQuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IEFmdGVyIGNvbnZlcnQgY2FsbHMsIGNoZWNrIGZvcgoJY2hlY2sgZm9yIEVSUk9SX01BUksgb3BlcmFuZHMuCgoyMDA0LTA4LTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKEJVSUxEX1BSRUZJWCwgQlVJTERfUFJFRklYXzEpOiBEZWxldGUuCgkoQlVJTERfUlRMLCBCVUlMRF9QUklOVCwgQlVJTERfRVJST1JTLCBCVUlMRF9WQVJSQVkpOiBVcGRhdGUuCgkoZ2Vub2Jqcyk6IEFkZCBidWlsZC1ydGwubywgYnVpbGQtcHJpbnQtcnRsLm8sIGJ1aWxkLXZhcnJheS5vLgoJKGdlbm9ianMgc3RhdGljIHBhdHRlcm4gcnVsZSk6IFJlbW92ZSAlLmMgZGVwZW5kZW5jeS4KCSgkKEJVSUxEX1BSRUZJWF8xKXJ0bC5vLCBwcmludC1ydGwubywgJChCVUlMRF9QUkVGSVhfMSl2YXJyYXkubyk6CglSZW5hbWUgcnVsZXM7IGRlbGV0ZSBjb21tYW5kczsgZml4IGRlcGVuZGVuY2llcy4KCShtb3N0bHljbGVhbik6IERvIG5vdCBkZWxldGUgdGVtcG9yYXJ5IHNvdXJjZSBjb3BpZXMuCgkqIGNvbmZpZ3VyZS5hYzogRGVsZXRlIGFsbCByZWZlcmVuY2VzIHRvIEJVSUxEX1BSRUZJWCBhbmQKCUJVSUxEX1BSRUZJWF8xLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBwcmludC1ydGwuYzogSW5jbHVkZSBiY29uZmlnLmggI2lmZGVmIEdFTkVSQVRPUl9GSUxFLgoJRG8gbm90IGluY2x1ZGUgdHJlZS5oLCByZWFsLmgsIGZsYWdzLmgsIGhhcmQtcmVnLXNldC5oLCBvcgoJYmFzaWMtYmxvY2suaCAjaWZkZWYgR0VORVJBVE9SX0ZJTEUuICBTdXJyb3VuZCBzb21lIG1vcmUgY29kZQoJd2l0aCAjaWZuZGVmIEdFTkVSQVRPUl9GSUxFIHNvIHRoYXQgbm90aGluZyBmcm9tIHRob3NlIGhlYWRlcnMKCWlzIHVzZWQuCgoJKiBydGwuYywgdmFycmF5LmM6IEluY2x1ZGUgYmNvbmZpZy5oICNpZmRlZiBHRU5FUkFUT1JfRklMRS4KCjIwMDQtMDgtMTYgIEFkYW0gTmVtZXQgIDxhbmVtZXRAbG54dy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTElCUyk6IE1vdmUgJChMSUJJQkVSVFkpIGFmdGVyICQoQkFOU0hFRUxJQikuCgoyMDA0LTA4LTE2ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9FSF9SRVRVUk5fRklMVEVSX01PREUpOiBSZW1vdmUKCWV4dHJhbmVvdXMgc2VtaWNvbG9uLgoKMjAwNC0wOC0xNiAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGMtY29tbW9uLmMgKGhhbmRsZV91c2VkX2F0dHJpYnV0ZSk6IFNldCBERUNMX1BSRVNFUlZFX1AuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFByaW50IERFQ0xfUFJFU0VSVkVfUC4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfQVNNX01BUktfREVDTF9QUkVTRVJWRUQpOiBOZXcgI2RlZmluZS4KCShUQVJHRVRfQVNNX09VVCk6IE5ldyBtZW1iZXIsIFRBUkdFVF9BU01fTUFSS19ERUNMX1BSRVNFUlZFRAoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBOZXcgbWVtYmVyLCBtYXJrX2RlY2xfcHJlc2VydmVkLgoJKiBob29rcy5jIChob29rX3ZvaWRfY2hhcnB0cik6IFJlbmFtZSB0byAuLi4KCShob29rX3ZvaWRfY29uc3RjaGFycHRyKTogLi4uIG5ldyBuYW1lLgoJKiBob29rcy5oIChob29rX3ZvaWRfY2hhcnB0cik6IFJlbmFtZSB0byAuLgoJKGhvb2tfdm9pZF9jb25zdGNoYXJwdHIpOiAuLi4gbmV3IG5hbWUuCgkqIHRyZWUuaCAoREVDTF9QUkVTRVJWRV9QKTogTmV3ICNkZWZpbmUuCgkoc3RydWN0IHRyZWVfZGVjbCk6IE5ldyBtZW1iZXIsIHByZXNlcnZlX2ZsYWcuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV9zdGFydF9mdW5jdGlvbik6IE1hcmsgZGVjbCBwcmVzZXJ2ZWQuCgkoYXNzZW1ibGVfdmFyaWFibGUpOiBTYW1lLgoJKiBkYXJ3aW4uYyAoZGFyd2luX21hcmtfZGVjbF9wcmVzZXJ2ZWQpOiBOZXcgZnVuY3Rpb24uCgkqIGRhcndpbi5oIChUQVJHRVRfQVNNX01BUktfREVDTF9wcmVzZXJ2ZWQpOiBOZXcgI2RlZmluZS4KCSogZGFyd2luLXByb3Rvcy5oIChkYXJ3aW5fbWFya19kZWNsX3ByZXNlcnZlZCk6IE5ldyBkZWNsLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0FTTV9NQVJLX0RFQ0xfUFJFU0VSVkVEKTogRG9jdW1lbnQuCgoyMDA0LTA4LTE2ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFsbG93IGZvciBmdW5jdGlvbiBkZWZpbml0aW9uIHdoZXJlCglpbm5lcm1vc3QgZGVjbGFyYXRvciBoYXMgYXR0cmlidXRlcy4KCjIwMDQtMDgtMTYgIEZhcmlib3J6IEphaGFuaWFuIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogZXhjZXB0LmMgKGdldF9leGNlcHRpb25fZmlsdGVyLCBidWlsZF9wb3N0X2xhbmRpbmdfcGFkcywKCWR3Ml9idWlsZF9sYW5kaW5nX3BhZHMpOiBVc2UgdGFyZ2V0LXNwZWNpZmljIG1vZGUgZm9yICdmaWx0ZXInLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9FSF9SRVRVUk5fRklMVEVSX01PREUpOiBtYWNybyBkZWZpbmVkIGFuZCB1c2VkLgoJKiB0YXJnZXQuaCAoZWhfcmV0dXJuX2ZpbHRlcl9tb2RlKTogTmV3IGZpZWxkIGFkZGVkLgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9laF9yZXR1cm5fZmlsdGVyX21vZGUpOiBEZWZpbmVkLgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9laF9yZXR1cm5fZmlsdGVyX21vZGUpOiBEZWNsYXJlZC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VoX3JldHVybl9maWx0ZXJfbW9kZSk6IERlZmluZWQuCgoyMDA0LTA4LTE2ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogUmVwbGFjZSBfR0NDX1RPUExFVl9OT05DQU5PTklDQUxfVEFSR0VUIHdpdGgKCUFDWF9OT05DQU5PTklDQUxfVEFSR0VUOyByZW1vdmUgbm93LXVubmVlZGVkIEFDX1NVQlNULgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTA4LTE2ICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgoKCUJhc2ljIHN1cHBvcnQgZm9yIDY0LWJpdCBEYXJ3aW4uCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9faW5kaXJlY3RfZGF0YV9yZWZlcmVuY2UpOiBBZGQgREltb2RlIGNhc2UuCgkobWFjaG9waWNfbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IFNpbWlsYXJseSwgcGx1cyB1c2UgUG1vZGUKCWluc3RlYWQgb2YgU0ltb2RlLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChQVFJESUZGX1RZUEUpOiBCZSAibG9uZyBpbnQiIGlmIDY0LWJpdC4KCShUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogQWRkIDY0LWJpdCBwcmVwcm9jZXNzb3IgbWFjcm8uCgkoU1VCVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tMzIgYW5kIC1tNjQgZmxhZ3MuCgkoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBSZXF1aXJlIDY0LWJpdCBwcm9jZXNzb3IgaWYgLW02NC4KCShQUk9DRVNTT1JfREVGQVVMVDY0KTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5tZDogTmV3IGZpbGUsIHBhdHRlcm5zIHNwZWNpZmljIHRvIDY0LWJpdAoJRGFyd2luLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogSW5jbHVkZSBkYXJ3aW4ubWQuCgkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBBZGQgREltb2RlIGNhc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKFRBUkdFVF9BU01fVU5BTElHTkVEX0RJX09QKTogRGVmaW5lIGZvcgoJRGFyd2luLgoJKFRBUkdFVF9BU01fQUxJR05FRF9ESV9PUCk6IERpdHRvLgoJKHJzNjAwMF9lbWl0X21vdmUpOiBBZGQgREltb2RlIGNhc2UgdG8gRGFyd2luIGJpdHMuCgkobWFjaG9waWNfb3V0cHV0X3N0dWIpOiBVc2UgLnF1YWQgaWYgNjQtYml0LgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgLW0zMiBhbmQgLW02NC4KCjIwMDQtMDgtMTYgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChBbHRpVmVjIGJ1aWx0aW5zKTogRG9jdW1lbnQgYWRkaXRpb25hbCBkaWZmZXJlbmNlcwoJZnJvbSB0aGUgTW90b3JvbGEgQWx0aVZlYyBQSU0uCgoyMDA0LTA4LTE2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy10eXBlY2suYyAoYnVpbGRfY19jYXN0KTogT25seSBjb3B5IG92ZXJmbG93IGZyb20gZXhwciBub2Rlcy4KCSogdHJlZS5oIChJU19OT05fVFlQRV9DT0RFX0NMQVNTKTogU2ltcGxpZnkuCgkoc3RydWN0IHRyZWVfY29tbW9uKTogVXBkYXRlIHB1YmxpY19mbGFnIGRvY3VtZW50YXRpb24uCgoyMDA0LTA4LTE2ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIHRyZWUtc3NhLWNvcHlyZW5hbWUuYyAoY29weV9yZW5hbWVfcGFydGl0aW9uX2NvYWxlc2NlKToKCUNoZWNrIGZvciBhcnRpZmljaWFsIHZhcmlhYmxlcywgbm90IGlzX2dpbXBsZV90bXBfdmFyLgoJKiB0cmVlLXNzYS1saXZlLmMgKHZhcl91bmlvbik6IExpa2V3aXNlLgoKMjAwNC0wOC0xNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGxzLmMgKGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IFJlbW92ZSBzcHVyaW91cyBGSVhNRSB0b2tlbi4KCjIwMDQtMDgtMTUgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIE1ha2VmaWxlLmluIChDX1BSRVRUWV9QUklOVF9IKTogQWRkIGMtcHJldHR5LXByaW50LmguCgkoYy1sYW5nLm8pOiBEZXBlbmQgb24gYy1vYmpjLWNvbW1vbi5oLgoJKGMtb2JqYy1jb21tb24ubyk6IERlcGVuZCBvbiAkKENfUFJFVFRZX1BSSU5UX0gpIGFuZAoJYy1vYmpjLWNvbW1vbi5oOyByZW1vdmUgZHVwbGljYXRlICQoQ19UUkVFX0gpIGRlcGVuZGVuY3kuCgkqIGMtbGFuZy5jOiBJbmNsdWRlIGMtb2JqYy1jb21tb24uaC4KCShMQU5HX0hPT0tTX0ZJTklTSCwgTEFOR19IT09LU19JTklUX09QVElPTlMsCglMQU5HX0hPT0tTX0lOSVRJQUxJWkVfRElBR05PU1RJQ1MsIExBTkdfSE9PS1NfSEFORExFX09QVElPTiwKCUxBTkdfSE9PS1NfTUlTU0lOR19BUkdVTUVOVCwgTEFOR19IT09LU19QT1NUX09QVElPTlMsCglMQU5HX0hPT0tTX0dFVF9BTElBU19TRVQsIExBTkdfSE9PS1NfU0FGRV9GUk9NX1AsCglMQU5HX0hPT0tTX0VYUEFORF9FWFBSLCBMQU5HX0hPT0tTX01BUktfQUREUkVTU0FCTEUsCglMQU5HX0hPT0tTX1BBUlNFX0ZJTEUsIExBTkdfSE9PS1NfVFJVVEhWQUxVRV9DT05WRVJTSU9OLAoJTEFOR19IT09LU19GSU5JU0hfSU5DT01QTEVURV9ERUNMLCBMQU5HX0hPT0tTX1VOU0FGRV9GT1JfUkVFVkFMLAoJTEFOR19IT09LU19TVEFUSUNQLCBMQU5HX0hPT0tTX1NFVF9ERUNMX0FTU0VNQkxFUl9OQU1FLAoJTEFOR19IT09LU19OT19CT0RZX0JMT0NLUywgTEFOR19IT09LU19XQVJOX1VOVVNFRF9HTE9CQUxfREVDTCwKCUxBTkdfSE9PS1NfUFJJTlRfSURFTlRJRklFUiwgTEFOR19IT09LU19GVU5DVElPTl9FTlRFUl9ORVNURUQsCglMQU5HX0hPT0tTX0ZVTkNUSU9OX0xFQVZFX05FU1RFRCwgTEFOR19IT09LU19EVVBfTEFOR19TUEVDSUZJQ19ERUNMLAoJTEFOR19IT09LU19ERUNMX1VOSU5JVCwgTEFOR19IT09LU19SVExfRVhQQU5EX1NUTVQsCglMQU5HX0hPT0tTX0NPTU1PTl9BVFRSSUJVVEVfVEFCTEUsIExBTkdfSE9PS1NfRk9STUFUX0FUVFJJQlVURV9UQUJMRSwKCUxBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19DQU5OT1RfSU5MSU5FX1RSRUVfRk4sCglMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfRElTUkVHQVJEX0lOTElORV9MSU1JVFMsCglMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfQU5PTl9BR0dSX1RZUEVfUCwKCUxBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19DT05WRVJUX1BBUk1fRk9SX0lOTElOSU5HLAoJTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0VTVElNQVRFX05VTV9JTlNOUywKCUxBTkdfSE9PS1NfVFJFRV9EVU1QX0RVTVBfVFJFRV9GTiwKCUxBTkdfSE9PS1NfQ0FMTEdSQVBIX0VYUEFORF9GVU5DVElPTiwgTEFOR19IT09LU19UWVBFX0ZPUl9NT0RFLAoJTEFOR19IT09LU19UWVBFX0ZPUl9TSVpFLCBMQU5HX0hPT0tTX1NJR05FRF9UWVBFLAoJTEFOR19IT09LU19VTlNJR05FRF9UWVBFLCBMQU5HX0hPT0tTX1NJR05FRF9PUl9VTlNJR05FRF9UWVBFLAoJTEFOR19IT09LU19JTkNPTVBMRVRFX1RZUEVfRVJST1IsIExBTkdfSE9PS1NfVFlQRV9QUk9NT1RFU19UTywKCUxBTkdfSE9PS1NfUkVHSVNURVJfQlVJTFRJTl9UWVBFLCBMQU5HX0hPT0tTX1dSSVRFX0dMT0JBTFMpOgoJTW92ZSB0byBjLW9iamMtY29tbW9uLmguCgkqIGMtb2JqYy1jb21tb24uYzogSW5jbHVkZSBjLW9iamMtY29tbW9uLmguCgkqIGMtb2JqYy1jb21tb24uaDogTmV3IGZpbGUuCgoyMDA0LTA4LTE1ICBBbmRyZWFzIFRvYmxlciAgPGEudG9ibGVyQHNjaHdlaXouY2g+CgkgICAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzE0OTMxCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLXRyYW1wLmFzbSAoTF9hYm9ydCRzdHViKTogQ2hhbmdlIHRvIG5ldyBzdHViCglzdHlsZS4KCjIwMDQtMDgtMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKGJ1aWxkX2ludF9jc3QpOiBOZXcuCgkoYnVpbGRfaW50XzIpOiBSZW1vdmUuCgkqIHRyZWUuYyAoYnVpbGRfaW50XzIpOiBSZW1vdmUuCgkoYnVpbGRfaW50X2NzdCk6IE5ldy4KCShtYWtlX3ZlY3Rvcl90eXBlLCBidWlsZF9jb21tb25fdHJlZV9ub2RlcywKCWJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBVc2UgYnVpbGRfaW50X2NzdC4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fcHJlZmV0Y2gsIGV4cGFuZF9idWlsdGluX3N0cnN0ciwKCWV4cGFuZF9idWlsdGluX3N0cnBicmssIGV4cGFuZF9idWlsdGluX2ZwdXRzLAoJYnVpbGRfc3RyaW5nX2xpdGVyYWwsIGV4cGFuZF9idWlsdGluX3ByaW50ZiwKCWV4cGFuZF9idWlsdGluX3NwcmludGYsIGZvbGRfYnVpbHRpbl9scm91bmQsIGZvbGRfYnVpbHRpbl9iaXRvcCwKCWZvbGRfYnVpbHRpbl9iaXRvcCwgZm9sZF9idWlsdGluX2lzYXNjaWksIGZvbGRfYnVpbHRpbl90b2FzY2lpLAoJZm9sZF9idWlsdGluX2lzZGlnaXQsIHNpbXBsaWZ5X2J1aWx0aW5fc3Ryc3RyLAoJc2ltcGxpZnlfYnVpbHRpbl9zdHJwYnJrLCBmb2xkX2J1aWx0aW5fZnB1dHMsCglzaW1wbGlmeV9idWlsdGluX3NwcmludGYpOiBVc2UgYnVpbGRfaW50X2NzdC4KCSogYy1jb21tb24uYyAoc3RhcnRfZm5hbWVfZGVjbHMsIGZpeF9zdHJpbmdfdHlwZSwKCWNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucywgY19pbml0X2F0dHJpYnV0ZXMsCglzaG9ydGVuX2NvbXBhcmUpOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKGNvbXBsZXRlX2FycmF5X3R5cGUsCgljaGVja19iaXRmaWVsZF90eXBlX2FuZF93aWR0aCk6IExpa2V3aXNlLgoJKiBjLWxleC5jIChpbnRlcnByZXRfaW50ZWdlciwgbGV4X2NoYXJjb25zdCk6IExpa2V3aXNlLgoJKiBjLXBhcnNlLmluIChwcmltYXJ5KTogPFRZUEVTX0NPTVBBVElCTEVfUD4gTGlrZXdpc2UuCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfaW50ZWdlcl9jb25zdGFudCk6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChyZWFsbHlfc3RhcnRfaW5jcmVtZW50YWxfaW5pdCwgcHVzaF9pbml0X2xldmVsLAoJc2V0X25vbmluY3JlbWVudGFsX2luaXRfZnJvbV9zdHJpbmcpOiBMaWtld2lzZS4KCSogY2FsbHMuYyAobG9hZF9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogTGlrZXdpc2UuCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19wb2ludGVyKTogTGlrZXdpc2UuCgkqIGNvdmVyYWdlLmMgKGNvdmVyYWdlX2NvdW50ZXJfYWxsb2MsIHRyZWVfY292ZXJhZ2VfY291bnRlcl9yZWYsCglidWlsZF9mbl9pbmZvX3R5cGUsIGJ1aWxkX2N0cl9pbmZvX3ZhbHVlLCBidWlsZF9nY292X2luZm8pOgoJTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChpbml0X2VoLCBhc3NpZ25fZmlsdGVyX3ZhbHVlcywgYXNzaWduX2ZpbHRlcl92YWx1ZXMpOgoJTGlrZXdpc2UuCgkqIGV4cG1lZC5jIChzdG9yZV9maXhlZF9iaXRfZmllbGQsIGV4dHJhY3RfYml0X2ZpZWxkLAoJZXh0cmFjdF9maXhlZF9iaXRfZmllbGQsIGV4dHJhY3Rfc3BsaXRfYml0X2ZpZWxkLCBleHBhbmRfc2hpZnQsCglleHBhbmRfbXVsdF9jb25zdCwgZXhwYW5kX211bHRfaGlnaHBhcnRfYWRqdXN0LCBleHRyYWN0X2hpZ2hfaGFsZiwKCWV4cGFuZF9zZGl2X3BvdzIsIGV4cGFuZF9kaXZtb2QsIG1ha2VfdHJlZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKGNvbnZlcnRfbW92ZSwgZW1pdF9ncm91cF9sb2FkLCBlbWl0X2dyb3VwX3N0b3JlLAoJZXhwYW5kX2Fzc2lnbm1lbnQsIHN0b3JlX2NvbnN0cnVjdG9yLCBzdG9yZV9maWVsZCwKCWV4cGFuZF9leHByX3JlYWxfMSwgcmVkdWNlX3RvX2JpdF9maWVsZF9wcmVjaXNpb24pOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChmb3JjZV9maXRfdHlwZSwgaW50X2NvbnN0X2Jpbm9wLCBmb2xkX2NvbnZlcnRfY29uc3QsCglpbnZlcnRfdHJ1dGh2YWx1ZSwgb3B0aW1pemVfYml0X2ZpZWxkX2NvbXBhcmUsCglkZWNvZGVfZmllbGRfcmVmZXJlbmNlLCBhbGxfb25lc19tYXNrX3AsIGNvbnN0YW50X2Jvb2xlYW5fbm9kZSwKCWZvbGRfZGl2X2NvbXBhcmUsIGZvbGQsIGZvbGRfcmVhZF9mcm9tX2NvbnN0YW50X3N0cmluZywKCWZvbGRfbmVnYXRlX2NvbnN0LCBmb2xkX2Fic19jb25zdCwgZm9sZF9ub3RfY29uc3QpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1fc2V0dXBfYmxvY2spOiBMaWtld2lzZS4KCSogc3RtdC5jIChzaGlmdF9yZXR1cm5fdmFsdWUsIGV4cGFuZF9lbmRfY2FzZV90eXBlLAoJZXN0aW1hdGVfY2FzZV9jb3N0cyk6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSwgaW5pdGlhbGl6ZV9zaXpldHlwZXMsCglzZXRfbWluX2FuZF9tYXhfdmFsdWVzX2Zvcl9pbnRlZ3JhbF90eXBlKTogTGlrZXdpc2UuCgkqIHRyZWUtY2hyZWMuYyAoY2hyZWNfZm9sZF9tdWx0aXBseV9wb2x5X3BvbHksCglyZXNldF9ldm9sdXRpb25faW5fbG9vcCk6IExpa2V3aXNlLgoJKiB0cmVlLWNocmVjLmggKGJ1aWxkX3BvbHlub21pYWxfY2hyZWMpOiBMaWtld2lzZS4KCSogdHJlZS1jb21wbGV4LmMgKGJ1aWxkX3JlcGxpY2F0ZWRfY29uc3QpOiBMaWtld2lzZS4KCSogdHJlZS1laC5jIChob25vcl9wcm90ZWN0X2NsZWFudXBfYWN0aW9ucywKCWxvd2VyX3RyeV9maW5hbGx5X29uZWRlc3QsIGxvd2VyX3RyeV9maW5hbGx5X2NvcHksCglsb3dlcl90cnlfZmluYWxseV9zd2l0Y2gpOiBMaWtld2lzZS4KCSogdHJlZS1tdWRmbGFwLmMgKG1mX2J1aWxkX3N0cmluZywgbXhfcmVnaXN0ZXJfZGVjbHMsCgltdWRmbGFwX3JlZ2lzdGVyX2NhbGwsIG11ZGZsYXBfZW5xdWV1ZV9jb25zdGFudCk6IExpa2V3aXNlLgoJKiB0cmVlLW5lc3RlZC5jIChnZXRfdHJhbXBvbGluZV90eXBlLCBnZXRfbmxfZ290b19maWVsZCk6IExpa2V3aXNlLgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1jY3AuYyAod2lkZW5fYml0ZmllbGQsIG1heWJlX2ZvbGRfb2Zmc2V0X3RvX2FycmF5X3JlZik6CglMaWtld2lzZS4KCSogdHJlZS1zc2EtZG9tLmMgKHNpbXBsaWZ5X3Joc19hbmRfbG9va3VwX2F2YWlsX2V4cHIpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChudW1iZXJfb2ZfaXRlcmF0aW9uc19jb25kLAoJbG9vcF9uaXRlcl9ieV9ldmFsLCB1cHBlcl9ib3VuZF9pbl90eXBlLCBsb3dlcl9ib3VuZF9pbl90eXBlKToKCUxpa2V3aXNlLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2luaXRpYWxpemVfdHJhbXBvbGluZSwKCWFscGhhX3ZhX3N0YXJ0LCBhbHBoYV9naW1wbGlmeV92YV9hcmdfMSk6IFVzZSBidWlsZF9pbnRfY3N0LgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fZ2V0X2Nvb2tpZV9zaXplKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9naW1wbGlmeV92YV9hcmdfZXhwcik6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfdmFfc3RhcnQsIGl4ODZfZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pODYwL2k4NjAuYyAoaTg2MF92YV9zdGFydCk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19idWlsZF9idWlsdGluX3ZhX2xpc3QsIG1pcHNfdmFfc3RhcnQsCgltaXBzX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5jIChocHBhX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF92YV9zdGFydCwgcnM2MDAwX2dpbXBsaWZ5X3ZhX2FyZywKCWFkZF9jb21waWxlcl9icmFuY2hfaXNsYW5kKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF92YV9zdGFydCk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYyAoc2hfdmFfc3RhcnQpOiBMaWtld2lzZS4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKHhzdG9ybXkxNl9leHBhbmRfYnVpbHRpbl92YV9zdGFydCk6CglMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoeHRlbnNhX3ZhX3N0YXJ0LAoJeHRlbnNhX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogTGlrZXdpc2UuCgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX29iamNfc3RyaW5nX29iamVjdCwKCWJ1aWxkX29iamNfc3ltdGFiX3RlbXBsYXRlLCBpbml0X2RlZl9saXN0LCBpbml0X29iamNfc3ltdGFiLAoJaW5pdF9tb2R1bGVfZGVzY3JpcHRvciwgZ2VuZXJhdGVfc3RhdGljX3JlZmVyZW5jZXMsCglidWlsZF9zZWxlY3Rvcl90cmFuc2xhdGlvbl90YWJsZSwgZ2V0X3Byb3RvX2VuY29kaW5nLAoJYnVpbGRfdHlwZWRfc2VsZWN0b3JfcmVmZXJlbmNlLCBidWlsZF9zZWxlY3Rvcl9yZWZlcmVuY2UsCglidWlsZF9uZXh0X29iamNfZXhjZXB0aW9uX3N0dWZmLAoJYnVpbGRfbWV0aG9kX3Byb3RvdHlwZV9saXN0X3RlbXBsYXRlLCBnZW5lcmF0ZV9kZXNjcmlwdG9yX3RhYmxlLAoJZ2VuZXJhdGVfcHJvdG9jb2xzLCBidWlsZF9wcm90b2NvbF9pbml0aWFsaXplciwKCWJ1aWxkX2l2YXJfbGlzdF90ZW1wbGF0ZSwgYnVpbGRfbWV0aG9kX2xpc3RfdGVtcGxhdGUsCglidWlsZF9pdmFyX2xpc3RfaW5pdGlhbGl6ZXIsIGdlbmVyYXRlX2l2YXJzX2xpc3QsCglnZW5lcmF0ZV9kaXNwYXRjaF90YWJsZSwgZ2VuZXJhdGVfcHJvdG9jb2xfbGlzdCwKCWJ1aWxkX2NhdGVnb3J5X2luaXRpYWxpemVyLCBidWlsZF9zaGFyZWRfc3RydWN0dXJlX2luaXRpYWxpemVyLAoJZ2VuZXJhdGVfc2hhcmVkX3N0cnVjdHVyZXMsIGhhbmRsZV9pbXBlbnQsCglnZW5lcmF0ZV9vYmpjX2ltYWdlX2luZm8pOiBVc2UgYnVpbGRfaW50X2NzdC4KCjIwMDQtMDgtMTUgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogdmVjLmg6IENvbW1lbnQgaW1wcm92ZW1lbnRzLgoKMjAwNC0wOC0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjLWNvbW1vbi5jIChzaG9ydGVuX2NvbXBhcmUsIHBvaW50ZXJfaW50X3N1bSwKCWNfY29tbW9uX3RydXRodmFsdWVfY29udmVyc2lvbiwgYm9vbGVhbl9pbmNyZW1lbnQpOiBSZXBsYWNlIGNhbGxzCgl0byBidWlsZCB3aXRoIGNhbGxzIHRvIGJ1aWxkTi4KCSogYy1kZWNsLmMgKGNvbXBsZXRlX2FycmF5X3R5cGUsIGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIGMtZ2ltcGxpZnkuYyAoY19idWlsZF9iaW5kX2V4cHIsIGdpbXBsaWZ5X2NfbG9vcCwKCWdpbXBsaWZ5X3N3aXRjaF9zdG10KTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGRlZmF1bHRfZnVuY3Rpb25fYXJyYXlfY29udmVyc2lvbiwKCWJ1aWxkX2NvbXBvbmVudF9yZWYsIGJ1aWxkX2FycmF5X3JlZiwgYnVpbGRfZnVuY3Rpb25fY2FsbCwKCXBvaW50ZXJfZGlmZiwgYnVpbGRfdW5hcnlfb3AsIGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIsCglidWlsZF9jb21wb3VuZF9leHByLCBidWlsZF9tb2RpZnlfZXhwciwgY19maW5pc2hfZ290b19sYWJlbCwKCWNfZmluaXNoX2dvdG9fcHRyLCBjX2ZpbmlzaF9yZXR1cm4sIGNfZmluaXNoX2xvb3AsCgljX2ZpbmlzaF9iY19zdG10LCBjX2ZpbmlzaF9zdG10X2V4cHIsIGNfZW5kX2NvbXBvdW5kX3N0bXQsCglidWlsZF9iaW5hcnlfb3ApOiBMaWtld2lzZS4KCjIwMDQtMDgtMTUgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHJ0bC5jIChub3RlX2luc25fbmFtZSk6IEFkZCBOT1RFX0RJU0FCTEVfU0NIRURfT0ZfQkxPQ0suCgoyMDA0LTA4LTE0ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc3RkaW9fdmFfbGlzdCk6IEFsc28gZml4IGNvbV9lcnIuaCwgY3BzLmgsCgljdXJzZXMuaCwga3JiNS5oLCBsY19jb3JlLmgsIHBmbXQuaCwgd2NoYXIuaCBhbmQgY3Vyc2VzX2NvbHIvY3Vyc2VzLmguCgkqIGZpeGluYy9maXhpbmNsLng6IFJlYnVpbHQuCgoyMDA0LTA4LTE0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX3N5bWJvbGljX2NvbnN0YW50X3ApCgkobWlwc19hdG9taWNfc3ltYm9saWNfY29uc3RhbnRfcCwgbWlwc19zdGFja19hZGRyZXNzX3ApCgkobWlwc19zbWFsbF9kYXRhX3BhdHRlcm5fcCk6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQ09OU1RfR1BfUCk6IE1vdmVkIGZyb20gbWlwcy5jLgoJKFBSRURJQ0FURV9DT0RFUywgU1BFQ0lBTF9NT0RFX1BSRURJQ0FURVMpOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zeW1ib2xpY19jb25zdGFudF9wKTogTWFrZSBnbG9iYWwuCgkobWlwc19hdG9taWNfc3ltYm9saWNfY29uc3RhbnRfcCwgbWlwc19zdGFja19hZGRyZXNzX3ApOiBOZXcgZnVuY3Rpb25zLgoJKHVuc19hcml0aF9vcGVyYW5kLCBjb25zdF9hcml0aF9vcGVyYW5kLCBhcml0aF9vcGVyYW5kLCBzbGVfb3BlcmFuZCkKCShzbGV1X29wZXJhbmQsIHNtYWxsX2ludCwgcmVnX29yXzBfb3BlcmFuZCwgY29uc3RfZmxvYXRfMV9vcGVyYW5kKQoJKHJlZ19vcl9jb25zdF9mbG9hdF8xX29wZXJhbmQsIGhpbG9fb3BlcmFuZCwgZXh0ZW5kX29wZXJhdG9yKQoJKG1hY2NfbXNhY19vcGVyYW5kLCBlcXVhbGl0eV9vcCwgY21wX29wLCB0cmFwX2NtcF9vcCkKCShwY19vcl9sYWJlbF9vcGVyYW5kLCBjYWxsX2luc25fb3BlcmFuZCwgbW92ZV9vcGVyYW5kKQoJKGNvbnN0dGFibGVfb3BlcmFuZCwgc3ltYm9saWNfb3BlcmFuZCwgZ2VuZXJhbF9zeW1ib2xpY19vcGVyYW5kKQoJKGdsb2JhbF9nb3Rfb3BlcmFuZCwgbG9jYWxfZ290X29wZXJhbmQsIHN0YWNrX29wZXJhbmQpCgkoZnBfcmVnaXN0ZXJfb3BlcmFuZCwgbG9fb3BlcmFuZCwgZmNjX3JlZ2lzdGVyX29wZXJhbmQpOiBEZWxldGUuCgkobWlwc19zbWFsbF9kYXRhX3BhdHRlcm5fMSk6IFJlbmFtZWQgZnJvbSBzbWFsbF9kYXRhX3BhdHRlcm5fMS4KCShtaXBzX3NtYWxsX2RhdGFfcGF0dGVybl9wKTogUmVwbGFjZSBwcmV2aW91cyBzbWFsbF9kYXRhX3BhdHRlcm4KCXByZWRpY2F0ZS4gIFR1cm4gaW50byBhIGJvb2wgKCkgKHJ0eCkgZnVuY3Rpb24uCgkqIGNvbmZpZy9taXBzL3ByZWRpY2F0ZXMubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBJbmNsdWRlIGl0LiAgVXNlIHRoZSB0YXJnZXQtaW5kZXBlbmRlbnQKCWNvbXBhcmlzb25fb3BlcmF0b3IgaW5zdGVhZCBvZiBjbXBfb3AuICBSZW5hbWUgdHJhcF9jbXBfb3AgdG8KCXRyYXBfY29tcGFyaXNvbl9vcGVyYXRvciBhbmQgZXF1YWxpdHlfb3AgdG8gZXF1YWxpdHlfb3BlcmF0b3IuCglSZXBsYWNlIHVzZXMgb2Ygc21hbGxfaW50IHdpdGggdGhlIGVxdWl2YWxlbnQgY29uc3RfYXJpdGhfb3BlcmFuZC4KCVJlbmFtZSByZWdfb3JfY29uc3RfZmxvYXRfMV9vcGVyYW5kIHRvIHJlZ19vcl8xX29wZXJhbmQuICBSZW5hbWUKCWNvbnN0X2Zsb2F0XzFfb3BlcmFuZCB0byBjb25zdF8xX29wZXJhbmQuICBSZW5hbWUgZmNjX3JlZ2lzdGVyX29wZXJhbmQKCXRvIGZjY19yZWxvYWRfb3BlcmFuZC4KCSogY29uZmlnL21pcHMvc2IxLm1kOiBSZW5hbWUgZnBfcmVnaXN0ZXJfb3BlcmFuZCB0byBmcHJfb3BlcmFuZC4KCjIwMDQtMDgtMTQgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgbGlic3RkYysrLzE3MDA1IHBhcnRpYWwgZml4LgoJKiBwYS1ocHV4MTEuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZSBfSU5DTFVERV9fU1REQ19BMV9TT1VSQ0UKCWV4Y2VwdCB3aGVuIGdlbmVyYXRpbmcgQU5TSS9DODkgY29kZS4KCjIwMDQtMDgtMTQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChzaG9ydGVuX2NvbXBhcmUpOiBVc2UgZm9yY2VfZml0X3R5cGUgZGlyZWN0bHkuCgoyMDA0LTA4LTE0ICBHZXJhbGQgUGZlaWZlciAgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCSAgICBEaW1pdHJpIFBhcGFkb3BvdWxvcy1PcmZhbm9zICA8cGFwYWRvcG9Ac2hmai5jZWEuZnI+CgkgICAgRGF2ZSBLb3JuICA8ZGtAYXJ0aW1pLmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKEJ1aWxkaW5nKTogQXZvaWQgZHVwbGljYXRlIHJlZmVyZW5jZSB0byBHTlUKCW1ha2UgcmVxdWlyZW1lbnQuCgkoKi0qLXNvbGFyaXMyKik6IERvIG5vdCByZWNvbW1lbmQgR05VIG1ha2UgYW55IGxvbmdlci4gIFNpbXBsaWZ5LgoKMjAwNC0wOC0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChQUk9NT1RFX01PREUpOiBEb24ndCBwcm9tb3RlIHZlY3RvciB0eXBlcy4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGZ1bmN0aW9uX3ZhbHVlKTogVXNlIFBST01PVEVfTU9ERS4KCjIwMDQtMDgtMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChjYWxsXzEsIHNpYmNhbGxfMSwgY2FsbF8xX3JleDY0KTogVXNlIFBtb2RlCglmb3IgY29uc3RhbnRfY2FsbF9hZGRyZXNzX29wZXJhbmQuCgkoY2FsbF92YWx1ZV9wb3BfMSwgY2FsbF92YWx1ZV8xKTogTGlrZXdpc2UuCgkoc2liY2FsbF92YWx1ZV8xLCBjYWxsX3ZhbHVlXzFfcmV4NjQpOiBMaWtld2lzZS4KCjIwMDQtMDgtMTMgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGNvbmZpZy9taXBzL3NiMS5tZCAoaXJfc2IxX2RpdmRmXzJwaXBlcywgaXJfc2IxX2RpdmRmXzFwaXBlKToKCUNvcnJlY3QgbW9kZSBmcm9tIFNGbW9kZSB0byBERm1vZGUuCgoyMDA0LTA4LTEzICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmggKEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogTWFyayB0aGUgX19zZWxfZml4dXAsCglfX2NzdHJpbmdfb2JqZWN0IGFuZCBfX2ltYWdlX2luZm8gc2VjdGlvbnMgd2l0aCB0aGUgbm9fZGVhZF9zdHJpcAoJYXR0cmlidXRlLgoKMjAwNC0wOC0xMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgRGF2aWQgQmlsbGluZ2h1cnN0ICA8RGF2aWQuQmlsbGluZ2h1cnN0QHJpb3RpbnRvLmNvbT4KCglQUiBsaWJnZm9ydHJhbi8xNTkzMAoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChpcml4X19fZ2VuZXJpYzEsIGlyaXhfX19nZW5lcmljMik6IE5ldy4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogZml4aW5jL3Rlc3RzL2Jhc2UvaW50ZXJuYWwvbWF0aF9jb3JlLmg6IE5ldyBmaWxlLgoKMjAwNC0wOC0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRieG91dC5jIChOT19EQlhfRlVOQ1RJT05fRU5EKTogRGVmYXVsdCB0byB6ZXJvLgoJKGRieG91dF9mdW5jdGlvbl9lbmQpOiBSZW1vdmUgaWZkZWZzIGZvciBpdC4KCShkYnhvdXRfYmVnaW5fcHJvbG9ndWUpOiBQcm90ZWN0IE5fQk5TWU0gd2l0aCBpdCwgYW5kIGdkYiBleHRlbnNpb25zLgoKMjAwNC0wOC0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChpbnNuLXByZWRzLm8pOiBEZXBlbmQgb24gVFJFRV9ILgoJKiBnZW5wcmVkcy5jICh3cml0ZV9pbnNuX3ByZWRzX2MpOiBJbmNsdWRlIHRyZWUuaC4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKHJlZ19vcl8wX29wZXJhbmQsIHJlZ19vcl82Yml0X29wZXJhbmQsCglyZWdfb3JfOGJpdF9vcGVyYW5kLCBjaW50OF9vcGVyYW5kLCBhZGRfb3BlcmFuZCwgc2V4dF9hZGRfb3BlcmFuZCwKCWNvbnN0NDhfb3BlcmFuZCwgYW5kX29wZXJhbmQsIG9yX29wZXJhbmQsIG1vZGVfd2lkdGhfb3BlcmFuZCwKCW1vZGVfbWFza19vcGVyYW5kLCBtdWw4X29wZXJhbmQsIGNvbnN0MF9vcGVyYW5kLAoJaGFyZF9mcF9yZWdpc3Rlcl9vcGVyYW5kLCBoYXJkX2ludF9yZWdpc3Rlcl9vcGVyYW5kLAoJcmVnX29yX2NpbnRfb3BlcmFuZCwgc29tZV9vcGVyYW5kLCBzb21lX25pX29wZXJhbmQsIGlucHV0X29wZXJhbmQsCglzYW1lZ3BfZnVuY3Rpb25fb3BlcmFuZCwgZGlyZWN0X2NhbGxfb3BlcmFuZCwgc21hbGxfc3ltYm9saWNfb3BlcmFuZCwKCWdsb2JhbF9zeW1ib2xpY19vcGVyYW5kLCBjYWxsX29wZXJhbmQsIHN5bWJvbGljX29wZXJhbmQsCglkdHAxNl9zeW1ib2xpY19vcGVyYW5kLCBkdHAzMl9zeW1ib2xpY19vcGVyYW5kLAoJZ290ZHRwX3N5bWJvbGljX29wZXJhbmQsIHRwMTZfc3ltYm9saWNfb3BlcmFuZCwgdHAzMl9zeW1ib2xpY19vcGVyYW5kLAoJZ290dHBfc3ltYm9saWNfb3BlcmFuZCwgYWxwaGFfY29tcGFyaXNvbl9vcGVyYXRvciwKCWFscGhhX3plcm9fY29tcGFyaXNvbl9vcGVyYXRvciwgYWxwaGFfc3dhcHBlZF9jb21wYXJpc29uX29wZXJhdG9yLAoJc2lnbmVkX2NvbXBhcmlzb25fb3BlcmF0b3IsIGFscGhhX2ZwX2NvbXBhcmlzb25fb3BlcmF0b3IsCglkaXZtb2Rfb3BlcmF0b3IsIGZpeF9vcGVyYXRvciwgYWxpZ25lZF9tZW1vcnlfb3BlcmFuZCwKCXVuYWxpZ25lZF9tZW1vcnlfb3BlcmFuZCwgcmVnX29yX3VuYWxpZ25lZF9tZW1fb3BlcmFuZCwKCWFueV9tZW1vcnlfb3BlcmFuZCwgcmVnX25vdF9lbGltX29wZXJhbmQsIG5vcm1hbF9tZW1vcnlfb3BlcmFuZCwKCXJlZ19ub19zdWJyZWdfb3BlcmFuZCwgYWRkaXRpb25fb3BlcmF0aW9uKTogTW92ZSB0byBwcmVkaWNhdGVzLm1kLgoJKHJlZ19vcl9jb25zdF9pbnRfb3BlcmFuZCk6IFJlbW92ZS4gIFJlcGxhY2UgYWxsIHVzZXJzIHdpdGgKCXJlZ19vcl9jaW50X29wZXJhbmQuCgkodGxzX3N5bWJvbGljX29wZXJhbmRfMSk6IEV4cG9ydC4gIERvbid0IGNoZWNrIG1vZGUgb3IgZm9yIENPTlNULgoJKHJlc29sdmVfcmVsb2FkX29wZXJhbmQpOiBTcGxpdCBvdXQgb2YgYWxpZ25lZF9tZW1vcnlfb3BlcmFuZC4KCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oOiBVcGRhdGUgZm9yIGV4cG9ydHMuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChQUkVESUNBVEVfQ09ERVMpOiBSZW1vdmUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZDogSW5jbHVkZSBwcmVkaWNhdGVzLm1kLgoJKiBjb25maWcvYWxwaGEvcHJlZGljYXRlcy5tZDogTmV3IGZpbGUuCgoyMDA0LTA4LTEzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBnZW5hdHRydGFiLmMgKGluc25fZW50KTogUmVwbGFjZSBpbnNuX2NvZGUsIGluc25faW5kZXggYW5kIGxpbmVubwoJZmllbGRzIHdpdGggYSBwb2ludGVyIHRvIHRoZSBpbnN0cnVjdGlvbiBkZWZpbml0aW9uLgoJKGdldF9hdHRyX3ZhbHVlLCBmaWxsX2F0dHIsIG1ha2VfbGVuZ3RoX2F0dHJzLCByZW1vdmVfaW5zbl9lbnQpCgkoaW5zZXJ0X2luc25fZW50LCBzaW1wbGlmeV90ZXN0X2V4cCwgb3B0aW1pemVfYXR0cnMsIHdyaXRlX2F0dHJfZ2V0KQoJKHdyaXRlX2F0dHJfY2FzZSwgd3JpdGVfY29uc3RfbnVtX2RlbGF5X3Nsb3RzKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKHdyaXRlX2F0dHJfY2FzZSwgd3JpdGVfY29uc3RfbnVtX2RlbGF5X3Nsb3RzKTogV3JpdGUgdGhlIG5hbWUgb2YKCWFuIGluc24gbmV4dCB0byBpdHMgY2FzZSBzdGF0ZW1lbnQuCgkqIGdlbm91dHB1dC5jIChkYXRhKTogQWRkIGEgZmlsZW5hbWUgZmllbGQuCgkoZ2VuX2luc24sIGdlbl9wZWVwaG9sZSwgZ2VuX2V4cGFuZCwgZ2VuX3NwbGl0KTogU2V0IGl0LgoJKG91dHB1dF9pbnNuX2RhdGEpOiBQcmludCB0aGUgbG9jYXRpb24gb2YgZWFjaCBpbnNuIGRlZmluaXRpb24uCgkqIGdlbnJlY29nLmMgKHdyaXRlX2FjdGlvbik6IFByaW50IHRoZSBuYW1lIG9mIGFuIGluc24gYWJvdmUKCXRoZSBzdGF0ZW1lbnQgdGhhdCByZXR1cm5zIGl0cyBjb2RlLgoKMjAwNC0wOC0xMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb25maWcvZGFyd2luLWMuYyAoZmluZF9zdWJmcmFtZXdvcmtfZmlsZSk6IEZpeCBzcGVsbGluZyBvZiBjYW5ub3QuCgkqIGNvbmZpZy9saWJnbG9zcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2dlbl9sb2FkX211bHRpcGxlKTogTGlrZXdpc2UuCgkqIGM0eC9jNHgtbW9kZXMuZGVmOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2hhcmRfcmVnbm9fcmVuYW1lX29rKTogTGlrZXdpc2UuCgkoYzR4X3JwdGJfbm9wX3ApOiBMaWtld2lzZS4KCShjNHhfcnB0Yl92YWxpZF9wKTogTGlrZXdpc2UuCgkoYzR4X3JwdGJfaW5zZXJ0KTogTGlrZXdpc2UuCgkoYzR4X2FkZHJlc3NfY29uZmxpY3QpOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHgubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2F0aGxvbi5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaXRhbml1bTEubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pdGFuaXVtMi5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL21jb3JlL21jb3JlLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9yMzkwMC5oOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvc2IxLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL21pbGxpNjQuUzogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5jOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwLzg1NDAubWQ6IExpa2V3aXNlLgoKMjAwNC0wOC0xMyAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoQk9PVF9DRkxBR1MpOiBSZW1vdmUgYWNjaWRlbnRhbCBhZGRpdGlvbiBvZiAtZFUuCgoyMDA0LTA4LTEzICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLm1kIChjYnJhbmNoIGRlZmluZV9kZWxheSkgVXNlIGNvbmRfZGVsYXlfc2xvdCBmb3IKCW5vbi1hbnVsbGVkIGNvbmRpdGlvbiB0b28uCgoyMDA0LTA4LTEyICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChhbnlfcGFyYWxsZWxfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZAoJYW55X3BhcmFsbGVsX29wZXJhbmQsIGxtd19vcGVyYXRpb24sIHN0bXdfb3BlcmF0aW9uLAoJbWZjcl9vcGVyYXRpb24sIG10Y3JmX29wZXJhdGlvbi4gIFJlbW92ZSBQQVJBTExFTCBmcm9tIGFueV9vcGVyYW5kLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoc2F2ZV9mcHJlZ3Nfe3NpLGRpfSk6IFVzZQoJYW55X3BhcmFsbGVsX29wZXJhbmQuCgkocmV0dXJuX2FuZF9yZXN0b3JlX2ZwcmVnc197c2ksZGl9KTogU2FtZS4KCjIwMDQtMDgtMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnZW5yZWNvZy5jIChhZGRfdG9fc2VxdWVuY2UpOiBXaGVuIHByb2Nlc3NpbmcgYSBNQVRDSF9QQVJBTExFTCwKCWlmIHByZWQtPnNpbmdsZXRvbiAhPSBQQVJBTExFTCwgaXNzdWUgYSB3YXJuaW5nIGFuZCBwcmV0ZW5kIGl0IHdhcy4KCUFsc28gaXNzdWUgYSB3YXJuaW5nIGZvciBhbnkgcHJlZGljYXRlIHdlIGRvbid0IGtub3cgYWJvdXQuCgoyMDA0LTA4LTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpbnRlcm5hbF9sYWJlbF9wcmVmaXgpOiBFeHBvcnQuCgkoaW50ZXJuYWxfbGFiZWxfcHJlZml4X2xlbiwgc3RydWN0IGl4ODZfYWRkcmVzcywKCWl4ODZfZGVjb21wb3NlX2FkZHJlc3MsIG1heWJlX2dldF9wb29sX2NvbnN0YW50LAoJaXg4Nl9mcF9jb21wYXJlX2NvZGVfdG9faW50ZWdlciwgaXg4Nl9mcF9jb21wYXJpc29uX2NvZGVzLAoJbWVtb3J5X2FkZHJlc3NfbGVuZ3RoKTogRXhwb3J0LgoJKGFueV9mcF9yZWdpc3Rlcl9vcGVyYW5kLCBmcF9yZWdpc3Rlcl9vcGVyYW5kLAoJcmVnaXN0ZXJfYW5kX25vdF9hbnlfZnBfcmVnX29wZXJhbmQsIHJlZ2lzdGVyX2FuZF9ub3RfZnBfcmVnX29wZXJhbmQsCgl4ODZfNjRfZ2VuZXJhbF9vcGVyYW5kLCB4ODZfNjRfc3pleHRfZ2VuZXJhbF9vcGVyYW5kLAoJeDg2XzY0X25vbm1lbW9yeV9vcGVyYW5kLCB4ODZfNjRfbW92YWJzX29wZXJhbmQsCgl4ODZfNjRfc3pleHRfbm9ubWVtb3J5X29wZXJhbmQsIHg4Nl82NF9pbW1lZGlhdGVfb3BlcmFuZCwKCXg4Nl82NF96ZXh0X2ltbWVkaWF0ZV9vcGVyYW5kLCBjb25zdF9pbnRfMV8zMV9vcGVyYW5kLAoJc3ltYm9saWNfb3BlcmFuZCwgcGljX3N5bWJvbGljX29wZXJhbmQsIGxvY2FsX3N5bWJvbGljX29wZXJhbmQsCgl0bHNfc3ltYm9saWNfb3BlcmFuZCwgZ2xvYmFsX2R5bmFtaWNfc3ltYm9saWNfb3BlcmFuZCwKCWxvY2FsX2R5bmFtaWNfc3ltYm9saWNfb3BlcmFuZCwgaW5pdGlhbF9leGVjX3N5bWJvbGljX29wZXJhbmQsCglsb2NhbF9leGVjX3N5bWJvbGljX29wZXJhbmQsIGNhbGxfaW5zbl9vcGVyYW5kLCBzaWJjYWxsX2luc25fb3BlcmFuZCwKCWNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kLCBjb25zdDBfb3BlcmFuZCwgY29uc3QxX29wZXJhbmQsCgljb25zdDI0OF9vcGVyYW5kLCBjb25zdF8wX3RvXzNfb3BlcmFuZCwgY29uc3RfMF90b183X29wZXJhbmQsCgljb25zdF8wX3RvXzE1X29wZXJhbmQsIGNvbnN0XzBfdG9fMjU1X29wZXJhbmQsIGluY2RlY19vcGVyYW5kLAoJc2hpZnRkaV9vcGVyYW5kLCByZWdfbm9fc3Bfb3BlcmFuZCwgbW14X3JlZ19vcGVyYW5kLAoJZ2VuZXJhbF9ub19lbGltX29wZXJhbmQsIG5vbm1lbW9yeV9ub19lbGltX29wZXJhbmQsCglpbmRleF9yZWdpc3Rlcl9vcGVyYW5kLCBxX3JlZ3Nfb3BlcmFuZCwgZmxhZ3NfcmVnX29wZXJhbmQsCglub25fcV9yZWdzX29wZXJhbmQsIHplcm9fZXh0ZW5kZWRfc2NhbGFyX2xvYWRfb3BlcmFuZCwKCXZlY3Rvcl9tb3ZlX29wZXJhbmQsIG5vX3NlZ19hZGRyZXNzX29wZXJhbmQsIHNzZV9jb21wYXJpc29uX29wZXJhdG9yLAoJaXg4Nl9jb21wYXJpc29uX29wZXJhdG9yLCBpeDg2X2NhcnJ5X2ZsYWdfb3BlcmF0b3IsCglmY21vdl9jb21wYXJpc29uX29wZXJhdG9yLCBwcm9tb3RhYmxlX2JpbmFyeV9vcGVyYXRvciwKCWNtcF9mcF9leHBhbmRlcl9vcGVyYW5kLCBleHRfcmVnaXN0ZXJfb3BlcmFuZCwgYmluYXJ5X2ZwX29wZXJhdG9yLAoJbXVsdF9vcGVyYXRvciwgZGl2X29wZXJhdG9yLCBhcml0aF9vcl9sb2dpY2FsX29wZXJhdG9yLAoJbWVtb3J5X2Rpc3BsYWNlbWVudF9vcGVyYW5kLCBjbXBzaV9vcGVyYW5kLCBsb25nX21lbW9yeV9vcGVyYW5kLAoJYWxpZ25lZF9vcGVyYW5kKTogTW92ZSB0byBwcmVkaWNhdGVzLm1kIGFzIGRlZmluZV9wcmVkaWNhdGVzLgoJKHRsc19zeW1ib2xpY19vcGVyYW5kXzEpOiBSZW1vdmUuCgkoeDg2XzY0X3NpZ25fZXh0ZW5kZWRfdmFsdWUpOiBNZXJnZSBpbnRvIHg4Nl82NF9pbW1lZGlhdGVfb3BlcmFuZC4KCSh4ODZfNjRfemVyb19leHRlbmRlZF92YWx1ZSk6IE1lcmdlIGludG8geDg2XzY0X3pleHRfaW1tZWRpYXRlX29wZXJhbmQuCgkobGVnaXRpbWl6ZV9hZGRyZXNzKTogTWVyZ2UgdGxzX3N5bWJvbGljX29wZXJhbmQgY29udGVudHMuCgkoaXg4Nl9leHBhbmRfbW92ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oOiBVcGRhdGUgZm9yIGV4cG9ydHMuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoRVhUUkFfQ09OU1RSQUlOVCk6IFVwZGF0ZSBmb3IgcmVuYW1lcy4KCShQUkVESUNBVEVfQ09ERVMsIFNQRUNJQUxfTU9ERV9QUkVESUNBVEVTKTogUmVtb3ZlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBJbmNsdWRlIHByZWRpY2F0ZXMubWQuCgkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQ6IE5ldyBmaWxlLgoKMjAwNC0wOC0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTY5MjQKCSogY29uZmlnL2kzODYvd2lubnQuYyAoaTM4Nl9wZV9tYXJrX2RsbGV4cG9ydCk6IFNldAoJU1lNQk9MX1JFRl9ERUNMLgoJKGkzODZfcGVfbWFya19kbGxpbXBvcnQpOiBMaWtld2lzZS4KCShpMzg2X3BlX2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZSwgd2hlbiBvdmVycmlkaW5nCglkbGxpbXBvcnQgYXR0cmlidXRlLgoKMjAwNC0wOC0xMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWd1cmUuYWM6IFdoZW4gdGVzdGluZyBmb3IgZmxleCwgbm0sIGFyLCBhbmQgYmlzb24sIGNoZWNrCgl0aGF0IHRoZXkgd2lsbCBhY3R1YWxseSBiZSBidWlsdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wOC0xMiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5oIChNQVhfRklYRURfTU9ERV9TSVpFKTogRGVmaW5lLgoJKE1PVkVfTUFYX1BJRUNFUyk6IERlZmluZS4KCjIwMDQtMDgtMTIgIERldmFuZyBwYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiBkYnhvdXQuYyAoZGJ4b3V0X2JlZ2luX3Byb2xvZ3VlKTogTmV3IGZ1bmN0aW9uLgoJKGRieF9kZWJ1Z19ob29rcyk6IFVzZSBuZXcgYmVnaW4gcHJvbG9ndWUgaG9vay4KCShkYnhvdXRfZnVuY3Rpb25fZW5kKTogRW1pdCBOX0VOU1lNLgoJKiBzdGFiLmRlZiAoTl9CTlNZTSwgTl9FTlNZTSk6IERlZmluZSBhbmQgZG9jdW1lbnQgdGhlc2UgdHdvIG5ldyBzdGFicy4KCjIwMDQtMDgtMTIgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLmggKHZlY19kc3QpOiBGaXggQysrIGZ1bmN0aW9ucyB3aG9zZSBmaXJzdAoJYXJndW1lbnQgaXMgZmxvYXQqLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoYWx0aXZlY19pbml0X2J1aWx0aW5zKTogRml4IGFyZ3VtZW50IHR5cGUKCWZvciB2ZWNfZHNzLgoKCSogZG9jL2V4dGVuZC50ZXhpIChBbHRpVmVjIGJ1aWx0aW5zKTogRml4IGRlc2NyaXB0aW9uIGZvciByZWNlbnQKCWNoYW5nZXMuICBVcGRhdGUgb3BlcmF0aW9uIGxpc3QgdG8gbWF0Y2ggY3VycmVudCBzdXBwb3J0LgoKMjAwNC0wOC0xMiAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoc3RydWN0IHMzOTBfZnJhbWVfbGF5b3V0KTogTmV3IHN0cnVjdCBhcyBlbGVtZW50CglvZiBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbi4KCShjZnVuLT5tYWNoaW5lLT5mcmFtZV9zaXplKTogTW92ZWQgaW50byBjZnVuLT5tYWNoaW5lLT5mcmFtZV9sYXlvdXQgYW5kCgljaGFuZ2VkIGFsbCB1c2VzLgoJKGNmdW4tPm1hY2hpbmUtPnNhdmVfZnByc19wKTogUmVwbGFjZWQgYnkgY2Z1bl9zYXZlX2hpZ2hfZnBycyBhbmQKCWNoYW5nZWQgYWxsIHVzZXMuCgkoY2Z1bl9mcmFtZV9sYXlvdXQsIGNmdW5fc2F2ZV9oaWdoX2ZwcnNfcCwgY2Z1bl9ncHJzX3NhdmVfYXJlYV9zaXplKQoJKGNmdW5fc2V0X2Zwcl9iaXQsIGNmdW5fZnByX2JpdF9wKTogTmV3IG1hY3Jvcy4KCShzMzkwX2ZyYW1lX2FyZWEsIHMzOTBfcmVnaXN0ZXJfaW5mbyk6IE5ldyBmdW5jdGlvbnMuCgkoczM5MF9vcHRpbWl6ZV9wcm9sb2cpOiBSZW5hbWVkIHRvIHMzOTBfb3B0aW1pemVfcHJvbG9ndWUuICBBZGRlZCBjaGVjawoJZm9yIGJhc2UgcmVnaXN0ZXIuCgkoczM5MF9yZXR1cm5fYWRkcl9ydHgsIHMzOTBfcmV0dXJuX2FkZHJlc3Nfb2Zmc2V0KQoJKHMzOTBfdmFfc3RhcnQsIHMzOTBfZ2ltcGxpZnlfdmFfYXJnKQoJKHMzOTBfZW1pdF9wcm9sb2d1ZSwgczM5MF9lbWl0X2VwaWxvZ3VlKTogQWRqdXN0ZWQgZm9yIG5ldyBzdGFjawoJbGF5b3V0cy4KCShzMzkwX2ZyYW1lX2luZm8pOiBGdW5jdGlvbmFsaXR5IHBhcnRseSBtb3ZlZCB0byBzMzkwX3JlZ2lzdGVyX2luZm8uCglNYWRlIGFkYXB0aW9ucyBmb3IgbmV3IHN0YWNrIGxheW91dC4KCShzYXZlX2dwcnMsIHJlc3RvcmVfZ3Bycyk6IENoYW5nZWQgbWVhbmluZyBvZiBzZWNvbmQgcGFyYW1ldGVyIGFuZAoJYWRhcHRlZCBhbGwgY2FsbGVycy4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoczM5MF9iYWNrY2hhaW5fc3RyaW5nKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShNQVNLX0JBQ0tDSEFJTik6IFJlbW92ZWQgZGVmaW5pdGlvbi4KCShUQVJHRVRfQkFDS0NIQUlOKTogQ2hhbmdlZCBjaGVjay4KCShUQVJHRVRfS0VSTkVMX0JBQ0tDSEFJTik6IE5ldyBtYWNyby4KCShUQVJHRVRfU1dJVENIRVMpOiBSZW1vdmVkIGVudHJpZXMgb2YgImJhY2tjaGFpbiIgYW5kICJuby1iYWNrY2hhaW4iLgoJKFRBUkdFVF9PUFRJT05TKTogQWRkZWQgImJhY2tjaGFpbiIsICJuby1iYWNrY2hhaW4iIGFuZAoJImtlcm5lbC1iYWNrY2hhaW4iLgoJKERZTkFNSUNfQ0hBSU5fQUREUkVTUyk6IEFkanVzdGVkIGZvciBuZXcgc3RhY2sgbGF5b3V0cy4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJhbGxvY2F0ZV9zdGFjayIpOiBBZGRlZCBUQVJHRVRfS0VSTkVMX0JBQ0tDSEFJTgoJYXMgY29uZGl0aW9uLiAgQWRqdXN0ZWQgZm9yIG5ldyBzdGFjayBsYXlvdXQuCgoJKiBkb2MvaW52b2tlLnRleGk6IEFkZGVkIGRvY3VtZW50YXRpb24gZm9yIG5ldyBvcHRpb24KCSItbWtlcm5lbC1iYWNrY2hhaW4iIGFuZCBhZGp1c3RlZCBkb2N1bWVudGF0aW9uIG9mICItbWJhY2tjaGFpbiIgYW5kCgkiLW1uby1iYWNrY2hhaW4iLgoKMjAwNC0wOC0xMiAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vbGliMWZ1bmNzLmFzbSAoQVJNX0ZVTkNfQUxJQVMpOiBBbHNvIGFsaWFzIF9MX19uYW1lLgoJKGFlYWJpX3VpZGl2bW9kLCBhZWFiaV9pZGl2bW9kKTogUHJvdmlkZSB0aHVtYiBpbXBsZW1lbnRhdGlvbi4KCjIwMDQtMDgtMTIgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJKiBqYXZhL2djai50ZXhpOiBBZGQgc3Vic2VjdGlvbiBvbiBzaWduYWwgdXNhZ2UuCgoyMDA0LTA4LTEyICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBleHByLmMgKG1vdmVfYnlfcGllY2VzKTogU2V0IGFsaWdubWVudCBmb3IgbW92ZSB0byBtaW5pbXVtIG9mCglNT1ZFX01BWF9QSUVDRVMgbW9kZSBhbGlnbm1lbnQgYW5kIHRoZSBsYXJnZXN0IG5vbi1zbG93IG1vZGUKCWFsaWdubWVudCwgYnV0IG5vdCBsZXNzIHRoYW4gdGhlIG9yaWdpbmFsIGFsaWdubWVudC4KCShtb3ZlX2J5X3BpZWNlc19uaW5zbnMpOiBTYW1lLgoJKGNhbl9zdG9yZV9ieV9waWVjZXMpOiBTaW1pbGFyIGZvciBzdG9yZSB3aXRoIFNUT1JFX01BWF9QSUVDRVMuCgkoc3RvcmVfYnlfcGllY2VzXzEpOiBTYW1lLgoKMjAwNC0wOC0xMiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTY4NjcKCSogdHJlZS5jIChpc19nbG9iYWxfdmFyKTogTmV3IGZ1bmN0aW9uLgoJKG5lZWRzX3RvX2xpdmVfaW5fbWVtb3J5KTogQ2hlY2sgZm9yIFRSRUVfQUREUkVTU0FCTEUuCglDYWxsIGlzX2dsb2JhbF92YXIuCgkqIHRyZWUuaCAoREVDTF9ORUVEU19UT19MSVZFX0lOX01FTU9SWV9JTlRFUk5BTCk6IFJlbW92ZS4KCVVwZGF0ZSBhbGwgdXNlcnMuCgkoaXNfZ2xvYmFsX3Zhcik6IERlY2xhcmUuCgkqIHRyZWUtZGZhLmMgKGR1bXBfdmFyaWFibGUpOiBEaXNwbGF5IGdsb2JhbCBhbmQgYWRkcmVzc2FibGUKCWF0dHJpYnV0ZXMuCgkoYWRkX3JlZmVyZW5jZWRfdmFyKTogQ2xhcmlmeSBkb2N1bWVudGF0aW9uIHdoZW4gbWFya2luZwoJdmFyaWFibGVzIGNhbGwtY2xvYmJlcmVkLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKGlzX2NhbGxfY2xvYmJlcmVkKTogQ2FsbCBpc19nbG9iYWxfdmFyCglpbnN0ZWFkIG9mIG5lZWRzX3RvX2xpdmVfaW5fbWVtb3J5LgoJKG1hcmtfY2FsbF9jbG9iYmVyZWQpOiBJZiB0aGUgdmFyaWFibGUgaXMgYSB0YWcsIG1hcmsgaXQKCURFQ0xfRVhURVJOQUwuCgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9yZWcpOiBEb24ndCBjaGVjayBmb3IKCVRSRUVfQUREUkVTU0FCTEUuCgkoaXNfZ2ltcGxlX25vbl9hZGRyZXNzYWJsZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChnZXRfbm10X2Zvcik6IEFsd2F5cyBjaGVjayB3aGV0aGVyIHRoZSB0YWcKCW5lZWRzIHRvIGJlIG1hcmtlZCBjYWxsLWNsb2JiZXJlZC4KCShzZXR1cF9wb2ludGVyc19hbmRfYWRkcmVzc2FibGVzKTogQ2FsbCBpc19nbG9iYWxfdmFyIGluc3RlYWQKCW9mIG5lZWRzX3RvX2xpdmVfaW5fbWVtb3J5LgoJKiB0cmVlLXNzYS1kY2UuYyAobmVlZF90b19wcmVzZXJ2ZV9zdG9yZSk6IFJlbW92ZS4KCVVwZGF0ZSBhbGwgdXNlcnMgd2l0aCBpc19nbG9iYWxfdmFyLgoJKG1hcmtfc3RtdF9pZl9vYnZpb3VzbHlfbmVjZXNzYXJ5KTogRml4IHByb2Nlc3Npbmcgb2YgYWxpYXNlZAoJc3RvcmVzLiAgRG9uJ3QgY2hlY2sgdGhlIHZpcnR1YWwgZGVmaW5pdGlvbnMuICBSYXRoZXIsIGNoZWNrCgl3aGV0aGVyIHRoZSBzdG9yZSBpcyBnb2luZyBpbnRvIGdsb2JhbCBtZW1vcnkuCgkoZmluZF9vYnZpb3VzbHlfbmVjZXNzYXJ5X3N0bXRzKTogR2V0IHRoZSBzeW1ib2wgZnJvbSB0aGUgUEhJCglyZXN1bHQuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGdldF9jYWxsX2V4cHJfb3BlcmFuZHMpOiBEbyBub3QgYWRkCgljbG9iYmVyaW5nIG1heS1kZWZzIGlmIHRoZSBjYWxsIGRvZXMgbm90IGhhdmUgc2lkZSBlZmZlY3RzLgoKMjAwNC0wOC0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzE2Mjc2CgkqIG91dHB1dC5oIChkZWZhdWx0X2Z1bmN0aW9uX3JvZGF0YV9zZWN0aW9uLAoJZGVmYXVsdF9ub19mdW5jdGlvbl9yb2RhdGFfc2VjdGlvbik6IE5ldyBwcm90b3R5cGVzLgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBBZGQgYXNtX291dC5mdW5jdGlvbl9yb2RhdGFfc2VjdGlvbi4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfQVNNX0ZVTkNUSU9OX1JPREFUQV9TRUNUSU9OKTogRGVmaW5lLgoJKFRBUkdFVF9BU01fT1VUKTogQWRkIGl0LgoJKiB2YXJhc20uYyAoZGVmYXVsdF9mdW5jdGlvbl9yb2RhdGFfc2VjdGlvbiwKCWRlZmF1bHRfbm9fZnVuY3Rpb25fcm9kYXRhX3NlY3Rpb24pOiBOZXcgZnVuY3Rpb25zLgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBDYWxsCgl0YXJnZXRtLmFzbV9vdXQuZnVuY3Rpb25fcm9kYXRhX3NlY3Rpb24gaW5zdGVhZCBvZgoJcmVhZG9ubHlfZGF0YV9zZWN0aW9uLgoJKiBjb25maWcvZGFyd2luLmggKFRBUkdFVF9BU01fRlVOQ1RJT05fUk9EQVRBX1NFQ1RJT04pOiBEZWZpbmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jIChUQVJHRVRfQVNNX0ZVTkNUSU9OX1JPREFUQV9TRUNUSU9OKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pcDJrL2lwMmsuYyAoVEFSR0VUX0FTTV9GVU5DVElPTl9ST0RBVEFfU0VDVElPTik6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3hjb2ZmLmggKFRBUkdFVF9BU01fRlVOQ1RJT05fUk9EQVRBX1NFQ1RJT04pOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChUQVJHRVRfQVNNX0ZVTkNUSU9OX1JPREFUQV9TRUNUSU9OKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2N5Z21pbmcuaCAoVEFSR0VUX0FTTV9GVU5DVElPTl9ST0RBVEFfU0VDVElPTik6CglMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4LmggKFRBUkdFVF9BU01fRlVOQ1RJT05fUk9EQVRBX1NFQ1RJT04pOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vcGUuaCAoVEFSR0VUX0FTTV9GVU5DVElPTl9ST0RBVEFfU0VDVElPTik6IExpa2V3aXNlLgoJKiBjb25maWcvYXZyL2F2ci5jIChUQVJHRVRfQVNNX0ZVTkNUSU9OX1JPREFUQV9TRUNUSU9OKTogTGlrZXdpc2UuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfQVNNX0ZVTkNUSU9OX1JPREFUQV9TRUNUSU9OKTogRG9jdW1lbnQuCgoyMDA0LTA4LTEyICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHdhcmYyb3V0LmggKGR3YXJmMm91dF9mcmFtZV9maW5pc2gpOiBDb25kaXRpb25hbGl6ZSBvdXRwdXR0aW5nIGVoCglmcmFtZSBpbmZvLgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgaW50ZXJhY3Rpb24gYmV0d2VlbiBUQVJHRVRfVU5XSU5EX0lORk8gYW5kCglEV0FSRjJfVU5XSU5EX0lORk8uCgoyMDA0LTA4LTEyICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCglQUiB0YXJnZXQvMTYyODYKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLmg6IENoYW5nZSB2ZWN0b3IgdG8gX192ZWN0b3IgdGhyb3VnaG91dC4KCShFeGNlcHQgZm9yIHRoZSBgdmVjdG9yJyBtYWNybyBpdHNlbGYpLgoKMjAwNC0wOC0xMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbnByZWRzLmM6IEFkZCBjYXBhYmlsaXR5IHRvIGdlbmVyYXRlIHByZWRpY2F0ZSBib2RpZXMgYXMKCXdlbGwgYXMgZnVuY3Rpb24gcHJvdG90eXBlcy4gIFdyaXRlIGZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yCgl0aGUgZ2VuZXJpYyBwcmVkaWNhdGVzIHRvby4KCShwcm9jZXNzX2RlZmluZV9wcmVkaWNhdGUsIHdyaXRlX3RtX3ByZWRzX2gsIHdyaXRlX2luc25fcHJlZHNfYykKCSh3cml0ZV9wcmVkaWNhdGVfc3ViZnVuY3Rpb24sIG1hcmtfbW9kZV90ZXN0cywgYWRkX21vZGVfdGVzdHMpCgkod3JpdGVfbWF0Y2hfY29kZSwgd3JpdGVfcHJlZGljYXRlX2V4cHIsIHdyaXRlX29uZV9wcmVkaWNhdGVfZnVuY3Rpb24pCgkocGFyc2Vfb3B0aW9uKTogTmV3IGZ1bmN0aW9ucy4KCShvdXRwdXRfcHJlZGljYXRlX2RlY2xzKTogRGVsZXRlLgoJKG1haW4pOiBSZWFkIHRoZSBtYWNoaW5lIGRlc2NyaXB0aW9uLCBwcm9jZXNzIERFRklORV9QUkVESUNBVEUgb3IKCURFRklORV9TUEVDSUFMX1BSRURJQ0FURSBwYXR0ZXJucywgd3JpdGUgdG0tcHJlZHMuaCBvciBpbnNuLXByZWRzLmMKCWFzIGFwcHJvcHJpYXRlLgoKCSogZ2VucmVjb2cuYyAoc3RydWN0IGRlY2lzaW9uX3Rlc3QpOiBSZXBsYWNlIGluZGV4IHdpdGgKCXN0cnVjdCBwcmVkX2RhdGEgcG9pbnRlci4KCShuZXh0X2luZGV4KTogUmVtb3ZlLCB1bnVzZWQuCgkocHJlZF90YWJsZSwgcHJlZHMsIHNwZWNpYWxfbW9kZV9wcmVkX3RhYmxlKTogRGVsZXRlLgoJKGNvbXB1dGVfcHJlZGljYXRlX2NvZGVzLCBwcm9jZXNzX2RlZmluZV9wcmVkaWNhdGUpOiBOZXcgZnVuY3Rpb25zLgoJKHZhbGlkYXRlX3BhdHRlcm4sIGFkZF90b19zZXF1ZW5jZSwgd3JpdGVfc3dpdGNoKTogVXBkYXRlIGZvcgoJbmV3IGRhdGEgc3RydWN0dXJlcy4KCShtYWluKTogSGFuZGxlIERFRklORV9QUkVESUNBVEUgYW5kIERFRklORV9TUEVDSUFMX1BSRURJQ0FURS4KCUNoZWNrIGJvdGggZXJyb3JfY291bnQgYW5kIGhhdmVfZXJyb3IuCgoJKiBnZW5zdXBwb3J0LmMgKGluX2ZuYW1lLCBmaXJzdF9wcmVkaWNhdGUpOiBOZXcgZ2xvYmFscy4KCShkZWZpbmVfcHJlZF9xdWV1ZSwgZGVmaW5lX3ByZWRfdGFpbCk6IE5ldyBSVEwtcGF0dGVybiBxdWV1ZS4KCShwcmVkaWNhdGVfdGFibGUsIGxhc3RfcHJlZGljYXRlLCBvbGRfcHJlZF90YWJsZSkKCShvbGRfc3BlY2lhbF9wcmVkX3RhYmxlKTogTmV3IHN0YXRpY3MuCgkoaGFzaF9zdHJ1Y3RfcHJlZF9kYXRhLCBlcV9zdHJ1Y3RfcHJlZF9kYXRhLCBsb29rdXBfcHJlZGljYXRlKQoJKGFkZF9wcmVkaWNhdGUsIGluaXRfcHJlZGljYXRlX3RhYmxlKTogTmV3IGZ1bmN0aW9ucy4KCShwcm9jZXNzX3J0eCk6IEhhbmRsZSBERUZJTkVfUFJFRElDQVRFIGFuZCBERUZJTkVfU1BFQ0lBTF9QUkVESUNBVEUuCgkoaW5pdF9tZF9yZWFkZXJfYXJnc19jYik6IFVzZSB0aGUgZ2xvYmFsIGluX2ZuYW1lLiAgTm8gbmVlZCB0byB6ZXJvCglpdCBvciBtYXhfaW5jbHVkZV9sZW4uICBDYWxsIGluaXRfcHJlZGljYXRlX3RhYmxlLgoJKHJlYWRfcnR4KTogUnVuIHRoZSBwcmVkaWNhdGUgcXVldWUgYWZ0ZXIgdGhlIGF0dHJpYnV0ZSBxdWV1ZQoJYnV0IGJlZm9yZSBhbGwgdGhlIG90aGVycy4KCSogZ2Vuc3VwcG9ydC5oIChpbl9mbmFtZSwgc3RydWN0IHByZWRfZGF0YSwgZmlyc3RfcHJlZGljYXRlKQoJKGxvb2t1cF9wcmVkaWNhdGUsIGFkZF9wcmVkaWNhdGUsIEZPUl9BTExfUFJFRElDQVRFUyk6IERlY2xhcmUuCgkqIHJ0bC5kZWYgKE1BVENIX0NPREUsIE1BVENIX1RFU1QsIERFRklORV9QUkVESUNBVEUpCgkoREVGSU5FX1NQRUNJQUxfUFJFRElDQVRFKTogTmV3IFJUTCBjb2Rlcy4KCSogZHVtbXktY29uZGl0aW9ucy5jOiBEb24ndCBpbmNsdWRlIGJjb25maWcuaCwgc3lzdGVtLmgsCgljb3JldHlwZXMuaCwgdG0uaCwgb3Igc3lzdGVtLmguICBEbyBpbmNsdWRlIHN0ZGRlZi5oLgoJRHVwbGljYXRlIGRlY2xhcmF0aW9uIG9mIHN0cnVjdCBjX3Rlc3QgZnJvbSBnZW5zdXBwb3J0LmguCgoJKiBNYWtlZmlsZS5pbiAoT0JKUy1jb21tb24pOiBBZGQgaW5zbi1wcmVkcy5vLgoJKFNUQUdFU1RVRkYsIC5QUkVDSU9VUyk6IEFkZCBpbnNuLXByZWRzLmMuCgkoaW5zbi1wcmVkcy5jLCBpbnNuLXByZWRzLm8pOiBOZXcgcnVsZXMuCgkocy1wcmVkcyk6IEFsc28gZ2VuZXJhdGUgaW5zbi1wcmVkcy5jLgoJKGR1bW15LWNvbmRpdGlvbnMubywgZ2VucHJlZHMkKGJ1aWxkX2V4ZWV4dCksIGdlbnByZWRzLm8pOgoJVXBkYXRlIGRlcGVuZGVuY2llcy4KCShwcmludC1ydGwubywgcHJpbnQtcnRsMS5vKTogQ29ycmVjdCBkZXBlbmRlbmNpZXMuCgoJKiByZWNvZy5oOiBEZWxldGUgcHJvdG90eXBlcyBvZiBwcmVkaWNhdGUgZnVuY3Rpb25zLgoKCSogZG9jL21kLnRleGkgKFByZWRpY2F0ZXMpOiBOZXcgc2VjdGlvbiB3aXRoIGNvbXBsZXRlCglkb2N1bWVudGF0aW9uIG9mIG9wZXJhbmQvb3BlcmF0b3IgcHJlZGljYXRlcy4gIFJlbW92ZSBzb21lCglpbmNvbXBsZXRlIGRvY3VtZW50YXRpb24gb2YgcHJlZGljYXRlcyBmcm9tIG90aGVyIHBsYWNlcy4KCSogZG9jL3RtLnRleGkgKE1pc2MpOiBNb3ZlIFNQRUNJQUxfTU9ERV9QUkVESUNBVEVTIG5leHQgdG8KCVBSRURJQ0FURV9DT0RFUzsgaW5kaWNhdGUgdGhhdCBib3RoIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yCglvZiBkZWZpbmVfcHJlZGljYXRlL2RlZmluZV9zcGVjaWFsX3ByZWRpY2F0ZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogQWxsIHByZWRpY2F0ZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBtb3ZlZAoJdG8gaWE2NC5tZCwgZXhjZXB0Cgkoc21hbGxfYWRkcl9zeW1ib2xpY19vcGVyYW5kLCB0bHNfc3ltYm9saWNfb3BlcmFuZCk6IERlbGV0ZS4KCShpYTY0X2V4cGFuZF9sb2FkX2FkZHJlc3MsIGlhNjRfZXhwYW5kX21vdmUpOgoJQ2hlY2sgU1lNQk9MX1JFRl9UTFNfTU9ERUwgZGlyZWN0bHksIGRvbid0IHVzZSB0bHNfc3ltYm9saWNfb3BlcmFuZC4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQ6IEFsbCBwcmVkaWNhdGVzIG5vdyBkZWZpbmVkIGhlcmUuCgkoc3ltYm9saWNfb3BlcmFuZCk6IElzIG5vdyBhIHNwZWNpYWwgcHJlZGljYXRlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oOiBEZWNsYXJlIGlhNjRfc2VjdGlvbl90aHJlc2hvbGQuCgkoUFJFRElDQVRFX0NPREVTKTogRGVsZXRlLgoKMjAwNC0wOC0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmggKFNUQVRFTUVOVF9MSVNUX0hBU19MQUJFTCk6IE5ldy4KCSogYy1zZW1hbnRpY3MuYyAoYWRkX3N0bXQpOiBTZXQgaXQuCgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbCk6IFVzZSBpdCB0byBjcmVhdGUgYSBuZXcgQklORF9FWFBSCgliZWZvcmUgaW5zdGFudGlhdGluZyBhIHZhcmlhYmxlIHNpemVkIHR5cGUuCgoyMDA0LTA4LTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAocm91bmRfdXAsIHJvdW5kX2Rvd24pOiBNb3ZlIC4uLgoJKiBmb2xkLWNvbnN0LmMgKHJvdW5kX3VwLCByb3VuZF9kb3duKTogLi4uIGhlcmUuICBVc2UKCW11bHRpcGxlX29mX3AgdG8gYXZvaWQgYW55IGFyaXRobWV0aWMgYXQgYWxsLgoKMjAwNC0wOC0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdpbXBsaWZ5LmMgKHN0cnVjdCBnaW1wbGlmeV9pbml0X2N0b3JfcHJlZXZhbF9kYXRhKTogTmV3LgoJKGdpbXBsaWZ5X2luaXRfY3Rvcl9wcmVldmFsXzEpOiBOZXcuCgkoZ2ltcGxpZnlfaW5pdF9jdG9yX3ByZWV2YWwpOiBOZXcuCgkoZ2ltcGxpZnlfaW5pdF9jdG9yX2V2YWwpOiBOZXcuCgkoZ2ltcGxpZnlfaW5pdF9jb25zdHJ1Y3Rvcik6IFVzZSB0aGVtLiAgQWx3YXlzIGdpbXBsaWZ5IHRoZSBMSFMKCW9iamVjdCBmaXJzdC4KCjIwMDQtMDgtMTIgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkoVGhpcyBwYXRjaCBpcyBwYXJ0IG9mIG1lcmdlIG9mIG9iamMtaW1wcm92ZW1lbnRzLWJyYW5jaAoJaW50byBtYWlubGluZS4pCgoJKiBkb2MvZnJvbnRlbmRzLnRleGk6IE1lbnRpb24gT2JqZWN0aXZlLUMrKyBpbiBhZGRpdGlvbiB0bwoJT2JqZWN0aXZlLUMuCgkqIGRvYy9pbnN0YWxsLnRleGk6IEFkZCAnb2JqLWMrKycgdG8gbGlzdCBvZiBjb25maWd1cmFibGUKCWxhbmd1YWdlcy4KCSogZG9jL2ludm9rZS50ZXhpOiBSZW5hbWUgT2JqZWN0aXZlLUMgb3B0aW9uIGhlYWRpbmdzIHRvCglpbmRpY2F0ZSB0aGV5IGFsc28gYXBwbHkgdG8gT2JqZWN0aXZlLUMrKy4gIExpc3QgZmlsZQoJZXh0ZW5zaW9ucyBmb3IgT2JqZWN0aXZlLUMrKyBzb3VyY2VzLiAgTWVudGlvbiB0aGF0CglPYmpDIGFuZCBPYmpDKysgY29tcGlsYXRpb25zIG1heSBhbHNvIHVzZSBDIGFuZCBDKysgb3B0aW9ucywKCXJlc3BlY3RpdmVseS4gIFBvaW50IHVzZXJzIHRvIGRvYy9zdGFuZGFyZHMudGV4aSBmb3IKCWZ1cnRoZXIgaW5mbyBvbiBPYmpDIGFuZCBPYmpDKysuCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBNZW50aW9uIHRoZSBvYmpjcC8gZGlyZWN0b3J5IGFuZAoJdGhlIE9iamVjdGl2ZS1DKysgc291cmNlcyBpdCBjb250YWlucy4KCSogZG9jL3N0YW5kYXJkcy50ZXhpOiBVcGRhdGUgbGluayB0byBBcHBsZSBPYmpDIHNpdGU7CglhZGQgbGluayB0byBnY2MgcmVhZGluZ3MuaHRtbCBXV1cgZG9jLgoKMjAwNC0wOC0xMiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGZ1bmN0aW9uX2FyZ19wYWRkaW5nKTogUmV2ZXJ0IDIwMDQtMDctMjgKCWFuZCAyMDA0LTA3LTE0IGNoYW5nZXMuCgoyMDA0LTA4LTEyICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBGaXggdHlwby4KCjIwMDQtMDgtMTEgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uaCAoVEFSR0VUX09QVElPTl9UUkFOU0xBVEVfVEFCTEUpOiBBZGQgLWRlYWRfc3RyaXAKCWFuZCAtbm9fZGVhZF9zdHJpcF9pbml0c19hbmRfdGVybXMuCgkoTElOS19TUEVDKTogU2FtZS4KCSogZG9jL2ludm9rZS50ZXhpIChEYXJ3aW4gT3B0aW9ucyk6IERvY3VtZW50IC1kZWFkX3N0cmlwIGFuZAoJLW5vX2RlYWRfc3RyaXBfaW5pdHNfYW5kX3Rlcm1zLgoKMjAwNC0wOC0xMSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhcm1fZmluYWxpemVfcGljKSBSZW5hbWUgLi4uCgkoYXJtX2xvYWRfcGljX3JlZ2lzdGVyKTogLi4uIHRvIHRoaXMuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9maW5hbGl6ZV9waWMpOiBSZW5hbWUgLi4uCgkoYXJtX2xvYWRfcGljX3JlZ2lzdGVyKTogLi4uIHRvIHRoaXMuICBBbHdheXMgb3V0cHV0IGluc25zIGF0IHRoZQoJY3VycmVudCBsb2NhdGlvbi4gIExvYWQgdmlhIGxvdyByZWcgaW4gdGh1bWIgbW9kZS4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogQ2FsbCBhcm1fbG9hZF9waWNfcmVnaXN0ZXIuCgkodGh1bWJfZXhwYW5kX3Byb2xvZ3VlKTogRGl0dG8uCgkqIGNvbmZpZy9hcm0vYXJtLmggKEZJTkFMSVpFX1BJQyk6IFJlbW92ZS4KCSogY29uZmlnL2FybS9hcm0ubWQgKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogQ2FsbAoJYXJtX2xvYWRfcGljX3JlZ2lzdGVyLgoKMjAwNC0wOC0xMSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFybS5jICh0aHVtYl9mb3JjZV9scl9zYXZlKTogQWRkIHByb3RvdHlwZS4KCSh0aHVtYl9jb21wdXRlX3NhdmVfcmVnX21hc2spOiBOZXcgZnVuY3Rpb24uCgkodGh1bWJfZmluZF93b3JrX3JlZ2lzdGVyKTogTmV3IGZ1bmN0aW9uLgoJKGFybV9nZXRfZnJhbWVfb2Zmc2V0cyk6IFVzZSB0aHVtYl9jb21wdXRlX3NhdmVfcmVnX21hc2suCgkodGh1bWJfdW5leHBhbmRlZF9lcGlsb2d1ZSk6IERpdHRvLiAgUmVtb3ZlIHJlZHVuZGFudCBjb2RlLgoJRG9uJ3QgY2xvYmJlciByMyB3aGVuIHJlbW92aW5nIHByZXRlbmQgYXJncy4KCSh0aHVtYl9leHBhbmRfcHJvbG9ndWUpOiBVc2UgdGh1bWJfY29tcHV0ZV9zYXZlX3JlZ19tYXNrLgoJKHRodW1iX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFVzZSBuZXcgZnVuY3Rpb25zLgoJKHRodW1iX3NldF9yZXR1cm5fYWRkcmVzcyk6IFVzZSB0aHVtYl9jb21wdXRlX3NhdmVfcmVnX21hc2suCgkqIGFybS5oIChUSFVNQl9SRUdfUFVTSEVEX1ApOiBSZW1vdmUuCgoyMDA0LTA4LTExICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xNjQ5MAoJKiBjZmdydGwuYyAoY2ZnX2xheW91dF9zcGxpdF9lZGdlKTogU2V0IGdsb2JhbF9saXZlX2F0X3N0YXJ0IGFuZAoJZ2xvYmFsX2xpdmVfYXRfZW5kIGZvciBuZXcgYmFzaWMgYmxvY2sgaWYgYWxyZWFkeSBzZXQgZm9yIG90aGVyIGJsb2Nrcy4KCjIwMDQtMDgtMTEgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoTUFYX0ZJWEVEX01PREVfU0laRSk6IERlZmluZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtZmNyIHJsd2lubSBwYXR0ZXJucyk6IFNldCBsZW5ndGggdG8gOC4KCShtZmNyIHJsd2lubSBybHdpbm0gcGF0dGVybnMpOiBTZXQgbGVuZ3RoIHRvIDEyLgoKMjAwNC0wOC0xMSAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEByZWRoYXQuY29tPgoKCSogdHJlZS1mbG93LWlubGluZS5oIChnZXRfZGVmX29wcywgZ2V0X3VzZV9vcHMsIGdldF92X21heV9kZWZfb3BzLAoJZ2V0X3Z1c2Vfb3BzLGdldF92X211c3RfZGVmX29wcyk6IEFkZCBvcGVyYW5kIHN0cnVjdHVyZSByZWZlcmVuY2UuCgkoZ2V0X3ZfbWF5X2RlZl9yZXN1bHRfcHRyLCBnZXRfdl9tYXlfZGVmX29wX3B0cik6IE5ldyBhY2Nlc3Mgc3RydWN0LgoJKHN0YXJ0X3NzYV9zdG10X29wZXJhbmRzKTogRGVsZXRlLgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IHN0bXRfYW5uX2QpOiBSZXBsYWNlIG9wZXJhbmQgdmVjdG9ycyB3aXRoIG5ldwoJc3RydWN0IHN0bXRfb3BlcmFuZHNfZC4KCShidWlsZF9zc2Ffb3BlcmFuZHMpOiBOZXcgZXh0ZXJuIGVudHJ5IHBvaW50LgoJKiB0cmVlLXNzYS1kb20uYyAocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX3N0bXQpOiBSZW1vdmUgb3BlcmFuZAoJYnVpbGRpbmcgY29kZSwgcmVwbGFjZSB3aXRoIGNyZWF0ZV9zc2FfYXJ0ZmljaWFsX2xvYWRfc3RtdCgpLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChzdHJ1Y3Qgdm9wZXJhbmRzX2QpOiBEZWxldGUuCgkoYWxsb2NhdGVfdl9tYXlfZGVmX29wdHlwZSk6IEFsbG9jYXRlIHZfbWF5X2RlZl9vcGVyYW5kX3R5cGVfdCB2ZWN0b3IuCgkoYWxsb2NhdGVfdl9tdXN0X2RlZl9vcHR5cGUpOiBVc2Ugc2l6ZW9mICh0cmVlKSwgbm90IHNpemVvZiAodHJlZSAqKS4KCShmcmVlX3VzZXMsIGZyZWVfZGVmcywgZnJlZV92dXNlcywgZnJlZV92X21heV9kZWZzLAoJZnJlZV92X211c3RfZGVmcyk6IFJlbW92ZSBkZWFsbG9jIHBhcmFtZXRlci4KCShyZW1vdmVfdnVzZXMsIHJlbW92ZV92X21heV9kZWYsIHJlbW92ZV92X211c3RfZGVmcyk6IERlbGV0ZS4KCShmaW5hbGl6ZV9zc2FfZGVmcywgZmluYWxpemVfc3NhX3VzZXMsIGZpbmFsaXplX3NzYV92X21heV9kZWZzLAoJZmluYWxpemVfc3NhX3Z1c2VzLCBmaW5hbGl6ZV9zc2Ffdl9tdXN0X2RlZnMpOiBQZXJmb3JtIGFsbCBvcGVyYW5kCgl2ZWN0b3IgY29tcGFyaXNvbnMsIHNzYV9uYW1lIHJldXNlLCBhbmQgYWxsb2NhdGlvbnMgaGVyZS4KCSh2ZXJpZnlfc3RhcnRfb3BlcmFuZHMpOiBEZWxldGUuCgkoZmluYWxpemVfc3NhX3N0bXRfb3BlcmFuZHMpOiBTZXQgbmV3IG9wZXJhbmRzIGJ5IGNhbGxpbmcgZmluYWxpemUKCXJvdXRpbmVzLgoJKHN0YXJ0X3NzYV9zdG10X29wZXJhbmRzKTogTW92ZSBmcm9tIHRyZWUtZmxvdy1pbmxpbmUuaC4KCShhcHBlbmRfZGVmLCBhcHBlbmRfdXNlaSk6IFNpbXBsaWZ5IHRvIHNpbXBsZSBhY2N1bXVsYXRpb24uCgkoYXBwZW5kX3ZfbWF5X2RlZiwgYXBwZW5kX3Z1c2UsIGFwcGVuZF92X211c3RfZGVmKTogU2ltcGxpZnkgdG8gYXZvaWRpbmcKCWR1cGxpY2F0ZXMgYW5kIHNpbXBsZSBhY2N1bXVsYXRpb24uCgkoZnJlZV9zc2Ffb3BlcmFuZHMpOiBGcmVlIHZlY3RvcnMgaW4gYSBzdG10X29wZXJhbmQgc3RydWN0dXJlLgoJKGJ1aWxkX3NzYV9vcGVyYW5kcyk6IE5ldy4gQ3JlYXRlIGEgbmV3IHN0bXRfb3BlcmFuZCBzdHJ1Y3R1cmUgZnJvbQoJYSBzdG10IGFuZCBhbiBvbGQgc2V0IG9mIHN0bXRfb3BlcmFuZHMuCgkoZ2V0X3N0bXRfb3BlcmFuZHMpOiBTaW1wbGlmeSBhbmQgY2FsbCBidWlsZF9zc2Ffb3BlcmFuZHMuCgkoZ2V0X2V4cHJfb3BlcmFuZHMsIGdldF9hc21fZXhwcl9vcGVyYW5kcywgZ2V0X2luZGlyZWN0X3JlZl9vcGVyYW5kcywKCWdldF9jYWxsX2V4cHJfb3BlcmFuZHMsIGFkZF9zdG10X29wZXJhbmQsIGFkZF9jYWxsX2Nsb2JiZXJfb3BzLAoJYWRkX2NhbGxfcmVhZF9vcHMpOiBEb24ndCBwYXNzIHByZXZfdm9wcyBhcm91bmQgYW55bW9yZS4KCShub3RlX2FkZHJlc3NhYmxlKTogUmV0dXJuIGlmIG5vIHN0bXQgYW5ub3RhdGlvbi4KCShjb3B5X3ZpcnR1YWxfb3BlcmFuZHMpOiBBY2Nlc3Mgdl9tYXlfZGVmIG9wZXJhbmRzIHRocm91Z2ggYSBzdHJ1Y3QuCgkoY3JlYXRlX3NzYV9hcnRmaWNpYWxfbG9hZF9zdG10KTogTmV3LiAgQ3JlYXRlIGEgbG9hZCBzdG10IGZvciBET00ncwoJaGFzaCB0YWJsZXMgd2l0aG91dCB0cmVhdGluZyB0aGUgc3RtdCBhcyBhIHJlYWwgc3RtdC4KCSogdHJlZS1zc2Etb3BlcmFuZHMuaCAoc3RydWN0IHZfbWF5X2RlZl9vcGVyYW5kX3R5cGUpOiBOZXcuICBBY2Nlc3MKCXZfbWF5X2RlZiBkZWYgYW5kIHVzZSB0aHJvdWdoIGEgc3RydWN0IGluc3RlYWQgb2YgMiBhcnJheSBlbGVtZW50cy4KCShzdHJ1Y3Qgdl9tYXlfZGVmX29wdHlwZV9kKTogVXNlIHZfbWF5X2RlZl9vcGVyYW5kX3R5cGUuCgkoc3RydWN0IHN0bXRfb3BlcmFuZHNfZCk6IE5ldy4gIFN0cnVjdCBmb3Igc3RvcmluZyBhbGwgb3BlcmFuZCB2ZWN0b3JzLgoKMjAwNC0wOC0xMSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9pc19sb25nY2FsbF9wKTogVXBkYXRlIGNvbW1lbnQgZGVzY3JpYmluZwoJdGhpcyBmdW5jaXRvbidzIGJlaGF2aW91ci4gIFJldHVybiB0cnVlIHdoZW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24KCWhhcyBhIHNlY3Rpb24gYXR0cmlidXRlIGFuZCAtbWxvbmctY2FsbHMgaXMgaW4gZWZmZWN0LgoJKiBjb25maWcvYXJtL2FybS5oIChBUk1fREVDTEFSRV9GVU5DVElPTl9TSVpFKTogRG8gbm90IHNldCB0aGUKCXNob3J0LWNhbGwgbWFya2VyIHdoZW4gLW1sb25nLWNhbGxzIGlzIGluIGVmZmVjdCBhbmQgdGhlIGZ1bmN0aW9uCgloYXMgYSBzZWN0aW9uIGF0dHJpYnV0ZS4KCjIwMDQtMDgtMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzdG10LmMgKGV4cGFuZF9yZXR1cm4pOiBJZiBhc2tlZCB0byByZXR1cm4gdGhlIFJFU1VMVF9ERUNMLAoJanVzdCBjYWxsIGV4cGFuZF92YWx1ZV9yZXR1cm4gb24gcmVzdWx0X3J0bC4KCjIwMDQtMDgtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX1NUQUNLX0FMTE9DKTogUmVtb3ZlLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbikgPEJVSUxUX0lOX1NUQUNLX0FMTE9DPjogUmVtb3ZlLgoJKiBkd2FyZjJvdXQuYyAobG9jX2Rlc2NyaXB0b3IpOiBIYW5kbGUgUEFSQUxMRUwgaGVyZSAuLi4KCShhZGRfbG9jYXRpb25fb3JfY29uc3RfdmFsdWVfYXR0cmlidXRlKTogLi4uIG5vdCBoZXJlLiAgVXNlCglsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUgaWYgcG9zc2libGUuCgkobG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlXzEpOiBSZW5hbWUgZnJvbSBsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUuCglTaW1wbGlmeSBhZGRyZXNzIGhhbmRsaW5nLiAgSGFuZGxlIERFQ0xfVkFMVUVfRVhQUi4gIEhhbmRsZSByZWdpc3RlcgoJdmFsdWVzIHNwZWNpYWxseS4KCShsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUpOiBOZXcuICBVcGRhdGUgY2FsbGVycy4KCSogZXhwci5jIChleHBhbmRfdmFyKTogSWdub3JlIERFQ0xfVkFMVUVfRVhQUiB2YXJpYWJsZXMuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2RlY2xfZXhwcik6IExvd2VyIHZhcmlhYmxlIHNpemVkIHR5cGVzIHRvCglwb2ludGVyIHBsdXMgZGVyZWZlcmVuY2UuICBTZXQgREVDTF9WQUxVRV9FWFBSLiAgU2V0IHNhdmVfc3RhY2suCgkoZ2ltcGxpZnlfY2FsbF9leHByKTogRG8gbm90IHJlY29nbml6ZSBCVUlMVF9JTl9TVEFDS19BTExPQwoJYW5kIEJVSUxUX0lOX1NUQUNLX1JFU1RPUkUuCgkoZ2ltcGxpZnlfZXhwcik6IExvd2VyIERFQ0xfVkFMVUVfRVhQUiBkZWNscy4KCSogc3RtdC5jIChleHBhbmRfc3RhY2tfYWxsb2MpOiBSZW1vdmUuCgkqIHRyZWUtbXVkZmxhcC5jIChteF9yZWdpc3Rlcl9kZWNscyk6IERvbid0IGxvb2sgZm9yCglCVUlMVF9JTl9TVEFDS19BTExPQy4KCSogdHJlZS1uZXN0ZWQuYyAoY29udmVydF9sb2NhbF9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogdHJlZS5oIChERUNMX1ZBTFVFX0VYUFIpOiBOZXcuCgoyMDA0LTA4LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAocm91bmRfdXApOiBDaGVjayBmb3IgMC8xIGJlZm9yZSBkaXZpZGluZy4KCShyb3VuZF9kb3duKTogTGlrZXdpc2UuCgoJKiB0cmVlLXRhaWxjYWxsLmMgKHN1aXRhYmxlX2Zvcl90YWlsX29wdF9wKTogQWxzbyBjaGVjayBERUNMX0VYVEVSTkFMLgoKMjAwNC0wOC0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKGFybSotKi1lYWJpKik6IE5ldyB0YXJnZXQuCgkqIGRlZmF1bHRzLmggKFRBUkdFVF9MSUJHQ0NfRlVOQ1MpOiBOZXcgbWFjcm8uCgkoVEFSR0VUX0xJQl9JTlRfQ01QX0JJQVNFRCk6IExpa2V3aXNlLgoJKiBleHBtZWQuYyAoZXhwYW5kX2Rpdm1vZCk6IFRyeSBhIHR3by12YWx1ZWQgZGl2bW9kIGZ1bmN0aW9uIGFzIGEKCWxhc3QgcmVzb3J0LgoJKiBndGhyLmg6IFJlbW92ZSBib2d1cyB0b2tlbnMgYXQgZW5kIG9mICNwcmFnbWEuCgkqIG9wdGFicy5jIChleHBhbmRfdHdvdmFsX2Jpbm9wX2xpYmZ1bmMpOiBOZXcgZnVuY3Rpb24uCgkocHJlcGFyZV9jbXBfaW5zbik6IEhhbmRsZSB0aGUgIVRBUkdFVF9MSUJfSU5UX0NNUF9CSUFTRUQgY2FzZS4KCShwcmVwYXJlX2Zsb2F0X2xpYl9jbXApOiBUcnkgcmV2ZXJzaW5nIHRoZSBjb25kaXRpb24uCgkoZGVidWdfb3B0YWJfbGliZnVuY3MpOiBOZXcgZnVuY3Rpb24uCgkqIG9wdGFicy5oIChleHBhbmRfdHdvdmFsX2Jpbm9wX2xpYmZ1bmMpOiBEZWNsYXJlLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1faW5pdF9saWJmdW5jcyk6IE5ldyBmdW5jdGlvbi4KCShhcm1fY29tcHV0ZV9pbml0aWFsX2VsaW1pbmF0aW5vX29mZnNldCk6IFJldHVybiBIT1NUX1dJREVfSU5ULgoJKFRBUkdFVF9JTklUX0xJQkZVTkNTKTogRGVmaW5lIGl0LgoJKiBjb25maWcvYXJtL2FybS5oIChUQVJHRVRfQlBBQkkpOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oCgkoYXJtX2NvbXB1dGVfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBSZXR1cm4gSE9TVF9XSURFX0lOVC4KCSogY29uZmlnL2FybS9icGFiaS5TOiBOZXcgZmlsZS4KCSogY29uZmlnL2FybS9icGFiaS5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9icGFiaS5oOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9pZWVlNzU0LWRmLlMgKF9fYWVhYmlfZG5lZyk6IE5ldyBmdW5jdGlvbiBvciBhbGlhcy4KCShfX2FlYWJpX2Ryc3ViKTogTGlrZXdpc2UuCgkoX19hZWFiaV9kc3ViKTogTGlrZXdpc2UuCgkoX19hZWFiaV9kYWRkKTogTGlrZXdpc2UuCgkoX19hZWFiaV91aTJkKTogTGlrZXdpc2UuCgkoX19hZWFiaV9pMmQpOiBMaWtld2lzZS4KCShfX2FlYWJpX2YyZCk6IExpa2V3aXNlLgoJKF9fYWVhYmlfZG11bCk6IExpa2V3aXNlLgoJKF9fYWVhYmlfZGRpdik6IExpa2V3aXNlLgoJKF9fYWVhYmlfY2RyY21wbGUpOiBMaWtld2lzZS4KCShfX2FlYWJpX2NkY21wZXEpOiBMaWtld2lzZS4KCShfX2FlYWJpX2NkY21wbGUpOiBMaWtld2lzZS4KCShfX2FlYWJpX2RjbXBlcSk6IExpa2V3aXNlLgoJKF9fYWVhYmlfZGNtcGx0KTogTGlrZXdpc2UuCgkoX19hZWFiaV9kY21wbGUpOiBMaWtld2lzZS4KCShfX2FlYWJpX2RjbXBnZSk6IExpa2V3aXNlLgoJKF9fYWVhYmlfZGNtcGd0KTogTGlrZXdpc2UuCgkoX19hZWFiaV9kY21wdW4pOiBMaWtld2lzZS4KCShfX2FlYWJpX2QyaXopOiBMaWtld2lzZS4KCShfX2FlYWJpX2QydWl6KTogTGlrZXdpc2UuCgkoX19hZWFiaV9kMmYpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9pZWVlNzU0LXNmLlMgKF9fYWVhYmlfZm5lZyk6IE5ldyBmdW5jdGlvbiBvciBhbGlhcy4KCShfX2FlYWJpX2Zyc3ViKTogTGlrZXdpc2UuCgkoX19hZWFiaV9mc3ViKTogTGlrZXdpc2UuCgkoX19hZWFiaV9mYWRkKTogTGlrZXdpc2UuCgkoX19hZWFiaV91aTJmKTogTGlrZXdpc2UuCgkoX19hZWFiaV9pMmYpOiBMaWtld2lzZS4KCShfX2FlYWJpX2ZtdWwpOiBMaWtld2lzZS4KCShfX2FlYWJpX2ZkaXYpOiBMaWtld2lzZS4KCShfX2FlYWJpX2NmcmNtcGxlKTogTGlrZXdpc2UuCgkoX19hZWFiaV9jZmNtcGVxKTogTGlrZXdpc2UuCgkoX19hZWFiaV9jZmNtcGxlKTogTGlrZXdpc2UuCgkoX19hZWFiaV9mY21wZXEpOiBMaWtld2lzZS4KCShfX2FlYWJpX2ZjbXBsdCk6IExpa2V3aXNlLgoJKF9fYWVhYmlfZmNtcGxlKTogTGlrZXdpc2UuCgkoX19hZWFiaV9mY21wZ2UpOiBMaWtld2lzZS4KCShfX2FlYWJpX2ZjbXBndCk6IExpa2V3aXNlLgoJKF9fYWVhYmlfZmNtcHVuKTogTGlrZXdpc2UuCgkoX19hZWFiaV9mMml6KTogTGlrZXdpc2UuCgkoX19hZWFiaV9mMnVpeik6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2xpYjFmdW5jcy5hc20gKEFSTV9DQUxMKTogTmV3IG1hY3JvLgoJKF9fYWVhYmlfdWlkaXZtb2QpOiBOZXcgZnVuY3Rpb24gb3IgYWxpYXMuCgkoX19hZWFiaV9pZGl2bW9kKTogTGlrZXdpc2UuCgkoX19hZWFiaV9pZGl2MCk6IExpa2V3aXNlLgoJKF9fYWVhYmlfbGRpdjApOiBMaWtld2lzZS4KCShfX2FlYWJpX2xsc3IpOiBMaWtld2lzZS4KCShfX2FlYWJpX2xhc3IpOiBMaWtld2lzZS4KCShfX2FlYWJpX2xsc2wpOiBMaWtld2lzZS4KCShicGFiaS5TKTogSW5jbHVkZSBpdC4KCSogY29uZmlnL2FybS9saWJnY2MtYnBhYmkudmVyOiBOZXcgZmlsZS4KCSogY29uZmlnL2FybS9zeW1iaWFuLmggKEFSTV9ERUZBVUxUX0FCSSk6IFJlbW92ZS4KCShMSU5LX1NQRUMpOiBSZW1vdmUuCgkqIGNvbmZpZy9hcm0vdC1hcm0tZWxmIChMSUIxQVNNRlVOQ1MpOiBBZGQgX19hZWFiaV9sY21wIGFuZAoJX19hZWFiaV91bGNtcC4KCSogY29uZmlnL2FybS90LWJwYWJpOiBOZXcgZmlsZS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9MSUJHQ0NfRlVOQ1MpOiBOZXcgZW50cnkuCgkoVEFSR0VUX0xJQl9JTlRfQ01QX0JJQVNFRCk6IExpa2V3aXNlLgoKMjAwNC0wOC0xMCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKGV4cGFuZF9ibG9ja19jbGVhcik6IERlY2xhcmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChjbHJtZW1zaSk6IE5ldyBwYXR0ZXJuLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChleHBhbmRfYmxvY2tfY2xlYXIpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2Jsb2NrX21vdmUpOiBDb252ZXJ0IGFsaWdubWVudCB0byBiaXRzLiAgVXNlIFNJbW9kZSBhbmQKCUhJbW9kZSBmb3IgdW5hbGlnbmVkIGFkZHJlc3NlcyBpZiBub3QgU1RSSUNUX0FMSUdOTUVOVC4KCjIwMDQtMDgtMTAgIENhcm9saW5lIFRpY2UgIDxjdGljZUBhcHBsZS5jb20+CgoJKiB2YXJhc20uYyAodW5saWtlbHlfc2VjdGlvbl9sYWJlbCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkodW5saWtlbHlfdGV4dF9zZWN0aW9uX25hbWUpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKHRleHRfc2VjdGlvbik6IFJlbW92ZSBhbGlnbm1lbnQgc3RhdGVtZW50LgoJKHVubGlrZWx5X3RleHRfc2VjdGlvbik6IFJlbW92ZSBhbGlnbm1lbnQgc3RhdGVtZW50OyB1c2UKCXVubGlrZWx5X3NlY3Rpb25fbGFiZWwgcmF0aGVyIHRoYW4gaGFyZC1jb2RlZCBzdHJpbmcuCgkoYXNzZW1ibGVfc3RhcnRfZnVuY3Rpb24pOiBJbml0aWFsaXplIHVubGlrZWx5X3NlY3Rpb25fbGFiZWwgYW5kCgl1bmxpa2VseV90ZXh0X3NlY3Rpb25fbmFtZTsgIG1ha2Ugc3VyZSBjb2xkIHNlY3Rpb24gaXMgcHJvcGVybHkKCWFsaWduZWQgYXQgc3RhcnQgb2YgZnVuY3Rpb247IG91dHB1dCB1bmxpa2VseV9zZWN0aW9uX2xhYmVsIGlmCglhcHByb3ByaWF0ZS4KCjIwMDQtMDgtMTAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfY2Fub25pY2FsaXplX2NvbXBhcmlzb24pOiBEZWNsYXJlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfY2Fub25pY2FsaXplX2NvbXBhcmlzb24pOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoQ0FOT05JQ0FMSVpFX0NPTVBBUklTT04pOiBEZWZpbmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqdG1kaV9leHQiLCAiKnRtc2lfZXh0IiwgIip0bXFpc2lfZXh0IiwKCSIqdG1xaWRpX2V4dCIsICIqdG1kaV9tZW0iLCAiKnRtc2lfbWVtIiwgIip0bWhpX21lbSIpOiBSZW1vdmUuCgkoIip0bXFpX21lbSIpOiBSZW1vdmUgU1VCUkVHIGZyb20gcGF0dGVybi4KCSgiKmFuZGRpM19jY29ubHkiKTogUHJldmVudCBhY2NpZGVudGFsbHkgbWF0Y2hpbmcgVE0gcGF0dGVybi4KCSgiKmFuZHNpM19jY29ubHkiKTogTGlrZXdpc2UuCgoyMDA0LTA4LTEwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgdGFyZ2V0LzE2OTA5CgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpzdHJzZXRkaV9yZXhfMSk6IFVzZSBESSBpbnN0ZWFkIG9mIFNJLgoKMjAwNC0wOC0xMCAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aSAoY29tcGF0IHRlc3RpbmcpOiBEb2N1bWVudCBhdmFpbGFibGUgdGVzdAoJZnJhbWV3b3JrIGNvbW1hbmRzLiAgVXNlIHRoZSBwcmVmZXJyZWQgc3BlbGxpbmcgb2YgRGVqYUdudS4KCjIwMDQtMDgtMTAgIERhbmllbCBCZXJsaW4gPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBsYW1iZGEuaDogQWRkIG1hdHJpeCB0eXBlLCBhbmQgcHJvdG90eXBlcyBmb3IgcmVtYWluZGVyIG9mCgltYXRyaXggYW5kIHZlY3RvciBmdW5jdGlvbnMuCgkobGFtYmRhX3ZlY3Rvcl9tdWx0X2NvbnN0KTogTmV3IGZ1bmN0aW9uLgoJKGxhbWJkYV92ZWN0b3JfbmVnYXRlKTogRGl0dG8uCgkobGFtYmRhX3ZlY3Rvcl9hZGQpOiBEaXR0by4KCShsYW1iZGFfdmVjdG9yX2FkZF9tYyk6IERpdHRvLgoJKGxhbWJkYV92ZWN0b3JfY29weSk6IERpdHRvLgoJKGxhbWJkYV92ZWN0b3JfemVyb3ApOiBEaXR0by4KCShsYW1iZGFfdmVjdG9yX2VxdWFsKTogRGl0dG8uCgkobGFtYmRhX3ZlY3Rvcl9taW5fbnopOiBEaXR0by4KCShsYW1iZGFfdmVjdG9yX2ZpcnN0X256KTogRGl0dG8uCgkobGFtYmRhX3ZlY3Rvcl9tYXRyaXhfbXVsdCk6IERpdHRvLgoJKiBsYW1iZGEtbWF0LmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAobGFtYmRhLW1hdC5vKTogTmV3LgoKMjAwNC0wOC0xMCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEByZWRoYXQuY29tPgoKCSogdHJlZS1jZmcuYyAoYnNpX2luc2VydF9iZWZvcmUsIGJzaV9pbnNlcnRfYWZ0ZXIpOiBDYWxsIG1vZGlmeV9zdG10CglhZnRlciBsaW5raW5nIHN0bXQgaW50byB0aGUgcHJvZ3JhbS4KCShic2lfcmVtb3ZlKTogRG9uJ3QgY2FsbCBtb2RpZnlfc3RtdC4KCSogdHJlZS1jb21wbGV4LmMgKHVwZGF0ZV9jb21wbGV4X2Fzc2lnbm1lbnQsCglleHBhbmRfY29tcGxleF9jb21wYXJpc29uKTogQ2FsbCBtb2RpZnlfc3RtdCBhZnRlciBjaGFuZ2luZyB0aGUgc3RtdC4KCSogdHJlZS1vdXRvZi1zc2EuYyAocmV3cml0ZV90cmVlcyk6IENhbGwgbW9kaWZ5X3N0bXQgb25seSBpZiBub3QKCXJlbW92aW5nIHRoZSBzdG10LgoJKiB0cmVlLXNzYS1jY3AuYyAoc3Vic3RpdHV0ZV9hbmRfZm9sZCk6IENhbGwgbW9kaWZ5X3N0bXQgYWZ0ZXIgY2hhbmdpbmcKCXRoZSBzdG10LCBhbmQgb25seSBpZiBuZWVkZWQuCgkqIHRyZWUtc3NhLWRvbS5jICh0aHJlYWRfYWNyb3NzX2VkZ2UpOiBQYXNzIG5vIGFubm90YXRpb24gZm9yIGEgZHVtbXkKCWV4cHJlc3Npb24uCgkoc2ltcGxpZnlfcmhzX2FuZF9sb29rdXBfYXZhaWxfZXhwcik6IERvbid0IHRha2UgYW4gYW5ub3RhdGlvbiBwYXJhbS4KCShzaW1wbGlmeV9jb25kX2FuZF9sb29rdXBfYXZhaWxfZXhwcik6IFVzZSBtb2RpZnlfc3RtdC4KCShzaW1wbGlmeV9zd2l0Y2hfYW5kX2xvb2t1cF9hdmFpbF9leHByKTogRG9uJ3QgdGFrZSBhbiBhbm5vdGF0aW9uIHBhcmFtLgoJKGVsaW1pbmF0ZV9yZWR1bmRhbnRfY29tcHV0YXRpb25zKTogRG9uJ3QgcGFzcyBhbiBhbm5vdGF0aW9uLiBDYWxsCgltb2RpZnlfc3RtdCByYXRoZXIgdGhhbiBzZXR0aW5nIHRoZSBhbm5vdGF0aW9uIGRpcmVjdGx5LgoJKHJlY29yZF9lcXVpdmFsZW5jZXNfZnJvbV9zdG10KTogUmVtb3ZlIHVudXNlZCBsb2NhbCAnaicuCgkoY3Byb3Bfb3BlcmFuZCk6IFRha2UgYSBzdG10IHJhdGhlciB0aGFuIGFuIGFubm90YXRpb24gYXMgYSBwYXJhbWV0ZXIuCglDYWxsIG1vZGlmeV9zdG10LgoJKGNwcm9wX2ludG9fc3RtdCk6IFBhc3Mgc3RtdCByYXRoZXIgdGhhbiBhbm5vdGF0aW9uLgoJKHVwZGF0ZV9yaHNfYW5kX2xvb2t1cF9hdmFpbF9leHByKTogQ2FsbCBtb2RpZnlfc3RtdC4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChzY2hlZHVsZV9zbSk6IENhbGwgZ2V0X3N0bXRfYW5uIHJhdGhlciB0aGFuCgltb2RpZnlfc3RtdC4KCSogdHJlZS1zc2EuYyAocHJvcGFnYXRlX2ludG9fYWRkcik6IERvbnQgY2FsbCBtb2RpZnlfc3RtdC4KCjIwMDQtMDgtMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTY5NDgKCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogSGFuZGxlIERFQ0xfQllfUkVGRVJFTkNFIG9uCgl0aGUgUkVTVUxUX0RFQ0wuCgoyMDA0LTA4LTEwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHRyZWUtdm4uYyAodmFsX2V4cHJfcGFpcl9leHByX2VxKTogQ29tcGFyZSB2dXNlcywgdG8gbWF0Y2ggdGhlCgloYXNoIGZ1bmN0aW9uLgoKMjAwNC0wOC0xMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBOZXcgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBwYXR0ZXJucyB0aGF0CgltYXRjaCBzcXJ0KDEuMC94KSBpbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgMS4wL3NxcnQoeCkgaW5zbnMuCgoyMDA0LTA4LTEwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9zZXRfcmV0dXJuX2FkZHJlc3MsCgl0aHVtYl9zZXRfcmV0dXJuX2FkZHJlc3MpOiBBZGQgcHJvdG90eXBlcy4KCSogY29uZmlnL2FybS9hcm0uaCAoQVJNX0ZUX0VYQ0VQVElPTl9IQU5ETEVSKTogUmVtb3ZlLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fY29tcHV0ZV9mdW5jX3R5cGUsCgl1c2VfcmV0dXJuX2luc24sIGFybV9jb21wdXRlX3NhdmVfcmVnMF9yZWcxMl9tYXNrLAoJYXJtX2NvbXB1dGVfc2F2ZV9yZWdfbWFzaywgYXJtX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSwKCWFybV9vdXRwdXRfZXBpbG9ndWUpOiBSZXBsYWNlIEFSTV9GVF9FWENFUFRJT05fSEFORExFUiB3aXRoCgljdXJyZW50X2Z1bmN0aW9uX2NhbGxzX2VoX3JldHVybi4KCSh0aHVtYl9leGl0LCB0aHVtYl9wdXNocG9wLCB0aHVtYl91bmV4cGFuZGVkX2VwaWxvZ3VlKTogUmVwbGFjZQoJb2xkIGVoIGNvZGUuCgkoYXJtX3NldF9yZXR1cm5fYWRkcmVzcywgdGh1bWJfc2V0X3JldHVybl9hZGRyZXNzKTogTmV3IGZ1bmN0aW9ucy4KCSogY29uZmlnL2FybS9hcm0uaCAoTVVTVF9VU0VfU0pMSl9FWENFUFRJT05TLCBEV0FSRjJfVU5XSU5EX0lORk8sCglBUk1fRUhfU1RBQ0tBREpfUkVHTlVNLCBFSF9SRVRVUk5fU1RBQ0tBREpfUlRYKTogRGVmaW5lLgoJKiBjb25maWcvYXJtL2FybS5tZCAoVlVOU1BFQ19FSF9SRVRVUk4pOiBBZGQuCgkoZXBpbG9ndWUpOiBVc2UgdGhlIHN0YWNrYWRqIHJlZ2lzdGVyLgoJKGVoX3JldHVybiwgYXJtX2VoX3JldHVybiwgdGh1bWJfZWhfcmV0dXJuKTogTmV3IHBhdHRlcm4uCgoyMDA0LTA4LTEwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMzE0NAoJKiBleHByLmMgKG1vdmVfYnlfcGllY2VzX25pbnNucyk6IEFkZCBtYXhfc2l6ZSBhcmd1bWVudC4KCShNT1ZFX0JZX1BJRUNFU19QKTogUGFzcyBNT1ZFX01BWF9QSUVDRVMgKyAxIHRvIGl0LgoJKENMRUFSX0JZX1BJRUNFU19QKTogUGFzcyBTVE9SRV9NQVhfUElFQ0VTICsgMSB0byBpdC4KCShTVE9SRV9CWV9QSUVDRVNfUCk6IERlZmluZSBzaW1pbGFybHkgdG8gQ0xFQVJfQllfUElFQ0VTX1AsCglidXQgdXNpbmcgTU9WRV9SQVRJTy4KCShtb3ZlX2J5X3BpZWNlcyk6IFBhc3MgbWF4X3NpemUgdG8gbW92ZV9ieV9waWVjZXNfbmluc25zLgoJKGNhbl9zdG9yZV9ieV9waWVjZXMpOiBDaGFuZ2UgbWF4X3NpemUgdHlwZSB0byB1bnNpZ25lZCBpbnQuCgkoc3RvcmVfYnlfcGllY2VzXzEpOiBMaWtld2lzZS4gIFBhc3MgbWF4X3NpemUgdG8KCW1vdmVfYnlfcGllY2VzX25pbnNucy4KCSogY29uZmlnL3MzOTAvczM5MC5oIChTVE9SRV9CWV9QSUVDRVNfUCk6IERlZmluZS4KCSogY29uZmlnL3NoL3NoLmMgKE1PVkVfQllfUElFQ0VTX1ApOiBQYXNzIE1PVkVfTUFYX1BJRUNFUyArIDEKCXRvIG1vdmVfYnlfcGllY2VzX25pbnNucy4KCShTVE9SRV9CWV9QSUVDRVNfUCk6IERlZmluZS4KCSogY29uZmlnL25zMzJrL25zMzJrLmggKFNUT1JFX0JZX1BJRUNFU19QKTogUGFzcyBTVE9SRV9NQVhfUElFQ0VTICsgMQoJdG8gbW92ZV9ieV9waWVjZXNfbmluc25zLgoJKiBkb2MvdG0udGV4aSAoU1RPUkVfQllfUElFQ0VTX1ApOiBEb2N1bWVudCBjaGFuZ2VkIGRlZmF1bHQuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKENMRUFSX1JBVElPKTogRGVmaW5lLgoKMjAwNC0wOC0wOSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogQWRkIGJhY2sgY29kZSB0aGF0IHdhcyBub3QgZGVhZC4KCjIwMDQtMDgtMDkgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX2dldF9hbGlhc19zZXQpOiBTZXQgdGhlIGFsaWFzaW5nIHNldCBvZiB0aGUgdHlwZQoJd2hpY2ggaXMgZm91bmQgdG8gYmUgY29tcGF0aWJsZSBiZWZvcmUgcmV0dXJuaW5nIHRoZSBhbGlhc2luZyBzZXQuCgoyMDA0LTA4LTA5ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBkZWJpYW4ub3JnPgoKCSogZ2djLXpvbmUuYyAoc3RydWN0IGFsbG9jX3pvbmUpOiBBZGQgc3RhdGlzdGljcyBjb3VudGVycy4KCShhbHdheXNfY29sbGVjdCk6IE5ldyBmbGFnLgoJKGdnY19hbGxvY196b25lXzEpOiBVcGRhdGUgc3RhdGlzdGljcyBzdXBwb3J0LiAgRG9uJ3QgaW5jbHVkZQoJb3ZlcmhlYWQgaW4gYWxsb2NhdGVkIGNvdW50ZXIuCgkoc3dlZXBfcGFnZXMpOiBVcGRhdGUgYWxsb2NhdGVkIGNvdW50ZXIgZm9yIGxhcmdlIHBhZ2VzLiAgRG9uJ3kKCWluY2x1ZGUgb3ZlcmhlYWQuCgkoZ2djX2NvbGxlY3RfMSk6IEFsd2F5cyBjb2xsZWN0LgoJKGdnY19jb2xsZWN0KTogSG9ub3IgYWx3YXlzX2NvbGxlY3QgZmxhZy4gIFN1bSBhbGwgem9uZXMgdG8gZGVjaWRlCgl3aGV0aGVyIHRvIGNvbGxlY3QuCgkoU0NBTEUsIExBQkVMKTogTmV3IG1hY3Jvcy4KCShnZ2NfcHJpbnRfc3RhdGlzdGljcyk6IEFkZCBzdGF0aXN0aWNzIHN1cHBvcnQuCgoyMDA0LTA4LTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cG1lZC5jIChzZGl2X3BvdzJfY2hlYXAsIHNtb2RfcG93Ml9jaGVhcCk6IENoYW5nZSB0eXBlIHRvIGJvb2wuCgkoaW5pdF9leHBtZWQpOiBGaXggcG90ZW50aWFsIG92ZXJydW4gcHJvYmxlbSB3aXRoICJhbGwucmVnIi4KCShleHBhbmRfc2RpdjJfcG93Mik6IEFkZCBhbiBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb24gZm9yIHNpZ25lZAoJZGl2aXNpb24sIGlmIHRoZSB0YXJnZXQgcHJvdmlkZXMgYSBzdWl0YWJsZSBjb25kaXRpb25hbCBtb3ZlIGluc24uCgoyMDA0LTA4LTA5ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoJUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHVud2luZC1kdzIuYyAodXdfaW5zdGFsbF9jb250ZXh0XzEpOiBVcGRhdGUgdGFyZ2V0IHNhdmVkIHN0YWNrCglwb2ludGVyLgoKMjAwNC0wOC0wOSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBnZ2MtY29tbW9uLmMgKGdnY19ybGltaXRfYm91bmQpOiBEb24ndCBjaGVjayBSU1MgbGltaXQuCglDaGVjayBEQVRBIGxpbWl0IG9ubHkgaWYgdGhlcmUncyBubyBBUyBsaW1pdC4gIElnbm9yZSBpbnNhbmVseQoJbG93IERBVEEgbGltaXRzLgoJKGdnY19taW5faGVhcHNpemVfaGV1cmlzdGljKTogRG9uJ3QgZGl2aWRlIEFTIG9yIFJTUyBsaW1pdHMgYnkgOCwKCWJ1dCB0YWtlIGNhcmUgdGhhdCB0aGUgQVMgbGltaXQgaXNuJ3Qgb3ZlcnJ1bi4KCSogZG9jL2ludm9rZS50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBvZiBtaW4taGVhcHNpemUgcGFyYW1ldGVyLgoKMjAwNC0wOC0wOSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChPQkpDLWNvbW1vbik6IEFkZCB0cmVlLXNzYS10aHJlYWR1cGRhdGUuYwoJKHRyZWUtc3NhLXRocmVhZHVwZGF0ZS5vKTogQWRkIGRlcGVuZGVuY2llcy4KCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmM6IE5ldyBmaWxlLgoJKiB0cmVlLWZsb3cuaCAoaW5jb21pbmdfZWRnZV90aHJlYWRlZCk6IE5ldyBmbGFnIGluIGJsb2NrIGFubm90YXRpb24uCgkocmV3cml0ZV92YXJzX291dF9vZl9zc2EpOiBSZW1vdmUgcHJvdG90eXBlLgoJKGNsZWFudXBfdHJlZV9jZmcpOiBSZXR1cm5zIGEgYm9vbC4KCSogdHJlZS5oICh0aHJlYWRfdGhyb3VnaF9hbGxfYmxvY2tzKTogUHJvdG90eXBlLgoJKiB0cmVlLW91dG9mLXNzYS5jICAoU1NBTk9STV8qKTogTW92ZSBpbnRvIGhlcmUuCgkocmVtb3ZlX3NzYV9mb3JtKTogTm93IHN0YXRpYy4KCShyZXdyaXRlX3ZhcnNfb3V0X29mX3NzYSk6IEtpbGwuCgkqIHRyZWUtc3NhLWxpdmUuYyAocmVnaXN0ZXJfc3NhX3BhcnRpdGlvbnNfZm9yX3ZhcnMpOiBLaWxsLgoJKiB0cmVlLXNzYS1saXZlLmggKFNTQU5PUk1fKik6IE1vdmVkIGludG8gdHJlZS1vdXRvZi1zc2EuYy4KCShyZW1vdmVfc3NhX2Zvcm0sIHJlZ2lzdGVyX3BhcnRpdGlvbnNfZm9yX3ZhcnMpOiBLaWxsIGRlY2xhcmF0aW9ucy4KCSogdHJlZS1jZmcuYyAoY2xlYW51cF90cmVlX2NmZyk6IFJldHVybiBhIHZhbHVlIGluZGljYXRpbmcgaWYKCWFueXRoaW5nIHdhcyBjaGFuZ2VkLgoJKiB0cmVlLXBoaW5vZGVzLmMgKGFkZF9waGlfYXJnKTogR2V0IHRoZSBibG9jayBmb3IgdGhlIFBISQoJZnJvbSB0aGUgUEhJJ3MgYW5ub3RhdGlvbiByYXRoZXIgdGhhbiB0aGUgZWRnZSBhc3NvY2lhdGVkIHdpdGgKCXRoZSBuZXcgYXJndW1lbnQuCgkqIHRyZWUtc3NhLWRvbS5jIChyZWRpcmVjdGlvbl9lZGdlcyk6IEtpbGwuCgkocmVkaXJlY3RfZWRnZXNfYW5kX3VwZGF0ZV9zc2FfZ3JhcGgpOiBLaWxsLgoJKHRyZWVfc3NhX2RvbWluYXRvcl9vcHRpbWl6ZSk6IERvIG5vdCByZXNldCBmb3J3YXJkYWJsZSBmbGFnCglmb3IgYmxvY2tzIGFueW1vcmUuICBEbyBub3QgaW5pdGlhbGl6ZSByZWRpcmVjdGlvbl9lZGdlcy4KCUNhbGwgdGhyZWFkX3Rocm91Z2hfYWxsX2Jsb2Nrcy4gIFNpbXBsaWZ5IGNvZGUgZm9yIGNsZWFudXAKCW9mIHRoZSBDRkcgYW5kIGl0ZXJhdGluZy4gIE5vIGxvbmdlciBjYWxsIGNsZWFudXBfdHJlZV9jZmcKCW91dHNpZGUgdGhlIGl0ZXJhdGlvbiBsb29wLgoJKHRocmVhZF9hY3Jvc3NfZWRnZSk6IE5vIGxvbmdlciBtZXNzIHdpdGggZm9yd2FyZGFibGUgYmxvY2tzLgoKMjAwNC0wOC0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4cGxvdy5jIChtZW1vcnlfYWRkcmVzcyk6IFVzZSBtZW1vcnlfYWRkcmVzc19wLgoJKiByZWNvZy5jIChnZW5lcmFsX29wZXJhbmQpOiBMaWtld2lzZS4KCSogcmVncmVuYW1lLmM6IE5vIG5lZWQgdG8gZGVmaW5lIFJFR19PS19TVFJJQ1QuCgoyMDA0LTA4LTA5ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiB0aW1ldmFyLmRlZiAoVFZfQ1BST1AxLCBUVl9DUFJPUDIsIFRWX1BSRSwgVFZfSE9JU1QsIFRWX0xTTSk6CglOZXcgdGltZXJzLgoJKiBnY3NlLmM6IEluY2x1ZGUgdGltZXZhci5oLgoJKGNvbnN0X3Byb3BfY291bnQsIGNvcHlfcHJvcF9jb3VudCk6IFJlbmFtZSB0byBnbG9iYWxfY29uc3RfcHJvcF9jb3VudAoJYW5kIGdsb2JhbF9jb3B5X3Byb3BfY291bnQuCgkobG9jYWxfY29uc3RfcHJvcF9jb3VudCwgbG9jYWxfY29weV9wcm9wX2NvdW50KTogTmV3IHN0YXRpYyBnbG9iYWxzLgoJKGdjc2VfbWFpbik6IFNldCB0aGUgcmlnaHQgdGltZXZhciBmb3IgZWFjaCBwYXNzLgoJKGNwcm9wX2p1bXApOiBJbmNyZW1lbnQgZ2xvYmFsX2NvbnN0X3Byb3BfY291bnQgd2hlbiBhIGNvbnN0YW50IGlzCglwcm9wYWdhdGVkLiAgQWRkICJHTE9CQUwiIHRvIGR1bXAgb3V0cHV0LgoJKGNwcm9wX2luc24pOiBJbmNyZW1lbnQgZ2xvYmFsX2NvbnN0X3Byb3BfY291bnQgd2hlbiBhIGNvbnN0YW50IGlzCglwcm9wYWdhdGVkLCBvciBnbG9iYWxfY29weV9wcm9wX2NvdW50IHdoZW4gYSBjb3B5IGlzIHByb3BhZ2F0ZWQuCgkoZG9fbG9jYWxfY3Byb3ApOiBMaWtld2lzZSBmb3IgbG9jYWxfY29uc3RfcHJvcF9jb3VudCBhbmQKCWxvY2FsX2NvcHlfcHJvcF9jb3VudC4KCShvbmVfY3Byb3BfcGFzcyk6IEluaXRpYWxpemUgY29uc3QvY3Byb3AgY291bnRlcnMgdG8gemVyby4KCVByaW50IG91dCByZXN1bHRzIG9mIGxvY2FsIGFuZCBnbG9iYWwgY29uc3QvY3Byb3Agc2VwYXJhdGVseS4KCShieXBhc3NfYmxvY2spOiBCcmVhayBvdmVyLWxlbmd0aCBsaW5lLgoJKiBNYWtlZmlsZS5pbiAoZ2NzZS5vKTogQWRkIFRJTUVWQVJfSCBkZXBlbmRlbmN5LiAgRml4IGRlcGVuZGVuY2llcwoJZm9yIGJiLXJlb3JkZXIubyBhbmQgdHJhY2VyLm8uCgoyMDA0LTA4LTA5ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKEdURklMRVMpOiBSZW1vdmUgc3RtdC5jCgkoc3RtdC5vKTogRG8gbm90IGRlcGVuZCBvbiBndC1zdG10LmguCgkqIGVtaXQtcnRsLmMgKGVtaXRfbGluZV9ub3RlKTogRG8gbm90IGNhbGwKCXNldF9maWxlX2FuZF9saW5lX2Zvcl9zdG10LgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSkgPFNXSVRDSF9FWFBSPjogTGV0IGV4cGFuZF9jYXNlCglkbyBldmVyeXRoaW5nLgoJKiBmdW5jdGlvbi5jIChmcmVlX2FmdGVyX3BhcnNpbmcpOiBEbyBub3QgZnJlZSBTVE1UIGZpZWxkLgoJKGFsbG9jYXRlX3N0cnVjdF9mdW5jdGlvbik6IERvIG5vdCBjYWxsIGluaXRfc3RtdF9mb3JfZnVuY3Rpb24uCgkoYXNzaWduX3N0YWNrX3RlbXBfZm9yX3R5cGUpOiBEbyBub3QgYWNjZXB0IHZhbHVlcyBvZiBrZWVwCglvdGhlciB0aGFuIDAgb3IgMS4KCShpbml0X3RlbXBfc2xvdHMpOiBEbyBub3QgaW5pdGlhbGl6ZSByZW1vdmVkIHZhcmlhYmxlcy4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIFNUTVQsIFhfVEFSR0VUX1RFTVBfU0xPVF9MRVZFTAoJYW5kIFhfVkFSX1RFTVBfU0xPVF9MRVZFTCBmaWVsZHMuCgkqIHJ0bC5oIChzZXRfZmlsZV9hbmRfbGluZV9mb3Jfc3RtdCk6IFJlbW92ZS4KCSogc3RtdC5jIChzdHJ1Y3QgbmVzdGluZywgQUxMT0NfTkVTVElORywgUE9QU1RBQ0ssCglzdHJ1Y3Qgc3RtdF9zdGF0dXMsIGNvbmRfc3RhY2ssIGNhc2Vfc3RhY2ssIG5lc3Rpbmdfc3RhY2ssCgluZXN0aW5nX2RlcHRoLCBlbWl0X2xvY3VzLCBzZXRfZmlsZV9hbmRfbGluZV9mb3Jfc3RtdCwKCXNhbWVfY2FzZV90YXJnZXRfcCwgaW5pdF9zdG10X2Zvcl9mdW5jdGlvbiwgZW1pdF9ub3AsCglleHBhbmRfc3RhcnRfY29uZCwgZXhwYW5kX3N0YXJ0X2Vsc2VpZiwgZXhwYW5kX3N0YXJ0X2Vsc2UsCglleHBhbmRfZWxzZWlmLCBleHBhbmRfZW5kX2NvbmQpOiBSZW1vdmUuCgkocHJlc2VydmVfc3ViZXhwcmVzc2lvbnNfcCk6IFJlbW92ZSByZWZlcmVuY2VzIHRvIENGVU4tPlNUTVQuCgkoZXhwYW5kX3N0YXJ0X2Nhc2UsIGV4cGFuZF9lbmRfY2FzZV90eXBlKTogUmVtb3ZlLCBtZXJnZSBpbnRvLi4uCgkoZXhwYW5kX2Nhc2UpOiAuLi4gdGhpcyBvbmUsIGluY2x1ZGluZyBvdGhlciBiaXRzIGZyb20KCWV4cGFuZF9leHByX3JlYWxfMS4gIElubGluZSBzYW1lX2Nhc2VfdGFyZ2V0X3AuICBUdXJuIG1lbWJlcnMKCW9mIENBU0VfU1RBQ0sgaW50byBsb2NhbCB2YXJpYWJsZXMuCgkoZW1pdF9jYXNlX2JpdF90ZXN0cyk6IElubGluZSBzYW1lX2Nhc2VfdGFyZ2V0X3AuCgkoYWRkX2Nhc2Vfbm9kZSk6IEFkZCBIRUFEIGFyZ3VtZW50LCByZXR1cm4gbmV3IGhlYWQgb2YgdGhlIGxpc3QsCglkbyBub3QgaGFuZGxlIGRlZmF1bHQgbGFiZWwgaGVyZS4KCSogdHJlZS5oIChleHBhbmRfc3RhcnRfY29uZCwgZXhwYW5kX2VuZF9jb25kLCBleHBhbmRfc3RhcnRfZWxzZSwKCWV4cGFuZF9zdGFydF9lbHNlaWYsIGN1cnJlbnRfbmVzdGluZ19sZXZlbCwgZXhwYW5kX3N0YXJ0X2Nhc2UsCglleHBhbmRfZW5kX2Nhc2VfdHlwZSwgZXhwYW5kX2VuZF9jYXNlLCBhZGRfY2FzZV9ub2RlLAoJaW5pdF9zdG10X2Zvcl9mdW5jdGlvbiwgZXhwYW5kX2Vsc2VpZik6IFJlbW92ZSBwcm90b3R5cGVzLgoJKGV4cGFuZF9jYXNlKTogQWRkIHByb3RvdHlwZS4KCjIwMDQtMDgtMDkgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSk6IFVzZSBvcHRhYl9mb3JfdHJlZV9jb2RlLgoKMjAwNC0wOC0wOSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGV4cHIuYyAodmFyX3J0eCk6IFJlbW92ZS4KCShleHBhbmRfZXhwcl9yZWFsXzEpIDxMT09QX0VYUFIsIEVYSVRfRVhQUiwKCUxBQkVMRURfQkxPQ0tfRVhQUiwgRVhJVF9CTE9DS19FWFBSLCBUUlVUSF9BTkRJRl9FWFBSLAoJVFJVVEhfT1JJRl9FWFBSLCBDT01QT1VORF9FWFBSLCBDT05KX0VYUFIsIElOSVRfRVhQUj46CglBYm9ydC4KCShleHBhbmRfZXhwcl9yZWFsXzEpIDxDT05EX0VYUFI+OiBSZW1vdmUgbW9zdCBzcGVjaWFsIGNhc2VzLgoJKiBvcHRhYnMuYyAoZW1pdF9jbHJfaW5zbiwgZW1pdF8wX3RvXzFfaW5zbik6IFJlbW92ZS4KCSogb3B0YWJzLmggKGVtaXRfY2xyX2luc24sIGVtaXRfMF90b18xX2luc24pOiBSZW1vdmUuCgoyMDA0LTA4LTA4ICBNb3N0YWZhIEhhZ29nICA8bXVzdGFmYUBpbC5pYm0uY29tPgoJQXlhbCBaYWtzIDx6YWtzQGlsLmlibS5jb20+CgoJKiBjb21tb24ub3B0IChmcmVzY2hlZHVsZS1tb2R1bG8tc2NoZWR1bGVkLWxvb3BzKTogTmV3IGZsYWcuCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IEhhbmRsZSBOT1RFX0RJU0FCTEVfU0NIRURfT0ZfQkxPQ0suCgkqIG1vZHVsby1zY2hlZC5jIChzbXNfc2NoZWR1bGUpOiBFbWl0IGEgbm90ZSB0byBkaXNhYmxlIHNjaGVkdWxpbmcKCXdoZW4gLWZyZXNjaGVkdWxlLW1vZHVsby1zY2hlZHVsZWQtbG9vcHMgZmxhZyBpcyBub3Qgc3BlY2lmaWVkLgoJKHNtc19zY2hlZHVsZV9ieV9vcmRlciwgcHNfaW5zbl9hZHZhbmNlX2NvbHVtbiwgYWRkX25vZGVfdG9fcHMsCglhZGRfbm9kZV90b19wcywgcHNfaGFzX2NvbmZsaWN0cywgcHNfYWRkX25vZGVfY2hlY2tfY29uZmxpY3RzKToKCU1vcmUgYWNjdXJhdGUgcGxhY2luZyBvZiBpbnNuIGluIHJvdyBvZiBwYXJ0aWFsIHNjaGVkdWxlLgoJKHBzX2luc25fZmluZF9jb2x1bW4pOiBOZXcgZnVuY3Rpb24uCgkqIHJ0bC5oIChOT1RFX0RJU0FCTEVfU0NIRURfT0ZfQkxPQ0spOiBOZXcgbm90ZS4KCSogc2NoZWQtcmduLmMgKHNjaGVkX2lzX2Rpc2FibGVkX2Zvcl9jdXJyZW50X3JlZ2lvbl9wKTogTmV3LgoJKHNjaGVkdWxlX3JlZ2lvbik6IFVzZSBzY2hlZF9pc19kaXNhYmxlZF9mb3JfY3VycmVudF9yZWdpb25fcC4KCSogZG9jcy9pbnZva2UudGV4aTogRG9jdW1lbnQgLWZyZXNjaGVkdWxlLW1vZHVsby1zY2hlZHVsZWQtbG9vcHMuCgoyMDA0LTA4LTA3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2Nscm1lbSk6IFJldmVydCB0aGUgbGFzdAoJY2hhbmdlLgoKMjAwNC0wOC0wNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9jbHJtZW0pOiBQcm9wZXJseSBjYWxsCglnZW5fc3Ryc2V0IGZvciA2NGJpdCB0YXJnZXQuCgoyMDA0LTA4LTA3ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBjb25maWcvdnh3b3Jrcy5oIChIQU5ETEVfU1lTVl9QUkFHTUEpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCjIwMDQtMDgtMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCU1ha2UgcmV0dXJuIGluIG1lbW9yeSBleHBsaWNpdC4KCSogZnVuY3Rpb24uYyAoYWdncmVnYXRlX3ZhbHVlX3ApOiBDaGVjayBERUNMX0JZX1JFRkVSRU5DRS4KCShhc3NpZ25fcGFybV9maW5kX2RhdGFfdHlwZXMpOiBSZW1vdmUgY29kZSBmb3Igb2xkIGZyb250IGVuZAoJaW52aXNpYmxlIHJlZmVyZW5jZSBoYW5kbGluZy4KCShhc3NpZ25fcGFybXMpOiBIYW5kbGUgREVDTF9CWV9SRUZFUkVOQ0Ugb24gdGhlIFJFU1VMVF9ERUNMLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBMaWtld2lzZS4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfcmV0dXJuX2V4cHIpOiBIYW5kbGUgYSBkZXJlZmVyZW5jZWQKCVJFU1VMVF9ERUNMLgoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JvZHlfcik6IERvbid0IGJvdGhlciBsb29raW5nIGZvciAmKiBhbnltb3JlLgoJKGRlY2xhcmVfcmV0dXJuX3ZhcmlhYmxlKTogSGFuZGxlIERFQ0xfQllfUkVGRVJFTkNFLgoJKiBjcC9jcC1naW1wbGlmeS5jIChpc19pbnZpc2lyZWZfcGFybSk6IEFsc28gaGFuZGxlIFJFU1VMVF9ERUNMLgoJKGNwX2dlbmVyaWNpemVfcik6IFVzZSBjb252ZXJ0X2Zyb21fcmVmZXJlbmNlLgoJRG9uJ3QgZGVyZWZlcmVuY2UgYSBSRVNVTFRfREVDTCBkaXJlY3RseSBpbnNpZGUgYSBSRVRVUk5fRVhQUi4KCShjcF9nZW5lcmljaXplKTogSGFuZGxlIHRoZSBSRVNVTFRfREVDTC4gIFVuc2V0IFRSRUVfQUREUkVTU0FCTEUuCgoJKiBjLWNvbW1vbi5jIChjX3dhcm5fdW51c2VkX3Jlc3VsdCk6IENoZWNrIFRSRUVfVVNFRCBiZWZvcmUKCXdhcm5pbmcgYWJvdXQgYSBDQUxMX0VYUFIgd2l0aCBhbiB1bnVzZWQgdmFsdWUuCgoyMDA0LTA4LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9zeW1iaWFuLmggKENDMV9TUEVDKTogQXZvaWQgcGFzc2luZyBkdXBsaWNhdGUgb3B0aW9ucwoJdG8gdGhlIGNvbXBpbGVyLiAgVXNlIC1mc2hvcnQtd2NoYXIgYnkgZGVmYXVsdC4KCjIwMDQtMDgtMDYgIFBhdCBIYXVnZW4gIDxwdGhhdWdlbkB1cy5pYm0uY29tPgoKCSogcGFyYW1zLmRlZiAoUEFSQU1fTUlOX0NST1NTSlVNUF9JTlNOUyk6IE5ldy4KCSogY2ZnY2xlYW51cC5jICh0cnlfY3Jvc3NqdW1wX3RvX2VkZ2UpOiBBZGQgbWluaW11bSBpbnNuIG1hdGNoCgl0aHJlc2hob2xkLgoJKiBkb2MvaW52b2tlLnRleGkgKHBhcmFtKTogRG9jdW1lbnQgbWluLWNyb3NzanVtcC1pbnNucy4KCjIwMDQtMDgtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiBjLzEzMjgyCgkqIGMub3B0IChXbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMpOiBOZXcgb3B0aW9uLgoJKiBjLW9wdHMuYyAoY19jb21tb25fcG9zdF9vcHRpb25zKTogTWFrZSAtV2V4dHJhIHR1cm4gaXQgb24gYnkgZGVmYXVsdC4KCSogYy10eXBlY2suYyAocG9wX2luaXRfbGV2ZWwpOiBHdWFyZCB0aGUgbWlzc2luZyBmaWVsZCB3YXJuaW5nIHdpdGgKCXdhcm5fbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMgcmF0aGVyIHRoYW4gZXh0cmFfd2FybmluZ3MuCgkqIGRvYy9pbnZva2UudGV4aSAoLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyk6IERvY3VtZW50LCBtb3ZpbmcKCXNvbWUgb2YgdGhlIGV4cGxhbmF0aW9uIGZyb20uLi4KCSgtV2V4dHJhKTogLi4uaGVyZS4gIFNheSB0aGF0IHRoZSBtaXNzaW5nIGZpZWxkIHdhcm5pbmcgY2FuIGJlCglzZXBlcmF0ZWx5IGNvbnRyb2xsZWQgYnkgLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycy4KCjIwMDQtMDgtMDYgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSkgPEVOVFJZX1ZBTFVFX0VYUFI+OiBSZW1vdmUuCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKSA8RU5UUllfVkFMVUVfRVhQUj46IFJlbW92ZS4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpIDxFTlRSWV9WQUxVRV9FWFBSPjogUmVtb3ZlLgoJKiB0cmVlLmRlZiAoRU5UUllfVkFMVUVfRVhQUik6IFJlbW92ZS4KCjIwMDQtMDgtMDYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9jbHJtZW0pOiBNb3ZlIGdlbl9jbGQgZG93biB0bwoJdGhlIHBsYWNlcyB3aGVyZSBpdCBpcyBhY3R1YWxseSBuZWVkZWQuICBEb24ndCB1c2UgcmVwejsgc3Rvc2IKCWZvciAtT3Mgd2l0aCBzdWZmaWNpZW50bHkgc21hbGwgY29uc3RhbnQgc2l6ZXMuCglGb3Igc3VmZmljaWVudGx5IHNtYWxsIHJlcHo7IHN0b3N7bCxxfSByZXBlYXQgY291bnRzIHVzZSBhIHNlcXVlbmNlCglvZiBzdG9ze2wscX0gaW5zdHJ1Y3Rpb25zIGluc3RlYWQuCgoyMDA0LTA4LTA2ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTY4MDcKCSogbG9vcC1pdi5jIChkdW1wX2l2X2luZm8pOiBEdW1wIGludmFyaWFudHMgY29ycmVjdGx5LgoJKGl2X3N1YnJlZywgaXZfZXh0ZW5kKTogRXhwcmVzcyB2YWx1ZSBvZiBpbnZhcmlhbnQgcHVyZWx5IGluCgliYXNlIGZpZWxkLgoKMjAwNC0wOC0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vc3ltYmlhbi5oIChDQzFfU1BFQyk6IEFkZCAtZm5vLXNob3J0LWVudW1zLgoJKENDMVBMVVNfU1BFQyk6IERlZmluZSBpdCB0byBiZSB0aGUgc2FtZSBhcyBDQzFfU1BFQy4KCjIwMDQtMDgtMDYgIFJvbWFuIFppcHBlbCAgPHppcHBlbEBsaW51eC1tNjhrLm9yZz4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAocG9zdF9pbmNfb3BlcmFuZCxwcmVfZGVjX29wZXJhbmQpOiBOZXcuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoUFJFRElDQVRFX0NPREVTKTogYWRkIHBvc3RfaW5jX29wZXJhbmQsCglwcmVfZGVjX29wZXJhbmQuCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKHplcm9fZXh0ZW5kKjIpOiBkZWxheSB0aGUgc3BsaXR0aW5nIG9mIHRoZQoJcGF0dGVybiB1bnRpbCByZWxvYWQgaXMgZmluaXNoZWQgdG8gYWxsb3cgYmV0dGVyIGNvZGUgZ2VuZXJhdGlvbgoJYW5kIHNwbGl0IHRoZW0gY29tcGxldGVseSBpbnRvIHNlcGFyYXRlIGluc3RydW5jdGlvbnMuCgkoKmFuZHNpM19zcGxpdCk6IE5ldyBwYXR0ZXJuLgoKMjAwNC0wOC0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAoaGFuZGxlX2RsbF9hdHRyaWJ1dGUpOiBNb3ZlIGhlcmUgZnJvbSBpMzgzL3dpbm50LmMuCglSZXBsYWNlIHVzZSBvZiBERUNMX0lOTElORSB3aXRoIERFQ0xfREVDTEFSRURfSU5MSU5FX1AuICBTZXQKCURFQ0xfVklTSUJMSVRZLiAgVGVzdCBUQVJHRVRfRExMSU1QT1JUX0RFQ0xfQVRUUklCVVRFUyB3aXRoICNpZi4KCSogdHJlZS5oIChoYW5kbGVfZGxsX2F0dHJpYnV0ZSk6IERlY2xhcmUuICBUZXN0CglUQVJHRVRfRExMSU1QT1JUX0RFQ0xfQVRUUklCVVRFUyB3aXRoICNpZi4KCSogYy1jb21tb24uaCAoY19kZXRlcm1pbmVfdmlzaWJpbGl0eSk6IERlY2xhcmUuCgkqIGMtY29tbW9uLmMgKGNfZGV0ZXJtaW5lX3Zpc2liaWxpdHkpOiBOZXcgZnVuY3Rpb24uCgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbCk6IFVzZSBpdC4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogZGVmYXVsdHMuaCAoVEFSR0VUX0RMTElNUE9SVF9ERUNMX0FUVFJJQlVURVMpOiBEZWZpbmUgaXQgdG8KCXplcm8sIGJ5IGRlZmF1bHQuICBVc2UgI2lmLCBub3QJI2lmZGVmLCB0byB0ZXN0IGl0LgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fYXR0cmlidXRlX3RhYmxlKTogVXNlCgloYW5kbGVfZGxsX2F0dHJpYnV0ZS4gIFRlc3QgVEFSR0VUX0RMTElNUE9SVF9ERUNMX0FUVFJJQlVURVMgd2l0aAoJI2lmLgoJKiBjb25maWcvYXJtL3BlLmggKFRBUkdFVF9ETExJTVBPUlRfREVDTF9BVFRSSUJVVEVTKTogRGVmaW5lIHRvIDEuCgkqIGNvbmZpZy9pMzg2L2N5Z21pbmcuaCAoVEFSR0VUX0RMTElNUE9SVF9ERUNMX0FUVFJJQlVURVMpOiBEZWZpbmUKCXRvIDEuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfaGFuZGxlX2RsbF9hdHRyaWJ1dGUpOiBSZW1vdmUuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9hdHRyaWJ1dGVfdGFibGUpOiBVc2UKCWhhbmRsZV9kbGxfYXR0cmlidXRlIGZvciBkbGxpbXBvcnQvZGxsZXhwb3J0LiAgVGVzdAoJVEFSR0VUX0RMTElNUE9SVF9ERUNMX0FUVFJJQlVURVMgd2l0aCAjaWYuCgkqIGNvbmZpZy9pMzg2L3dpbm50LmMgKGl4ODZfaGFuZGxlX2RsbF9hdHRyaWJ1dGUpOiBSZW1vdmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5oIChUQVJHRVRfRExMSU1QT1JUX0RFQ0xfQVRUUklCVVRFUyk6IERlZmluZQoJaXQgdG8gMS4KCSogY29uZmlnL21jb3JlL21jb3JlLmMgKFRBUkdFVF9ETExJTVBPUlRfREVDTF9BVFRSSUJVVEVTKTogVGVzdCBpdAoJd2l0aCAjaWYuCgkqIGNvbmZpZy9zaC9zeW1iaWFuLXByZS5oIChUQVJHRVRfRExMSU1QT1JUX0RFQ0xfQVRUUklCVVRFUyk6IERlZmluZQoJaXQgdG8gMS4KCSogZG9jL2V4dGVuZC50ZXhpIChkbGxleHBvcnQpOiBDbGFyaWZ5IGFuZCBjb3JyZWN0IGRvY3VtZW50YXRpb24uCgkoZGxsaW1wb3J0KTogTGlrZXdpc2UuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfRExMSU1QT1JUX0RFQ0xfQVRUUklCVVRFUyk6IE1lbnRpb24KCWhhbmRsZV9kbGxfYXR0cmlidXRlLgoKMjAwNC0wOC0wNSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKHRyZWUtc3NhLWxvb3AtbWFuaXAubyk6IEFkZC4KCSogdHJlZS1mbG93LmggKHJld3JpdGVfaW50b19sb29wX2Nsb3NlZF9zc2EsIHZlcmlmeV9sb29wX2Nsb3NlZF9zc2EpOgoJRGVjbGFyZS4KCSogdHJlZS1zc2EtbG9vcC5jICh0cmVlX2xvb3Bfb3B0aW1pemVyX2luaXQpOiBDcmVhdGUgbG9vcCBjbG9zZWQgc3NhCglmb3JtLgoJKHRyZWVfc3NhX2xvb3BfZG9uZSk6IFZlcmlmeSBsb29wIGNsb3NlZCBzc2EgZm9ybS4KCSogdHJlZS1zc2EtbG9vcC1pbS5jIChtb3ZlX2NvbXB1dGF0aW9ucyk6IFVwZGF0ZSBsb29wIGNsb3NlZCBzc2EgZm9ybS4KCjIwMDQtMDgtMDUgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChwYV9hc21fb3V0cHV0X2FsaWduZWRfYnNzLCBwYV9hc21fb3V0cHV0X2FsaWduZWRfY29tbW9uLAoJcGFfYXNtX291dHB1dF9hbGlnbmVkX2xvY2FsKTogTmV3IGZ1bmN0aW9ucy4KCSogcGEtcHJvdG9zLmg6IEFkZCBwcm90b3R5cGVzIGZvciBwYV9hc21fb3V0cHV0X2FsaWduZWRfYnNzLAoJcGFfYXNtX291dHB1dF9hbGlnbmVkX2NvbW1vbiBhbmQgcGFfYXNtX291dHB1dF9hbGlnbmVkX2xvY2FsLgoJKiBwYS1wcm8tZW5kLmggKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04pOiBVc2UKCXBhX2FzbV9vdXRwdXRfYWxpZ25lZF9jb21tb24uCgkoQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKTogVXNlIHBhX2FzbV9vdXRwdXRfYWxpZ25lZF9sb2NhbC4KCSogcGEuaCAoQVNNX09VVFBVVF9BTElHTkVEX0JTUyk6IE5ldyBtYWNyby4KCShBU01fT1VUUFVUX0FMSUdORURfQ09NTU9OKTogVXNlIHBhX2FzbV9vdXRwdXRfYWxpZ25lZF9jb21tb24uCgkoQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKTogVXNlIHBhX2FzbV9vdXRwdXRfYWxpZ25lZF9sb2NhbC4KCSogcGE2NC1ocHV4LmggKE1BWF9PRklMRV9BTElHTk1FTlQpOiBOZXcgbWFjcm8uCgkoQVNNX09VVFBVVF9BTElHTkVEX0NPTU1PTik6IFVzZSBwYV9hc21fb3V0cHV0X2FsaWduZWRfY29tbW9uLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9MT0NBTCk6IFVzZSBwYV9hc21fb3V0cHV0X2FsaWduZWRfbG9jYWwuCgkqIHNvbS5oIChNQVhfT0ZJTEVfQUxJR05NRU5UKTogUHJvdmlkZSBtYXhpbXVtIGFsaWdubWVudCBvZiBnbG9iYWwKCWNvbW1vbiBkYXRhLgoKMjAwNC0wOC0wNSAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogb2JqYy9vYmpjLWFjdC5jIChidWlsZF9vYmpjX3N0cmluZ19vYmplY3QpOiBNYXJrIHRoZSBhZGRyZXNzCglleHByZXNzaW9uIGFzIGNvbnN0YW50LgoKMjAwNC0wOC0wNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3J0eF9jb3N0cyk6IEZpeCBtYXNrX29wZXJhbmQKCWFuZCBtYXNrNjRfb3BlcmFuZCB0aGlua29zLiAgSGFuZGxlIFpFUk9fRVhUUkFDVC4gIEhhbmRsZQoJU0lHTl9FWFRFTkQgLyBaRVJPX0VYVEVORCBvZiBNRU0uICBIYW5kbGUgcmx3aW5tIHBhdHRlcm5zLgoKMjAwNC0wOC0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjb25maWcvbGludXguaCwgY29uZmlnL2kzODYvbGludXguaCwgY29uZmlnL3NwYXJjL2xpbnV4Lmg6CglSZW1vdmUgZGVmaW5pdGlvbnMgY29uZGl0aW9uZWQgb24gVVNFX0dOVUxJQkNfMSBvciBjb25kaXRpb25lZAoJb3V0LCBhbmQgYXNzb2NpYXRlZCBvYnNvbGV0ZSBjb21tZW50cy4KCjIwMDQtMDgtMDUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKGZvcmNlX2ZpdF90eXBlKTogUmV0dXJuIGEgdHJlZSwgdGFrZSB0aHJlZSBmbGFncy4KCSogZm9sZC1jb25zdC5jIChmb3JjZV9maXRfdHlwZSk6IFNldCBUUkVFX09WRVJGTE9XIGFuZAoJVFJFRV9DT05TVEFOVF9PVkVSRkxPVyBoZXJlLgoJKGludF9jb25zdF9iaW5vcCwgY29uc3RfYmlub3ApOiBBZGp1c3QuCgkoc2l6ZV9pbnRfdHlwZSk6IERvIHNpZ24gZXh0ZW5zaW9uIGhlcmUuCgkoZm9sZF9jb252ZXJ0X2NvbnN0LCBvcHRpbWl6ZV9iaXRfZmllbGRfY29tcGFyZSwKCWRlY29kZV9maWVsZF9yZWZlcmVuY2UsIGFsbF9vbmVzX21hc2tfcCwgZm9sZF9kaXZfY29tcGFyZSwgZm9sZCwKCWZvbGRfbmVnYXRlX2NvbnN0LCBmb2xkX2Fic19jb25zdCwgZm9sZF9ub3RfY29uc3QpOiBBZGp1c3QuCgkqIHRyZWUuYyAoc2l6ZV9pbl9ieXRlcywgaW50X2ZpdHNfdHlwZV9wKTogQWRqdXN0LgoKMjAwNC0wOC0wNSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE2ODY0CgkqIHRyZWUtdGFpbGNhbGwuYyAoZWxpbWluYXRlX3RhaWxfY2FsbCk6IERvIG5vdCBjcmVhdGUgcGhpIG5vZGVzCglmb3Igc3NhIG5hbWVzIHdpdGhvdXQgZGVmYXVsdF9kZWYuCgoyMDA0LTA4LTA1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3Byb2xvZ3VlKTogSWYgdGhlIGZ1bmN0aW9uIHVzZXMgYQoJZnJhbWUgcG9pbnRlciwgcmVzdG9yZSBlYXggd2l0aCBhbiBlYnAtcmVsYXRpdmUgYWRkcmVzcy4KCjIwMDQtMDgtMDQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCVBSIDE0NTE2CgkqIGMtY29tbW9uLmMgKGNfZXhwYW5kX2RlY2wpOiBEb24ndCBzcGVjaWFsLWNhc2Ugc3RhdGljIFZBUl9ERUNMcy4KCSogYy1jb21tb24uaCAobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IERlbGV0ZS4KCSogYy1kZWNsLmMgKHNoYWRvd190YWdfd2FybmVkKTogQ2xlYW4gdXAgY29tbWVudC4KCShmaW5pc2hfZGVjbCk6IENsZWFuIHVwIHNwYWNpbmcuICBVc2Ugc2V0X3VzZXJfYXNzZW1ibGVyX25hbWUgd2hlbgoJYXBwcm9wcmlhdGUuICBEb24ndCBwYXNzIGFzbXNwZWMgdG8gcmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uLgoJKiBjLXNlbWFudGljcy5jIChtYWtlX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogRGVsZXRlLgoJKiBleHByLmMgKGluaXRfYmxvY2tfbW92ZV9mbik6IFVzZSBzZXRfdXNlcl9hc3NlbWJsZXJfbmFtZS4KCShpbml0X2Jsb2NrX2NsZWFyX2ZuKTogTGlrZXdpc2UuCgkqIHBhc3Nlcy5jIChyZXN0X29mX2RlY2xfY29tcGlsYXRpb24pOiBSZW1vdmUgYXNtc3BlYyBwYXJhbWV0ZXIsCglleHBlY3QgaXQgdG8gYmUgaW4gREVDTF9BU1NFTUJMRVJfTkFNRS4gIFVwZGF0ZSBjYWxsZXJzIGluIG1hbnkgZmlsZXMuCgkqIHRvcGxldi5oIChyZXN0X29mX2RlY2xfY29tcGlsYXRpb24pOiBSZW1vdmUgYXNtc3BlYyBwYXJhbWV0ZXIuCgkqIHRyZWUuaCAobWFrZV9kZWNsX3J0bCk6IFJlbW92ZSBzZWNvbmQgcGFyYW1ldGVyLgoJKHNldF91c2VyX2Fzc2VtYmxlcl9uYW1lKTogTmV3LgoJKiB2YXJhc20uYyAoc2V0X3VzZXJfYXNzZW1ibGVyX25hbWUpOiBOZXcuCgkobWFrZV9kZWNsX3J0bCk6IFJlbW92ZSBzZWNvbmQgcGFyYW1ldGVyLiAgVXBkYXRlIGNhbGxlcnMgaW4gbWFueQoJZmlsZXMuCgoyMDA0LTA4LTA1ICBBZGFtIE5lbWV0ICA8YW5lbWV0QGxueHcuY29tPgoKCSogY29uZmlnLmdjYyAoY2FzZSBpWzM0NTY3XTg2LSotbHlueG9zKik6IFVwZGF0ZSB0byBMeW54T1MgNC4wLgoJKGNhc2UgcnM2MDAwLSotbHlueG9zKik6IFJlbmFtZSBpdCB0byBwb3dlcnBjLSotbHlueG9zKi4gIFVwZGF0ZQoJdG8gTHlueE9TIDQuMC4KCSogZ3Roci1seW54Lmg6IE5ldyBmaWxlLgoJKiBjb25maWcvbHlueC1uZy5oOiBSZW1vdmUgZmlsZS4KCSogY29uZmlnL2x5bnguaDogVXBkYXRlIHRvIEx5bnhPUyA0LjAuCgkqIGNvbmZpZy90LWx5bng6IE5ldyBmaWxlLgoJKiBjb25maWcvaTM4Ni9seW54LW5nLmg6IFJlbW92ZSBmaWxlLgoJKiBjb25maWcvaTM4Ni9seW54Lmg6IFVwZGF0ZSB0byBMeW54T1MgNC4wLgoJKiBjb25maWcvcnM2MDAwL2x5bnhiYXNlLmg6IFJlbW92ZSBmaWxlLgoJKiBjb25maWcvcnM2MDAwL2x5bnguaDogVXBkYXRlIHRvIEx5bnhPUyA0LjAuCgkqIGNvbmZpZy9yczYwMDAvdC1seW54OiBOZXcgZmlsZS4KCSogZG9jL2luc3RhbGwudGV4aSAoT3B0aW9ucyBzcGVjaWZpY2F0aW9uKTogUmVtb3ZlIHJlZmVyZW5jZSB0bwoJTHlueE9TIGZyb20gc3lzdGVtcyB3aGVyZSAtLXdpdGgtZ251LWFzIG1ha2VzIGEgZGlmZmVyZW5jZS4KCjIwMDQtMDgtMDUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1jb21tb24uYyAoY19zdGRkZWZfY3BwX2J1aWx0aW5zKTogRGVmaW5lIF9fSU5UTUFYX1RZUEVfXyBhbmQKCV9fVUlOVE1BWF9UWVBFX18uCgkqIGMtY3BwYnVpbHRpbi5jIChidWlsdGluX2RlZmluZV9zdGRpbnRfbWFjcm9zKTogTmV3LiAgRGVmaW5lCglfX0lOVE1BWF9NQVhfXy4KCShjX2NwcF9idWlsdGlucyk6IENhbGwgaXQuCgkqIGRvYy9jcHAudGV4aTogVXBkYXRlLgoKMjAwNC0wOC0wNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3J0eF9jb3N0cyk6IExBQkVMX1JFRnMgYXJlIHplcm8KCWNvc3QuCgoyMDA0LTA4LTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBiYXNpYy1ibG9jay5oIChwcm9maWxlX3N0YXVzKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCSogY2ZnLmMgKHByb2ZpbGVfc3RhdHVzKTogRGVjbGFyZS4KCShjaGVja19iYl9wcm9maWxlKTogQnJlYWsgb3V0IGZyb20gLi4uLjsgdXNlIHByb2ZpbGVfc3RhdHVzCgkoZHVtcF9mbG93X2luZm8pOiAuLi4gaGVyZS4KCSogY2ZnYnVpbGQuYyAoZmluZF9iYXNpY19ibG9ja3MpOiBTZXQgcHJvZmlsZV9zdGF0dXMuCgkqIGNmZ2V4cGFuZC5jICh0cmVlX2V4cGFuZF9jZmcpOiBMaWtld2lzZS4KCSogcHJlZGljdC5jIChlc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IExpa2V3aXNlLgoJKiBwcm9maWxlLmMgKGJyYW5jaF9wcm9iKTogTGlrZXdpc2UuCgkqIHRyZWUtY2ZnLmMgKGJ1aWxkX3RyZWVfY2ZnKTogTGlrZXdpc2UuCgkoZHVtcF9mdW5jdGlvbl90b19maWxlKTogVXNlIGNoZWNrX2JiX3Byb2ZpbGUuCgkqIHRyZWUtcHJldHR5LXByaW50IChkdW1wX2JiX2hlYWRlcik6IExpa2V3aXNlLgoJKiB0cmVlLXByb2ZpbGUuYyAoZG9fdHJlZV9wcm9maWxpbmcpOiBDbGVhbnVwLgoKMjAwNC0wOC0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChSVExfQkFTRV9ILCBSVExfSCk6IENvcnJlY3QuCgkoQlVJTERfUlRMKTogUmVtb3ZlICQoQlVJTERfUFJFRklYKSBmcm9tIGdnYy1ub25lLm8uCgkoZ2Vub2Jqcyk6IEFkZCBlcnJvcnMubywgZ2djLW5vbmUubywgYW5kIG1pbi1pbnNuLW1vZGVzLm8uCgkocmVhZC1ydGwubywgZ2Vuc3VwcG9ydC5vLCBnZW5jb25maWcubywgZ2VuZmxhZ3MubywgZ2VuY29kZXMubykKCShnZW5jb25zdGFudHMubywgZ2VuZW1pdC5vLCBnZW5vcGluaXQubywgZ2VucmVjb2cubywgZ2VuZXh0cmFjdC5vKQoJKGdlbnBlZXAubywgZ2VuYXR0ci5vLCBnZW5hdHRydGFiLm8sIGdlbmF1dG9tYXRhLm8sIGdlbm91dHB1dC5vKQoJKGdlbmNvbmRpdGlvbnMubyk6IERlcGVuZCBvbiAkKFJUTF9CQVNFX0gpIG5vdCAkKFJUTF9IKS4KCShnZ2Mtbm9uZS5vLCBlcnJvcnMubyk6IE1vdmUgcnVsZSB0byBnZW5lcmF0b3JzIHNlY3Rpb247Cgljb3JyZWN0IGRlcGVuZGVuY2llcy4KCShtaW4taW5zbi1tb2Rlcy5vKTogTW92ZSBydWxlIHRvIGdlbmVyYXRvcnMgc2VjdGlvbjsgcmVtb3ZlCgl1bm5lY2Vzc2FyeSBleHBsaWNpdCBjb21tYW5kOyBjb3JyZWN0IGRlcGVuZGVuY2llcy4KCShwcmludC1ydGwubywgcHJpbnQtcnRsMS5vKTogQ29ycmVjdCBkZXBlbmRlbmNpZXMuCgkoJChCVUlMRF9QUkVGSVhfMSllcnJvcnMuby4gJChCVUlMRF9QUkVGSVhfMSlnZ2Mtbm9uZS5vKTogRGVsZXRlIHJ1bGUuCgkobW9zdGx5Y2xlYW4pOiBVcGRhdGUuCgoJKiBlcnJvcnMuYzogSW5jbHVkZSBiY29uZmlnLmggbm90IGNvbmZpZy5oLiAgQ29ycmVjdCBjb21tZW50LgoJKiBnZW5ndHlwZS5jLCBnZW5wcmVkcy5jOiBEb24ndCBkZWZpbmUgTk9fR0VOUlRMX0guCgkqIGdnYy1ub25lLmM6IEluY2x1ZGUgYmNvbmZpZy5oOyBub3QgY29uZmlnLmggb3IgdG0uaC4KCSogcHJpbnQtcnRsLmM6IERvbid0IGluY2x1ZGUgdG1fcC5oLgoKCSogcnRsLmg6IE1vdmUgZm9yd2FyZC1kZWNsIG9mIHN0cnVjdCBmdW5jdGlvbiBkb3duIHdoZXJlIGl0J3MKCW5lZWRlZC4gIEluY2x1ZGUgZ2VucnRsLmggI2lmbmRlZiBHRU5FUkFUT1JfRklMRSwgbm90CgkjaWZuZGVmIE5PX0dFTlJUTF9ILiAgUmVtb3ZlIHVubmVjZXNzYXJ5ICNpZmRlZiBCVUZTSVogc3RhdGVtZW50cy4KCjIwMDQtMDgtMDQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCSAgICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1jZmcuYyAodHJlZV9kdXBsaWNhdGVfYmIpOiBNYXJrIGR1cGxpY2F0ZWQgZGVmaW5pdGlvbnMuCgkqIHRyZWUtZmxvdy5oIChyZXdyaXRlX3NzYV9pbnRvX3NzYSk6IERlY2xhcmF0aW9uIGNoYW5nZWQuCgkqIHRyZWUtaW50by1zc2EuYyAocmV3cml0ZV9zc2FfaW50b19zc2EpOiBVc2UgbmV3IGludGVyZmFjZSB0bwoJbWFuaXB1bGF0ZSB0aGUgZHVwbGljYXRlZCBzc2EgbmFtZXMuCgkqIHRyZWUtc3NhbmFtZXMuYyAoc3NhX25hbWVzX3RvX3Jld3JpdGUpOiBOZXcgdmFyaWFibGUuCgkobWFya2VkX2Zvcl9yZXdyaXRlX3AsIGFueV9tYXJrZWRfZm9yX3Jld3JpdGVfcCwgbWFya19mb3JfcmV3cml0ZSwKCXVubWFya19hbGxfZm9yX3Jld3JpdGUsIG1hcmtlZF9zc2FfbmFtZXMsIHJlbGVhc2Vfc3NhX25hbWVfZm9yY2UpOgoJTmV3IGZ1bmN0aW9ucy4KCShyZWxlYXNlX3NzYV9uYW1lKTogRG8gbm90IHJlbGVhc2Ugc3NhIG5hbWVzIHRoYXQgbWF5IGhhdmUgbXVsdGlwbGUKCWRlZmluaXRpb25zLgoJKiB0cmVlLmggKHJlbGVhc2Vfc3NhX25hbWVfZm9yY2UsIG1hcmtfZm9yX3Jld3JpdGUsCgl1bm1hcmtfYWxsX2Zvcl9yZXdyaXRlLCBtYXJrZWRfZm9yX3Jld3JpdGVfcCwgYW55X21hcmtlZF9mb3JfcmV3cml0ZV9wLAoJbWFya2VkX3NzYV9uYW1lcyk6IERlY2xhcmUuCgkqIHRyZWUtc3NhLWxvb3AtY2guYyAobWFya19kZWZzX2Zvcl9yZXdyaXRlKTogUmVtb3ZlLgoJKGR1cGxpY2F0ZV9ibG9ja3MpOiBSZW1vdmUgY2FsbCB0byBtYXJrX2RlZnNfZm9yX3Jld3JpdGUuCglVcGRhdGUgY2FsbCB0byByZXdyaXRlX3NzYV9pbnRvX3NzYS4KCjIwMDQtMDgtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWZhdWx0cy5oIChUQVJHRVRfREVDTFNQRUMpOiBOZXcgbWFjcm8uCgkqIGMtY3BwYnVpbHRpbi5jIChjX2NwcF9idWlsdGlucyk6IEhhbmRsZSBUQVJHRVRfREVDTFNQRUMuCgkqIGNvbmZpZy9hcm0vcGUuaCAoU1VCVEFSR0VUX0NQUF9TUEVDKTogUmVtb3ZlIF9fZGVjbHNwZWMgc3VwcG9ydC4KCSogY29uZmlnL2FybS9zeW1iaWFuLmggKFRBUkdFVF9ETExJTVBPUlRfREVDTF9BVFRSSUJVVEVTKTogRGVmaW5lLgoJKiBjb25maWcvaTM4Ni9iZW9mLWVsZi5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogUmVtb3ZlCglfX2RlY2xzcGVjIHN1cHBvcnQuCgkoVEFSR0VUX0RFQ0xTUEVDKTogRGVmaW5lLgoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBSZW1vdmUKCV9fZGVjbHNwZWMgc3VwcG9ydC4KCSogY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4LmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBSZW1vdmUKCV9fZGVjbHNwZWMgc3VwcG9ydC4KCShUQVJHRVRfREVDTFNQRUMpOiBEZWZpbmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IFJlbW92ZQoJX19kZWNsc3BlYyBzdXBwb3J0LgoJKiBjb25maWcvc2gvc3ltYmlhbi1wcmUuaCAoU1VCVEFSR0VUX0NQUF9TUEVDKTogUmVtb3ZlIF9fZGVjbHNwZWMKCXN1cHBvcnQuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfREVDTFNQRUMpOiBEb2N1bWVudC4KCgkqIGRvYy9leHRlbmQudGV4aTogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDQtMDgtMDQgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9DWFhfQ0RUT1JfUkVUVVJOU19USElTKTogRGVmaW5lLgoJKFRBUkdFVF9DWFgpOiBVc2UgaXQuCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IEFkZCBjZHRvcl9yZXR1cm5zX3RoaXMuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9jeHhfY2R0b3JfcmV0dXJuc190aGlzKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9DWFhfQ0RUT1JfUkVUVVJOU19USElTKTogRGVmaW5lLgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgVEFSR0VUX0NYWF9DRFRPUl9SRVRVUk5TX1RISVMuCgoyMDA0LTA4LTAzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1sZXguYyAobmFycm93ZXN0X3Vuc2lnbmVkX3R5cGUsIG5hcnJvd2VzdF9zaWduZWRfdHlwZSk6IFRha2UKCWxvdy9oaWdoIHBhaXIuIERvIHJhbmdlIGNoZWNraW5nIGRpcmVjdGx5LgoJKGludGVycHJldF9pbnRlZ2VyKTogQWRqdXN0LgoKMjAwNC0wOC0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5oIChUQVJHRVRfU1dJVENIRVMpOiBBZGQgbm8tcmVuZXNhcyB0byBzZWxlY3QgdGhlCglHQ0MgQUJJLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IHRoaXMgbmV3IHN3aXRjaCBhbmQgYWxzbyB0aGUgLW1yZW5lc2FzCglzd2l0Y2guCgoyMDA0LTA4LTA0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2ZnbGF5b3V0LmMgKGluc25fbG9jYXRvcnNfaW5pdGlhbGl6ZSk6IFVwZGF0ZSB0aGUgY3VycmVudAoJbG9jYXRpb24gYmVmb3JlIGluaXRpYWxpemluZyBhIGxvY2F0aW9uLgoKMjAwNC0wOC0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfZnVuY3Rpb25fZGVjbCk6IEFsd2F5cyBjYWxsIGRieG91dF9mdW5jdGlvbl9lbmQuCgkoZGJ4b3V0X2Z1bmN0aW9uX2VuZCk6IFJldHVybiBhZnRlciBlbWl0dGluZyB0aGUgIkxzY29wZSIgc3ltYm9sCgl1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIHRoYXQgdGhpcyBmdW5jdGlvbiBmb3JtZXJseSB3YXNuJ3QgY2FsbGVkLgoJQWRkIGV4cGxhbmF0b3J5IGNvbW1lbnRzLgoKCVBSIDE0ODYwCgkqIGMtZGVjbC5jIChyZWNvcmRfYnVpbHRpbl90eXBlKTogQ2FsbCBkZWJ1Z19ob29rcy0+dHlwZV9kZWNsCglvbiB0aGUgbmV3IGRlY2wuCgoJUFIgMTM5NTYKCSogZGJ4b3V0LmMgKGRieF9vdXRwdXRfbGJyYWMsIGRieF9vdXRwdXRfcmJyYWMpOiBOZXcKCWZ1bmN0aW9ucywgYnJva2VuIG91dCBvZiBkYnhvdXRfYmxvY2suCgkoZGJ4b3V0X2Jsb2NrKTogVGhlIGJsb2NrIGF0IGRlcHRoIDAgc2hvdWxkIGdldCBMQlJBQy9SQlJBQwoJc3RhYnMgdG9vLCBpZiBpdCBjb250YWlucyBzeW1ib2xzLiAgVXNlIHRoZSBiZWdpbl9sYWJlbCBhbmQKCXRoZSBMc2NvcGUgbGFiZWwgKGVtaXR0ZWQgYnkgZGJ4b3V0X2Z1bmN0aW9uX2VuZCkgZm9yIHRoZQoJcmFuZ2Ugb2YgdGhpcyBibG9jay4KCjIwMDQtMDgtMDMgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogVXBkYXRlIGF1dG9jb25mIHZlcnNpb24gcmVxdWlyZW1lbnRzLgoKMjAwNC0wOC0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlZmF1bHRzLmggKExFR0lUSU1BVEVfUElDX09QRVJBTkRfUCk6IFByb3ZpZGUgZGVmYXVsdCBkZWZpbml0aW9uLgoJKiByZWNvZy5jIChnZW5lcmFsX29wZXJhbmQsIGltbWVkaWF0ZV9vcGVyYW5kLCBub25tZW1vcnlfb3BlcmFuZCkKCShhc21fb3BlcmFuZF9vayk6IFJlbW92ZSAjaWZkZWZzIG9uIExFR0lUSU1BVEVfUElDT1BFUkFORF9QLgoJKiByZWdjbGFzcy5jIChyZWNvcmRfcmVnX2NsYXNzZXMpOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IExpa2V3aXNlLgoKMjAwNC0wOC0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbnN1cHBvcnQuYyAoaW5pdF9tZF9yZWFkZXJfYXJnc19jYik6IFJlbmFtZWQgZnJvbQoJaW5pdF9tZF9yZWFkZXJfYXJncy4gIEFkZCB0aGlyZCBvcHRpb24sIGNhbGxiYWNrIGZ1bmN0aW9uIGZvcgoJcGFyc2luZyBwcm9ncmFtLXNwZWNpZmljIG9wdGlvbnMuICBBZGQgZGlhZ25vc2lzIG9mIGluY29ycmVjdAoJbnVtYmVyIG9mIGlucHV0IGZpbGVzLgoJKGluaXRfbWRfcmVhZGVyKTogRm9sZCBpbnRvIGluaXRfbWRfcmVhZGVyX2FyZ3NfY2IuCgkoaW5pdF9tZF9yZWFkZXJfYXJncyk6IE5vdyBhIHRoaW4gd3JhcHBlciBhcm91bmQKCWluaXRfbWRfcmVhZGVyX2FyZ3NfY2IuCgkqIGdlbnN1cHBvcnQuaDogVXBkYXRlIHByb3RvdHlwZXMuCgoJKiBnZW5hdHRyLmMsIGdlbmF0dHJ0YWIuYywgZ2VuY29kZXMuYywgZ2VuY29uZmlnLmMsIGdlbmVtaXQuYwoJKiBnZW5leHRyYWN0LmMsIGdlbmZsYWdzLmMsIGdlbm9waW5pdC5jLCBnZW5vdXRwdXQuYywgZ2VucGVlcC5jCgkqIGdlbnJlY29nLmM6IE5vIG5lZWQgdG8gZGlhZ25vc2UgbGFjayBvZiBhbiBpbnB1dCBmaWxlOwoJaW5pdF9tZF9yZWFkZXJfYXJncyB3aWxsIGhhbmRsZSBpdC4KCSogZ2VuY29uZGl0aW9ucy5jOiBMaWtld2lzZSwgYW5kIHVzZSBpbml0X21kX3JlYWRlcl9hcmdzLgoJKiBnZW5jb25zdGFudHMuYzogTGlrZXdpc2UsIGFuZCBubyBuZWVkIHRvIGNhbGwgcmVhZF9tZF9ydHguCgoyMDA0LTA4LTAzICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtZGVjbC5jIChpbXBsaWNpdGx5X2RlY2xhcmUpOiBEaWFnbm9zZSBpbmNvbXBhdGlibGUgaW1wbGljaXQKCWRlY2xhcmF0aW9ucy4KCjIwMDQtMDgtMDMgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi1jLmM6IERvbid0IHNlYXJjaCBpbiAiL0xvY2FsL0xpYnJhcnkvRnJhbWV3b3JrcyIKCWZvciBmcmFtZXdvcmtzLgoJKiBkb2MvaW52b2tlLnRleGkgKERhcndpbiBPcHRpb25zKTogVXBkYXRlIHRvIHJlZmxlY3QgYWJvdmUuCgoyMDA0LTA4LTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzE2NzkwCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXZfMSkgPE5PUF9FWFBSPjogRGlzYWxsb3cgbG9jYWwKCXRydW5jYXRpb25zLCBub3QganVzdCBnbG9iYWwgdHJ1bmNhdGlvbnMuCgoyMDA0LTA4LTAzICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJUFIgYm9vdHN0cmFwLzE2ODY1CgkqIGxvb3AtaXYuYyAoc2ltcGxpZnlfdXNpbmdfYXNzaWdubWVudCk6IEluaXRpYWxpemUgbGhzLgoKMjAwNC0wOC0wMyAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IERvY3VtZW50IE1QRlIgcmVxdWlyZW1lbnQuCgoyMDA0LTA4LTAzICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQGxpbnV4LW1pcHMub3JnPgoKCSogYWNsb2NhbC5tNCAoZ2NjX0FDX0ZVTkNfTU1BUF9CTEFDS0xJU1QpOiBDaGVjayBmb3IgPHN5cy9tbWFuLmg+CglhbmQgbW1hcCgpIGV4cGxpY2l0bHkgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHByZXNldCBhdXRvY29uZiBjYWNoZQoJdmFyaWFibGVzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTA4LTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgdGFyZ2V0LzE2NTcwCgkqIGNvbmZpZy5nY2MgKGlbMzQ1NjddODYtKi0qIHwgeDg2XzY0LSotKik6IEFkZCBpMzg2L3QtZ21tX21hbGxvYwoJdG8gdG1ha2VfZmlsZS4KCShpWzM0NTY3XTg2LSotbGludXgqYW91dCogfCBpWzM0NTY3XTg2LSotbGludXgqbGliYzEpOiBMaWtld2lzZS4KCShpWzM0NTY3XTg2LSotbGludXgqIHwgeDg2XzY0LSotbGludXgqKTogQWRkIGkzODYvdC1wbW1fbWFsbG9jCgl0byB0bWFrZV9maWxlLgoKCSogY29uZmlnL2kzODYvdC1nbW1fbWFsbG9jOiBOZXcgZmlsZS4KCSogY29uZmlnL2kzODYvdC1wbW1fbWFsbG9jOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L3htbWludHJpbi5oOiBJbmNsdWRlIDxtbV9tYWxsb2MuaD4uCgoyMDA0LTA4LTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgkgICAgVGFuZ3V5IEZhdXRywyAgPHRmYXV0cmVAcGFuZG9yYS5iZT4KCgkqIGNvbmZpZy9pMzg2L3BtbV9tYWxsb2MuaDogTmV3IGZpbGUuCgoyMDA0LTA4LTAzICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvZ21tX21hbGxvYy5oOiBOZXcgZmlsZS4KCjIwMDQtMDgtMDMgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG1hY2hvcGljX291dHB1dF9zdHViKTogQWxpZ24gRGFyd2luIHN0dWJzLgoJKiBjLWNvbW1vbi5jOiBJbmNsdWRlIG9wdHMuaC4KCShjX2NvbW1vbl9nZXRfYWxpYXNfc2V0KTogRml4IGNoZWNrIGZvciBhIHNpbmdsZSBpbnB1dCBmaWxlLgoJKiB0b3BsZXYuYzogUmVtb3ZlIGN1cnJlbnRfZmlsZV9kZWNsLgoJKiB0cmVlLmg6IERpdHRvLgoKMjAwNC0wOC0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKGFybSotKi1zeW1iaWFuZWxmKik6IE5ldyB0YXJnZXQuCgkqIGNvbmZpZy9hcm0vc3ltYmlhbi5oOiBOZXcgZmlsZS4KCgkqIGd0aHItZ25hdC5jOiBBZGQgdmlzaWJpbGl0eSAjcHJhZ21hcy4KCSogZ3Roci1nbmF0LmggOiBMaWtld2lzZS4KCSogZ3Roci5oOiBMaWtld2lzZS4KCSogbGliZ2NjMi5jIChfX2Zmc1NJMik6IE1vdmUgcHJvdG90eXBlIHRvIGxpYmdjYzIuaC4KCShfX2Zmc0RJMik6IExpa2V3aXNlLgoJKF9fY2x6U0kyKTogTGlrZXdpc2UuCgkoX19jdHpTSTIpOiBMaWtld2lzZS4KCShfX2N0ekRJMik6IExpa2V3aXNlLgoJKF9fcG9wY291bnRTSTIpOiBMaWtld2lzZS4KCShfX3BvcGNvdW50REkyKTogTGlrZXdpc2UuCgkoX19wYXJpdHlTSTIpOiBMaWtld2lzZS4KCShfX3Bhcml0eURJMik6IExpa2V3aXNlLgoJKiBsaWJnY2MyLmg6IEFkZCB2aXNpYmlsaXR5ICNwcmFnbWFzLgoJKF9fY2x6REkyKTogQWRkIHByb3RvdHlwZS4KCShfX2NselNJMik6IExpa2V3aXNlLgoJKF9fY3R6U0kyKTogTGlrZXdpc2UuCgkoX19mZnNESTIpOiBMaWtld2lzZS4KCShfX2Zmc1NJMik6IExpa2V3aXNlLgoJKF9fY3R6REkyKTogTGlrZXdpc2UuCgkoX19wb3Bjb3VudFNJMik6IExpa2V3aXNlLgoJKF9fcG9wY291bnRESTIpOiBMaWtld2lzZS4KCShfX3Bhcml0eVNJMik6IExpa2V3aXNlLgoJKF9fcGFyaXR5REkyKTogTGlrZXdpc2UuCgkqIHVud2luZC1kdzItZmRlLmg6IEFkZCB2aXNpYmlsaXR5ICNwcmFnbWFzLgoJKiB1bndpbmQuaDogTGlrZXdpc2UuCgoyMDA0LTA4LTAzICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgkgICAgRGFsZSBKb2hhbm5lc2VuICA8ZGFsZWpAYXBwbGUuY29tPgoJICAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3J0eF9jb3N0cyk6IENhbGN1bGF0ZSBjb3N0IG9mCgljb25zdGFudHMgbW9yZSBhY2N1cmF0ZWx5LiAgQWRqdXN0IGNvc3RzIGZvciBGTUEgaW5zdHJ1Y3Rpb25zLgoJQWRkIGNhc2VzIGZvciBtb3N0IGxvZ2ljYWwgYW5kIGZsb2F0IG9wZXJhdGlvbnMuICBSZWN1cnNlIGludG8KCW1vc3Qgb3BlcmFuZHMuCgoyMDA0LTA4LTAzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGNvbmZpZy5nY2MgKHN0cm9uZ2FybS0qLCB4c2NhbGUtKik6IEFkZCB0LWFybSB0byB0bWFrZV9maWxlcy4KCjIwMDQtMDgtMDMgIFBhdCBIYXVnZW4gIDxwdGhhdWdlbkB1cy5pYm0uY29tPgoKCSogcmEtYnVpbGQuYyAoY29uZmxpY3RzX2JldHdlZW5fd2Vicyk6IEZvciB3ZWJzIHRoYXQgY3Jvc3MgYSBjYWxsIGFkZAoJY29uZmxpY3RzIHRvIHJlZ3NfaW52YWxpZGF0ZWRfYnlfY2FsbC4KCjIwMDQtMDgtMDMgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChlbWl0X3NmbSk6IE9ubHkgZW1pdCBhIHNpbmdsZSBmcmFtZSBhZGp1c3RtZW50LgoKMjAwNC0wOC0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY292ZXJhZ2UuYyAodHJlZV9jb3ZlcmFnZV9jb3VudGVyX3JlZik6IEZpeCBjb21wdXRhdGlvbiBvZiB0aGUgbmV3CglBUlJBWV9SRUYgYXJndW1lbnQuCgoyMDA0LTA4LTAzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS1jb3Jlcy5kZWY6IFNvcnQgYnkgYXJjaGl0ZWN0dXJlLiAgQWRkIGFybTk0NmVzLCBhcm05NjZlcywKCWFybTk2OGVzLCBhcm0xMGUsIGFybTEwMjBlLCBhcm0xMDIyZS4KCSogaW52b2tlLnRleGk6IFVwZGF0ZSBsaXN0IG9mIEFSTSBjb3Jlcy4KCSogYXJtLXR1bmUubWQ6IFJlZ2VuZXJhdGUuCgoyMDA0LTA4LTAzICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtL2dlbnR1bmUuc2g6IE5ldyBmaWxlLgoJKiBhcm0vdC1hcm06IE5ldyBmaWxlLgoJKiBhcm0vYXJtLXR1bmUubWQ6IE5ldyBmaWxlIChhdXRvZ2VuZXJhdGVkKS4KCSogY29uZmlnLmdjYyAoYXJtKi0qLSopOiBBZGQgdC1hcm0gdG8gdG1ha2VfZmlsZSBmb3IgYWxsIHZhcmlhbnRzLgoJKiBhcm0ubWQgKGF0dHJpYnV0ZSB0dW5lKTogRGVsZXRlLiAgSW5jbHVkZSBhcm0tdHVuZS5tZC4KCjIwMDQtMDgtMDMgIFBhb2xvIEJvbnppbmkgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGdjYy5jIChhZGRfcHJlZml4LCBhZGRfc3lzcm9vdGVkX3ByZWZpeCk6IFJlbW92ZQoJcGVudWx0aW1hdGUgcGFyYW1ldGVyLiAgQWxsIGNhbGxlcnMgYWRqdXN0ZWQuCgkoc3RydWN0IHByZWZpeF9saXN0KTogUmVtb3ZlIHVzZWRfZmxhZ19wdHIuCgkoZmluZF9hX2ZpbGUpOiBEbyBub3Qgc2V0ICpwbC0+dXNlZF9mbGFnX3B0ci4KCSh3YXJuX0IsIHdhcm5fc3RkX3B0cik6IFJlbW92ZS4KCjIwMDQtMDgtMDMgIFlvc3NpIE1hcmtvdmljaCA8eW9zc2ltQGlsLmlibS5jb20+CgkgICAgTW9zdGFmYSBIYWdvZyA8bXVzdGFmYUBpbC5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChhbHRpdmVjX3ZubXN1YmZwKTogRml4IHdyb25nIHBhdHRlcm4uCgoyMDA0LTA4LTAyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChvdXRwdXRfY2FsbF9mcmFtZV9pbmZvKTogRG9uJ3QgY2hhbmdlIGRhdGEgZm9ybWF0CglkdWUgdG8gVEFSR0VUX1VTRVNfV0VBS19VTldJTkRfSU5GTy4gIEFsd2F5cyByZWZlciB0byB0aGUgbG9jYWwKCWxhYmVsLiAgVXNlICd0cnVlJyBub3QgJzEnLgoJKiBkb2MvaW5zdGFsbC50ZXhpIChwb3dlcnBjLSotZGFyd2luKik6IE1lbnRpb24gY2N0b29scyB2ZXJzaW9uCglyZXF1aXJlZC4KCjIwMDQtMDgtMDIgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogZ2RiaW5pdC5pbjogUmVmbGVjdCBwcmV2aW91cyBjaGFuZ2VzIHRvIHJ0dW5pb25fZGVmLgoKMjAwNC0wOC0wMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpIDxUUlVOQ19NT0RfRVhQUj46IFRoZSB0cmFuc2Zvcm1hdGlvbiAiWCAlIC1ZIgoJLT4gIlggJSBZIiBpcyBvbmx5IHZhbGlkIGZvciBUUlVOQ19NT0RfRVhQUi4KCjIwMDQtMDgtMDIgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogdmVjLmggKERFRl9WRUNfUCk6IEFkZCBwcm9wZXIgY2FzdCB0byB1c2VzIG9mIHZlY19vX3Jlc2VydmUgYW5kCgl2ZWNfcF9yZXNlcnZlLgoJKiBsYW5naG9va3MuaCAobGFuZ19ob29rczo6YnVpbHRpbl9mdW5jdGlvbik6IFJlbmFtZSBwYXJhbWV0ZXIKCWZyb20gImNsYXNzIiB0byAiYnRfY2xhc3MiLgoKMjAwNC0wOC0wMiAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE1MDY4CgkqIGZsb3cuYyAoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IENoZWNrIGNvbmRpdGlvbiBpcyByZXZlcnNpYmxlLgoKMjAwNC0wOC0wMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBnZW5ndHlwZS5oIChvcHRpb25zOjppbmZvKTogQ2hhbmdlIHR5cGUgdG8gY29uc3QgY2hhciAqLgoJKGVudW0gZ2NfdXNlZF9lbnVtKTogTW92ZSBvdXQgb2Ygc3RydWN0IHR5cGUgc2NvcGUuCgkqIGdlbmd0eXBlLmMgKGNyZWF0ZV9vcHRpb24pOiBDb252ZXJ0IGluaXRpYWxpemVyIGZvciBvcHRpb246OmluZm8gdG8KCWFwcHJvcGlhdGUgdHlwZS4KCShhZGp1c3RfZmllbGRfdHlwZSwgd2Fsa190eXBlLCB3cml0ZV9mdW5jX2Zvcl9zdHJ1Y3R1cmUsCgl3cml0ZV9yb290LCB3cml0ZV9yb290cyk6IFJlbW92ZSBwb2ludGxlc3MgY2FzdC4KCjIwMDQtMDgtMDIgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogZ2Vub3Bpbml0LmMgKGdlbl9pbnNuKTogQ2hlY2sgZm9yIE1PREVfQ09NUExFWF9GTE9BVCBwYXR0ZXJucyBmb3IgJEYuCgoyMDA0LTA4LTAyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHJ0bC5oICh1bmlvbiBydHVuaW9uX2RlZik6IEhhdmUgYWxsIG1lbWJlcnMgIHN0YXJ0IHdpdGggdGhlCglwcmVmaXggInJ0XyIuCgkoWElOVCwgWFNUUiwgWEVYUCwgWFZFQywgWE1PREUsIFhCSVRNQVAsIFhUUkVFLCBYQkJERUYsIFhUTVBMLAoJWDBJTlQsIFgwVUlOVCwgWDBTVFIsIFgwRVhQLCBYMFZFQywgWDBNT0RFLCBYMEJJVE1BUCwgWDBUUkVFLAoJWDBNRU1BVFRSLCBYMEJCREVGLCBYMFJFR0FUVFIsIFhDSU5ULCBYQ1VJTlQsIFhDU1RSLCBYQ0VYUCwKCVhDVkVDLCBYQ01PREUsIFhDQklUTUFQLCBYQ1RSRUUsIFhDQkJERUYsIFhDMkVYUCk6IEFkanVzdCBtZW1iZXJzCglhY2Nlc3MuCgkqIGdlbmd0eXBlLmMgKGFkanVzdF9maWVsZF9ydHhfZGVmKTogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYyAobG9jX21lbnRpb25lZF9pbl9wKTogTGlrZXdpc2UuCgoyMDA0LTA4LTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjIChtaXBzKi0qLWVsZiosIG1pcHMqLSotcnRlbXMqKTogQWRkIGVsZm9zLmggdG8gdG1fZmlsZS4KCVJlcGxhY2UgdXNlcyBvZiBtaXBzL2VsZjY0Lmggd2l0aCBtaXBzL2VsZi5oCgkqIGNvbmZpZy9taXBzL2VsZi5oIChNQVhfT0ZJTEVfQUxJR05NRU5ULCBUQVJHRVRfQVNNX05BTUVEX1NFQ1RJT04pCgkoVFlQRV9PUEVSQU5EX0ZNVCwgVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLCBCU1NfU0VDVElPTl9BU01fT1ApCgkoQVNNX09VVFBVVF9BTElHTkVEX0JTUywgQVNNX1dFQUtFTl9MQUJFTCwgQVNNX09VVFBVVF9XRUFLX0FMSUFTKQoJKE1BS0VfREVDTF9PTkVfT05MWSwgSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCkKCShIQU5ETEVfU1lTVl9QUkFHTUEpOiBEZWxldGUuCgkoQVNNX09VVFBVVF9ERUYpOiBGaXggZm9ybWF0dGluZy4KCSogY29uZmlnL21pcHMvZWxmNjQuaDogRGVsZXRlLgoKMjAwNC0wOC0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZ290X3N5bWJvbGljX29wZXJhbmQpOiBEbyByZXF1aXJlIGEKCXN5bWJvbCtvZmZzZXQgb3BlcmFuZCB0byBoYXZlIGl0cyBvZmZzZXQgYmUgemVybyBtb2QgMHgzZmZmCgl3aGVuIEdPVCBlbnRyaWVzIGFyZSBpbiB1c2UuICBDbGFyaWZ5IGxvZ2ljIGluIFNZTUJPTF9SRUYKCWNhc2UuICBDbGFyaWZ5IGNvbW1lbnRzLgoJKGlhNjRfZXhwYW5kX2xvYWRfYWRkcmVzcyk6IFNwbGl0IGEgc3ltYm9sK29mZnNldCBsb2FkIHdoZW4KCXRoZSBvZmZzZXQgaXMgbm9uemVybyBtb2QgMHgzZmZmLCBub3QgMHgxZmZmLgoKMjAwNC0wOC0wMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZSk6IEp1c3QgYWJvcnQKCWlmIHRyeWluZyB0byAqc3RvcmUqIHRvIGEgbm9uLW9mZnNldHRhYmxlIGFkZHJlc3MuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3Z0Zl9pbnRlcm5hbCk6IERvbid0IG1vdmUgR1BScyB0bwoJYSBub25vZmZzZXR0YWJsZSBhZGRyZXNzLgoJKG1vdmRpX2ludGVybmFsMzIpOiBEb24ndCBtb3ZlIEdQUnMgdG8gYSBub25vZmZzZXR0YWJsZSBhZGRyZXNzLgoJQ2xlYW4gdXAuCgkobW92dGlfc3RyaW5nKTogRG9uJ3QgbW92ZSBHUFJzIHRvIGEgbm9ub2Zmc2V0dGFibGUgYWRkcmVzcy4KCShtb3Z0aV9wcGM2NCk6IERvbid0IG1vdmUgR1BScyB0byBhIG5vbm9mZnNldHRhYmxlIGFkZHJlc3MuICBDbGVhbiB1cC4KCjIwMDQtMDgtMDIgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCVBSIHRhcmdldC8xNjE1NQoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMuaDogUmVwbGFjZSB0eXBlb2Ygd2l0aCBfX3R5cGVvZl9fLgoKMjAwNC0wOC0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKSA8bm9ybWFsX2lubmVyX3JlZj46IEZpeCBjcmFzaCB3aXRoCgl2YXJpYWJsZSBzaXplZCB0eXBlcy4KCjIwMDQtMDgtMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogSW4gdGhlIE1JUFMgb3B0aW9ucyBzZWN0aW9uLCByZW1vdmUgdGhlIHBhc3NhZ2UKCXNheWluZyB0aGF0IC1tZXhwbGljaXQtcmVsb2NzIGlzIHVzdWFsbHkgZGlzYWJsZWQgZm9yIC1tYWJpY2FsbHMKCS1mbm8tdW5pdC1hdC1hLXRpbWUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFJlbW92ZSB0aGUgY29kZSB0aGF0IGVuZm9yY2VkCgl0aGlzIHJ1bGUuCgoyMDA0LTA4LTAxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChjcHJlc3RvcmUpOiBQcm92aWRlIHR3byBhbHRlcm5hdGl2ZXMsIG9uZSBmb3IKCWFuIGluLXJhbmdlIG9mZnNldCBhbmQgb25lIGZvciBhbiBvdXQtb2YtcmFuZ2Ugb2Zmc2V0LiAgV3JhcCB0aGUgbGF0dGVyCglpbiAuc2V0IG1hY3JvLy5zZXQgbm9tYWNybyBpZiBpdCdzIGluc2lkZSBhIC5zZXQgbm9tYWNybyBibG9jay4KCjIwMDQtMDgtMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfZ3Bfc2F2ZV9zbG90KTogUmVtb3ZlLgoJKG1pcHNfcmVzdG9yZV9ncCk6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19hZGRfb2Zmc2V0KTogQWRkIGEgc2NyYXRjaCByZWdpc3RlcgoJYXJndW1lbnQuICBSZWltcGxlbWVudCBpbiBydGwgb25seSwgcmV1c2luZyBNSVBTMTYgbG9naWMgZnJvbQoJbWlwc19vdXRwdXRfbWlfdGh1bmsuCgkobWlwc19sZWdpdGltaXplX2FkZHJlc3MsIG1pcHNfbGVnaXRpbWl6ZV9jb25zdF9tb3ZlKTogQWRqdXN0IGNhbGxzCgl0byBtaXBzX2FkZF9vZmZzZXQuCgkobWlwc19ncF9zYXZlX3Nsb3QpOiBEZWxldGUuCgkobWlwc19yZXN0b3JlX2dwKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfc2V0X3JldHVybl9hZGRyZXNzLCBtaXBzX291dHB1dF9taV90aHVuayk6IFVzZSBtaXBzX2FkZF9vZmZzZXQuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGV4Y2VwdGlvbl9yZWNlaXZlcik6IFR1cm4gaW50byBhCglkZWZpbmVfaW5zbl9hbmRfc3BsaXQuICBVc2UgbWlwc19yZXN0b3JlX2dwIHRvIGRvIHRoZSBzcGxpdC4KCShjYWxsX2ludGVybmFsLCBjYWxsX3ZhbHVlX2ludGVybmFsLCBjYWxsX3ZhbHVlX211bHRpcGxlX2ludGVybmFsKTogVXNlCgltaXBzX3Jlc3RvcmVfZ3AgdG8gcmVzdG9yZSAkZ3AuCgoyMDA0LTA3LTMxICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJUFIgb3RoZXIvMTY4NDIKCSogbWtoZWFkZXJzLmluIChsaWJzdWJkaXIpOiBzL2djYy1saWIvZ2NjLy4KCjIwMDQtMDctMzEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1kZWNsLmMgKGRpYWdub3NlX21pc21hdGNoZWRfZGVjbHMpOiBHaXZlIGVycm9yIGZvciBleHRlcm5hbAoJcmVkZWNsYXJhdGlvbiBvZiBpZGVudGlmaWVyIGRlY2xhcmVkIHdpdGggbm8gbGlua2FnZSwgbm90IGp1c3QKCXdhcm5pbmcgd2l0aCAtV3RyYWRpdGlvbmFsLiAgRG8gbm90IGNoZWNrIERFQ0xfQ09OVEVYVCB0byBnaXZlCgllcnJvciBmb3IgcmVkZWNsYXJhdGlvbiB3aXRoIG5vIGxpbmthZ2UuCgoyMDA0LTA3LTMwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCSAgICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGxlZ2l0aW1hdGVfbG9fc3VtX2FkZHJlc3NfcCk6IFBlcm1pdAoJbm9uLW9mZnNldHRhYmxlIGFkZHJlc3NlcyBldmVuIGZvciBESW1vZGUuCgkocnM2MDAwX3NwbGl0X211bHRpcmVnX21vdmUpOiBDb3BlIHdpdGggbm9uLW9mZnNldHRhYmxlIGFkZHJlc3NlcwoJYmVpbmcgbW92ZWQgaW50byBtdWx0aXBsZSBHUFJzLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoUlM2MDAwX0RFRkFVTFRfTE9OR19ET1VCTEVfU0laRSk6IERlZmF1bHQKCXRvIDY0LgoJKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogVXNlIFJTNjAwMF9ERUZBVUxUX0xPTkdfRE9VQkxFX1NJWkUuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKFJTNjAwMF9ERUZBVUxUX0xPTkdfRE9VQkxFX1NJWkUpOiBEZWZpbmUKCXRvIDEyOC4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4tbGRvdWJsZS5jIChpc2xlc3MpOiBOZXcgbWFjcm8uCgkoaW5mKTogTmV3IG1hY3JvLgoJKG5vbmZpbml0ZSk6IE5ldyBtYWNyby4KCShGUEtJTkYpOiBEZWxldGUuCgkoX3hscWFkZCk6IENvbXBsZXRlbHkgcmV3cml0ZS4KCShfeGxxbXVsKTogQ29ycmVjdCBvdmVyZmxvdyBoYW5kbGluZy4KCShfeGxxZGl2KTogQ29ycmVjdCBvdmVyZmxvdyBoYW5kbGluZy4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4tbGRvdWJsZS1mb3JtYXQ6IE5ldyBmaWxlLgoKMjAwNC0wNy0zMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IE5ldyBwZWVwaG9sZTIncyB0byBjb252ZXJ0IGltdWwgYnkgMywgNSBvcgoJOSBpbnRvIHRoZSBlcXVpdmFsZW50IGxlYSBpbnN0cnVjdGlvbi4KCjIwMDQtMDctMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9leHByKSA8Y2FzZSBDT05TVF9ERUNMPjogRG9uJ3QgcmVwbGFjZQoJd2l0aCBERUNMX0lOSVRJQUwgaWYgZmJfbHZhbHVlLgoJKiB0cmVlLWdpbXBsZS5jIChpc19naW1wbGVfaWQpOiBBZGQgQ09OU1RfREVDTC4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9kZWNsX25hbWUpOiBEdW1wIHVubmFtZWQgQ09OU1RfREVDTAoJd2l0aCA8Q3h4eD4uCgkqIHRyZWUtc3NhLWNjcC5jIChtYXliZV9mb2xkX3N0bXRfaW5kaXJlY3QpOiBGb2xkIENPTlNUX0RFQ0wuCgoyMDA0LTA3LTMwICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbXB1dGVfcG9pbnRzX3RvX2FuZF9hZGRyX2VzY2FwZSk6IElmIGEKCXBvaW50ZXIgZXNjYXBlcyB0aHJvdWdoIGEgZnVuY3Rpb24gY2FsbCwgYXNzdW1lIHRoYXQgdGhlCgljYWxsZWUgd2lsbCBkZXJlZmVyZW5jZSBpdC4KCShhZGRfcG9pbnRlZF90b192YXIpOiBBc3N1bWUgdGhhdCBWQUxVRSBpcyBhbHdheXMgYW4KCUFERFJfRVhQUi4KCShjb2xsZWN0X3BvaW50c190b19pbmZvX3IpOiBPbmx5IGNhbGwgYWRkX3BvaW50ZWRfdG9fdmFyIGlmCgl0aGUgdmFsdWUgaXMgYW4gQUREUl9FWFBSLgoKMjAwNC0wNy0zMCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjcmVhdGVfYWxpYXNfbWFwX2Zvcik6IERvIG5vdCBnZXQgdGhlCglhbGlhcyBzZXQgb2YgdGhlIGlubmVyIHR5cGUgb2YgQVJSQVlfVFlQRXMuCgoyMDA0LTA3LTI5ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWNjcC5jICh2aXNpdF9hc3NpZ25tZW50KTogTW92ZSBjb2RlIHRvIHByZXZlbnQKCXNldHRpbmcgYSBub24tcmVnaXN0ZXIgdG8gVU5ERUZJTkVEIHJpZ2h0IGJlZm9yZSB0aGUgY2FsbCB0bwoJc2V0X2xhdHRpY2VfdmFsdWUuCgoyMDA0LTA3LTI5ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtOiBNYWtlIGFsaWFzZXMgbW92c3RyKiBmb3IgbW92bWVtKi4KCjIwMDQtMDctMjkgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EuYyAodmVyaWZ5X2Zsb3dfc2Vuc2l0aXZlX2FsaWFzX2luZm8pOiBXaGVuCgljb21wYXJpbmcgcG9pbnRzLXRvIHNldHMgb2YgZGlmZmVyZW50IHBvaW50ZXJzLCBtYWtlIHN1cmUgdGhlCglzZWNvbmQgcG9pbnRlciBpcyBhY3R1YWxseSByZWZlcmVuY2VkIGluIHRoZSBjb2RlLgoKMjAwNC0wNy0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoc2V0am1wX29wZXJhbmQpOiBEZWxldGUsIHVudXNlZC4KCShnb3Rfc3ltYm9saWNfb3BlcmFuZCk6IFJlbW92ZSB1bnJlYWNoYWJsZSBjb2RlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFBSRURJQ0FURV9DT0RFUyk6IFJlbW92ZSBlbnRyeSBmb3IKCXNldGptcF9vcGVyYW5kOyBhZGQgZW50cnkgZm9yIHRsc19zeW1ib2xpY19vcGVyYW5kLgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBSZW1vdmUgYWxsIHByb3RvdHlwZXMgb2YKCXByZWRpY2F0ZSBmdW5jdGlvbnMuCgoyMDA0LTA3LTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAobGFuZ19wb3N0X3BjaF9sb2FkKTogTmV3IHZhcmlhYmxlLgoJKiBjLXBjaC5jIChsYW5nX3Bvc3RfcGNoX2xvYWQpOiBEZWZpbmUgaXQuCgkoY19jb21tb25fcmVhZF9wY2gpOiBVc2UgaXQuCgkqIGNncmFwaHVuaXQuYyAocmVjb3JkX2NhbGxfMSk6IEdpdmUgdGhlIGZyb250IGVuZCBhIGNoYW5jZSB0bwoJcmVjb3JkIGFkZGl0aW9uYWwgbmVlZGVkIGVudGl0aWVzIHdoZW4gYSB2YXJpYWJsZSBpcyBtYXJrZWQgYXMKCW5lZWRlZC4KCSogdGxpbmsuYyAocmVjb21waWxlX2ZpbGVzKTogUm9idXN0aWZ5LgoJKHNjYW5fbGlua2VyX291dHB1dCk6IElmIGEgc3ltYm9sIGlzIGFzc2lnbmVkIHRvIGEgZmlsZSwKCWJ1dCBhZnRlciByZWNvbXBpbGF0aW9uIGlzIG5vdCBwcmVzZW50IHRoZXJlLCBpc3N1ZSBhbiBlcnJvcgoJbWVzc2FnZS4KCjIwMDQtMDctMjkgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIHRyZWUtc3NhLWxvb3AtaW0uYyAoZm9yY2VfbW92ZV90aWxsX2V4cHIsIGZvcmNlX21vdmVfdGlsbCk6CglUYWtlIG9yaWdfbG9vcCBhcmd1bWVudCBhbmQgcGFzcyBpdCB0byBzZXRfbGV2ZWwuCgkoc2NoZWR1bGVfc20pOiBQYXNzIHRoZSBjb3JyZWN0IG9yaWdfbG9vcCB0byBmb3JjZV9tb3ZlX3RpbGwuCgoyMDA0LTA3LTI5ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBjZmdsb29wLmMgKHVwZGF0ZV9sYXRjaF9pbmZvKTogVXBkYXRlIGRvbWluYXRvciBvZiB0aGUgbmV3IGJsb2NrLgoJKGNhbm9uaWNhbGl6ZV9sb29wX2hlYWRlcnMsIGZsb3dfbG9vcHNfZmluZCk6IERvIG5vdCBmcmVlIGRvbWluYW5jZQoJaW5mby4KCSogZG9taW5hbmNlLmMgKHZlcmlmeV9kb21pbmF0b3JzKTogQ2hlY2sgdGhhdCB0aGUgZG9taW5hbmNlIHRyZWUgaXMKCWNvbm5lY3RlZC4KCShyZWNvdW50X2RvbWluYXRvcik6IElnbm9yZSB1bnJlYWNoYWJsZSBibG9ja3MuCgkoaXRlcmF0ZV9maXhfZG9taW5hdG9ycyk6IENsZWFudXAgb2xkIGRvbWluYW5jZSBpbmZvcm1hdGlvbiBiZWZvcmUKCXJlY29tcHV0aW5nIGl0LgoKMjAwNC0wNy0yOSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IFJldmVydCBjaGFuZ2VzCgl0byBBRERSX0VYUFIgcHJvY2Vzc2luZyBpbnRyb2R1Y2VkIGJ5OgoJICAgIDIwMDQtMDYtMjEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgkgICAgKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IE1pbm9yIHJlYXJyYW5nZW1lbnRzLgoKMjAwNC0wNy0yOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvaW1wbGVtZW50LWMudGV4aTogQWRkIEM5MCBzdWJjbGF1c2UgcmVmZXJlbmNlcy4gIFBvaW50IHRvCglwcmVwcm9jZXNzb3IgZG9jdW1lbnRhdGlvbiBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0LiAgQWRkIHBvaW50cwoJb25seSBwcmVzZW50IGluIEM5MC4gIEZpbGwgaW4gZG9jdW1lbnRhdGlvbiBmb3IgYWxsIHBvaW50cy4KCjIwMDQtMDctMjkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChvdXRwdXRfbW92Yik6IENvcnJlY3QgdHlwby4KCjIwMDQtMDctMjkgIFBhdCBIYXVnZW4gIDxwdGhhdWdlbkB1cy5pYm0uY29tPgoKCSogcmEuaCAoc2luZ2xlX3JlZ19pbl9yZWdjbGFzcyk6IERlY2xhcmUuCgkqIHJhLmMgKHNpbmdsZV9yZWdfaW5fcmVnY2xhc3MpOiBEZWZpbmUuCgkoZmlyc3RfaGFyZF9yZWcpOiBOZXcuCgkoaW5pdF9yYSk6IEluaXRpYWxpemUgc2luZ2xlX3JlZ19pbl9yZWdjbGFzcy4KCSogcmEtY29sb3JpemUuYyAob2tfY2xhc3MpOiBOZXcuCgkoY29hbGVzY2UsIGFnZ3Jlc3NpdmVfY29hbGVzY2UsIGV4dGVuZGVkX2NvYWxlc2NlXzIpOiBVc2UgaXQuCgoyMDA0LTA3LTI5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZ2Nvdi1pby5oOiBBbGxvdyB6ZXJvIHRhZyBhcyBFT0YgaW5kaWNhdG9yLgoJKGdjb3ZfaXNfZW9mKTogUmVtb3ZlLgoJKGdjb3ZfdHJ1bmNhdGUpOiBSZW1vdmUuCgkqIGdjb3YtaW8uYyAoZ2Nvdl9zZWVrKTogQWx3YXlzIFNFRUtfU0VULgoJKiBsaWJnY292LmMgKGdjb3ZfZXhpdCk6IERvbid0IHVzZSBnY292X3RydW5jYXRlLiAgV3JpdGUgZXhwbGljaXQKCUVPRiB0YWcuCgkqIGNvdmVyYWdlLmMgKHJlYWRfY291bnRzX2ZpbGUpOiBEb24ndCB1c2UgZ2Nvdl9pc19lb2YuCgkqIGdjb3YtZHVtcC5jIChkdW1wX2ZpbGUpOiBMaWtld2lzZS4KCSogZ2Nvdi5jIChyZWFkX2dyYXBoX2ZpbGUsIHJlYWRfY291bnRfZmlsZSk6IExpa2V3aXNlLgoKCSogYy1kZWNsLmMgKGNvbXBsZXRlX2FycmF5X3R5cGUpOiBEb24ndCBncmF0dWl0b3VzbHkgY29weQoJbWF4aW5kZXguICBDaGVjayBpdCBhbHdheXMgaGFzIGEgdHlwZS4KCjIwMDQtMDctMjkgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHJ0bC5jIChjdXJyZW50bHlfZXhwYW5kaW5nX3RvX3J0bCk6IE5ldy4KCSogcnRsLmggKGN1cnJlbnRseV9leHBhbmRpbmdfdG9fcnRsKTogRXhwb3J0IGl0LgoJKiBjZmdleHBhbmQuYyAodHJlZV9jZmdfZXhwYW5kKTogU2V0L2NsZWFyIGl0IGF0IGVudHJ5L2V4aXQuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZXhwYW5kX21vdik6IFJlbW92ZSBvbGQgUlRMCglpbmxpbmVyIGhhY2suCgkqIGNvbmZpZy9zaC9zaC5jOiBSZXBsYWNlIHJ0eF9lcXVhbF9mdW5jdGlvbl92YWx1ZV9tYXR0ZXJzCgl3aXRoIGN1cnJlbnRseV9leHBhbmRpbmdfdG9fcnRsLgoJKiBjb25maWcvc2gvc2gubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGdvdF9zeW1ib2xpY19vcGVyYW5kKTogTGlrZXdpc2UuCgoyMDA0LTA3LTI5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglJbnRyb2R1Y2Ugc2gyYSBzdXBwb3J0LgoJMjAwNC0wNy0yOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy5nY2M6IEJ1aWxkIG11bHRpbGlicyBmb3Igc2gyYSBhbmQgc2gyYS1zaW5nbGUgYnkKCWRlZmF1bHQuCgkqIGNvbmZpZy9zaC9zaC5oIChTVVBQT1JUX1NIMkEsIFNVUFBPUlRfU0gyQV9TSU5HTEUpOiBEZWZpbmUgYnkKCWRlZmF1bHQuICBTcGxpdCB0aGVpciB0ZXN0cyBvdXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgU0g0CgltdWx0aWxpYnMuCgkqIGNvbmZpZy9zaC90LXNoIChNVUxUSUxJQl9NQVRDSEVTKTogRG9uJ3QgZXZlciB1c2UgU0g0IG9yIFNINGEKCW11bHRpbGlicyBmb3IgU0gyYS4KCTIwMDQtMDctMjggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcuZ2NjOiBIYW5kbGUgc2gyYSBtdWx0aWxpYnMgYW5kIGNwdSBzZWxlY3Rpb24uCgkqIGNvbmZpZy9zaC9zaC5oOiBMaWtld2lzZS4gIEhhbmRsZSBzaDJhIGNvbW1hbmQgbGluZSBmbGFncy4KCSogY29uZmlnL3NoL3QtbWxpYi1zaDJhOiBOZXcuCgkqIGNvbmZpZy9zaC90LW1saWItc2gyYS1ub2ZwdTogTmV3LgoJKiBjb25maWcvc2gvdC1tbGliLXNoMmEtc2luZ2xlOiBOZXcuCgkqIGNvbmZpZy9zaC90LW1saWItc2gyYS1zaW5nbGUtb25seTogTmV3LgoJMjAwNC0wNy0wOSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCUlzc3VlIDQzNDAwCgkqIGNvbmZpZy9zaC9zaC5oIChEUklWRVJfU0VMRl9TUEVDUyk6IElzc3VlIGFuIGVycm9yIG1lc3NhZ2UgaWYKCS1tbCBhbmQgLW0yYSBhcmUgdXNlZCB0b2dldGhlci4KCTIwMDQtMDMtMjMgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoJKiBjb25maWcvc2gvc2guYyAoc2hfYnVpbHRpbl9zYXZlcmVncyk6IFVzZSB0aGUgZG91YmxlIGNvZGUgb25seQoJd2hlbiB3ZSBoYXZlIGEgZG91YmxlLXNpemVkIEZQVS4KCTIwMDQtMDItMjQgIENvcmlubmEgVmluc2NoZW4gPHZpbnNjaGVuQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChzZXRfZnBzY3IpOiBEb24ndCBidWlsZCBpZiBfX1NIMkFfTk9GUFVfXwoJaXMgc2V0LgoJKiBjb25maWcvc2gvZWxmLmggKFNVQlRBUkdFVF9BU01fSVNBX1NQRUMpOiBBZGQgY2FzZXMgZm9yIC1tc2gyYS1ub2ZwdSwKCS1tc2gyYS1zaW5nbGUgYW5kIC1tc2gyYS1zaW5nbGUtb25seQoJMjAwNC0wMi0yNCAgQ29yaW5uYSBWaW5zY2hlbiA8dmluc2NoZW5AcmVkaGF0LmNvbT4KCSogY29uZmlnL3NoL2NydDEuYXNtOiBEb24ndCBnZW5lcmF0ZSBGUFUgaW5zdHJ1Y3Rpb25zIGlmIF9fU0gyQV9OT0ZQVV9fCglpcyBzZXQuCgkyMDA0LTAyLTIwICBESiBEZWxvcmllICA8ZGpAZGVsb3JpZS5jb20+CgkqIGNvbmZpZy9zaC9zaC5tZCAobW92c2ZfaSwgbW92c2ZfaWUsIG1vdnNmLCBibGUsIGJnZSk6IERpc2FibGUgZm9yIHNoMmEtbm9mcHUuCgkyMDA0LTAyLTIwICBGcmVkIEZpc2ggPGZuZkByZWRoYXQuY29tPiwKCUNvcmlubmEgVmluc2NoZW4gPHZpbnNjaGVuQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9zaC90LXNoIChNVUxUSUxJQl9PUFRJT05TKTogQWRkIDJhLW5vZnB1LgoJKE1VTFRJTElCX0VYQ0VQVElPTlMpOiBEb24ndCBidWlsZCBsaXR0ZWwtZW5kaWFuIG9uIHNoMmEuCgkyMDA0LTAyLTE4ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCSogY29uZmlnL3NoL3NoLmMgKGJyb2tlbl9tb3ZlKTogQWRkIHN1cHBvcnQgZm9yIG1vdmkyMC4KCSogY29uZmlnL3NoL3NoLmg6IExpa2V3aXNlLgoJKFNISUZUX0NPVU5UX1RSVU5DQVRFRCk6IFNldCBmb3Igc2gyYS4KCSogY29uZmlnL3NoL3NoLm1kICh1ZGl2c2kzX3NoMmEpOiBOZXcuCgkodWRpdnNpMyk6IENhbGwgaXQuCgkoZGl2c2kzX3NoMmEpOiBOZXcuCgkoZGl2c2kzKTogQ2FsbCBpdC4KCShtdWxfcik6IE5ldy4KCShhc2hsc2kzX3NoMmEpOiBOZXcuCgkoYXNocnNpM19zaDJhKTogTmV3LgoJKGxzaHJzaTNfc2gyYSk6IE5ldy4KCShtb3ZzaV9pKTogRGlzYWJsZSBmb3Igc2gyYS4KCShtb3ZzaV9pZSk6IEFkZCBtb3ZpMjAuCgkobW92c2ZfaSwgbW92c2ZfaWUsIG1vdnNmLCBibGUsIHVudHlwZWRfY2FsbCk6IEV4cGxpY2l0bHkgZW5hYmxlCglzaDJhLCBmb3IgLW0yYS1ub2ZwdSBtb2RlLgoJMjAwNC0wMi0xMyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtOiBIYW5kbGUgZG91YmxlIHZzIHNpbmdsZSBiZXR0ZXIuCgkqIGNvbmZpZy9zaC9zaC5oOiBMaWtld2lzZS4KCTIwMDQtMDItMDkgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoJKiBjb25maWcvc2gvY3J0MS5hc206IEFkZCBzdXBwb3J0IGZvciBzaDJhLgoJKiBjb25maWcvc2gvZWxmLmg6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvbGliMWZ1bmNzLmFzbTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmg6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvdC1zaDogTGlrZXdpc2UuCgoyMDA0LTA3LTI4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2Lm1kIChtb3ZxaV9pbnRlcm5hbCwgbW92aGlfaW50ZXJuYWwsCgltb3ZzaV9pbnRlcm5hbCk6IEFkZCBiYWNrdXAgYWx0ZXJuYXRpdmVzIGZvciBtZW1vcnkgaW5wdXRzLgoKMjAwNC0wNy0yOCAgTWF0dCBBdXN0ZXJuICA8YXVzdGVybkBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKGRhcndpbl9vbmVfYnl0ZV9ib29sKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCSogY29uZmlnL2Rhcndpbi5oIChkYXJ3aW5fb25lX2J5dGVfYm9vbCk6IERlY2xhcmUuCgkoU1VCVEFSR0VUX09QVElPTlMpOiBEZWZpbmUgbWFjcm8uICAoZm9yIC1tb25lLWJ5dGUtYm9vbCBmbGFnLikKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoQk9PTF9UWVBFX1NJWkUpOiBDb25kaXRpb25hbGl6ZSBvbgoJdmFsdWUgb2YgZGFyd2luX29uZV9ieXRlX2Jvb2wuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1vbmUtYnl0ZS1ib29sIGZsYWcuCgoyMDA0LTA3LTI4ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3Vuc2FmZV9mb3JfcmVldmFsKTogRGVsZXRlLgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19VTlNBRkVfRk9SX1JFRVZBTCk6IERlbGV0ZSB1c2UuCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfZXhwcmVzc2lvbik6IERlbGV0ZSBVTlNBVkVfRVhQUiBjYXNlLgoJKiBjYWxscy5jIChmaXhfdW5zYWZlX3RyZWUpOiBEZWxldGUuCgkoZXhwYW5kX2NhbGwpOiBEZWxldGUgY29kZSB3aGljaCB1c2VkIGFib3ZlLgoJKiBkb2p1bXAuYyAoZG9fanVtcCk6IERlbGV0ZSBVTlNBVkVfRVhQUiBjYXNlLgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSk6IERpdHRvLgoJKiBmb2xkLWNvbnN0LmMgKG5vbl9sdmFsdWUpOiBEaXR0by4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX1VOU0FGRV9GT1JfUkVFVkFMKTogRGVsZXRlLgoJKGxoZF91bnNhZmVfZm9yX3JlZXZhbCk6IERpdHRvLgoJKiBsYW5naG9va3MuYyAobGhkX3Vuc2FmZV9mb3JfcmVldmFsKTogRGl0dG8uCgkqIGxhbmdob29rcy5oICh1bnNhZmVfZm9yX3JlZXZhbCk6IERpdHRvLgoJKHVuc2F2ZV9leHByX25vdyk6IEFkanVzdCBjb21tZW50LgoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JvZHlfcik6IERlbGV0ZSBVTlNBVkVfRVhQUiBiaXRzLgoJKGVzdGltYXRlX251bV9pbnNuc18xKTogRGl0dG8uCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogRGl0dG8uCgkqIHRyZWUuYyAoZXhwcl9hbGlnbik6IERpdHRvLgoJKHVuc2F2ZV9leHByKTogRGVsZXRlLgoJKHVuc2FmZV9mb3JfcmVldmFsKTogRGl0dG8uCgkqIHRyZWUuaCAodW5zYWZlX2Zvcl9yZWV2YWwsIHVuc2F2ZV9leHByKTogRGl0dG8uCgkqIHRyZWUuZGVmIChVTlNBVkVfRVhQUik6IERlbGV0ZS4KCSogb2JqYy9vYmpjLWxhbmcuYyAoTEFOR19IT09LU19VTlNBRkVfRk9SX1JFRVZBTCk6IERlbGV0ZS4KCjIwMDQtMDctMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKGVudW0gdGxzX21vZGVsKTogTW92ZSAuLi4KCSogY29yZXR5cGVzLmg6IC4uLiBoZXJlLgoKMjAwNC0wNy0yOCAgUmljaGFyZCBTYW5kaWZvcmQgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5oIChFUElMT0dVRV9VU0VTKTogTmV3LiAgVXNlIExSLgoKMjAwNC0wNy0yOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY3NlLmMgKHZhbGlkYXRlX2Nhbm9uX3JlZyk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20uLi4KCShjYW5vbl9yZWcpOiAuLi5oZXJlLiAgVXNlIHZhbGlkYXRlX2Nhbm9uX3JlZyBmb3IgYm90aCAnZScgYW5kICdFJy4KCjIwMDQtMDctMjggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAobWF5YmVfY3JlYXRlX2dsb2JhbF92YXIpOiBEb24ndCBqdXN0CglyZXR1cm4gaWYgLkdMT0JBTF9WQVIgaGFzIGJlZW4gY3JlYXRlZC4KCjIwMDQtMDctMjggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EuYyAodmVyaWZ5X2Zsb3dfaW5zZW5zaXRpdmVfYWxpYXNfaW5mbyk6IFByb2Nlc3MKCWV2ZXJ5IHZhcmlhYmxlIHRoYXQgbWF5IGhhdmUgYWxpYXNlcywgbm90IGp1c3QgdGFncy4KCjIwMDQtMDctMjggIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICgibW92ZV9mcm9tX0NSX2d0X2JpdCIpOiBSZW5hbWUgdG8KCW1vdmVfZnJvbV9DUl9lcV9iaXQuCglSZW5hbWUgVU5TUEVDX01WX0NSX0dUIHRvIFVOU1BFQ19NVl9DUl9FUS4KCgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAoImU1MDBfZmxpcF9ndF9iaXQiKTogUmVuYW1lIHRvCgllNTAwX2ZsaXBfZXFfYml0LgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IFJlbmFtZSBvdXRwdXRfZTUwMF9mbGlwX2d0X2JpdCB0bwoJb3V0cHV0X2U1MDBfZmxpcF9lcV9iaXQuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChvdXRwdXRfZTUwMF9mbGlwX2d0X2JpdCk6IFJlbmFtZSB0bwoJb3V0cHV0X2U1MDBfZmxpcF9lcV9iaXQuCgkocnM2MDAwX2VtaXRfc0NPTkQpOiBSZW5hbWUgY2FsbCB0byBvdXRwdXRfZTUwMF9mbGlwX2d0X2JpdCB0bwoJb3V0cHV0X2U1MDBfZmxpcF9lcV9iaXQuCglSZW5hbWUgZ2VuX21vdmVfZnJvbV9DUl9ndF9iaXQgdG8gZ2VuX21vdmVfZnJvbV9DUl9lcV9iaXQuCgkocHJpbnRfb3BlcmFuZCk6IGNhc2UgRC4gIEdldCB0byBFUSBiaXQuCgoyMDA0LTA3LTI4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBnY292LmMgKGZ1bmN0aW9uX3N1bW1hcnkpOiBBZGQgbWlzc2luZyBcbi4KCjIwMDQtMDctMjggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCUludHJvZHVjZSBzaDRhIHN1cHBvcnQuCgkqIGNvbmZpZy5nY2M6IEhhbmRsZSBzaDRhIG11bHRpbGlicyBhbmQgY3B1IHNlbGVjdGlvbi4KCSogY29uZmlnL3NoL3NoLmg6IExpa2V3aXNlLiAgSGFuZGxlIHNoNGEgY29tbWFuZCBsaW5lIGZsYWdzLgoJKiBjb25maWcvc2gvdC1tbGliLXNoNGE6IE5ldy4KCSogY29uZmlnL3NoL3QtbWxpYi1zaDRhbDogTmV3LgoJKiBjb25maWcvc2gvdC1tbGliLXNoNGEtbm9mcHU6IE5ldy4KCSogY29uZmlnL3NoL3QtbWxpYi1zaDRhLXNpbmdsZTogTmV3LgoJKiBjb25maWcvc2gvdC1tbGliLXNoNGEtc2luZ2xlLW9ubHk6IE5ldy4KCTIwMDQtMDItMjAgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoJKiBjb25maWcvc2gvc2gubWQgKCJtb3Z1YSIpOiBDaGFuZ2UgY29uc3RyYWludCBmcm9tICJtIiB0byAiU3VhIi4KCSogY29uZmlnL3NoL3NoLmggKEVYVFJBX0NPTlNUUkFJTlRfUyk6IEFkZCAiU3VhIiBzdXBwb3J0LgoJMjAwMy0wOC0yMiAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9zaC9zaDRhLm1kOiBVcGRhdGUgZm9yIGNoaXAgZXJyYXRhLgoJMjAwMy0wOC0wNyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9zaC9zaDRhLm1kOiBOZXcgZmlsZS4gc2g0YSBwcm9jZXNzb3IgZGVzY3JpcHRpb24uCgkyMDAzLTA3LTA4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL3NoL3NoLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZGVkIDRhbC4gIEFkanVzdCBkZXNjcmlwdGlvbgoJb2YgLW00YS1ub2ZwdS4KCShTSF9BU01fU1BFQyk6IFBhc3MgLWRzcCBmb3IgLW00YWwsIG5vdCAtbTRhLW5vZnB1LgoJKiBjb25maWcvc2gvdC1zaCAoTVVMVElMSUJfTUFUQ0hFUyk6IE1hcCAtbTRhbCB0byAtbTRhLW5vZnB1LgoJKiBkb2MvaW52b2tlLnRleGkgKFNIIE9wdGlvbnMpOiBEb2N1bWVudCAtbTRhbC4KCTIwMDMtMDctMDMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvc2gvc2guYyAoZXhwYW5kX2Jsb2NrX21vdmUpOiBSZW1vdmUgY29tbWVudGVkLW91dCBjb2RlCgljaGVja2VkIGluIGJ5IG1pc3Rha2UuCgkoc2hfY2Fubm90X2NoYW5nZV9tb2RlX2NsYXNzKTogRW5hYmxlIFNVQlJFR3MgdG8gYmUgdXNlZCB0byBzZWxlY3QKCXNpbmdsZSBlbGVtZW50cyBmcm9tIFNGbW9kZSB2ZWN0b3JzLgoJKiBjb25maWcvc2gvc2gubWQgKGZzY2EpOiBVc2UgVkVDX0NPTkNBVCB0byBpbml0aWFsaXplIHRoZSBvdXRwdXQKCXJlZ2lzdGVyLgoJKHNpbnNmMiwgY29zc2YyLCBzaW5kZjIsIGNvc2RmMik6IERvbid0IGVtaXQgQ0xPQkJFUi4KCTIwMDMtMDctMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvc2gvc2guaCAoc2hfZnNjYV9zZjJpbnQsIHNoX2ZzY2FfZGYyaW50LAoJc2hfZnNjYV9pbnQyc2YpOiBSZW1vdmUgdmFyaWFibGUgZGVjbGFyYXRpb25zLgoJKiBjb25maWcvc2gvc2guYyAoc2hfZnNjYV9zZjJpbnQsIHNoX2ZzY2FfZGYyaW50LAoJc2hfZnNjYV9pbnQyc2YpOiBOZXcgZnVuY3Rpb25zLgoJKHNoX2ZzY2Ffc2YyaW50X3J0eCwgc2hfZnNjYV9kZjJpbnRfcnR4LAoJc2hfZnNjYV9pbnQyc2ZfcnR4KTogTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkqIGNvbmZpZy9zaC9zaC1wcm90b3MuaCAoc2hfZnNjYV9zZjJpbnQsIHNoX2ZzY2FfZGYyaW50LAoJc2hfZnNjYV9pbnQyc2YpOiBEZWNsYXJlLgoJKiBjb25maWcvc2gvc2gubWQ6IEFkanVzdC4KCSogZG9jL2ludm9rZS50ZXhpIChTSCBPcHRpb25zKTogRG9jdW1lbnQgbmV3IG9wdGlvbnMuCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChpY19pbnZhbGlkYXRlKTogUmVtb3ZlIFNINGEgZm9yd2FyZAoJY29tcGF0aWJpbGl0eSBmcm9tIFNINCBjb2RlLgoJMjAwMy0wNi0yNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9zaC9zaC5jIChleHBhbmRfYmxvY2tfbW92ZSk6IERvbid0IGVtaXQgUE9TVF9JTkMgdG9vCgllYXJseS4KCShtZW1vcnlfbW92c3JjX29wZXJhbmQpOiBSZW5hbWVkIHRvLi4uCgkodW5hbGlnbmVkX2xvYWRfb3BlcmFuZCk6IC4uLiB0aGlzLiAgU2ltcGxpZmllZC4KCSogY29uZmlnL3NoL3NoLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkanVzdC4KCSogY29uZmlnL3NoL3NoLm1kIChtb3Z1YSwgZXh0diwgZXh0enYpOiBMaWtld2lzZS4gIENoYW5nZSBtb3Z1YSdzCglpbnB1dCBvcGVyYW5kIHRvIFNJbW9kZSwgYW5kIGFkanVzdCB0aGUgb3RoZXJzLiAgSW50cm9kdWNlCglwb3N0LWluY3JlbWVudCBieSBwZWVwaG9sZS4KCSogY29uZmlnL3NoL3NoLmMgKGV4cGFuZF9ibG9ja19tb3ZlKTogR2l2ZSB0aGUgdGFyZ2V0IGFkZHJlc3MgdGhlCglzYW1lIG1vZGUgYXMgdGhlIHRlbXAgcmVnLgoJKiBjb25maWcvc2gvc2guYyAoZXhwYW5kX2Jsb2NrX21vdmUpOiBVc2UgYSB0ZW1wIHJlZyBmb3IgdW5hbGlnbmVkCgljb3B5aW5nLgoJMjAwMy0wNi0yNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CglJbnRyb2R1Y2Ugc3VwcG9ydCBmb3IgU0g0YS4KCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc20gKGljX2ludmFsaWRhdGUpOiBVc2UgaWNiaSBpZgoJX19TSDRBX18uICBFbWl0IDQgNGtiIGJsb2NrcyBhbmQgdG91Y2ggYWxsIG9mIHRoZW0gb3RoZXJ3aXNlLgoJKiBjb25maWcvc2gvc2guYyAoc2hfZnNjYV9zZjJpbnQsIHNoX2ZzY2FfZGYyaW50LAoJc2hfZnNjYV9pbnQyc2YpOiBOZXcuCgkoc2hfaW5pdF9idWlsdGlucyk6IEluaXRpYWxpemUgdGhlbS4KCShwcmludF9vcGVyYW5kKTogU3VwcG9ydCBgZCcuCgkoZXhwYW5kX2Jsb2NrX21vdmUpOiBVc2UgbW92dWEgaWYgc3JjIGlzIG1pc2FsaWduZWQuCgkobWVtb3J5X21vdnNyY19vcGVyYW5kKTogTmV3LgoJKiBjb25maWcvc2gvc2guaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX19TSDRBX18KCWFuZCBvbmUgb2YgdGhlIFNINCBtYWNyb3MuCgkoU0g0QV9CSVQsIFRBUkdFVF9TSDRBX0FSQ0gsIFRBUkdFVF9TSDRBX0ZQLAoJU0VMRUNUX1NINEFfTk9GUFUsIFNFTEVDVF9TSDRBX1NJTkdMRV9PTkxZLCBTRUxFQ1RfU0g0QSwKCVNFTEVDVF9TSDRBX1NJTkdMRSk6IE5ldy4KCShUQVJHRVRfTk9ORSk6IEFkZCBTSDRBX0JJVC4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgNGEtc2luZ2xlLW9ubHksIDRhLXNpbmdsZSwgNGEtbm9mcHUgYW5kIDRhLgoJKFNIX0FTTV9TUEVDKTogUGFzcyAtZHNwIGlmIC1tNGEtbm9mcHUuCgkoc2hfZnNjYV9zZjJpbnQsIHNoX2ZzY2FfZGYyaW50LCBzaF9mc2NhX2ludDJzZik6IERlY2xhcmUuCgkoT1ZFUlJJREVfT1BUSU9OUyk6IFNldCBjcHUgdG8gQ1BVX1NINEEgd2hlbiBhcHByb3ByaWF0ZS4KCShlbnVtIHByb2Nlc3Nvcl90eXBlKTogQWRkZWQgUFJPQ0VTU09SX1NINEEuCgkoUFJFRElDQVRFX0NPREVTKTogQWRkIG1lbW9yeV9tb3ZzcmNfb3BlcmFuZC4KCSogY29uZmlnL3NoL3NoLm1kOiBSZW1vdmVkIHVudXNlZCB2YXJpYWJsZXMuCgkoYXR0ciBjcHUpOiBBZGQgc2g0YS4KCShhdHRyIHR5cGUpOiBBZGQgbW92dWEsIGZzcnJhIGFuZCBmc2NhLgoJKHByZWZldGNoKTogTmV3LCBmb3IgU0g0LgoJKGljX2ludmFsaWRhdGVfbGluZSwgaWNfaW52YWxpZGF0ZV9saW5lX3NoNGEpOiBVc2UgaWNiaS4KCSh0b2dnbGVfc3opOiBTZXQgdHlwZSB0byBmcC4KCSh0b2dnbGVfcHIsIHJzcXJ0c2YyLCBmc2NhLCBzaW5zZjIsIGNvc3NmMiwgc2luZGYyLCBjb3NkZjIpOiBOZXcuCgkobW92dWEsIGV4dHYsIGV4dHp2KTogTmV3LgoJKiBjb25maWcvc2gvdC1zaDogQWRkIG11bHRpbGlicyBmb3IgNGEsIDRhLW5vZnB1LCA0YS1zaW5nbGUKCWFuZCA0YS1zaW5nbGUtb25seS4KCjIwMDQtMDctMjggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1vcHRpbWl6ZS5jIChpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IFNjaGVkdWxlCglwYXNzX21heV9hbGlhcyByaWdodCBhZnRlciB0aGUgcHJvZ3JhbSBpcyByZW5hbWVkIGludG8gU1NBLgoJKiB0cmVlLXBhc3MuaCAoUFJPUF9hbGlhcyk6IERlZmluZS4KCSogdHJlZS1vdXRvZi1zc2EuYyAocGFzc19kZWxfc3NhKTogUmVxdWlyZSBQUk9QX2FsaWFzLgoJKiB0cmVlLXNyYS5jIChwYXNzX3NyYSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1jY3AuYyAocGFzc19jY3ApOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY29weXJlbmFtZS5jIChwYXNzX3JlbmFtZV9zc2FfY2NwKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRjZS5jIChwYXNzX2RjZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kb20uYyAocGFzc19kb21pbmF0b3IpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtZHNlLmMgKHBhc3NfZHNlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKHBhc3NfZm9yd3Byb3ApOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1jaC5jIChwYXNzX2NoKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXBoaW9wdC5jIChwYXNzX3BoaW9wdCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1wcmUuYyAocGFzc19wcmUpOiBMaWtld2lzZS4KCSogdHJlZS10YWlsY2FsbC5jIChwYXNzX3RhaWxfcmVjdXJzaW9uKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLmMgKHBhc3NfcmVkdW5kYW50X3BoaSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChhbGlhc2VzX2NvbXB1dGVkX3ApOiBSZW1vdmUuCglVcGRhdGUgYWxsIHVzZXJzLgoJKGluaXRfYWxpYXNfaW5mbyk6IERvIG5vdCBtYXJrIGFsbCB0eXBlIHRhZ3MgZm9yIHJlbmFtaW5nCgl1bmNvbmRpdGlvbmFsbHkuCglDbGVhciBtYXlfYWxpYXNlcyBmcm9tIGV2ZXJ5IHN5bWJvbC4KCShzZXR1cF9wb2ludGVyc19hbmRfYWRkcmVzc2FibGVzKTogSWYgYSBwb2ludGVyIGhhcyBub3QgYmVlbgoJZGVyZWZlcmVuY2VkIGFuZCBpdCBoYWQgYSB0eXBlIHRhZywgY2xlYXIgaXQgYW5kIG1hcmsgdGhlIG9sZAoJdGFnIGZvciByZW5hbWluZy4KCjIwMDQtMDctMjggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE2NzA1CgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNyZWF0ZV9nbG9iYWxfdmFyKTogU2V0IERFQ0xfRVhURVJOQUwgb24KCS5HTE9CQUxfVkFSLgoKMjAwNC0wNy0yNyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xLCBjYXNlIFBBUk1fREVDTCk6IFJlbW92ZSBvYnNvbGV0ZSBlcnJvcgoJY2hlY2suCgoJKiBnaW1wbGlmeS5jIChtYXliZV93aXRoX3NpemVfZXhwcik6IElmIGFscmVhZHkgaGF2ZSBXSVRIX1NJWkVfRVhQUiwKCWRvbid0IG1ha2UgYW5vdGhlciBvbmUuCgoJUFIgb3B0aW1pemF0aW9uLzE1MDc3CgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IEFkZCBmaWVsZCBzYXZlZF9zdGF0aWNfY2hhaW5fZGVjbC4KCUZpeCBjb21tZW50IGZvciBzdGF0aWNfY2hhaW5fZGVjbC4KCSogdHJlZS1pbmxpbmUuYyAoc2F2ZV9ib2R5KTogQWRkIG5ldyBhcmcgYW5kIGhhbmRsZSBzdGF0aWNfY2hhaW5fZGVjbC4KCSogdHJlZS1pbmxpbmUuaCAoc2F2ZV9ib2R5KTogQWRkIG5ldyBhcmcuCgkqIHRyZWUtb3B0aW1pemUuYyAodHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uKTogSGFuZGxlIHNhdmluZwoJc3RhdGljX2NoYWluX2RlY2wuCgoyMDA0LTA3LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZ2ltcGxpZnkuYyAoaXNfZ2ltcGxlX2FkZHJfZXhwcl9hcmdfb3JfaW5kaXJlY3QpOiBSZW1vdmUuCgkoZ2ltcGxpZnlfbW9kaWZ5X2V4cHIsIGdpbXBsaWZ5X2FkZHJfZXhwciwgZ2ltcGxpZnlfZXhwcik6IFVzZQoJaXNfZ2ltcGxlX2FkZHJlc3NhYmxlLgoJKiB0cmVlLWdpbXBsZS5jIChpc19naW1wbGVfYWRkcmVzc2FibGUpOiBSZW5hbWUgZnJvbQoJaXNfZ2ltcGxlX2FkZHJfZXhwcl9hcmc7IGFjY2VwdCBJTkRJUkVDVF9SRUYuCgkoaXNfZ2ltcGxlX2x2YWx1ZSk6IERvbid0IHRlc3QgSU5ESVJFQ1RfUkVGIGRpcmVjdGx5LgoJKiB0cmVlLWdpbXBsZS5oLCB0cmVlLXNyYS5jLCB0cmVlLXNzYS1sb29wLWltLmM6IFVwZGF0ZSBmb3IKCXJlbmFtZSB0byBpc19naW1wbGVfYWRkcmVzc2FibGUuCgoyMDA0LTA3LTI4ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZnVuY3Rpb25fYXJnX3BhZGRpbmcpOiBQYWQgU0Ztb2RlIHVwd2FyZHMuCgoyMDA0LTA3LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3N0YWNrX2xvY2FsXzEpOiBXaWRlbiBhbGlnbm1lbnQgdG8gSE9TVF9XSURFX0lOVAoJYmVmb3JlIHJvdW5kaW5nLgoKMjAwNC0wNy0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxpYmdjYzIuYzogQ2hhbmdlIGFsbCBjb25kaXRpb25hbHMgdGVzdGluZwoJTElCR0NDMl9MT05HX0RPVUJMRV9UWVBFX1NJWkUgPT0gOTYgdG8gPT0gODAuCgkqIGxpYmdjYzIuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBTZXQKCVRZUEVfUFJFQ0lTSU9OIG9mIGZsb2F0ODBfdHlwZSB0byA4MC4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2luaXRfYnVpbHRpbnMpOiBTZXQgVFlQRV9QUkVDSVNJT04KCW9mIGZwcmVnX3R5cGUgYW5kIGZsb2F0ODBfdHlwZSB0byA4MC4KCSogY29uZmlnL2kzODYvaTM4Ni5oLCBjb25maWcvaWE2NC9pYTY0LmgsIGNvbmZpZy9tNjhrL202OGsuaAoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmg6CglDaGFuZ2UgTE9OR19ET1VCTEVfVFlQRV9TSVpFIGFuZCBwb3NzaWJseSBMSUJHQ0MyX0xPTkdfRE9VQkxFX1RZUEVfU0laRQoJdG8gZXZhbHVhdGUgdG8gODAgd2hlbmV2ZXIgdGhleSB3b3VsZCBmb3JtZXJseSBoYXZlIGV2YWx1YXRlZCB0byA5Ni4KCSogY29uZmlnL2kzODYvc2NvNS5oOiBSZW1vdmUgdW5uZWNlc3NhcnkgcmVkZWZpbml0aW9uIG9mCglMT05HX0RPVUJMRV9UWVBFX1NJWkUuCgkqIGRvYy9ydGwudGV4aTogQ2xhcmlmeSB1c2VzIG9mIFhGbW9kZSBhbmQgVEZtb2RlLgoJKiBjb25maWcvaTM4Ni9pMzg2LW1vZGVzLmRlZjogVXNlIEZSQUNUSU9OQUxfRkxPQVRfTU9ERSBmb3IKCVhGbW9kZSwgd2l0aCBhIGJpdHNpemUgb2YgODAuICBVcGRhdGUgY29tbWVudGFyeS4KCSogY29uZmlnL2lhNjQvaWE2NC1tb2Rlcy5kZWY6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLW1vZGVzLmRlZjogTGlrZXdpc2UuCgoyMDA0LTA3LTI3ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBjZmdleHBhbmQuYyAodHJlZV9leHBhbmRfY2ZnKTogRml4IGNvbW1lbnQuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IElnbm9yZSBydHhfZXF1YWxfZnVuY3Rpb25fdmFsdWVfbWF0dGVycy4KCSogZnVuY3Rpb24uYyAocHVyZ2Vfc2luZ2xlX2hhcmRfc3VicmVnX3NldCwgcHVyZ2VfaGFyZF9zdWJyZWdfc2V0cyk6CglSZW1vdmUuCgkocHJlcGFyZV9mdW5jdGlvbl9zdGFydCk6IERvbid0IHNldCBydHhfZXF1YWxfZnVuY3Rpb25fdmFsdWVfbWF0dGVycy4KCSogaW50ZWdyYXRlLmMgKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKTogRG9uJ3QgdGVzdCBmb3IgaXQuCgkqIHBhc3Nlcy5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRG9uJ3QgY2FsbCBwdXJnZV9oYXJkX3N1YnJlZ19zZXRzLgoJRG9uJ3Qgc2V0IHJ0eF9lcXVhbF9mdW5jdGlvbl92YWx1ZV9tYXR0ZXJzLiAgRG9uJ3QgcmVnaXN0ZXIgUlRMIGhvb2tzCgloZXJlIGFnYWluLiAgVXBkYXRlIGxlYWRpbmcgY29tbWVudC4KCSogcnRsLmMgKHJ0eF9lcXVhbF9mdW5jdGlvbl92YWx1ZV9tYXR0ZXJzKTogUmVtb3ZlLgoJKHJ0eF9lcXVhbF9wKTogRG9uJ3QgdGVzdCBmb3IgaXQuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uLCBzaW1wbGlmeV9zdWJyZWcpOgoJTGlrZXdpc2UuCgoJKiBydGwuaCAoZW51bSBpbnNuX25vdGUpOiBSZW1vdmUgTk9URV9JTlNOX0xPT1BfRU5EX1RPUF9DT05ELgoJKiBydGwuYyAobm90ZV9pbnNuX25hbWUpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogRG9uJ3QgaGFuZGxlIGl0LgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBMaWtld2lzZS4KCgkqIGV4Y2VwdC5jIChmaW5pc2hfZWhfZ2VuZXJhdGlvbik6IERvbid0IGNhbGwgY2ZnX2NsZWFudXAgZnJvbSBoZXJlLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfZWgpOiBEbyBpdCBoZXJlLgoKCSogc3RtdC5jIChzdHJ1Y3QgbmVzdGluZyk6IFJlbW92ZSBzdHJ1Y3QgbmVzdGluZyBibG9jayBtZW1iZXIuCgkoc3RydWN0IHN0bXRfc3RhdHVzKTogUmVtb3ZlIHhfYmxvY2tfc3RhcnRfY291bnQgZmllbGQuCgkoY3VycmVudF9ibG9ja19zdGFydF9jb3VudCk6IFJlbW92ZS4KCjIwMDQtMDctMjcgIEJyaWFuIEJvb3RoICA8YmJvb3RoQHJlZGhhdC5jb20+CgoJKiB0cmVlLW9wdGltaXplLmMgKHJlZ2lzdGVyX29uZV9kdW1wX2ZpbGUpOiBVcGRhdGUgY29uZGl0aW9uIHRoYXQgdXNlcwoJc3RhdGljX3Bhc3NfbnVtYmVyLgoJKGR1cF9wYXNzXzEpOiBSZXBsYWNlIHdpdGguLi4KCShuZXh0X3Bhc3NfMSk6IFRoaXMuCgkoTkVYVF9QQVNTKTogQ2FsbCBuZXh0X3Bhc3NfMS4KCShEVVBfUEFTUyk6IFJlbW92ZS4KCShpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IFJlbW92ZSB1c2VzIG9mIERVUF9QQVNTLgoJKGV4ZWN1dGVfb25lX3Bhc3MpOiBVcGRhdGUgY29uZGl0aW9uIHRoYXQgdXNlcwoJc3RhdGljX3Bhc3NfbnVtYmVyLgoJKiB0cmVlLXBhc3MuaCAodHJlZV9vcHRfcGFzcyk6IERlY2xhcmUgc3RhdGljX3Bhc3NfbnVtYmVyIGFzIGEgc2lnbmVkCglpbnRlZ2VyLgoKMjAwNC0wNy0yNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuYzogSW5jbHVkZSBpbnRlZ3JhdGUuaCBpbiBvcmRlciB0byBnZXQgdGhlCglwcm90b3R5cGUgZm9yIGdldF9oYXJkX3JlZ19pbml0aWFsX3ZhbCgpLgoKCSogY29uZmlnL20zMnIvbTMyci5tZCAobTMycnBpcGVsaW5lKTogUmVtb3ZlIHVudXNlZCB2YWx1ZSAibTMyciIKCWFuZCB0aWR5IHVwIGluZGVudGF0aW9uLgoJKGZpbmFsX3ByZXNlbmNlX3NldCk6IFVzZSBhYnNlbmNlX3NldCBpbnN0ZWFkLCBzbyB0aGF0IGlmIHRoZXJlIGlzCglub3RoaW5nIGluIHRoZSAibyIgcGlwZSB0aGUgInMiIHBpcGUgY2FuIGJlIHNjaGVkdWxlZC4KCjIwMDQtMDctMjcgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAoY3JlYXRlX25hbWVfdGFncyk6IElnbm9yZSBwb2ludGVycyB0aGF0Cglkb24ndCBoYXZlIFBUX1ZBUlMgbm9yIFBUX01BTExPQyBzZXQuCglDbGVhciBuYW1lIHRhZyBmcm9tIHBvaW50ZXJzIHRoYXQgaGF2ZSBub3QgYmVlbiBkZXJlZmVyZW5jZWQuCgkoc2V0X3B0X2FueXRoaW5nLCBzZXRfcHRfbWFsbG9jKTogRm9yd2FyZCBkZWNsYXJlLgoJKiB0cmVlLXNzYS1jb3B5LmMgKG1heV9wcm9wYWdhdGVfY29weSk6IENvbXBhcmUgYWxpYXMgc2V0cywKCW5vdCB0eXBlIGNvbXBhdGliaWxpdHkgd2hlbiBkZXRlcm1pbmluZyBpZiBhIHBvaW50ZXIgY2FuIGJlCgljb3B5IHByb3BhZ2F0ZWQuCgoyMDA0LTA3LTI3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBleHByLmggKGNhbm9uaWNhbGl6ZV9jb25kaXRpb24sIGdldF9jb25kaXRpb24pOiBBZGQgYW4gaW50IGFyZ3VtZW50LgoJKiBnY3NlLmMgKGZpc19nZXRfY29uZGl0aW9uKTogUmVpbXBsZW1lbnQgdXNpbmcgZ2V0X2NvbmRpdGlvbiwgbGVhdmluZwoJaXQgdG8gY2hlY2sgd2hldGhlciB0aGUgY29uZGl0aW9uIGlzIHN0aWxsIHZhbGlkIGF0IHRoZSBqdW1wIGluc24uCgkqIGlmY3Z0LmMgKG5vY2VfZ2V0X2NvbmRpdGlvbik6IExpa2V3aXNlLgoJKG5vY2VfZ2V0X2FsdF9jb25kaXRpb24pOiBVcGRhdGUgY2FsbCB0byBjYW5vbmljYWxpemVfY29uZGl0aW9uLgoJKiBsb29wLWl2LmMgKHNpbXBsaWZ5X3VzaW5nX2luaXRpYWxfdmFsdWVzKTogVXBkYXRlIGNhbGwgdG8KCWdldF9jb25kaXRpb24uICBSZW1vdmUgRklYTUUuCgkoY2hlY2tfc2ltcGxlX2V4aXQpOiBVcGRhdGUgY2FsbCB0byBnZXRfY29uZGl0aW9uLgoJKiBsb29wLXVuc3dpdGNoLmMgKG1heV91bnN3aXRjaF9vbik6IExpa2V3aXNlLgoJKiBsb29wLmMgKGNoZWNrX2RicmFfbG9vcCk6IExpa2V3aXNlLgoJKGNhbm9uaWNhbGl6ZV9jb25kaXRpb24sIGdldF9jb25kaXRpb24pOiBBZGQgYW4gYXJndW1lbnQgdG8gc2F5IHdoZXRoZXIKCXRoZSBjb25kaXRpb24gbXVzdCBzdGlsbCBiZSB2YWxpZCBhdCBJTlNOLgoJKGdldF9jb25kaXRpb25fZm9yX2xvb3ApOiBVcGRhdGUgY2FsbCB0byBnZXRfY29uZGl0aW9uLiAgUmVxdWlyZSB0aGF0Cgl0aGUgY29uZGl0aW9uIGJlIHZhbGlkIGF0IElOU04uCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBVcGRhdGUgY2FsbCB0byBnZXRfY29uZGl0aW9uLgoJUmVtb3ZlIHVudXNlZCBlYXJsaWVzdCBwYXJhbWV0ZXIuCgkoZXhwZWN0ZWRfdmFsdWVfdG9fYnJfcHJvYik6IFVwZGF0ZSBjYWxsIHRvIGNhbm9uaWNhbGl6ZV9jb25kaXRpb24uCgoyMDA0LTA3LTI2ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtZGZhLmMgKGFkZF9yZWZlcmVuY2VkX3Zhcik6IFJlZ2lzdGVyIGluaXRpYWxpemVycyBvZiBnbG9iYWwKCXZhcmlhYmxlcy4KCjIwMDQtMDctMjYgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGZ1bmN0aW9uX2FyZyk6IEFsd2F5cyB0cmVhdCA4LQoJYW5kIDE2LWJ5dGUgd2lkZSB2ZWN0b3JzIHRoZSBzYW1lLCBldmVuIGlmIE1NWC9TU0UKCWFyZSBkaXNhYmxlZC4KCShjb250YWluc18xMjhiaXRfYWxpZ25lZF92ZWN0b3JfcCk6IEFkZCBjb21tZW50LgoKMjAwNC0wNy0yNiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiByYS5oIChlbnVtIG5vZGVfdHlwZSk6IFJlbmFtZSB0bzoKCShlbnVtIHJhX25vZGVfdHlwZSkuCgkqIHJhLWNvbG9yaXplLmM6IExpa2V3aXNlLgoKMjAwNC0wNy0yNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY2ZnY2xlYW51cC5jICh0cnlfc2ltcGxpZnlfY29uZGp1bXApOiBDYWxsIHVwZGF0ZV9mb3J3YXJkZXJfZmxhZwoJYWZ0ZXIgc2ltcGxpZnlpbmcgdGhlIGp1bXAuCgoyMDA0LTA2LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoY29tYmluZV9wZW5kaW5nX3N0YWNrX2FkanVzdG1lbnRfYW5kX2NhbGwpOiBNYWtlCglwcmVmZXJyZWRfdW5pdF9zdGFja19ib3VuZGFyeSBhcmd1bWVudCB1bnNpZ25lZC4gIE1ha2UKCXVuYWRqdXN0ZWRfYWxpZ25tZW50IHVuc2lnbmVkLgoJKGV4cGFuZF9jYWxsKTogTWFrZSBwcmVmZXJyZWRfc3RhY2tfYm91bmRhcnkgYW5kCglwcmVmZXJyZWRfdW5pdF9zdGFja19ib3VuZGFyeSB2YXJpYWJsZXMgdW5zaWduZWQuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9zdGFja19sb2NhbF8xKTogTWFrZSBhbGlnbm1lbnQgdW5zaWduZWQuCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IE1ha2Ugc3RhY2tfYWxpZ25tZW50X25lZWRlZCwKCXByZWZlcnJlZF9zdGFja19ib3VuZGFyeSB1bnNpZ25lZC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3ByZWZlcnJlZF9zdGFja19ib3VuZGFyeSk6IE1ha2UgdW5zaWduZWQuCgkoaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCk6IE1ha2Ugc3RhY2tfYWxpZ25tZW50X25lZWRlZCwKCXByZWZlcnJlZF9hbGlnbm1lbnQgdmFyaWFibGVzIHVuc2lnbmVkLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKGl4ODZfcHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5KTogTWFrZSB1bnNpZ25lZC4KCjIwMDQtMDctMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHRyZWUuaDogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDQtMDctMjYgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGRlYmlhbi5vcmc+CgoJUFIgYm9vdHN0cmFwLzEyODA0CgkqIGdnYy16b25lLmMgKHN0cnVjdCBhbGxvY19jaHVuayk6IFJlbW92ZSBhdHRyaWJ1dGUgcGFja2VkLgoJKE1BWF9GUkVFX0JJTl9TSVpFKTogSW5jcmVhc2Ugb24gNjQtYml0IHRhcmdldHMuCgkoZ2djX2ZyZWUpOiBSZW1vdmUgaW5jb3JyZWN0IGZyZWVpbmcuCgkoc3dlZXBfcGFnZXMpOiBBZHZhbmNlIFBQIGZvciBsYXJnZSBwYWdlcy4gIEZpeCBpbmRlbnRhdGlvbi4KCjIwMDQtMDctMjYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE2NjQzCgkqIGNmZ2xheW91dC5oIChjZmdfbGF5b3V0X2luaXRpYWxpemUpOiBBZGQgYSBmbGFncyBwYXJhbWV0ZXIuCgkqIGNmZ2xheW91dC5jIChjZmdfbGF5b3V0X2luaXRpYWxpemUpOiBQYXNzIGl0IHRvIGNsZWFudXBfY2ZnLgoJKiBiYXNpYy1ibG9jay5oIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IEFkZCBhIGZsYWdzIHBhcmFtZXRlci4KCSogY2ZnbGF5b3V0LmMgKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogUGFzcyBpdCB0byBjZmdfbGF5b3V0X2luaXRpYWxpemUuCgkocGFydGl0aW9uX2hvdF9jb2xkX2Jhc2ljX2Jsb2Nrcyk6IFBhc3MgMCB0byBjZmdfbGF5b3V0X2luaXRpYWxpemUuCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBMaWtld2lzZS4KCSogcnRsLmggKHRyYWNlcik6IEFkZCBhIGZsYWdzIHBhcmFtZXRlci4KCSogdHJhY2VyLmMgKHRyYWNlcik6IFBhc3MgaXQgdG8gY2ZnX2xheW91dF9pbml0aWFsaXNlLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfc3RhY2tfcmVncyk6IFBhc3MgMCB0byByZW9yZGVyX2Jhc2ljX2Jsb2Nrcy4KCShyZXN0X29mX2hhbmRsZV9yZW9yZGVyX2Jsb2Nrcyk6IFVwZGF0ZSBjYWxscyB0byB0cmFjZXIgYW5kCglyZW9yZGVyX2Jhc2ljX2Jsb2NrcywgcGFzc2luZyBDTEVBTlVQX1VQREFURV9MSUZFIGlmIGFwcHJvcHJpYXRlLgoJKHJlc3Rfb2ZfaGFuZGxlX3RyYWNlcik6IFBhc3MgMCB0byB0cmFjZXIuCgkocmVzdF9vZl9oYW5kbGVfbG9vcDIpOiBQYXNzIDAgdG8gY2ZnX2xheW91dF9pbml0aWFsaXplLgoKMjAwNC0wNy0yNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVBSIHRhcmdldC8xNjIzOQoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92ZGlfaW50ZXJuYWw2NCk6IEZ1cnRoZXIgZGlzcGFyYWdlCglmLT5mLgoKMjAwNC0wNy0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoQklORk9fQkFTRV9BQ0NFU1NFUyk6IEFjY2Vzc2VzIGFyZSBhIFZFQyh0cmVlKS4KCShCSU5GT19CQVNFX0FDQ0VTUyk6IEFkanVzdC4KCShCSU5GT19CQVNFX0FDQ0VTU19BUFBFTkQpOiBOZXcuCgkoc3RydWN0IHRyZWVfYmluZm8pOiBNYWtlIGJhc2VfYWNjZXNzZXMgYSBWRUModHJlZSkgcG9pbnRlci4KCSogZGJ4b3V0LmMgKGRieG91dF90eXBlKTogQWRqdXN0IGJpbmZvIGFjY2VzcyBhY2Nlc3NpbmcuCgkqIGR3YXJmMm91dC5jIChnZW5fbWVtYmVyX2RpZSk6IExpa2V3aXNlLgoJKiB0cmVlLWR1bXAuYyAoZGVxdWVfYW5kX2R1bXApOiBMaWtld2lzZS4KCjIwMDQtMDctMjYgIEZhbGsgSHVlZmZuZXIgIDxmYWxrQGRlYmlhbi5vcmc+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfcnR4X2Nvc3RfZGF0YSk6IFR3ZWFrIGludF9kaXYKCWNvc3RzLgoKMjAwNC0wNy0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG91dHB1dF9mcF9jb21wYXJlKTogVXNlIGZmcmVlcCB0byBwb3AgdG9wCgl2YWx1ZSBvZmYgb2YgdGhlIHN0YWNrIGlmIFRBUkdFVF9VU0VfRkZSRUVQLgoKMjAwNC0wNy0yNiAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogZ2VuZ3R5cGUuYyAob3ByaW50Zik6IFJlcGxhY2UgeHJlYWxsb2MgKCkgd2l0aCBYUkVTSVpFVkVDICgpLgoJKiBnZW5ndHlwZS15YWNjLnk6IExpa2V3aXNlLiAgUmVwbGFjZSBmcmVlKCkgd2l0aCBYREVMRVRFICgpLgoJKiBjLXR5cGVjay5jIChQVVNIX1NQRUxMSU5HKTogUmVtb3ZlIHJlZHVuZGFudCBOVUxMLXBvaW50ZXIKCWNoZWNrIG9uIGludm9jYXRpb24gb2YgWFJFU0laRVZFQyAoKS4KCjIwMDQtMDctMjYgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGMtY29tbW9uLmMgKGRpc2FibGVfYnVpbHRpbl9mdW5jdGlvbik6IFJlbmFtZSB2YXJpYWJsZSBuIHRvCgluZXdfZGlzYWJsZWRfYnVpbHRpbi4KCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFJlbmFtZSBwYXJhbWV0ZXIgZGVjbCB0byBuZXdfZGVjbC4KCVJlbmFtZSBsb2NhbCB2YXJpYWJsZSBvbGQgdG8gb2xkX2RlY2wuCgkqIGdlbnN1cHBvcnQuYyAoc2hpZnRfb3V0cHV0X3RlbXBsYXRlKTogUmVuYW1lIHBhcmFtZXRlciBvbGQgdG8gc3JjLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVwbGFjZV9ydHgpOiBSZW5hbWUgcGFyYW1ldGVyIG9sZHggdG8KCW9sZF9ydHggYW5kIG5ld3ggdG8gbmV3X3J0eC4KCjIwMDQtMDctMjYgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIE1ha2VmaWxlLmluIChDX1BSQUdNQV9IKTogTmV3IHZhcmlhYmxlIHRvIHRyYWNrIGRlcGVuZGVuY2llcwoJb2YgYy1wcmFnbWEuaC4KCSogYy1wcmFnbWEuaCAoY19sZXgsIGNfbGV4X3dpdGhfZmxhZ3MpOiBDaGFuZ2UgcmV0dXJudHlwZSB0bwoJZW51bSBjcHBfdHR5cGUuCgkqIGMtbGV4LmM6IExpa2V3aXNlLgoKMjAwNC0wNy0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGNvbnN0YW50X2Jvb2xlYW5fbm9kZSk6IE1ha2UgZXh0ZXJuLgoJKG1ha2VfcmFuZ2UpOiBXcmFwIGxvbmcgbGluZXMuCgkoZm9sZF9jb25kX2V4cHJfd2l0aF9jb21wYXJpc29uKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGNhbGwgdG8KCXBlZGFudGljX25vbl9sdmFsdWUuICBBZGQgbWlzc2luZyBjYWxscyB0byBmb2xkX2NvbnZlcnQuCgkoZm9sZF90cnV0aG9wKTogQWRkIG1pc3NpbmcgY2FsbHMgdG8gZm9sZF9jb252ZXJ0LgoJKGZvbGQpOiBMaWtld2lzZS4KCSogdHJlZS5oIChjb25zdGFudF9ib29sZWFuX25vZGUpOiBBZGQgcHJvdG90eXBlIGhlcmUuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cm5jbXApOiBBZGQgbWlzc2luZyBjYWxscyB0bwoJZm9sZF9jb252ZXJ0LgoJKiB0cmVlLXNzYS1kb20uYyAocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX2luY29taW5nX2VkZ2UpOgoJQ2FsbCBmb2xkX2NvbnZlcnQgYW5kIGNvbnN0YW50X2Jvb2xlYW5fbm9kZSB0byBjb3JyZWN0IHR5cGVzLgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChzdWJzdGl0dXRlX3NpbmdsZV91c2VfdmFycyk6IEFkZAoJbWlzc2luZyBjYWxsIHRvIGZvbGRfY29udmVydCB0byBjb3JyZWN0IHR5cGVzLgoKMjAwNC0wNy0yNiAgTmlhbGwgRG91Z2xhcyAgPHNfZnNmZXVyb3BlMkBuZWRwcm9kLmNvbT4KCSAgICBCcmlhbiBSeW5lciAgPGJyeW5lckBicmlhbnJ5bmVyLmNvbT4KCglQUiBjKysvOTI4MwoJUFIgYysrLzE1MDAwCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZSk6IEFsbG93CgloYW5kbGVfdmlzaWJpbGl0eV9hdHRyaWJ1dGUgdG8gYmUgY2FsbGVkIGZvciB0eXBlcy4KCShoYW5kbGVfdmlzaWJpbGl0eV9hdHRyaWJ1dGUpIFdoZW4gZ2l2ZW4gYSB0eXBlLCBzZXQgdGhlIHZpc2liaWxpdHkKCWJpdHMgb24gdGhlIFRZUEVfTkFNRS4gIFdoZW4gZ2l2ZW4gYSBkZWNsLCBkb24ndCBzZXQgbm9fYWRkX2F0dHJzCglzbyB0aGF0IHdlIGNhbiBjaGVjayBsYXRlciB3aGV0aGVyIHRoZSBhdHRyaWJ1dGUgd2FzIHByZXNlbnQuIEFkZGVkCgl3YXJuaW5nIGlmIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIG5vbiBjbGFzcyB0eXBlLgoJKiBjLWRlY2wuYyAoZGlhZ25vc2VfbWlzbWF0Y2hlZF9kZWNscyk6IFVwZGF0ZWQgcnVsZXMgZm9yIG1lcmdpbmcKCWRlY2xzIGFuZCBjaGVja2luZyB0aGF0IHRoZXkgYXJlIGNvbnNpc3RlbnQuCgkqIGNvbW1vbi5vcHQ6IEFkZGVkIC1mdmlzaWJpbGl0eS4KCSogYy5vcHQsIGMtb3B0cy5jOiBBZGRlZCAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4uCgkqIGMtcHJhZ21hLmgsIGMtcHJhZ21hLmM6IEFkZGVkIGhhbmRsZV9wcmFnbWFfdmlzaWJpbGl0eSgpLgoJKiBmbGFncy5oLCB0cmVlLmg6IEFkZGVkIGFzc29ydGVkIHN1cHBvcnQgZGVmaW5lcyBmb3Igb3ZlcmFsbCBwYXRjaAoJKiBvcHRzLmM6IEFkZGVkIHBhcnNpbmcgc3VwcG9ydCBmb3IgLWZ2aXNpYmlsaXR5LgoJKiB0cmVlLmMgKGJ1aWxkX2RlY2wpOiBTZXQgdmlzaWJpbGl0eSBmb3IgYWxsIGRlY2xzIHRvIGJlIHdoYXRldmVyCglpcyBpbiBmb3JjZSBhdCB0aGF0IHRpbWUuCgkqIHZhcmFzbS5jIChkZWZhdWx0X2JpbmRzX2xvY2FsX3BfMSk6IFJld29ya2VkIGxvZ2ljIGRldGVybWluaW5nCgl3aGVuIHRvIG1ha2UgYSBzeW1ib2wgbG9jYWxseSBib3VuZC4KCSogZG9jL2ludm9rZS50ZXhpOiBBZGRlZCBkb2N1bWVudGF0aW9uIGZvciAtZnZpc2liaWxpdHkgYW5kCgktZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4uCgoyMDA0LTA3LTI1ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChyZW9yZGVyX2Jsb2NrX2RlZik6IFJlbmFtZSB0byByZW9yZGVyX2Jsb2NrX2RlZl9wLgoJKiBjLWNvbW1vbi5jOiBBZGQgbWlzc2luZyBjYXN0cyBmcm9tIHZvaWQgKiB0byBvdGhlciB0eXBlcy4KCSogYy1kZWNsLmM6IExpa2V3aXNlLgoJKiBjLWZvcm1hdC5jOiBMaWtld2lzZS4KCSogYy1sZXguYzogTGlrZXdpc2UuCgkqIGMtcHJhZ21hLmM6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jOiBMaWtld2lzZS4KCSogZGVmYXVsdHMuaDogTGlrZXdpc2UuCgkqIGdlbmNvbnN0YW50cy5jOiBMaWtld2lzZS4KCSogZ2VuZ3R5cGUtbGV4Lmw6IExpa2V3aXNlLgoJKiBnZW5tb2Rlcy5jOiBMaWtld2lzZS4KCSogcmVhZC1ydGwuYzogTGlrZXdpc2UuCgkqIHJ0bC5jOiBMaWtld2lzZS4KCjIwMDQtMDctMjUgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGJpdG1hcC5jOiBVc2UgdHlwZS1zYWZlIG1lbW9yeSBhbGxvY2F0aW9uIG1hY3JvcyBmcm9tIGxpYmliZXJ0eS4KCSogYy1jb21tb24uYzogTGlrZXdpc2UuCgkqIGMtZGVjbC5jOiBMaWtld2lzZS4KCSogYy1sYW5nLmM6IExpa2V3aXNlLgoJKiBjLWxleC5jOiBMaWtld2lzZS4KCSogYy1vcHRzLmM6IExpa2V3aXNlLgoJKiBjLXBhcnNlLmluOiBMaWtld2lzZS4KCSogYy10eXBlY2suYzogTGlrZXdpc2UuCgkqIGdlbmNvbmRpdGlvbnMuYzogTGlrZXdpc2UuCgkqIGdlbmd0eXBlLWxleC5sOiBMaWtld2lzZS4KCSogZ2VuZ3R5cGUteWFjYy55OiBMaWtld2lzZS4KCSogZ2VuZ3R5cGUuYzogTGlrZXdpc2UuCgkqIGdlbm1vZGVzLmM6IExpa2V3aXNlLgoJKiBnZW5zdXBwb3J0LmM6IExpa2V3aXNlLgoJKiByZWFkLXJ0bC5jOiBMaWtld2lzZS4KCSogcmVhZC1ydGwuYyAocmVhZF9jb25zdGFudHMpOiBVc2UgSU5TRVJUIGluc3RlYWQgb2YgVFJVRSBpbiBjYWxsIHRvCglodGFiX2ZpbmRfc2xvdCgpLgoKMjAwNC0wNy0yNSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogYy1kZWNsLmMgKGdyb2t0eXBlbmFtZSwgZ3Jva3R5cGVuYW1lX2luX3BhcmFtX2NvbnRleHQpOiBSZW5hbWUKCXZhcmlhYmxlIHR5cGVuYW1lIHRvIHR5cGVfbmFtZS4KCSogYy1sZXguYyAoaW50ZXJwcmV0X2Zsb2F0KTogTGlrZXdpc2UuCgoyMDA0LTA3LTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19yZWFsLCBjb252ZXJ0X3RvX2ludGVnZXIsCgljb252ZXJ0X3RvX2NvbXBsZXgpOiBSZXBsYWNlIGNhbGxzIHRvIGJ1aWxkIHdpdGggY2FsbHMgdG8gYnVpbGROLgoJKiBjb3ZlcmFnZS5jICh0cmVlX2NvdmVyYWdlX2NvdW50ZXJfcmVmKTogTGlrZXdpc2UuCgkqIGRvanVtcC5jIChkb19qdW1wKTogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jIChsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoY29tcG9uZW50X3JlZl9mb3JfbWVtX2V4cHIsCglzZXRfbWVtX2F0dHJpYnV0ZXNfbWludXNfYml0cG9zKTogTGlrZXdpc2UuCgkqIGV4cGxvdy5jICh1cGRhdGVfbm9ubG9jYWxfZ290b19zYXZlX2FyZWEpOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKGV4cGFuZF9zaGlmdCwgbWFrZV90cmVlLCBjb25zdF9tdWx0X2FkZF9vdmVyZmxvd19wLAoJZXhwYW5kX211bHRfYWRkKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZW1pdF9ibG9ja19tb3ZlX3ZpYV9saWJjYWxsLCBjbGVhcl9zdG9yYWdlX3ZpYV9saWJjYWxsLAoJc3RvcmVfY29uc3RydWN0b3IsIGdldF9pbm5lcl9yZWZlcmVuY2UsIGV4cGFuZF9leHByX3JlYWxfMSwKCXRyeV9jYXNlc2ksIHRyeV90YWJsZWp1bXApOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZW1pdF9jYXNlX2JpdF90ZXN0cywgZXhwYW5kX2VuZF9jYXNlX3R5cGUsCglub2RlX2hhc19sb3dfYm91bmQsIG5vZGVfaGFzX2hpZ2hfYm91bmQsIGVtaXRfY2FzZV9ub2Rlcyk6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChwbGFjZV91bmlvbl9maWVsZCwgbGF5b3V0X3R5cGUpOiBMaWtld2lzZS4KCSogdHJlZS5jIChzdWJzdGl0dXRlX2luX2V4cHIsIHRyZWVfZm9sZF9nY2QpOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKGNvcHlfY29uc3RhbnQpOiBMaWtld2lzZS4KCjIwMDQtMDctMjUgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGMtY29tbW9uLmM6IFJlbmFtZSBhbGwgaWRlbnRpZmllcnMgbmFtZWQgYG5ldycuCgkqIGMtZGVjbC5jOiBMaWtld2lzZS4KCSogZ2Vuc3VwcG9ydC5jOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmM6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5jIChkaXNhYmxlX2J1aWx0aW5fZnVuY3Rpb24pOiBSZXBsYWNlIGEgY2FsbCB0byB4bWFsbG9jKCkKCXdpdGggWE5FVygpLgoJKiBnZW5zdXBwb3J0LmMgKGFsdGVyX291dHB1dF9mb3JfaW5zbik6IFJlcGxhY2UgdHdvIGNhbGxzIHRvIHhtYWxsb2MoKQoJd2l0aCBYTkVXVkVDKCkuCgoyMDA0LTA3LTI1ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzE1MzYwCgkqIGMtZGVjbC5jIChzdGFydF9kZWNsKTogRG8gbm90IHNldCBERUNMX0VYVEVSTkFMIGZvciBpbml0aWFsaXplZAoJZGVjbGFyYXRpb25zIHVudGlsIGFmdGVyIGNhbGxpbmcgcHVzaGRlY2wuCgkoZ3Jva2RlY2xhcmF0b3IpOiBTZXQgREVDTF9FWFRFUk5BTCBmb3IgdmFyaWFibGVzIGJhc2VkIG9uIHVzZSBvZgoJImV4dGVybiIgYW5kIG5vdCBvbiB3aGV0aGVyIHRoZSBkZWNsYXJhdGlvbiBpcyBpbml0aWFsaXplZC4KCjIwMDQtMDctMjUgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGRlYmlhbi5vcmc+CgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotc29sYXJpczIqLCBzcGFyYzY0LSotc29sYXJpczIqKQoJKHNwYXJjLSotc29sYXJpczIqKTogSW5jbHVkZSBzb2wyLm8gYW5kIHNvbDItcHJvdG9zLmguCgkqIGNvbmZpZy9zb2wyLWMuYzogSW5jbHVkZSAidG0uaCIsICJ0bV9wLmgiLCAidG9wbGV2LmgiLAoJImNwcGxpYi5oIiwgImMtcHJhZ21hLmgiLCAiYy1jb21tb24uaCIuCgkoc29sYXJpc19wcmFnbWFfYWxpZ24sIHNvbGFyaXNfcHJhZ21hX2luaXQsIHNvbGFyaXNfcHJhZ21hX2ZpbmkpCgkoc29sYXJpc19yZWdpc3Rlcl9wcmFnbWFzKTogTmV3IGZ1bmN0aW9ucy4KCSogY29uZmlnL3NvbDItcHJvdG9zLmg6IE5ldyBmaWxlLgoJKiBjb25maWcvc29sMi5jOiBOZXcgZmlsZS4KCSogY29uZmlnL3NvbDIuaCAoU09MQVJJU19BVFRSSUJVVEVfVEFCTEUsIEFTTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUpCgkoUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMpOiBOZXcgbWFjcm9zLgoJKHNvbGFyaXNfcGVuZGluZ19hbGlnbnMsIHNvbGFyaXNfcGVuZGluZ19pbml0cykKCShzb2xhcmlzX3BlbmRpbmdfZmluaXMpOiBOZXcgdmFyaWFibGVzLgoJKiBjb25maWcvdC1zb2wyIChzb2wyLWMubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkoc29sMi5vKTogTmV3IHJ1bGUuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoVEFSR0VUX0lOU0VSVF9BVFRSSUJVVEVTKTogRGVmaW5lIGluIHRlcm1zIG9mCglTVUJUQVJHRVRfSU5TRVJUX0FUVFJJQlVURVMuCgkoaXg4Nl9hdHRyaWJ1dGVfdGFibGUpOiBJbmNsdWRlIFNVQlRBUkdFVF9BVFRSSUJVVEVfVEFCTEUuCgkqIGNvbmZpZy9pMzg2L3NvbDIuaCAoU1VCVEFSR0VUX0lOU0VSVF9BVFRSSUJVVEVTKQoJKFNVQlRBUkdFVF9BVFRSSUJVVEVfVEFCTEUsIEFTTV9PVVRQVVRfQ0FMTCk6IERlZmluZS4KCSogY29uZmlnL3NwYXJjL2VsZi5oIChBU01fREVDTEFSRV9GVU5DVElPTl9TSVpFKTogUmVkZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9zcDY0LWVsZi5oIChBU01fREVDTEFSRV9GVU5DVElPTl9TSVpFKTogUmVkZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9zb2wyLmggKFNVQlRBUkdFVF9JTlNFUlRfQVRUUklCVVRFUykKCShTVUJUQVJHRVRfQVRUUklCVVRFX1RBQkxFLCBBU01fT1VUUFVUX0NBTEwpOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19hdHRyaWJ1dGVfdGFibGUpOiBOZXcuCgkoVEFSR0VUX0lOU0VSVF9BVFRSSUJVVEVTKTogRGVmaW5lIGluIHRlcm1zIG9mCglTVUJUQVJHRVRfSU5TRVJUX0FUVFJJQlVURVMuCgkoVEFSR0VUX0FUVFJJQlVURV9UQUJMRSk6IERlZmluZSBpZiBTVUJUQVJHRVRfQVRUUklCVVRFX1RBQkxFCglpcyBkZWZpbmVkLgoJKiBkb2MvZXh0ZW5kLnRleGkgKFNvbGFyaXMgUHJhZ21hcyk6IE5ldyBzZWN0aW9uLgoKMjAwNC0wNy0yNSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogYy1jb21tb24uYzogUmVuYW1lIGFsbCBpZGVudGlmaWVycyBuYW1lZCBgY2xhc3MnIHRvIGBjbCcuCgkqIGMtY29tbW9uLmg6IExpa2V3aXNlLgoJKiBjLXBhcnNlLmluOiBMaWtld2lzZS4KCSogYy10eXBlY2suYzogTGlrZXdpc2UuCgkqIGdlbm1vZGVzLmM6IExpa2V3aXNlLgoJKiByZWFsLmM6IExpa2V3aXNlLgoJKiByZWFsLmg6IExpa2V3aXNlLgoJKiByZWNvZy5jOiBMaWtld2lzZS4KCSogcmVjb2cuaDogTGlrZXdpc2UuCgkqIHJlZ3JlbmFtZS5jOiBMaWtld2lzZS4KCSogdHJlZS5oOiBMaWtld2lzZS4KCSogYy1jb21tb24uYyAoYnVpbHRpbl9mdW5jdGlvbl8yKTogQ2hhbmdlIHR5cGUgb2YgNXRoIHBhcmFtZXRlciBmcm9tCglpbnQgdG8gZW51bSBidWlsdF9pbl9mdW5jdGlvbi4gQ2hhbmdlIHR5cGUgb2YgOHRoIHBhcmFtZXRlciBmcm9tIGludAoJdG8gYm9vbC4KCSogYy1kZWNsIChidWlsdGluX2Z1bmN0aW9uKTogUmVwbGFjZSBjYWxsIHRvIGdnY19hbGxvY19jbGVhcmVkICgpCgl3aXRoIEdHQ19DTkVXKCkuCgkqIGMtdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogQ2hhbmdlIHR5cGUgb2YgZm9ybWFsX3ByZWMgZnJvbQoJaW50IHRvIHVuc2lnbmVkIGludC4KCSogZ2VubW9kZXMuYyAoYmxhbmtfbW9kZSk6IE1ha2UgYSBmZXcgbmVnYXRpdmUgY29uc3RhbnRzIHVuc2lnbmVkLgoJKGNvbXBsZXRlX2FsbF9tb2RlcywgY2FsY193aWRlcl9tb2RlLCBlbWl0X2luc25fbW9kZXNfaCwKCWVtaXRfbW9kZV9uYW1lLCBlbWl0X21vZGVfY2xhc3MsIGVtaXRfbW9kZV9wcmVjaXNpb24sIGVtaXRfbW9kZV9zaXplLAoJZW1pdF9tb2RlX251bml0cywgZW1pdF9tb2RlX3dpZGVyLCBlbWl0X21vZGVfbWFzaywgZW1pdF9tb2RlX2lubmVyLAoJZW1pdF9tb2RlX2Jhc2VfYWxpZ24sIGVtaXRfY2xhc3NfbmFycm93ZXN0X21vZGUpOiBQYXNzIGFuIGludGVnZXIKCWl0ZXJhdG9yIHRvIGZvcl9hbGxfbW9kZXMgKCkgaW5zdGVhZCBvZiBhbiBlbnVtIGJlY2F1c2UgZW51bXMgY2FuJ3QKCWJlIGluY3JlbWVudGVkIGluIEMrKy4KCgoyMDA0LTA3LTI1ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBkZWJpYW4ub3JnPgoKCSogcmVnbW92ZS5jIChvcHRpbWl6ZV9yZWdfY29weV8xKTogRG9uJ3QgdHJ5IHRvIHJlcGxhY2UgY2FsbC11c2VkCgloYXJkIHJlZ2lzdGVycy4KCjIwMDQtMDctMjUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfc3RtdF9vcGVyYW5kcywgZ2V0X2V4cHJfb3BlcmFuZHMpOgoJSGFuZGxlIEFSUkFZX1JBTkdFX1JFRiBsaWtlIEFSUkFZX1JFRi4KCjIwMDQtMDctMjUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10eXBlY2suYyAoZGlnZXN0X2luaXQpOiBEb24ndCBhbGxvdyBhcnJheXMgb2Ygc2lnbmVkIG9yCgl1bnNpZ25lZCB2YXJpYW50cyBvZiB3Y2hhcl90IHRvIGJlIGluaXRpYWxpemVkIGJ5IHdpZGUgc3RyaW5nCgljb25zdGFudHMuICBEbyBhbGxvdyBhcnJheXMgb2YgZW51bWVyYXRlZCB0eXBlcyBjb21wYXRpYmxlIHdpdGgKCXdjaGFyX3QgdG8gYmUgaW5pdGlhbGl6ZWQgYnkgd2lkZSBzdHJpbmcgY29uc3RhbnRzLiAgUmVmaW5lIHRlc3RzCglkaXN0aW5ndWlzaGluZyB3aWRlIGFuZCBuYXJyb3cgc3RyaW5ncyBhbmQgYXJyYXlzLiAgR2l2ZSBzcGVjaWZpYwoJZXJyb3IgZm9yIGFycmF5cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzIGluaXRpYWxpemVkIGJ5IHN0cmluZwoJY29uc3RhbnRzLgoJKG91dHB1dF9pbml0X2VsZW1lbnQsIHByb2Nlc3NfaW5pdF9lbGVtZW50KTogQ2hlY2sgZm9yCglJTlRFR1JBTF9UWVBFX1AgcmF0aGVyIHRoYW4ganVzdCBmb3IgSU5URUdFUl9UWVBFIHdoZW4KCWluaXRpYWxpemluZyB3aXRoIHN0cmluZyBjb25zdGFudHMuCgoyMDA0LTA3LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogU2V0IERFQ0xfQVJUSUZJQ0lBTCBhbmQgREVDTF9JR05PUkVEX1AKCW9uIHRoZSBSRVNVTFRfREVDTC4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfYnVpbGRfc3RhdGljX2NkdG9yKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChjb3B5X2RlY2xfZm9yX2lubGluaW5nKTogQ29weSBERUNMX0FSVElGSUNJQUwgYW5kCglERUNMX0lHTk9SRURfUCB0byBuZXcgZGVjbC4KCjIwMDQtMDctMjQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGdlbmVyYWxfeGZtb2RlX29wZXJhbmQpCgkoZGVzdGluYXRpb25feGZtb2RlX29wZXJhbmQpOiBEZWxldGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUFJFRElDQVRFX0NPREVTKTogUmVtb3ZlIHRoZW0uCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKCptb3Z4Zl9pbnRlcm5hbCk6IFVzZSBnZW5lcmFsX29wZXJhbmQKCWFuZCBkZXN0aW5hdGlvbl9vcGVyYW5kLgoKMjAwNC0wNy0yNCAgQWxleGFuZGVyIEthYmFldiAgPGthbkBmcmVlYnNkLm9yZz4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogRGVmYXVsdCB0byBub3RoaW5nLgoJKEVYVFJBX1NQRUNTKTogVXNlIFNVQlRBUkdFVF9FWFRSQV9TUEVDUy4KCjIwMDQtMDctMjQgIEFsZXhhbmRlciBLYWJhZXYgIDxrYW5AZnJlZWJzZC5vcmc+CgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbQoKCVBSIDE2Njg0CgkqIGMtZGVjbC5jIChkaWFnbm9zZV9taXNtYXRjaGVkX2RlY2xzKTogRG9uJ3QgaXNzdWUgYQoJcmVkdW5kYW50LWRlY2xhcmF0aW9uIHdhcm5pbmcgdGhlIGZpcnN0IHRpbWUgYSBidWlsdGluIGlzCglkZWNsYXJlZCBleHBsaWNpdGx5LgoKMjAwNC0wNy0yNSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogdHJlZS5oIChzdGF0aWNwKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIGJvb2wuCgoyMDA0LTA3LTI1ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjLWNvbW1vbi5jIChjX3N0YXRpY3ApOiBMYXN0IGVwaXNvZGUgb2YgdGhlIHN0YXRpY3Agc2FnYS4KCjIwMDQtMDctMjUgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGMtY29tbW9uLmggKGNfc3RhdGljcCk6IENoYW5nZSByZXR1cm4gdHlwZSBmcm9tIGludCB0byBib29sLgoJKiB0cmVlLmMgKHN0YXRpY3ApOiBMaWtld2lzZS4KCSogbGFuZ2hvb2tzLmggKHN0YXRpY3ApOiBMaWtld2lzZS4KCjIwMDQtMDctMjUgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX3N0YXRpY3ApOiBDaGFuZ2UgcmV0dXJuIHR5cGUgZnJvbSBpbnQgdG8KCWJvb2wgaW4gcHJvdG90eXBlIHRvIG1hdGNoIGRlZmluaXRpb24uCgoyMDA0LTA3LTI1ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBzeXN0ZW0uaCAoYm9vbCwgdHJ1ZSwgZmFsc2UpOiBEb24ndCByZWRlZmluZSBhcyBwcmVwcm9jZXNzb3IgbWFjcm9zCglpbiBDKysuCgoyMDA0LTA3LTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cG1lZC5jIChpbml0X2V4cG1lZCk6IEEgc2lnbmVkIG1vZHVsdXMgYnkgYSBwb3dlciBvZiB0d28gaXMKCWNvbnNpZGVyZWQgY2hlYXAgaWYgaXRzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBmb3VyIGluc3RydWN0aW9ucy4KCjIwMDQtMDctMjUgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGdnYy5oIChHR0NfTkVXLCBHR0NfQ05FVywgR0dDX05FV1ZFQywgR0dDX0NORVdWRUMsIEdHQ19ORVdWQVIsCglHR0NfQ05FV1ZBUik6IE5ldyBtYWNyb3MuCgoyMDA0LTA3LTI1ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjLWNvbW1vbi5jOiBDb252ZXJ0IEFUVFJJQlVURV9VTlVTRUQgdG8gQVJHX1VOVVNFRCBpbiBwYXJhbWV0ZXIKCWxpc3RzLgoJKiBjLWRlY2wuYzogTGlrZXdpc2UuCgkqIGMtZm9ybWF0LmM6IExpa2V3aXNlLgoJKiBjLWxleC5jOiBMaWtld2lzZS4KCSogYy1vcHRzLmM6IExpa2V3aXNlLgoJKiBjLXByYWdtYS5jOiBMaWtld2lzZS4KCSogYy10eXBlY2suYzogTGlrZXdpc2UuCgkqIGdlbmNoZWNrLmM6IExpa2V3aXNlLgoJKiBnZW5jb25kaXRpb25zLmM6IExpa2V3aXNlLgoJKiBnZW5jb25maWcuYzogTGlrZXdpc2UuCgkqIGdlbmZsYWdzLmM6IExpa2V3aXNlLgoJKiBnZW5ndHlwZS5jOiBMaWtld2lzZS4KCSogZ2Vuc3VwcG9ydC5jOiBMaWtld2lzZS4KCSogZ2djLW5vbmUuYzogTGlrZXdpc2UuCgkqIGxhbmdob29rcy5jOiBMaWtld2lzZS4KCSogc3RhdGlzdGljcy5oOiBMaWtld2lzZS4KCSogc3R1Yi1vYmpjLmM6IExpa2V3aXNlLgoJKiBqYXZhL2RlY2wuYzogTGlrZXdpc2UuCgoyMDA0LTA3LTI0ICBSb21hbiBaaXBwZWwgIDx6aXBwZWxAbGludXgtbTY4ay5vcmc+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG91dHB1dF9zY2NfZGkpOiBGaXggY29kaW5nIHN0eWxlLgoJKHN5bWJvbGljX29wZXJhbmQpOiBGaXggcHJvdG90eXBlLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBzeW1ib2xpY19vcGVyYW5kLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBBZGQgY29uc3RhbnRzIGZvciByZWdpc3RlcnMgYTAgYW5kIHNwIGFuZAoJdXNlIHRoZW0sIGNoYW5nZSBmcm9tIHRoZSAiey4uLn0iIHN5bnRheCB0byB0aGUgc2ltcGxlciB7Li4ufQoJc3ludGF4LgoJKCpjZnY0X2V4dGVuZHFpc2kyKTogRml4IGRlc3RpbmF0aW9uIHByZWRpY2F0ZS4KCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaDogUmVtb3ZlIHZhcmlvdXMgZGVjbGFyYXRpb25zIGFsc28KCWdlbmVyYXRlZCB2aWEgUFJFRElDQVRFX0NPREVTLgoKMjAwNC0wNy0yMyAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjLXR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogVGlnaHRlbmVkIHVwIHBvaW50ZXIKCWNvbnZlcnN0aW9ucyB0aGF0IGRpZmZlciBpbiBzaWduZWRuZXNzLgoKMjAwNC0wNy0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbm1vZGVzLmMgKG1ha2VfdmVjdG9yX21vZGVzKTogTWFyayB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoyMDA0LTA3LTIzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS5kZWYgKFZJRVdfQ09OVkVSVF9FWFBSKTogQ2hhbmdlIHRvIGNsYXNzICdyJy4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMsIGNhc2UgVklFV19DT05WRVJUX0VYUFIpOiBOZXcuCgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jb21wb3VuZF9sdmFsKTogQ2hlY2sgZm9yIG5vIGhhbmRsZWQKCW9wZXJhdGlvbnMsIHJhdGhlciB0aGFuIGNoZWNraW5nIGZvciBleHBsaWNpdCBsaXN0IG9mIG5vZGVzLgoJKGlzX2dpbXBsZV9hZGRyX2V4cHJfYXJnX29yX2luZGlyZWN0KTogTmV3IGZ1bmN0aW9uLgoJKGdpbXBsaWZ5X2FkZHJfZXhwcik6IENhbGwgaXQgYW5kIGhhbmRsZSBJTkRJUkVDVF9SRUY7IHJlbW92ZQoJcmVkdW5kYW50IHNldHRpbmcgb2YgVFJFRV9JTlZBUklBTlQuCgkoZ2ltcGxpZnlfZXhwciwgY2FzZSBWSUVXX0NPTlZFUlRfRVhQUik6IENhbGwgZ2ltcGxpZnlfY29tcG91bmRfbHZhbC4KCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX2FkZHJfZXhwcl9hcmcpOiBDYWxsIGhhbmRsZWRfY29tcG9uZW50X3AuCgoyMDA0LTA3LTIzICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNjY4OAoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTY2ODkKCSogdHJlZS1zc2EtYWxpYXMuYyAoc2V0dXBfcG9pbnRlcnNfYW5kX2FkZHJlc3NhYmxlcyk6IFJlbW92ZQoJdW5uZWNlc3NhcnkgaW5pdGlhbGl6YXRpb24gb2YgJ3RhZycuCgkoZ2V0X3RtdF9mb3IpOiBDaGVjayB0aGF0IHRoZSBuZXcgdHlwZSB0YWcgaGFzIHRoZSBzYW1lIGFsaWFzCglzZXQgYXMgdGhlIHBvaW50ZWQtdG8gdHlwZS4KCShncm91cF9hbGlhc2VzKTogT25seSByZWd1bGFyIHZhcmlhYmxlcyBuZWVkIHRvIGJlIHJlbW92ZWQKCWZyb20gdGhlIGFsaWFzIHNldCBvZiBhIG5hbWUgdGFnLgoJKiB0cmVlLXNzYS1jb3B5LmMgKG1heV9wcm9wYWdhdGVfY29weSk6IERvIG5vdCBhbGxvdyBjb3B5Cglwcm9wYWdhdGlvbiBpZiB0aGUgdHdvIHR5cGVzIGFyZSBub3QgY29tcGF0aWJsZS4KCShtZXJnZV9hbGlhc19pbmZvKTogUmVuYW1lIGZyb20gcmVwbGFjZV9zc2FfbmFtZXNfYW5uLgoJQWRkIG1vcmUgY2hlY2tpbmcuCgkocmVwbGFjZV9leHBfMSk6IElmIGJvdGggYXJndW1lbnRzIGFyZSBTU0FfTkFNRXMsIGNoZWNrIHRoYXQKCXRoZSBwcm9wYWdhdGlvbiBjYW4gYmUgZG9uZS4KCU9ubHkgY2FsbCBtZXJnZV9hbGlhc19pbmZvIG9uIHBvaW50ZXJzLgoJKHByb3BhZ2F0ZV92YWx1ZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1jb3B5cmVuYW1lLmM6IEluY2x1ZGUgbGFuZ2hvb2tzLmguCgkoY29weV9yZW5hbWVfcGFydGl0aW9uX2NvYWxlc2NlKTogQ2FsbCByZXBsYWNlX3NzYV9uYW1lX3N5bWJvbAoJdG8gZG8gdGhlIG1lcmdpbmcuCglEbyBub3QgY29hbGVzY2UgdmFyaWFibGVzIHdpdGggaW5jb21wYXRpYmxlIHR5cGVzLgoJKHJlbmFtZV9zc2FfY29waWVzKTogQ2FsbCByZXBsYWNlX3NzYV9uYW1lX3N5bWJvbC4KCSogdHJlZS1zc2EuYyAodmVyaWZ5X3NzYV9uYW1lKTogVmVyaWZ5IHRoYXQgdGhlIFNTQV9OQU1FIGhhcwoJdGhlIHNhbWUgdHlwZSBhcyB0aGUgdW5kZXJseWluZyBfREVDTC4KCSogdHJlZS1zc2FuYW1lcy5jIChyZXBsYWNlX3NzYV9uYW1lX3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5oIChyZXBsYWNlX3NzYV9uYW1lX3N5bWJvbCk6IERlY2xhcmUuCgoyMDA0LTA3LTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMrKy8xNjI3NwoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jb25kX2V4cHIpOiBHaW1wbGlmeSBUQVJHRVQgdG8gYSBtaW5fbHZhbDsKCXVuc2hhcmUgaXQgcHJvcGVybHkuCgkoZ2ltcGxpZnlfbW9kaWZ5X2V4cHJfcmhzKTogUHVzaCBhc3NpZ25tZW50IGZyb20gYSBjb25kaXRpb25hbCBpbnRvCgl0aGUgY29uZGl0aW9uYWwgZm9yIGFsbCBub24tcmVnaXN0ZXIgdHlwZXMuCgoyMDA0LTA3LTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBEb24ndCBoYW5kbGUgbm9uLWxvY2FsIHZhcmlhYmxlcy4KCSogZXhwci5oIChmaXhfbGV4aWNhbF9hZGRyKTogUmVtb3ZlLgoJKiBmdW5jdGlvbi5jIChORUVEX1NFUEFSQVRFX0FQKTogUmVtb3ZlLgoJKGZpeF9sZXhpY2FsX2FkZHIpOiBSZW1vdmUuCgkqIHRyZWUtYWxpYXMtY29tbW9uLmMgKGdldF9hbGlhc192YXJfZGVjbCk6IENoZWNrIFRSRUVfU1RBVElDLAoJbm90IG51bGwgZGVjbF9mdW5jdGlvbl9jb250ZXh0LgoJKGNyZWF0ZV9hbGlhc192YXJzKTogTGlrZXdpc2UuCgkqIHRyZWUtY2ZnLmMgKG1ha2VfY3RybF9zdG10X2VkZ2VzKTogRG9uJ3QgY2hlY2sgZm9yIG5vbi1sb2NhbCBsYWJlbHMuCgkoc2ltcGxlX2dvdG9fcCk6IExpa2V3aXNlLgoJKiB0cmVlLWRmYS5jIChhZGRfcmVmZXJlbmNlZF92YXIpOiBEb24ndCBjaGVjayBmb3Igbm9uLWxvY2FsIHZhcmlhYmxlcy4KCSogdHJlZS1zc2EtY2NwLmMgKGdldF9kZWZhdWx0X3ZhbHVlKTogTGlrZXdpc2UuCgkqIHRyZWUtdGFpbGNhbGwuYyAoc3VpdGFibGVfZm9yX3RhaWxfb3B0X3ApOiBMaWtld2lzZS4KCSogdHJlZS5jIChuZWVkc190b19saXZlX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKG1heV9iZV9hbGlhc2VkKTogTW92ZS4uLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChtYXlfYmVfYWxpYXNlZCk6IC4uLiBoZXJlLiAgRW5oYW5jZSBjaGVjayBmb3IKCXdoZW4gVFJFRV9TVEFUSUMgdmFyaWFibGVzIG1heSBiZSBhZGRyZXNzYWJsZS4KCjIwMDQtMDctMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKHNpdGUuZXhwKTogQWRkIEhPU1RDQyBhbmQgSE9TVENGTEFHUyB0byBzaXRlLmV4cC4KCjIwMDQtMDctMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4IDxjYXNlICdiJz4pOiBEb24ndCBhdHRlbXB0IHRvIHByaW50CgliaXRtYXAgY29udGVudHMgaWYgR0VORVJBVE9SX0ZJTEUgaXMgZGVmaW5lZC4KCSogTWFrZWZpbGUuaW4gKEJVSUxEX1JUTCk6IFJlbW92ZSAkKEJVSUxEX1BSRUZJWCliaXRtYXAuby4KCSgkKEJVSUxEX1BSRUZJWF8xKWJpdG1hcC5vKTogRGVsZXRlIHJ1bGUuCgoyMDA0LTA3LTIzICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IEZvcm0gY29tcG9zaXRlIHR5cGUgb2YgZnVuY3Rpb24gdHlwZXMKCXJhdGhlciB0aGFuIGNvcHlpbmcgdHlwZSBmcm9tIHByZXZpb3VzIHByb3RvdHlwZSBkZWNsYXJhdGlvbi4KCjIwMDQtMDctMjMgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLmggKHZlY19sdmV3eCwgdmVjX2x2ZWh4LCB2ZWNfbHZ3YngpOiBSZW1vdmUKCXRoZSBjb25zdCBxdWFsaWZpZXIgZm9yIHRoZSBzZWNvbmQgYXJndW1lbnQgaW4gdGhlIEMrKyBmdW5jdGlvbnMuCgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMuaCAodmVjX3N0dmV3eCwgdmVjX3N0dmVoeCwgdmVjX3N0dmVieCk6IFVzZQoJc3BlY2lmaWMgcG9pbnRlciB0eXBlcy4KCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5oICh2ZWNfdmFkZHV3bSk6ICh2ZWNfdmFkZHV3bSwgdmVjX3ZhZGR1aG0sCgl2ZWNfdmFkZHVibSwgdmVjX3ZzdWJ1d20sIHZlY192c3VidWhtLCB2ZWNfdnN1YnVibSk6IEZpeCB0eXBlcyB1c2VkCglmb3IgdmVjdG9yIGJvb2wgYW5kL29yIHZlY3RvciBwaXhlbCwgYWRkIEMrKyBhbmQgQyBtaXNzaW5nIHN1cHBvcnQuCgkodmVjX3ZhZGRzd3MsIHZlY192YWRkc2hzLCB2ZWNfdmFkZHNicywgdmVjX3ZtYXhzdywgdmVjX3ZtYXhzaCwKCXZlY192bWF4c2IsIHZlY192bXJnaHcsIHZlY192bXJnaGgsIHZlY192bXJnaGIsIHZlY192bXJnbHcsIHZlY192bXJnbGgsCgl2ZWNfdm1yZ2xiLCB2ZWNfdm1pbnN3LCB2ZWNfdm1pbnNoLCB2ZWNfdm1pbnNiLCB2ZWNfdnBrdXd1bSwKCXZlY192cGt1aHVtLCB2ZWNfdnNwbHR3LCB2ZWNfdnNwbHRoLCB2ZWNfdnNwbHRiLCB2ZWNfdnN1YnN3cywKCXZlY192c3Vic2hzLCB2ZWNfdnN1YnNicywgdmVjX3Z1cGtsc2gsIHZlY192dXBraHNoLCB2ZWNfdnVwa2xzYik6IEFkZAoJbWlzc2luZyBDKysgYW5kIEMgc3VwcG9ydCBmb3IgdmVjdG9yIGJvb2wgYW5kL29yIHZlY3RvciBwaXhlbC4KCSh2ZWNfdmFkZHV3cywgdmVjX3ZhZGR1aHMsIHZlY192YWRkdWJzLCB2ZWNfdmNtcGVxZnAsIHZlY192Y21wZXF1dywKCXZlY192Y21wZXF1aCwgdmVjX3ZjbXBlcXViLCB2ZWNfdmNtcGd0ZnAsIHZlY192Y21wZ3RzdywgdmVjX3ZjbXBndHV3LAoJdmVjX3ZjbXBndHNoLCB2ZWNfdmNtcGd0dWgsIHZlY192Y21wZ3RzYiwgdmVjX3ZjbXBndHViLCB2ZWNfdm1heHV3LAoJdmVjX3ZtYXh1aCwgdmVjX3ZtYXh1YiwgdmVjX3ZtaW51dywgdmVjX3ZtaW51aCwgdmVjX3ZtaW51YiwKCXZlY192c3VidXdzLCB2ZWNfdnN1YnVocywgdmVjX3ZzdWJ1YnMsIHZlY192dXBraHB4LCB2ZWNfdnVwa2xweCk6IEZpeAoJQysrIGFuZCBDIHR5cGVzIHVzZWQgZm9yIHZlY3RvciBib29sIGFuZC9vciB2ZWN0b3IgcGl4ZWwuCgkodmVjX3N0LCB2ZWNfc3RsKTogQWRkIEMrKyBzdXBwb3J0IGZvciB2ZWN0b3IgcGl4ZWwuCgkodmVjX3VucGFja2gsIHZlY191bnBhY2tsLCB2ZWNfYW55X2dlKTogRml4IEMrKyBzdXBwb3J0IGZvciB2ZWN0b3IgYm9vbC4KCSh2ZWNfYWxsX25lKTogQWRkIEMrKyBzdXBwb3J0IGZvciB2ZWN0b3IgcGl4ZWwuCgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMuaCAodmVjX3ZjbXBndHNoKTogRml4IEMrKyBmdW5jdGlvbiBuYW1lLgoJKHZlY192bXVsZXNiKTogQWRkIG1pc3NpbmcgQysrIGZ1bmN0aW9uLgoJKHZlY19wZXJtKTogRml4IHR5cGUgb2YgdGhpcmQgYXJndW1lbnQgaW4gQysrIGZ1bmN0aW9uLgoJKHZlY192c3VtNHNocyk6IEZpeCBDKysgZnVuY3Rpb24gbmFtZS4KCSh2ZWNfYW55X2dlKTogUmVtb3ZlIEMrKyBmdW5jdGlvbnMgZm9yIHVuc3VwcG9ydGVkIGFyZyBjb21iaW5hdGlvbnMuCgkodmVjX3ZjbXBndHN3LCB2ZWNfdmNtcGd0dXcsIHZlY19taW5zYiwgdmVjX3Ztc3VtbWJtKTogRml4IHRoZQoJYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBlcnJvciBoYW5kbGVyIGluIEMgbWFjcm8uCgkodmVjX25tc3ViKTogUmVtb3ZlIGV4dHJhIHBhcmVucyBhcm91bmQgYXJndW1lbnQgbmFtZXMgaW4gQyBtYWNyby4KCSh2ZWNfcGFja3B4KTogQWRkIG1pc3NpbmcgcGFyZW5zIGluIEMgbWFjcm8uCgoyMDA0LTA3LTIyICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogbWFjaG1vZGUuZGVmOiBSZW1vdmUgdmVjdG9yIG1vZGVzLgoJKiBjb25maWcvYWxwaGEvYWxwaGEtbW9kZXMuZGVmOiBBZGQgc3VwcG9ydGVkIHZlY3RvciBtb2Rlcy4KCSogY29uZmlnL2FybS9hcm0tbW9kZXMuZGVmOiBMaWtld2lzZS4KCSogY29uZmlnL2Zydi9mcnYtbW9kZXMuZGVmOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni1tb2Rlcy5kZWY6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1tb2Rlcy5kZWY6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2gtbW9kZXMuZGVmOiBMaWtld2lzZS4KCjIwMDQtMDctMjMgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0BkZWJpYW4ub3JnPgoKCSogaW50bC5jIChnY2NfaW5pdF9saWJpbnRsKTogVXNlIFBBQ0tBR0UgZm9yIHRoZSB0ZXh0IGRvbWFpbi4KCSogY29uZmlndXJlLmFjOiBBZGQgQUNfREVGSU5FX1VOUVVPVEVEIGZvciBQQUNLQUdFLgoJKiBjb25maWcuaDogUmVnZW5lcmF0ZS4KCSogY29uZmlndXJlOiBMaWtld2lzZS4KCjIwMDQtMDctMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkd2FyZjJvdXQuYyAob3V0cHV0X2NhbGxfZnJhbWVfaW5mbyk6IFNldCBTWU1CT0xfRkxBR19MT0NBTCBvbgoJZ2VuZXJhdGVkIFNZTUJPTF9SRUZzIGZvciBsYWJlbHMuCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmggKG1hY2hvcGljX3ZhbGlkYXRlX3N0dWJfb3Jfbm9uX2xhenlfcHRyKToKCUNoYW5nZSBwcm90b3R5cGUuCgkobWFjaG9waWNfc3R1Yl9uYW1lKTogUmVtb3ZlLgoJKG1hY2hvcGljX2luZGlyZWN0aW9uX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkobWFjaG9waWNfbWNvdW50X3N0dWJfbmFtZSk6IExpa2V3aXNlLgoJKG1hY2hvcGljX2NsYXNzaWZ5X25hbWUpOiBSZW1vdmUuCgkobWFjaG9waWNfZnVuY3Rpb25fYmFzZV9zeW0pOiBOZXcgZnVuY3Rpb24uCgkobWFjaHBvaWNfY2xhc3NpZnlfc3ltYm9sKTogTGlrZXdpc2UuCgkobWFjaG9waWNfY2xhc3NpZnlfaWRlbnQpOiBSZW1vdmUuCgkobWFjaG9waWNfZGVmaW5lX2lkZW50KTogTGlrZXdpc2UuCgkobWFjaG9waWNfZGVmaW5lX25hbWUpOiBMaWtld2lzZS4KCShtYWNob3BpY19uYW1lX2RlZmluZWRfcCk6IExpa2V3aXNlLgoJKG1hY2hvcGljX2lkZW50X2RlZmluZWRfcCk6IExpa2V3aXNlLgoJKGRhcndpbl9zdHJpcF9uYW1lX2VuY29kaW5nKTogTGlrZXdpc2UuCgkobWFjaG9waWNfZGVmaW5lX3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2Rhcndpbi5jIChoYXNodGFiLmgpOiBJbmNsdWRlLgoJKG1hY2hvcGljX2RlZmluZWRfbGlzdCk6IFJlbW92ZS4KCShtYWNob3BpY19jbGFzc2lmeV9pZGVudCk6IExpa2V3aXNlLgoJKG1hY2hvcGljX2NsYXNzaWZ5X25hbWUpOiBMaWtld2lzZS4KCShtYWNob3BpY19pZGVudF9kZWZpbmVkX3ApOiBMaWtld2lzZS4KCShtYWNob3BpY19kZWZpbmVfaWRlbnQpOiBMaWtld2lzZS4KCShtYWNob3BpY19kZWZpbmVfbmFtZSk6IExpa2V3aXNlLgoJKG1hY2hvcGljX3N5bWJvbF9kZWZpbmVkX3ApOiBOZXcgZnVuY3Rpb24uCgkobWFjaG9waWNfY2xhc3NpZnlfc3ltYm9sKTogTGlrZXdpc2UuCgkobWFjaG9waWNfZGF0YV9kZWZpbmVkX3ApOiBVc2UgbWFjaG9waWNfY2xhc3NpZnlfc3ltYm9sLgoJKG1hY2hvcGljX2RlZmluZV9zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkobWFjaG9waWNfZnVuY3Rpb25fYmFzZV9zeW0pOiBOZXcgZnVuY3Rpb24uCgkobWFjaG9waWNfbm9uX2xhenlfcG9pbnRlcnMpOiBSZW1vdmUuCgkobWFjaG9waWNfbm9uX2xhenlfcHRyX25hbWUpOiBMaWtld2lzZS4KCShtYWNob3BpY19zdHVicyk6IExpa2V3aXNlLgoJKG1hY2hvcGljX3N0dWJfbmFtZSk6IExpa2V3aXNlLgoJKE5PTl9MQVpZX1BPSU5URVJfU1VGRklYKTogTmV3IG1hY3JvLgoJKFNUVUJfU1VGRklYKTogTGlrZXdpc2UuCgkobWFjaG9waWNfaW5kaXJlY3Rpb24pOiBOZXcgc3RydWN0dXJlLgoJKG1hY2hvcGljX2luZGlyZWN0aW9ucyk6IE5ldyB2YXJpYWJsZS4KCShtYWNob3BpY19pbmRpcmVjdGlvbl9oYXNoKTogTmV3IGZ1bmN0aW9uLgoJKG1hY2hvcGljX2luZGlyZWN0aW9uX2VxKTogTGlrZXdpc2UuCgkobWFjaG9waWNfaW5kaXJlY3Rpb25fbmFtZSk6IExpa2V3aXNlLgoJKG1hY2hvcGljX21jb3VudF9zdHViX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkobWFjaG9waWNfdmFsaWRhdGVfc3R1Yl9vcl9ub25fbGF6eV9wb2ludGVyKTogUmVpbXBsZW1lbnQgdG8gdXNlCgloYXNoIHRhYmxlLgoJKG1hY2hvcGljX2luZGlyZWN0X2RhdGFfcmVmZXJlbmNlKTogUmV3b3JrIHRvIHVzZSBuZXcgZnVuY3Rpb25zLgoJKG1hY2hvcGljX2luZGlyZWN0X2NhbGxfdGFyZ2V0KTogTGlrZXdpc2UuCgkobWFjaG9waWNfbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKG1hY2hvcGljX291dHB1dF9pbmRpcmVjdGlvbik6IE5ldyBmdW5jdGlvbi4KCShtYWNob3BpY19maW5pc2gpOiBVc2UgaXQuCgkobWFjaG9waWNfb3BlcmFuZF9wKTogUmV3b3JrIHRvIHVzZSBuZXcgZnVuY3Rpb25zLgoJKGRhcndpbl9lbmNvZGVfc2VjaXRvbl9pbmZvKTogVXNlIFNZTUJPTF9SRUZfRkxBR1MuCgkoZGFyd2luX3N0cmlwX25hbWVfZW5jb2RpbmcpOiBSZW1vdmUuCgkodXBkYXRlX25vbl9sYXp5X3B0cnMpOiBSZW1vdmUuCgkodXBkYXRlX3N0dWJzKTogTGlrZXdpc2UuCgkoZGFyd2luX25vbl9sYXp5X3BjcmVsKTogVXNlIG5ldyBmdW5jdGlvbnMuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0xBQkVMUkVGKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9BTElHTkVEX0RFQ0xfTE9DQUwpOiBMaWtld2lzZS4KCShNQUNIT19TWU1CT0xfRkxBR19WQVJJQUJMRSk6IE5ldyBtYWNyby4KCShNQUNIT19TWU1CT0xfRkxBR19ERUZJTkVEKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NUUklQX05BTUVfRU5DT0RJTkcpOiBEbyBub3QgdXNlCglkYXJ3aW5fc3RyaXBfbmFtZV9lbmNvZGluZy4KCShHRU5fTEFaWV9QVFJfTkFNRV9GT1JfU1lNQk9MKTogRG8gbm90IHVzZQoJZGFyd2luX3N0cmlwX25hbWVfZW5jb2RpbmcuCgkqIGNvbmZpZy9pMzg2L2Rhcndpbi5oIChGVU5DVElPTl9QUk9GSUxFUik6IFVzZQoJbWFjaG9waWNfbWNvdW50X3N0dWJfbmFtZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfb3V0cHV0X21pX3RodW5rKTogVXNlCgltYWNob3BpY19pbmRpcmVjdGlvbl9uYW1lLCBub3QgbWFjaG9waWNfc3R1Yl9uYW1lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyk6IFVzZQoJbWFjaG9waWNfZnVuY3Rpb25fYmFzZV9zeW0uCgkocHJpbnRfb3BlcmFuZCk6IFVzZSBtYWNob3BpY19jbGFzc2lmeV9zeW1ib2wuCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBVc2UgbWFjaG9waWNfZnVuY3Rpb25fYmFzZV9zeW0uCgkob3V0cHV0X3Byb2ZpbGVfaG9vayk6IERvIG5vdCB1c2UgbWFjaG9waWNfc3R1Yl9uYW1lLgoJKG1hY2hvX2JyYW5jaF9pc2FsbmRzKTogRG8gbm90IHVzZSBkYXJ3aW5fc3RyaXBfbmFtZV9lbmNvZGluZy4KCjIwMDQtMDctMjIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvNzI4NAoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2XzEpOiBEbyBub3QgdHJlYXQgc2lnbmVkIGxlZnQgc2hpZnQKCWFzIG11bHRpcGxpY2F0aW9uLgoKMjAwNC0wNy0yMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvaW1wbGVtZW50LWMudGV4aTogTmV3IGZpbGUuCgkqIGRvYy9leHRlbmQudGV4aSAoQyBJbXBsZW1lbnRhdGlvbik6IE1vdmUgdG8gdGhlcmUuCgkqIGRvYy9nY2MudGV4aTogSW5jbHVkZSBpbXBsZW1lbnQtYy50ZXhpLgoJKiBNYWtlZmlsZS5pbiAoVEVYSV9HQ0NfRklMRVMpOiBBZGQgaW1wbGVtZW50LWMudGV4aS4KCjIwMDQtMDctMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogaW50ZWdyYXRlLmMgKGNvcHlfZGVjbF9mb3JfaW5saW5pbmcpOiBSZW1vdmUgaW52aXNpYmxlIHJlZmVyZW5jZQoJaGFuZGxpbmcuCgkqIHRyZWUtaW5saW5lLmMgKHNldHVwX29uZV9wYXJhbWV0ZXIpOiBMaWtld2lzZS4KCjIwMDQtMDctMjIgIEJyaWFuIEJvb3RoICA8YmJvb3RoQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1jY3AuYyAobGF0dGljZXZhbHVlKTogQWRkIFVOS05PV05fVkFMLgoJKHN1YnN0aXR1dGVfYW5kX2ZvbGQpOiBQcm9waWdhdGUgaW50byBWVVNFIG9wZXJhbmRzIHdoZW4gcG9zc2libGUuCgkodmlzaXRfcGhpX25vZGUpOiBIYW5kbGUgVU5LTk9XTl9WQUwgbGF0dGljZXZhbHVlLgoJKGNwX2xhdHRpY2VfbWVldCk6IEhhbmRsZSBtZXJnaW5nIG9mIGxhdHRpY2V2YWx1ZXMgd2hlbgoJVU5LTk9XTl9WQUwgaXMgcHJlc2VudC4KCSh2aXNpdF9zdG10KTogVmlzaXQgYXNzaWdubWVudHMgd2l0aCBWX01VU1RfREVGcy4KCSh2aXNpdF9hc3NpZ25tZW50KTogR2F0aGVyIGNjcCBpbmZvcm1hdGlvbiBmb3IgVl9NVVNUX0RFRiBvcGVyYW5kcy4KCShjY3BfZm9sZCk6IERlYWwgd2l0aCBSSFMnIHRoYXQgYXJlIGNvbnN0YW50IGFuZCB2aXJ0dWFsLgoJKGV2YWx1YXRlX3N0bXQpOiBIYW5kbGUgVU5LTk9XTl9WQUwgbGlrZWx5IHZhbHVlcy4KCShkdW1wX2xhdHRpY2VfdmFsdWUpOiBEdW1wIFVOS05PV05fVkFMIGxhdHRpY2V2YWx1ZXMuCgkoaW5pdGlhbGl6ZSk6IE1hcmsgc3RhdGVtZW50cyB3aXRoIFZfTVVTVF9ERUZzIGFzIFZBUllJTkcgb25seSBpZiB0aGUKCVZfTVVTVF9ERUYgb3BlcmFuZCBpcyBWQVJZSU5HLiBGaXggY29tbWVudCBhbmQgaW5jbHVkZSBWT1BTIHdoZW4KCWNvbXB1dGluZyBpbW1lZGlhdGUgdXNlcy4KCShzZXRfbGF0dGljZV92YWx1ZSk6IERpc2FsbG93IGEgVU5LTk9XTl9WQUwtPlVOREVGSU5FRCBzdGF0ZQoJdHJhbnNpdGlvbi4KCShyZXBsYWNlX3Z1c2VfaW4pOiBOZXcgZnVuY3Rpb24uCgkobGlrZWx5X3ZhbHVlKTogQWRkIGNoZWNrIG9mIHZ1c2Ugb3BlcmFuZHMuCgkoZ2V0X2RlZmF1bHRfdmFsdWUpOiBTZXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdmlydHVhbGx5IGRlZmluZWQKCXZhcmlhYmxlcyB0byBVS05PV05fVkFMIGluc3RlYWQgb2YgVkFSWUlORy4KCjIwMDQtMDctMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGVtaXRfcHVzaF9pbnNuKTogRG9uJ3QgdXNlIHNldF9tZW1fYXR0cmlidXRlcy4KCjIwMDQtMDctMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1saXZlLmMgKGNyZWF0ZV9zc2FfdmFyX21hcCk6IEF2b2lkIGRlZmluZWQtYnV0LW5vdC11c2VkCgl2YXJpYWJsZXMgZHVlIHRvIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLgoKMjAwNC0wNy0yMiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLWludG8tc3NhLmMgKHNldF9saXZlaW5fYmxvY2spOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKHJld3JpdGVfc3NhX2ludG9fc3NhKTogU3RhcnQgaXRlcmF0aW5nIG92ZXIgU1NBIG5hbWVzIGF0IDEuCglSZWxlYXNlIFNTQSBuYW1lcyB0aGF0IGhhdmUgYmVlbiByZS1yZW5hbWVkLgoJKiB0cmVlLXBoaW5vZGVzLmMgKG1ha2VfcGhpX25vZGUpOiBTZXQgc2FtZSBUUkVFX1RZUEUgYXMgdGhlCgl2YXJpYWJsZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAoaW5pdF9hbGlhc19pbmZvKTogSWYgYWxpYXNlcyBoYXZlIGJlZW4KCWNvbXB1dGVkIGJlZm9yZSwgY2xlYXIgZXhpc3RpbmcgYWxpYXMgaW5mb3JtYXRpb24uCgkoY3JlYXRlX25hbWVfdGFncyk6IERvIG5vIGZpeHVwIFBUX0FOWVRISU5HIHBvaW50ZXJzLgoJSWYgdGhlIG5ldyBuYW1lIHRhZyBmb3IgYSBwb2ludGVyIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBvbmUgaXQKCWhhZCBiZWZvcmUsIG1hcmsgdGhlIG9sZCB0YWcgZm9yIHJlbmFtaW5nLgoJKHJlcGxhY2VfbWF5X2FsaWFzKTogTmV3IGZ1bmN0aW9uLgoJKGdyb3VwX2FsaWFzZXMpOiBDYWxsIGl0LgoJKHNldHVwX3BvaW50ZXJzX2FuZF9hZGRyZXNzYWJsZXMpOiBBbHdheXMgY2FsbCBnZXRfdG10X2Zvci4KCShtYXliZV9jcmVhdGVfZ2xvYmFsX3Zhcik6IERvbid0IGNyZWF0ZSAuR0xPQkFMX1ZBUiBtb3JlIHRoYW4KCW9uY2UuCgkoc2V0X3B0X2FueXRoaW5nKTogTmV3IGxvY2FsIGZ1bmN0aW9uLgoJKHNldF9wdF9tYWxsb2MpOiBOZXcgbG9jYWwgZnVuY3Rpb24uCgkobWVyZ2VfcG9pbnRlZF90b19pbmZvKTogRG9uJ3QgbWVyZ2UgcG9pbnRlZC10byB2YXJpYWJsZXMgZnJvbQoJdGhlIG9yaWdpbmFsIHBvaW50ZXIgaWYgdGhlIGRlc3RpbmF0aW9uIGlzIHBvaW50aW5nIHRvIGFuCgl1bmtub3duIGxvY2F0aW9uLgoJKGFkZF9wb2ludGVkX3RvX2V4cHIpOiBDYWxsIHNldF9wdF9hbnl0aGluZyBhbmQgc2V0X3B0X21hbGxvYy4KCShhZGRfcG9pbnRlZF90b192YXIpOiBEbyBub3QgYWRkIGEgdmFyaWFibGUgdG8gdGhlIHBvaW50cy10bwoJc2V0IGlmIHRoZSBwb2ludGVyIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYW55d2hlcmUuCgkoY29sbGVjdF9wb2ludHNfdG9faW5mb19yKTogSWYgdGhlIGRlZmluaW5nIHN0YXRlbWVudCBpcyBhIFBISQoJbm9kZSwgb25seSBtZXJnZSBwb2ludGVkLXRvIGluZm9ybWF0aW9uIGlmIHRoZSBhcmd1bWVudCBoYXMKCWFscmVhZHkgYmVlbiB2aXNpdGVkLgoJKGdldF90bXRfZm9yKTogT25seSBjcmVhdGUgYSBuZXcgdGFnIGlmIHRoZSBwb2ludGVyIGRpZG4ndAoJaGF2ZSBvbmUgYWxyZWFkeS4KCShkdW1wX2FsaWFzX2luZm8pOiBFbWl0IG1vcmUgaW5mb3JtYXRpb24uCgkoZHVtcF9wb2ludHNfdG9faW5mb19mb3IpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtZG9tLmMgKHJlZGlyZWN0X2VkZ2VzX2FuZF91cGRhdGVfc3NhX2dyYXBoKTogRG9uJ3QKCXRyeSB0byBnZXQgdGhlIGFubm90YXRpb24gb2YgYW4gU1NBX05BTUUuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFkZF9zdG10X29wZXJhbmQpOiBPbmx5IGNoZWNrIGZvciBlbXB0eQoJYWxpYXMgc2V0cyB3aGVuIGNoZWNraW5nIGlzIGVuYWJsZWQuCgkqIHRyZWUtc3NhLXByZS5jIChuZWVkX2VoX2NsZWFudXApOiBOZXcgbG9jYWwgdmFyaWFibGUuCgkoZWxpbWluYXRlKTogTWFyayBiYXNpYyBibG9ja3MgdGhhdCB3aWxsIG5lZWQKCUVIIGluZm9ybWF0aW9uIGNsZWFuZWQgdXAuCgkoaW5pdF9wcmUpOiBTcGxpdCBFTlRSWV9CTE9DSy0+MCBpZiBibG9jayAwIGhhcyBtb3JlIHRoYW4gb25lCglwcmVkZWNlc3Nvci4KCUluaXRpYWxpemUgbmVlZF9laF9jbGVhbnVwLgoJKGZpbmlfcHJlKTogQ2FsbCB0cmVlX3B1cmdlX2FsbF9kZWFkX2VoX2VkZ2VzIGFuZAoJY2xlYW51cF90cmVlX2NmZyBpZiBuZWVkZWQuCglGcmVlIG5lZWRfZWhfY2xlYW51cC4KCSogdHJlZS1zc2EuYyAodmVyaWZ5X3NzYV9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKHZlcmlmeV9kZWYpOiBDYWxsIGl0LgoJUmUtYXJyYW5nZSB0byBhdm9pZCBwcmludGluZyB0b28gbWFueSBlcnJvciBtZXNzYWdlcy4KCSh2ZXJpZnlfdXNlKTogTGlrZXdpc2UuCgkodmVyaWZ5X3BoaV9hcmdzKTogTGlrZXdpc2UuCgkodmVyaWZ5X2Zsb3dfaW5zZW5zaXRpdmVfYWxpYXNfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCSh2ZXJpZnlfZmxvd19zZW5zaXRpdmVfYWxpYXNfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCSh2ZXJpZnlfYWxpYXNfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCSh2ZXJpZnlfc3NhKTogQ2FsbCB2ZXJpZnlfYWxpYXNfaW5mby4KCUNsZWFyIFRSRUVfVklTSVRFRCBvbiBhbGwgdGhlIFNTQV9OQU1FcyBiZWZvcmUgc2Nhbm5pbmcgdGhlCglwcm9ncmFtLgoJUmUtYXJyYW5nZSB0byBhdm9pZCBwcmludGluZyB0b28gbWFueSBlcnJvciBtZXNzYWdlcy4KCSogdHJlZS1zc2FuYW1lcy5jIChtYWtlX3NzYV9uYW1lKTogQ2xlYXIKCVNTQV9OQU1FX0lOX0ZSRUVfTElTVC4KCShyZWxlYXNlX3NzYV9uYW1lKTogTmV2ZXIgcmVsZWFzZSBhIGRlZmF1bHQgZGVmaW5pdGlvbi4KCShyZWxlYXNlX2RlZnMpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuaDogRGVjbGFyZSBpdC4KCSogdHJlZS1zc2EtZGNlLmMgKHJlbW92ZV9kZWFkX3N0bXQpOiBDYWxsIGl0LgoKMjAwNC0wNy0yMiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS5jICh3YWxrX3VzZV9kZWZfY2hhaW5zXzEpOiBBZGQgbmV3IGFyZ3VtZW50IElTX0RGUy4KCUlmIHRydWUsIGRvIGEgZGVwdGgtZmlyc3Qgc2VhcmNoLiAgRG8gYSBicmVhZGh0LWZpcnN0IHNlYXJjaCwKCW90aGVyd2lzZS4KCSh3YWxrX3VzZV9kZWZfY2hhaW5zKTogQWRkIG5ldyBhcmd1bWVudCBJU19ERlMuCglVcGRhdGUgYWxsIHVzZXJzLgoJKiB0cmVlLWZsb3cuaCAod2Fsa191c2VfZGVmX2NoYWlucyk6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDA0LTA3LTIyICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGNvbmZpZy9jcmlzL2NyaXMubWQ6IFR3ZWFrIGZvcm1hdHRpbmcuCgkoYXNyYW5kYiwgYXNyYW5kdywgbHNyYW5kYiwgbHNyYW5kdywgbW92ZXJzaWRlcWksIG1vdmVtc2lkZXFpKQoJKG1vdmVyMnNpZGUsIG1vdmVyc2lkZSwgbW92ZW1zaWRlLCBtb3ZlaSwgb3AzLCBhbmR1KTogUmVwbGFjZQoJbGl2ZSBkZWZpbmVfcGVlcGhvbGU6cyB3aXRoIGRlZmluZV9wZWVwaG9sZTIgbmVhci1lcXVpdmFsZW50cy4KCURlbGV0ZSB0aGUgcmVzdC4KCSgiKm1vdl9zaWRlc2lzZl9iaWFwIik6IFJlbmFtZSBmcm9tICIqbW92X3NpZGVzaV9iaWFwIi4gIE1hdGNoIGFsbAoJd29yZC1zaXplIG1vZGVzLgoJKCIqbW92X3NpZGVzaXNmIiwgIiptb3Zfc2lkZXNpc2ZfYmlhcF9tZW0iLCAiKm1vdl9zaWRlc2lzZl9tZW0iKToKCVNpbWlsYXIgZm9yICIqbW92X3NpZGVzaSIsICIqbW92X3NpZGVzaV9iaWFwX21lbSIgYW5kCgkiKm1vdl9zaWRlc2lfbWVtIiByZXNwZWN0aXZlbHkuCgoyMDA0LTA3LTIyICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogdHJlZS1jZmcuYyAoZ2ltcGxpZnlfdmFsKTogTW92ZSBmcm9tIHRyZWUtY29tcGxleC5jLgoJKGdpbXBsaWZ5X2J1aWxkMSk6IE1vdmUgZnJvbSB0cmVlLWNvbXBsZXguYyBkb191bm9wLgoJKGdpbXBsaWZ5X2J1aWxkMik6IE1vdmUgZnJvbSB0cmVlLWNvbXBsZXguYyBkb19iaW5vcC4KCShnaW1wbGlmeV9idWlsZDMpOiBOZXcuCgkqIHRyZWUtY29tcGxleC5jIChnaW1wbGlmeV92YWwsIGRvX3Vub3AsIGRvX2Jpbm9wKTogUmVtb3ZlLgoJQWRqdXN0IHRocm91Z2hvdXQgdG8gY2FsbCB0aGUgZnVuY3Rpb25zIGFib3ZlLgoJKiB0cmVlLWZsb3cuaDogRGVjbGFyZSB0aGUgZnVuY3Rpb25zIGFib3ZlLgoJKiB0cmVlLW5lc3RlZC5jIChnaW1wbGlmeV92YWwpOiBSZW5hbWUgdG8uLi4KCSh0c2lfZ2ltcGxpZnlfdmFsKTogLi4uIHRoaXMuCgoJKiBNYWtlZmlsZS5pbiAodHJlZV9jb21wbGV4Lm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKHN0b3ItbGF5b3V0Lm8pOiBEZXBlbmQgb24gcmVncy5oLgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfdmVjdG9yX3NpemVfYXR0cmlidXRlKTogVXBkYXRlIGZvcgoJdmVjdG9yIHR5cGVzIHdpdGhvdXQgY29ycmVzcG9uZGluZyB2ZWN0b3IgbW9kZXMuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBUcmVhdCBWRUNUT1JfQ1NUJ3MgbGlrZSBDT05TVFJVQ1RPUlMgaWYKCWEgY29ycmVzcG9uZGluZyB2ZWN0b3IgbW9kZSBpcyBub3QgYXZhaWxhYmxlLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBQcmludCBudW5pdHMgZm9yIHZlY3RvciB0eXBlcwoJKiByZWdjbGFzcy5jIChoYXZlX3JlZ3Nfb2ZfbW9kZSk6IE5ldy4KCShpbml0X3JlZ19zZXRzXzEpOiBJbml0aWFsaXplIGl0IGFuZCB1c2UgaXQgaW5zdGVhZAoJb2YgYWxsb2NhdGFibGVfcmVnc19vZl9tb2RlLgoJKiByZWdzLmggKGhhdmVfcmVnc19vZl9tb2RlKTogRGVjbGFyZSBpdC4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUpOiBQaWNrIGEgbW9kZSBmb3IgdmVjdG9yIHR5cGVzLgoJKiB0cmVlLWNvbXBsZXguYyAoYnVpbGRfd29yZF9tb2RlX3ZlY3Rvcl90eXBlLCB0cmVlX3ZlY19leHRyYWN0LAoJYnVpbGRfcmVwbGljYXRlZF9jb25zdCwgZG9fdW5vcCwgZG9fYmlub3AsIGRvX3BsdXNfbWludXMsCglkb19uZWdhdGUsIGV4cGFuZF92ZWN0b3JfcGllY2V3aXNlLCBleHBhbmRfdmVjdG9yX3BhcmFsbGVsLAoJZXhwYW5kX3ZlY3Rvcl9hZGRpdGlvbiwgZXhwYW5kX3ZlY3Rvcl9vcGVyYXRpb25zXzEsCglleHBhbmRfdmVjdG9yX29wZXJhdGlvbnMsIHRyZWVfbG93ZXJfb3BlcmF0aW9ucywKCXBhc3NfbG93ZXJfdmVjdG9yX3NzYSwgcGFzc19wcmVfZXhwYW5kKTogTmV3LgoJKGV4cGFuZF9jb21wbGV4X29wZXJhdGlvbnMsIHBhc3NfbG93ZXJfY29tcGxleCk6IFJlbW92ZS4KCSogdHJlZS1vcHRpbWl6ZS5jIChpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkanVzdAoJcGFzcyBvcmRlcmluZyBmb3IgY2hhbmdlcyBpbiB0cmVlLWNvbXBsZXguYy4KCSogdHJlZS1wYXNzLmg6IERlY2xhcmUgbmV3IHBhc3Nlcy4KCSogdHJlZS5jIChmaW5pc2hfdmVjdG9yX3R5cGUpOiBSZW1vdmUuCgkobWFrZV92ZWN0b3JfdHlwZSk6IE5ldy4KCShidWlsZF92ZWN0b3JfdHlwZV9mb3JfbW9kZSwgYnVpbGRfdmVjdG9yX3R5cGUpOiBSZXdyaXR0ZW4uCgkqIHRyZWUuZGVmIChWRUNUT1JfVFlQRSk6IERvY3VtZW50IHdoZXJlIHRoZSBudW1iZXIgb2YKCXN1YnBhcnRzIGlzIHN0b3JlZC4KCSogdHJlZS5oIChUWVBFX1ZFQ1RPUl9TVUJQQVJUUyk6IFVzZSBUWVBFX1BSRUNJU0lPTiBmaWVsZC4KCShtYWtlX3ZlY3Rvcik6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCjIwMDQtMDctMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnaW1wbGUtbG93LmMgKGV4cGFuZF92YXJfcCk6IERvbid0IGxvb2sgYXQgVFJFRV9BRERSRVNTQUJMRSwKCVRSRUVfVEhJU19WT0xBVElMRSwgbWF5X2FsaWFzZXMsIG9yIG9wdGltaXphdGlvbiBsZXZlbC4KCShyZW1vdmVfdXNlbGVzc192YXJzKTogRHVtcCBkZWJ1Z2dpbmcgaW5mby4KCShleHBhbmRfdXNlZF92YXJzKTogTW92ZSAuLi4KCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF91c2VkX3ZhcnMpOiAuLi4gaGVyZS4gIE1ha2Ugc3RhdGljLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKHNldF9pc191c2VkKTogTmV3LgoJKHNldF9kZWZhdWx0X2RlZik6IFVzZSBnZXRfdmFyX2Fubi4KCSogdHJlZS1mbG93Lmg6IFVwZGF0ZSBkZWNscy4KCSogdHJlZS1zc2EtbGl2ZS5jIChtYXJrX2FsbF92YXJzX3VzZWRfMSwgbWFya19hbGxfdmFyc191c2VkKTogTmV3LgoJKGNyZWF0ZV9zc2FfdmFyX21hcCk6IFVzZSBpdC4KCSogdHJlZS1zc2EuYyAoc2V0X2lzX3VzZWQpOiBSZW1vdmUuCgoyMDA0LTA3LTIyICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGdkYmluaXQuaW46IFNldCBhIGJyZWFrcG9pbnQgb24gaW50ZXJuYWxfZXJyb3IuCgoyMDA0LTA3LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfdGFpbGNhbGwpOiBGaXggY2FzZSB3aGVyZSB3ZSBuZWVkCgl0byBjcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2suCgoyMDA0LTA3LTIyICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzE1MDUyCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IE9ubHkgcGVkd2FybiBmb3IgcXVhbGlmaWVkIHZvaWQKCXJldHVybiB0eXBlIG9uIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgTW92ZSBvdGhlciB3YXJuaW5ncyBmb3IKCXF1YWxpZmllZCByZXR1cm4gdHlwZSB0byAtV3JldHVybi10eXBlLiAgRG8gbm90IGNvbmRpdGlvbiBhbnkgc3VjaAoJd2FybmluZ3Mgb24gLXBlZGFudGljLiAgVXBkYXRlIGNvbW1lbnRzLgoJKHN0YXJ0X2Z1bmN0aW9uKTogT25seSBjb3B5IGZ1bmN0aW9uIHR5cGUgZnJvbSBwcmV2aW91cyBwcm90b3R5cGUKCWRlY2xhcmF0aW9uIGlmIHJldHVybiB0eXBlcyBhcmUgY29tcGF0aWJsZS4KCSogYy10eXBlY2suYyAoZnVuY3Rpb25fdHlwZXNfY29tcGF0aWJsZV9wKTogRG9uJ3QgY29uZGl0aW9uCgl3YXJuaW5nIGZvciBpbmNvbXBhdGliaWxpdHkgb2Ygdm9sYXRpbGUgcXVhbGlmaWVycyBvbiB0aGUgcmV0dXJuCgl0eXBlIG9uIC1wZWRhbnRpYy4gIFVwZGF0ZSBjb21tZW50LgoJKiBkb2MvaW52b2tlLnRleGkgKC1XcmV0dXJuLXR5cGUsIC1XZXh0cmEpOiBVcGRhdGUuCgoyMDA0LTA3LTIyICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtdHlwZWNrLmMgKHNldF9pbml0X2luZGV4KTogUmVxdWlyZSBkZXNpZ25hdG9yIHRvIGJlIG9mIGludGVnZXIKCXR5cGUuCgoyMDA0LTA3LTIyICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzExMjUwCgkqIGMtcGFyc2UuaW4gKGluaXQpOiBDaGFuZ2UgdG8gZXhwcnR5cGUuCgkocHJpbWFyeSk6IFNldCBvcmlnaW5hbF9jb2RlIGZvciBTVFJJTkcgdG8gU1RSSU5HX0NTVC4KCUNhbGwgbWF5YmVfd2Fybl9zdHJpbmdfaW5pdCBmb3IgY29tcG91bmQgbGl0ZXJhbHMuCgkoaW5pdGRjbCwgbm90eXBlX2luaXRkY2wpOiBDYWxsIG1heWJlX3dhcm5fc3RyaW5nX2luaXQuCgkoaW5pdHZhbCk6IFVwZGF0ZS4KCSogYy10cmVlLmggKG1heWJlX3dhcm5fc3RyaW5nX2luaXQpOiBOZXcuCgkocG9wX2luaXRfbGV2ZWwsIHByb2Nlc3NfaW5pdF9lbGVtZW50KTogVXNlIHN0cnVjdCBjX2V4cHIuCgkoc3RydWN0IGNfZXhwcik6IFVwZGF0ZSBjb21tZW50LgoJKiBjLXR5cGVjay5jIChtYXliZV93YXJuX3N0cmluZ19pbml0KTogTmV3IGZ1bmN0aW9uLgoJKGRpZ2VzdF9pbml0KTogQ2FsbCBpdC4gIEFkZGl0aW9uYWwgcGFyYW1ldGVyIHN0cmljdF9zdHJpbmcuICBBbGwKCWNhbGxlcnMgY2hhbmdlZC4KCShvdXRwdXRfaW5pdF9lbGVtZW50KTogTGlrZXdpc2UuCgkoc3RydWN0IGNvbnN0cnVjdG9yX3N0YWNrKTogVXNlIHN0cnVjdCBjX2V4cHIgZm9yCglyZXBsYWNlbWVudF92YWx1ZS4KCShyZWFsbHlfc3RhcnRfaW5jcmVtZW50YWxfaW5pdCwgcHVzaF9pbml0X2xldmVsKTogVXBkYXRlLgoJKHBvcF9pbml0X2xldmVsKTogVXBkYXRlLiAgUmV0dXJuIHN0cnVjdCBjX2V4cHIuCgkocHJvY2Vzc19pbml0X2xldmVsKTogVXBkYXRlLiAgVGFrZSBzdHJ1Y3QgY19leHByIGFyZ3VtZW50LgoKMjAwNC0wNy0yMSAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AbnV0cy5kYXZlbWxvZnQubmV0PgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX3J0eF9jb3N0cyk6IEZpeCB0eXBvIGluIHByZXZpb3VzCgljb21taXQuCgoyMDA0LTA3LTIxICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3NldGptcF9yZWNlaXZlcik6IEZpeCBjb21tZW50IGZvciBjb2RlCglyZW1vdmFsLgoJKiBjLWRlY2wuYyAocG9wX3Njb3BlKTogRGl0dG8uCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogUmVtb3ZlIGNhbGwgdG8gY3VycmVudF9uZXN0aW5nX2xldmVsLAoJdXBkYXRlIGNvbW1lbnQgYWNjb3JkaW5nbHkuIFJlbW92ZSBjYWxscyB0byBleHBhbmRfc3RhcnRfdGFyZ2V0X3RlbXBzCglhbmQgZXhwYW5kX2VuZF90YXJnZXRfdGVtcHMuCgkqIGNmZ2V4cGFuZC5jIChjb25zdHJ1Y3RfaW5pdF9ibG9jayk6IFJlbW92ZSBjYWxsIHRvCglleHBhbmRfc3RhcnRfYmluZGluZ3NfYW5kX2Jsb2NrLgoJKGNvbnN0cnVjdF9leGl0X2Jsb2NrKTogUmVtb3ZlIGNhbGwgdG8gZXhwYW5kX2VuZF9iaW5kaW5ncy4KCSogZXhwci5jIChzYWZlX2Zyb21fcCk6IFJlbW92ZSBCSU5EX0VYUFIgaGFuZGxpbmcuCgkoZXhwYW5kX2V4cHJfcmVhbF8xKTogRGl0dG8uIEZpeCBmb3JtYXR0aW5nLgoJKGV4cGFuZF92YXJzKTogRGVsZXRlLgoJKiBzdG10LmMgKFBPUFNUQUNLKTogUmVtb3ZlIGJsb2NrX3N0YWNrLgoJKHN0bXRfc3RhdHVzKTogUmVtb3ZlIHhfYmxvY2tfc3RhY2suCgkoYmxvY2tfc3RhY2spOiBEZWxldGUuCgkoZXhwYW5kX3N0YXJ0X2JpbmRpbmdzX2FuZF9ibG9jayk6IERpdHRvLgoJKGV4cGFuZF9zdGFydF90YXJnZXRfdGVtcHMpOiBEaXR0by4KCShleHBhbmRfZW5kX3RhcmdldF90ZW1wcyk6IERpdHRvLgoJKGN1cnJlbnRfbmVzdGluZ19sZXZlbCk6IERpdHRvLgoJKHdhcm5fYWJvdXRfdW51c2VkX3ZhcmlhYmxlcyk6IERpdHRvLgoJKGV4cGFuZF9lbmRfYmluZGluZ3MpOiBEaXR0by4KCSogdHJlZS5oOiBSZW1vdmUgZGVjbGFyYXRpb25zIGZvciBhYm92ZS4KCjIwMDQtMDctMjEgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHJ0bC5oIChpbnNuX25vdGUpOiBSZW1vdmUgTk9URV9JTlNOX1BSRURJQ1RJT04uCgkqIHJ0bC5jIChub3RlX2luc25fbmFtZSk6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogRG9uJ3QgcHJpbnQgaXQuCgkqIGNmZ3J0bC5oIChjYW5fZGVsZXRlX25vdGVfcCk6IERvbid0IGhhbmRsZSBpdC4KCShydGxfZGVsZXRlX2Jsb2NrKTogTGlrZXdpc2UuCgkqIHBhc3Nlcy5jIChyZXN0X29mX2hhbmRsZV9ndWVzc19icmFuY2hfcHJvYik6IFJlbW92ZS4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogRG9uJ3QgY2FsbCBpdC4KCSogcHJlZGljdC5jIChwcm9jZXNzX25vdGVfcHJlZGljdGlvbnMsIHByb2Nlc3Nfbm90ZV9wcmVkaWN0aW9uLAoJbm90ZV9wcmVkaWN0aW9uX3RvX2JyX3Byb2IpOiBSZW1vdmUuCgkqIGJhc2ljLWJsb2NrLmMgKG5vdGVfcHJlZGljdGlvbl90b19icl9wcm9iKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogc3RtdC5jIChyZXR1cm5fcHJlZGljdGlvbik6IFJlbW92ZS4KCShleHBhbmRfdmFsdWVfcmV0dXJuKTogRG9uJ3QgY2FsbCBpdC4gIERvbid0IGFkZCBwcmVkaWN0aW9uCglub3RlcyBmb3IgcmV0dXJuIHN0YXRlbWVudHMuCgoyMDA0LTA3LTIxICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiB2YXItdHJhY2tpbmcuYyAodnRfZmluZF9sb2NhdGlvbnMpOiBTZXQgdGhlIGluX3BlbmRpbmcgYml0bWFwIGF0CglvbmNlLgoKMjAwNC0wNy0yMSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGMtY29tbW9uLmMgKHZlY3Rvcl90eXBlc19jb252ZXJ0aWJsZV9wKTogVXNlIHZlY3RvciB0eXBlcycKCVRZUEVfU0laRSBhbmQgVFJFRV9UWVBFIGluc3RlYWQgb2YgdGhlaXIgbW9kZS4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX2ludGVnZXIpOiBMaWtld2lzZS4KCShjb252ZXJ0X3RvX3ZlY3Rvcik6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfY29udmVydCk6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0YW50KTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3IpOiBTcGxpdCBBUlJBWV9UWVBFIGFuZCBWRUNUT1JfVFlQRS4KCUFsbG93IGEgVkVDVE9SX1RZUEUgaW5pdGlhbGl6ZXIgdG8gYmUgbWFkZSBvZiBzZXZlcmFsIHZlY3RvcnMuCglGb3IgQVJSQVlfVFlQRXMgYW5kIFZFQ1RPUl9UWVBFUywgc2ltcGxpZnkgYSBiaXQgdGhlIGhhbmRsaW5nCglvZiBjbGVhcmVkIGFuZCBuZWVkX3RvX2NsZWFyLCBhbmQgdXNlIGZvbGRfY29udmVydC4KCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogRG8gbm90IHVzZSBSRElWX0VYUFIgZm9yCglpbnRlZ2VyIHZlY3RvcnMuCgoyMDA0LTA3LTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfY29uZF9leHByLCBleHBhbmRfZ2ltcGxlX3RhaWxjYWxsKTogU3BsaXQsCgkoZXhwYW5kX2dpbXBsZV9iYXNpY19ibG9jayk6IG91dCBmcm9tIGhlcmUuICBSZW5hbWVkIGZyb20gZXhwYW5kX2Jsb2NrLgoKMjAwNC0wNy0yMCAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AbnV0cy5kYXZlbWxvZnQubmV0PgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX3J0eF9jb3N0cyBjYXNlIE1VTFQpOiBFbWl0Cgllbm9ybW91cyBjb3N0IGlmIG5vdCBUQVJHRVRfSEFSRF9NVUwuCgoyMDA0LTA3LTIwICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJUFIgdGFyZ2V0LzE2NTU3CgkqIGNvbmZpZy9pMzg2L2Rhcndpbi5oIChDQzFfU1BFQyk6IE1vdmUgdGhlIC1nIFNQRUNzIGZyb20gLi4uCgkoQVNNX1NQRUMpOiBoZXJlLgoKMjAwNC0wNy0yMSAgUGF1bCBicm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKHRodW1iX2V4cGFuZF9wcm9sb2d1ZSk6IFJlbW92ZSBib2d1cyBHRU5fSU5ULgoKMjAwNC0wNy0yMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGZvbGQtY29uc3QuYyAob3BlcmFuZF9lcXVhbF9wKTogVGVtcG9yYXJpbHkgc3VwcG9ydCBOVUxMIGFyZ3MuCgkob3BlcmFuZF9lcXVhbF9wLCBjYXNlIEFSUkFZX1JFRik6IENvbXBhcmUgYXJncyAyIGFuZCAzLgoJKG9wZXJhbmRfZXF1YWxfcCwgY2FzZSBDT01QT05FTlRfUkVGKTogTGlrZXdpc2UsIGZvciBhcmcgMi4KCjIwMDQtMDctMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBydGwuaCAocGx1c19jb25zdGFudCk6IERlbGV0ZS4KCShwbHVzX2NvbnN0YW50X3dpZGUpOiBSZW5hbWUgdG8gcGx1c19jb25zdGFudC4KCShwbHVzX2NvbnN0YW50X2Zvcl9vdXRwdXRfd2lkZSk6IERlbGV0ZSB2ZXN0aWdpYWwgcHJvdG90eXBlLgoJKEdFTl9JTlQpOiBSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdC4KCSogdHJlZS5oIChidWlsZF9pbnRfMiwgc2l6ZV9pbnRfdHlwZSk6IERlbGV0ZS4KCShidWlsZF9pbnRfMl93aWRlKTogUmVuYW1lIHRvIGJ1aWxkX2ludF8yLgoJKHNpemVfaW50X3dpZGUpOiBSZW5hbWUgdG8gc2l6ZV9pbnRfa2luZC4KCShzaXplX2ludF90eXBlX3dpZGUpOiBSZW5hbWUgdG8gc2l6ZV9pbnRfdHlwZS4KCShzaXplX2ludCwgc3NpemVfaW50LCBiaXRzaXplX2ludCwgc2JpdHNpemVfaW50KTogVXNlIHNpemVfaW50X2tpbmQuCglSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdC4KCSogdHJlZS5jIChidWlsZF9pbnRfMl93aWRlKTogUmVuYW1lIGJ1aWxkX2ludF8yOyB1cGRhdGUgY29tbWVudC4KCSogZXhwbG93LmMgKHBsdXNfY29uc3RhbnRfd2lkZSk6IFJlbmFtZSBwbHVzX2NvbnN0YW50OyB1cGRhdGUgY29tbWVudC4KCSogZm9sZC1jb25zdC5jIChzaXplX2ludF93aWRlKTogUmVuYW1lIHNpemVfaW50X2tpbmQuIFVzZSBzaXplX2ludF90eXBlLgoJKHNpemVfaW50X3R5cGVfd2lkZSk6IFJlbmFtZSBzaXplX2ludF90eXBlLgoJKGludF9jb25zdF9iaW5vcCk6IFVzZSBzaXplX2ludF90eXBlLgoJKiBjLWxleC5jIChpbnRlcnByZXRfaW50ZWdlcik6IFVzZSBidWlsZF9pbnRfMi4KCSogZmluYWwuYyAoc3BsaXRfZG91YmxlKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGNhc3RzLgoJKiB0cmVlLXNzYS1jY3AuYyAobWF5YmVfZm9sZF9vZmZzZXRfdG9fYXJyYXlfcmVmKTogVXNlIGJ1aWxkX2ludF8yLgoKMjAwNC0wNy0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGlzX2dpbXBsZV90bXBfdmFyKTogTW92ZSB0byB0cmVlLWdpbXBsZS5jLgoJKGdpbXBsaWZ5X2NvbXBvdW5kX2x2YWwpOiBVc2UgaXNfZ2ltcGxlX3RtcF9yZWcuCgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV90bXBfdmFyKTogTW92ZSBmcm9tIGdpbXBsaWZ5LmMuCgkoaXNfZ2ltcGxlX3RtcF9yZWcpOiBOZXcuCgkqIHRyZWUtZ2ltcGxlLmggKGlzX2dpbXBsZV90bXBfcmVnKTogRGVjbGFyZS4KCjIwMDQtMDctMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IER1bXAKCUNBTExfRVhQUl9IQVNfUkVUVVJOX1NMT1RfQUREUi4KCjIwMDQtMDctMjAgIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQHJlZGhhdC5jb20+CgoJKiB0cmVlLW11ZGZsYXAuYyAobWZfc2V0X29wdGlvbnNfZm5kZWNsKTogTmV3IHRyZWUuCgkobXVkZmxhcF9pbml0KTogU2V0IGl0LgoJKG11ZGZsYXBfcmVnaXN0ZXJfY2FsbCk6IFJlbW92ZSBfX21mX2luaXQgY2FsbC4KCShtdWRmbGFwX2ZpbmlzaF9maWxlKTogRW1pdCBjYWxsIHRvIF9fbWZfaW5pdCBoZXJlLiAgRW1pdCBhIGNhbGwgdG8KCXRvIHBhc3MgIi1pZ25vcmUtcmVhZHMiIG9wdGlvbiB0byBsaWJtdWRmbGFwIGlmIG5lZWRlZC4KCjIwMDQtMDctMjAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2YS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgYysrLzE0NjA3CgkqIGNvbmZpZy9wYS9wYS1ocHV4MTAuaCAoU1VQUE9SVFNfT05FX09OTFkpOiBEZWZpbmUuCgkoTUFLRV9ERUNMX09ORV9PTkxZKTogVW5kZWZpbmUuCgkqIHBhLXByb3Rvcy5oIChzb21fdGV4dF9zZWN0aW9uX2FzbV9vcCwgb25lX29ubHlfcmVhZG9ubHlfZGF0YV9zZWN0aW9uLAoJcmVhZG9ubHlfZGF0YSwgb25lX29ubHlfZGF0YV9zZWN0aW9uLCBmb3JnZXRfc2VjdGlvbik6IE5ldyBwcm90b3R5cGVzLgoJKiBwYS5jIChwYV9pbml0X21hY2hpbmVfc3RhdHVzLCBzb21fdGV4dF9zZWN0aW9uX2FzbV9vcCk6IE5ldwoJZnVuY3Rpb25zLgoJKHBhX3NlbGVjdF9zZWN0aW9uKTogQWRkIG9uZS1vbmx5IChDT01EQVQpIHN1cHBvcnQuCgkqIHBhLmggKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogRGVmaW5lLgoJKiBzb20uaCAoQVNNX09VVFBVVF9GVU5DVElPTl9QUkVGSVgpOiBEZWxldGUuCgkoVEVYVF9TRUNUSU9OX0FTTV9PUCk6IENhbGwgc29tX3RleHRfc2VjdGlvbl9hc21fb3AuCgkoREVGQVVMVF9URVhUX1NFQ1RJT05fQVNNX09QLCBORVdfVEVYVF9TRUNUSU9OX0FTTV9PUCwKCU9ORV9PTkxZX1RFWFRfU0VDVElPTl9BU01fT1AsIE9ORV9PTkxZX1JFQURPTkxZX0RBVEFfU0VDVElPTl9BU01fT1AsCglPTkVfT05MWV9EQVRBX1NFQ1RJT05fQVNNX09QKTogTmV3IGRlZmluZXMuCgkoRVhUUkFfU0VDVElPTlMpOiBBZGQgaW5fb25lX29ubHlfcmVhZG9ubHlfZGF0YSBhbmQgaW5fb25lX29ubHlfZGF0YS4KCShFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyk6IFJld29yayB0byB1c2UgaW5kaXZpZHVhbCBmdW5jdGlvbiBtYWNyb3MuCgkoUkVBRE9OTFlfREFUQV9GVU5DVElPTiwgT05FX09OTFlfUkVBRE9OTFlfREFUQV9TRUNUSU9OX0ZVTkNUSU9OLAoJT05FX09OTFlfREFUQV9TRUNUSU9OX0ZVTkNUSU9OLCBGT1JHRVRfU0VDVElPTl9GVU5DVElPTik6IE5ldyBkZWZpbmVzCglmb3IgRVhUUkFfU0VDVElPTl9GVU5DVElPTlMuCgkqIGRvYy9pbnN0YWxsLnRleGk6IFVwZGF0ZSBiaW51dGlscyByZXF1aXJlbWVudHMuCgoyMDA0LTA3LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmVjLmggKFZFQ19UX2xlbmd0aCwgVkVDX1RfaW5kZXgsIFZFQ19UX2l0ZXJhdGUsIFZFQ19UX3RydW5jYXRlLAoJVkVDX1RfcmVwbGFjZSwgVkVDX1RfcXVpY2tfaW5zZXJ0LCBWRUNfVF9zYWZlX2luc2VydCwKCVZFQ19UX29yZGVyZWRfcmVtb3ZlLCBWRUNfVF91bm9yZGVyZWRfcmVtb3ZlKTogVXNlIHVuc2lnbmVkLCBub3QKCXNpemVfdC4KCShzdHJ1Y3QgVkVDKTogVXNlIHVuc2lnbmVkIGZvciBudW0gYW5kIGFsbG9jLgoJKiB2ZWMuYyAoc3RydWN0IHZlY19wcmVmaXgpOiBMaWtld2lzZS4KCSh2ZWNfb19yZXNlcnZlKTogQWRqdXN0LgoKCSogZGJ4b3V0LmMgKGRieG91dF90eXBlKTogRml4IHByaW50ZiBmb3JtYXQuCgoJKiB0cmVlLmggKGJpbmZvX21lbWJlcik6IFJlbW92ZS4KCSogdHJlZS5jIChiaW5mb19tZW1iZXIpOiBSZW1vdmUuCgoyMDA0LTA3LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oOiBJbmNsdWRlIHZlYy5oCgkoREVGX1ZFQ19QKHRyZWUpKTogTmV3IHR5cGUuCgkoQklORk9fQkFTRV9CSU5GT1MsIEJJTkZPX05fQkFTRV9CSU5GT1MsIEJJTkZPX0JBU0VfQklORk8pOiBBZGp1c3QuCgkoQklORk9fQkFTRV9BUFBFTkQsIEJJTkZPX0JBU0VfSVRFUkFURSk6IE5ldy4KCShCSU5GT19MQU5HX1NMT1QpOiBSZW1vdmUuCgkoQklORk9fU1VCVlRUX0lOREVYLCBCSU5GT19WUFRSX0lOREVYLCBCSU5GT19QUklNQVJZX0JBU0VfT0YpOiBOZXcuCgkoc3RydWN0IHRyZWVfYmluZm8pOiBUdXJuIGJhc2VfYmluZm9zIGludG8gYSB0cmFpbGluZwoJVkVDKHRyZWUpLiBBZGQgdnR0X3N1YnZ0dCwgdnR0X3ZwdHIsIHByaW1hcnkgZmllbGRzLgoJKGJpbmZvX2xhbmdfc2xvdHMpOiBSZW1vdmUuCgkqIHRyZWUuYyAoYmluZm9fbGFuZ19zbG90cyk6IFJlbW92ZS4KCShtYWtlX3RyZWVfYmluZm9fc3RhdCk6IFRha2UgYSBiYXNlIGJpbmZvIGNvdW50LCBub3QgYQoJbGFuZyBzbG90IGNvdW50LiAgQWRqdXN0LgoJKiBNYWtlZmlsZS5pbiAoVFJFRV9IKTogQWRkIHZlYy5oCgkqIGFsaWFzLmMgKHJlY29yZF9jb21wb25lbnRfYWxpYXNlcyk6IEFkanVzdCBCSU5GTyBhY2Nlc3MuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYyAoZ2VuX21lbWJlcl9kaWUpOiBMaWtld2lzZS4KCSogc2Rib3V0LmMgKHNkYm91dF9vbmVfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLWR1bXAuYyAoZGVxdWVfYW5kX2R1bXApOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChjbGFzc2lmeV9hcmd1bWVudCwKCWNvbnRhaW5zXzEyOGJpdF9hbGlnbmVkX3ZlY3Rvcl9wKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zeW1iaWFuLmMgKHN5bWJpYW5fZXhwb3J0X3Z0YWJsZV9hbmRfcnR0aV9wKTogTGlrZXdpc2UuCgkqIGRvYy9jLXRyZWUudGV4aSAoQ2xhc3Nlcyk6IFVwZGF0ZSBCSU5GTyBkb2N1bWVudGF0aW9uLgoKMjAwNC0wNy0yMCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogYy1jb21tb24uaCAoY2hlY2tfY2FzZV92YWx1ZSk6IFJlbW92ZSBwcm90b3R5cGUuCgkoY19hZGRfY2FzZV9sYWJlbCk6IEFkanVzdCBwcm90b3R5cGUuCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Nhc2VfdmFsdWUpOiBNYWtlIHN0YXRpYy4KCShjaGVja19jYXNlX2JvdW5kcyk6IE5ldyBmdW5jdGlvbi4KCShjX2FkZF9jYXNlX2xhYmVsKTogVXNlIGl0LiAgVGFrZSBuZXcgYXJndW1lbnQgb3JpZ190eXBlLgoJKiBjLXR5cGVjay5jIChzdHJ1Y3QgY19zd2l0Y2gpOiBOZXcgb3JpZ190eXBlIGZpZWxkLgoJKGNfc3RhcnRfY2FzZSk6IFNldCBpdC4KCShkb19jYXNlKTogUGFzcyBpdCB0byBjX2FkZF9jYXNlX2xhYmVsLgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSk6IERvbid0IHdhcm4gZm9yIG91dC1vZi1ib3VuZHMKCWNhc2VzIGZyb20gaGVyZS4gIEFkZCB0aGUgbGFiZWxzIGluIHJldmVyc2Ugb3JkZXIuCgkqIHN0bXQuYyAoc3RydWN0IGNhc2Vfbm9kZSk6IEFkanVzdCBjb21tZW50LiAgUmVtb3ZlIGJhbGFuY2UgZmllbGQuCgkoYWRkX2Nhc2Vfbm9kZSk6IFJldHVybiBub3RoaW5nLCBkb24ndCBjaGVjayBmb3IgZHVwbGljYXRlIGNhc2VzLgoJSW5zZXJ0IG5ldyBjYXNlIG5vZGVzIGluIGEgbGlzdCwgbm90IGluIGFuIEFWTCB0cmVlLgoJKGV4cGFuZF9lbmRfY2FzZV90eXBlKTogRG9uJ3QgdHVybiBhIGNhc2UgdHJlZSBpbnRvIGEgY2FzZSBsaXN0LgoJKGNhc2VfdHJlZTJsaXN0KTogUmVtb3ZlLgoJKiB0cmVlLmggKGFkZF9jYXNlX25vZGUpOiBBZGp1c3QgcHJvdG90eXBlLgoKMjAwNC0wNy0xOSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGdlbmF0dHIuYyAoc3RydWN0IHJhbmdlLCBzdHJ1Y3QgZnVuY3Rpb25fdW5pdCwKCXdyaXRlX3VuaXRzLCBleHRlbmRfcmFuZ2UsIGluaXRfcmFuZ2UpOiBSZW1vdmUgdGhlbS4KCShtYWluKTogUmVtb3ZlIGNvZGUgZGVhbGluZyB3aXRoIERFRklORV9GVU5DVElPTl9VTklULgoJT3V0cHV0ICIjZGVmaW5lIElOU05fU0NIRURVTElORyIgaGVyZS4KCSogZ2VuYXR0cnRhYi5jIChzdHJ1Y3QgcmFuZ2UsIHN0cnVjdCBmdW5jdGlvbl91bml0X29wLAoJc3RydWN0IGZ1bmN0aW9uX3VuaXQsIHN0cnVjdCBkaW1lbnNpb24sIGVudW0gb3BlcmF0b3IsCglvcGVyYXRlX2V4cCwgZXhwYW5kX3VuaXRzLCBzaW1wbGlmeV9rbm93aW5nLAoJZW5jb2RlX3VuaXRzX21hc2ssIHNpbXBsaWZ5X2J5X2V4cGxvZGluZywKCWZpbmRfYW5kX21hcmtfdXNlZF9hdHRyaWJ1dGVzLCB1bm1hcmtfdXNlZF9hdHRyaWJ1dGVzLAoJYWRkX3ZhbHVlc190b19jb3ZlciwgaW5jcmVtZW50X2N1cnJlbnRfdmFsdWUsCgl0ZXN0X2Zvcl9jdXJyZW50X3ZhbHVlLCBzaW1wbGlmeV93aXRoX2N1cnJlbnRfdmFsdWUsCglzaW1wbGlmeV93aXRoX2N1cnJlbnRfdmFsdWVfYXV4LCBnZW5fdW5pdCwKCXdyaXRlX3VuaXRfbmFtZSwgd3JpdGVfZnVuY3Rpb25fdW5pdF9pbmZvLAoJd3JpdGVfY29tcGxleF9mdW5jdGlvbiwgd3JpdGVfdG9wbGV2ZWxfZXhwciwKCWZpbmRfc2luZ2xlX3ZhbHVlLCBleHRlbmRfcmFuZ2UpOiBSZW1vdmUuCgkod3JpdGVfYXR0cl9nZXQpOiBEbyBub3QgaGFuZGxlIGNvbW1vbl9hdi0+dmFsdWUKCWJlaW5nIGFuIEZGUy4KCShzdHJ1Y3QgYXR0cl9kZXNjKTogUmVtb3ZlIGZ1bmNfdW5pdHNfcCBhbmQgYmxvY2thZ2VfcC4KCSh3cml0ZV9hdHRyX3ZhbHVlcSk6IERvIG5vdCBoYW5kbGUgdGhlbS4KCShmaW5kX2F0dHIpOiBEbyBub3QgY2xlYXIgdGhlbS4KCShtYWtlX2ludGVybmFsX2F0dHIpOiBEbyBub3QgaW5pdGlhbGl6ZSB0aGVtLgoJKG1haW4pOiBSZW1vdmUgY29kZSBkZWFsaW5nIHdpdGggREVGSU5FX0ZVTkNUSU9OX1VOSVQuCgkqIHNjaGVkLXZpcy5jIChpbml0X3RhcmdldF91bml0cywgaW5zbl9wcmludF91bml0cywKCWluaXRfYmxvY2tfdmlzdWFsaXphdGlvbiwgcHJpbnRfYmxvY2tfdmlzdWFsaXphdGlvbiwKCXZpc3VhbGl6ZV9zY2hlZHVsZWRfaW5zbnMsIHZpc3VhbGl6ZV9ub191bml0LAoJdmlzdWFsaXplX3N0YWxsX2N5Y2xlcywgdmlzdWFsaXplX2FsbG9jLAoJdmlzdWFsaXplX2ZyZWUsIHRhcmdldF91bml0cywgZ2V0X3Zpc3VhbF90YmxfbGVuZ3RoLAoJTUFYX1ZJU1VBTF9MSU5FUywgSU5TTl9MRU4sIG5fdmlzdWFsX2xpbmVzLAoJdmlzdWFsX3RibF9saW5lX2xlbmd0aCwgdmlzdWFsX3RibCwgbl92aXNfbm9fdW5pdCwKCU1BWF9WSVNVQUxfTk9fVU5JVCwgdmlzX25vX3VuaXQpOiBSZW1vdmUuCgkqIGhhaWZhLXNjaGVkLmMgKGJsb2NrYWdlX3JhbmdlLCBjbGVhcl91bml0cywKCXNjaGVkdWxlX3VuaXQsIGFjdHVhbF9oYXphcmQsIHBvdGVudGlhbF9oYXphcmQsCglpbnNuX3VuaXQsIHVuaXRfbGFzdF9pbnNuLCB1bml0X3RpY2ssCglhY3R1YWxfaGF6YXJkX3RoaXNfaW5zdGFuY2UsIHBvdGVudGlhbF9oYXphcmQsCglzY2hlZHVsZV91bml0LCBtYXhfaW5zbl9xdWV1ZV9pbmRleF92YWx1ZSk6IFJlbW92ZS4KCShNQVhfSU5TTl9RVUVVRV9JTkRFWCk6IFJlbW92ZWQsIHJlbmFtZWQgdGhyb3VnaG91dCB0bwoJbWF4X2luc25fcXVldWVfaW5kZXguCgkqIHJ0bC5kZWYgKERFRklORV9GVU5DVElPTl9VTklUKTogUmVtb3ZlLgoJKiBkb2MvbWQudGV4aSAoUHJvY2Vzc29yIHBpcGVsaW5lIGRlc2NyaXB0aW9uKTogUmVtb3ZlCglyZWZlcmVuY2VzIHRvIG9sZCBwaXBlbGluZSBkZXNjcmlwdGlvbnMuCgkoQXV0b21hdG9uIHBpcGVsaW5lIGRlc2NyaXB0aW9uKTogTWVyZ2Ugd2l0aCB0aGUgYWJvdmUuCgkoT2xkIHBpcGVsaW5lIGRlc2NyaXB0aW9uLCBDb21wYXJpc29uIG9mIHRoZSB0d28gZGVzY3JpcHRpb25zKToKCVJlbW92ZS4KCgkqIGJ0LWxvYWQuYyAobWlncmF0ZV9idHJfZGVmKTogUmVtb3ZlIHJlZmVyZW5jZXMgdG8KCXVzZV9waXBlbGluZV9pbnRlcmZhY2UuCgkqIGhhaWZhLXNjaGVkLmMgKGluc25fY29zdCwgc2NoZWR1bGVfaW5zbiwKCXNjaGVkdWxlX2Jsb2NrLCBhZHZhbmNlX29uZV9jeWNsZSwgc2NoZWRfaW5pdCwKCXF1ZXVlX3RvX3JlYWR5LCBzY2hlZF9maW5pc2gpOiBMaWtld2lzZS4KCSogbW9kdWxvLXNjaGVkLmMgKHNtc19zY2hlZHVsZSwgYWR2YW5jZV9vbmVfY3ljbGUsCglwc19oYXNfY29uZmxpY3RzKTogTGlrZXdpc2UuCgkqIHNjaGVkLXJnbi5jIChpbml0X3JlYWR5KTogTGlrZXdpc2UuCgkoZGVidWdfZGVwZW5kZW5jaWVzKTogTGlrZXdpc2UsIGFuZCByZW1vdmUgYW4gImlmICgxKSIuCgkqIHRhcmdldC5oICh1c2VfZGZhX3BpcGVsaW5lX2ludGVyZmFjZSk6IFJlbW92ZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKFRBUkdFVF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IFJlbW92ZS4KCSogY29uZmlnL2FyYy9hcmMuYyAoVEFSR0VUX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogUmVtb3ZlLgoJKiBjb25maWcvYXJtL2FybS5jIChUQVJHRVRfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBSZW1vdmUuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKFRBUkdFVF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IFJlbW92ZS4KCSogY29uZmlnL2Zydi9mcnYuYyAoVEFSR0VUX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogUmVtb3ZlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKFRBUkdFVF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IFJlbW92ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChUQVJHRVRfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBSZW1vdmUuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmMgKFRBUkdFVF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IFJlbW92ZS4KCSogY29uZmlnL20zMnIvbTMyci5jIChUQVJHRVRfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBSZW1vdmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jIChUQVJHRVRfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBSZW1vdmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoVEFSR0VUX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogUmVtb3ZlLgoJKiBjb25maWcvcGEvcGEuYyAoVEFSR0VUX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogUmVtb3ZlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChUQVJHRVRfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBSZW1vdmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoVEFSR0VUX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogUmVtb3ZlLgoJKiBjb25maWcvc2gvc2guYyAoVEFSR0VUX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoVEFSR0VUX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogUmVtb3ZlLgoJKiBjb25maWcvdjg1MC92ODUwLmMgKFRBUkdFVF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IFJlbW92ZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoVEFSR0VUX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogUmVtb3ZlLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogUmVtb3ZlLgoKMjAwNC0wNy0xOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBydGxhbmFsLmMgKHJlZ19zZXRfcCk6IEFkZCBjaGVjayBmb3IgcmVnc19pbnZhbGlkYXRlZF9ieV9jYWxsLgoKMjAwNC0wNy0xOSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWRvbS5jIChzaW5nbGVfaW5jb21pbmdfZWRnZV9pZ25vcmluZ19sb29wX2VkZ2VzKTogTmV3LgoJKGdldF9lcV9leHByX3ZhbHVlKTogVXNlIGl0LiAgU2ltcGxpZnkgc2xpZ2h0bHkuCgoyMDA0LTA3LTE5ICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQGxpbnV4LW1pcHMub3JnPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAobXVsc2lkaTNfMzJiaXRfcjQwMDApOiBGaXggdGhlIGNsb2JiZXIgbGlzdC4KCSh1bXVsc2lkaTNfMzJiaXRfcjQwMDApOiBMaWtld2lzZS4KCjIwMDQtMDctMTkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2ZWMuaDogUHJvcGFnYXRlIGxvY2F0aW9uIGluZm9ybWF0aW9uIHByb3Blcmx5LgoJKFZFQ19UX2l0ZXJhdGUpOiBBZGQgcmVzdWx0IHBvaW50ZXIgcGFyYW1ldGVyLgoJKFZFQ19UX3NwYWNlKTogTmV3LgoJKFZFQ19UX3Jlc2VydmUpOiBVc2UgaXQuCgoyMDA0LTA3LTE5ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBkZWJpYW4ub3JnPgoKCSogTWFrZWZpbGUuaW4gKGMtZm9ybWF0Lm8pOiBEZXBlbmQgb24gYy1mb3JtYXQuaC4KCSogYy1mb3JtYXQuaDogTmV3IGZpbGUuCgkoc3RydWN0IGZvcm1hdF9jaGFyX2luZm8pOiBBZGQgQ0hBSU4gbWVtYmVyLgoJKiBjLWZvcm1hdC5jOiBNb3ZlIHNvbWUgdHlwZXMgYW5kIGNvbnN0YW50cyB0byBjLWZvcm1hdC5oLgoJKGZvcm1hdF90eXBlX2Vycm9yKTogU2V0IHRvIC0xLgoJKHN0cnVjdCBmdW5jdGlvbl9mb3JtYXRfaW5mbyk6IFVzZSBhbiBpbnQgZm9yIGZvcm1hdF90eXBlLgoJKGRlY29kZV9mb3JtYXRfdHlwZSk6IFJldHVybiBhbiBpbnQuICBSZXR1cm4gZm9ybWF0X3R5cGVfZXJyb3IKCW9uIGVycm9yLgoJKHByaW50X2NoYXJfdGFibGUsIGFzbV9mcHJpbnRmX2NoYXJfdGFibGUsIGdjY19kaWFnX2NoYXJfdGFibGUpCgkoZ2NjX2RpYWdfY2hhcl90YWJsZSwgZ2NjX2NkaWFnX2NoYXJfdGFibGUsIGdjY19jeHhkaWFnX2NoYXJfdGFibGUpCgkoc2Nhbl9jaGFyX3RhYmxlLCB0aW1lX2NoYXJfdGFibGUsIG1vbmV0YXJ5X2NoYXJfdGFibGUpOiBJbml0aWFsaXplCglDSEFJTiB0byBOVUxMLgoJKG5fZm9ybWF0X3R5cGVzKTogTmV3IHZhcmlhYmxlLgoJKGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBIYW5kbGUgQ0hBSU4gaW4gZm9ybWF0X2NoYXJfaW5mby4KCShoYW5kbGVfZm9ybWF0X2F0dHJpYnV0ZSk6IEhhbmRsZSBUQVJHRVRfRk9STUFUX1RZUEVTIGFuZAoJVEFSR0VUX05fRk9STUFUX1RZUEVTLgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotc29sYXJpczIqLCBzcGFyYzY0LSotc29sYXJpczIqKQoJKHNwYXJjLSotc29sYXJpczIqKTogSW5jbHVkZSBjb25maWcvdC1zb2wyIGFuZCBjb25maWcvc29sMi1jLmMuCgkqIGNvbmZpZy9zb2wyLWMuYzogTmV3IGZpbGUuCgkqIGNvbmZpZy90LXNvbDI6IE5ldyBmaWxlLgoJKiBjb25maWcvc29sMi5oIChUQVJHRVRfTl9GT1JNQVRfVFlQRVMsIFRBUkdFVF9GT1JNQVRfVFlQRVMpOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9lbGYuaCwgY29uZmlnL3NwYXJjL3NwNjQtZWxmLmg6IFVuZGVmaW5lCglUQVJHRVRfTl9GT1JNQVRfVFlQRVMgYW5kIFRBUkdFVF9GT1JNQVRfVFlQRVMuCgoJKiBkb2MvZXh0ZW5kLnRleGkgKFRhcmdldCBGb3JtYXQgQ2hlY2tzKTogTmV3IHNlY3Rpb24uCgkoRnVuY3Rpb24gQXR0cmlidXRlcyk6IE1lbnRpb24gaXQuCgkqIGRvYy9pbnZva2UudGV4aTogTWVudGlvbiB0YXJnZXQgZm9ybWF0IGNoZWNrcy4KCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IE1lbnRpb24gdGFyZ2V0IGZvcm1hdCBjaGVja3MuCgkqIGRjL3RtLnRleGkgKE1pc2MpOiBEb2N1bWVudCBUQVJHRVRfTl9GT1JNQVRfVFlQRVMgYW5kCglUQVJHRVRfRk9STUFUX1RZUEVTLgoKMjAwNC0wNy0xOSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfcmV0dXJuX2FkZHJlc3Nfb2Zmc2V0KTogUHJvdG90eXBlCglhZGRlZC4KCSogY29uZmlnL3MzOTAvczM5MC5jIChyZWdjbGFzc19tYXAgaW5pdGlhbGl6ZXIpOiBSZWdpc3RlciAzNSBhZGRlZCB0bwoJQUREUl9SRUdTLgoJKGxvYWRfbXVsdGlwbGVfb3BlcmF0aW9uLCBzdG9yZV9tdWx0aXBsZV9vcGVyYXRpb24pOiBSZW1vdmVkCglwb2ludGxlc3Mgc2FuaXR5IGNoZWNrLgoJKHMzOTBfZGVjb21wb3NlX2FkZHJlc3MpOiBBZGRlZCBjaGVjayBmb3IgcmV0dXJuX2FkZHJlc3NfcG9pbnRlcl9ydHguCgkoczM5MF9yZXR1cm5fYWRkcl9ydHgpOiBVc2UgcmV0dXJuX2FkZHJlc3NfcG9pbnRlcl9ydHggZm9yIGNvdW50ID09IDAuCgkoczM5MF9yZXR1cm5fYWRkcmVzc19vZmZzZXQpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogSW5jcmVhc2VkIHRvIDM2LgoJKEZSQU1FX1JFR05PX1ApOiBBZGRlZCBjaGVjayBmb3IgcmVnaXN0ZXIgMzUuCgkoRklYRURfUkVHSVNURVJTLCBDQUxMX1VTRURfUkVHSVNURVJTLCBDQUxMX1JFQUxMWV9VU0VEX1JFR0lTVEVSUywKCVJFR19BTExPQ19PUkRFUik6IEFwcGVuZGVkIGVudHJ5IGZvciByZWdpc3RlciAzNS4KCShSRUdfQ0xBU1NfQ09OVEVOVFMpOiBBZGp1c3RlZCBjbGFzcyBtYXNrcyBmb3IgcmVnaXN0ZXIgMzUuCgkoRUhfUkVUVVJOX0hBTkRMRVJfUlRYKTogVXNlIHJldHVybl9hZGRyZXNzX3BvaW50ZXJfcnR4LgoJKFJFVFVSTl9BRERSRVNTX1BPSU5URVJfUkVHTlVNKTogTmV3IG1hY3JvLgoJKEVMSU1JTkFCTEVfUkVHUywgSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBSZXR1cm4gYWRkcmVzcyBwb2ludGVyCglpcyBlbGltaW5hYmxlIHVzaW5nIHN0YWNrIHBvaW50ZXIgb3IgaGFyZCBmcmFtZSBwb2ludGVyLgoJKFJFR0lTVEVSX05BTUVTKTogQWRkZWQgbmFtZSBmb3IgcmVnaXN0ZXIgMzUuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJsb2FkX211bHRpcGxlIiwgInN0b3JlX211bHRpcGxlIik6IFJlbW92ZWQKCXBvaW50bGVzcyBzYW5pdHkgY2hlY2suCgoyMDA0LTA3LTE5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAodHJlZV9leHByX25vbnplcm9fcCk6IEFkZCBmdW5jdGlvbiBwcm90b3R5cGUuCgkoZm9sZCkgPEVRX0VYUFI+OiBNb3ZlIHRyZWVfZXhwcl9ub256ZXJvX3Agb3B0aW1pemF0aW9uIGZyb20KCWZvbGRfcmVsYXRpb25hbF9jb25zdCB0byBoZXJlLCBpLmUuICIoeCB8IDUpID09IDAiIC0+IGZhbHNlLgoJKGZvbGQpIChVTkVRX0VYUFI+OiBBZGQgb3B0aW1pemF0aW9ucyBmb3IgdW5vcmRlcmVkIGNvbXBhcmlzb25zCglvZiB0aGUgZm9ybSAieCBvcCB4IiB3aGVyZSBvcCBpcyBVTkxFLCBVTkdFLCBVTkVRIG9yIExUR1QuCgkoZm9sZF9yZWxhdGlvbmFsX2NvbnN0KTogVGlkeSB1cCBoYW5kbGluZyBvZiBmbG9hdGluZyBwb2ludAoJY29tcGFyaXNvbnMgYnkgY2FsbGluZyByZWFsX2NvbXBhcmUuICBSZW1vdmUgdHJlZV9leHByX25vbnplcm9fcAoJdHJhbnNmb3JtYXRpb247IGZvbGRfcmVsYXRpb25hbF9jb25zdCBhc3N1bWVzIGNvbnN0YW50IG9wZXJhbmRzLgoKMjAwNC0wNy0xOSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9uLm5ldD4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBBZGQgbGliY3BwLCBub3cgdGhhdCBDUFAgaGFzIGl0cyBvd24KCWRpcmVjdG9yeS4KCjIwMDQtMDctMTkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10cmVlLmggKHN0cnVjdCBjX2V4cHIpOiBEZWZpbmUuCgkoQ19TRVRfRVhQX09SSUdJTkFMX0NPREUpOiBSZW1vdmUuCgkocGFyc2VyX2J1aWxkX2JpbmFyeV9vcCwgYnVpbGRfY29tcG91bmRfZXhwcik6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjLXBhcnNlLmluICgldW5pb24pOiBBZGQgZXhwcnR5cGUuCgkoRlVOQ19OQU1FKTogTWFyayBhcyB0dHlwZS4KCShleHByLCBleHByX25vX2NvbW1hcywgY2FzdF9leHByLCB1bmFyeV9leHByLCBwcmltYXJ5KTogQ2hhbmdlIHRvCglleHBydHlwZS4KCShleHByKTogVXBkYXRlLiAgRGVmaW5lIGRpcmVjdGx5IGluIHRlcm1zIG9mIGV4cHJfbm9fY29tbWFzCglpbnN0ZWFkIG9mIHVzaW5nIG5vbm51bGxfZXhwcmxpc3QuCgkobm9ubnVsbF9leHBybGlzdCwgdW5hcnlfZXhwciwgY2FzdF9leHByLCBleHByX25vX2NvbW1hcywgcHJpbWFyeSwKCW9mZnNldG9mX21lbWJlcl9kZXNpZ25hdG9yLCB0eXBlc3BlY19ub25yZXNlcnZlZF9ub25hdHRyLCBpbml0LAoJaW5pdHZhbCwgZGVzaWduYXRvciwgY29tcG9uZW50X2RlY2xhcmF0b3IsCgljb21wb25lbnRfbm90eXBlX2RlY2xhcmF0b3IsIGVudW1lcmF0b3IsIGFycmF5X2RlY2xhcmF0b3IsCgljb25kaXRpb24sIGV4ZXhwciwgc3dpdGNoX3N0YXRlbWVudCwgc3RtdF9ub2NvbXAsIHN0bXQsCglub25udWxsX2FzbV9vcGVyYW5kcywgaXZhcl9kZWNsYXJhdG9yLCByZWNlaXZlcik6IFVwZGF0ZS4gIERvbid0CglzZXQgQ19FWFBfT1JJR0lOQUxfQ09ERS4gIFVzZSBUUkVFX05PX1dBUk5JTkcgZm9yIGFzc2lnbm1lbnRzCgl3aGVyZSBhcHByb3ByaWF0ZS4KCSogYy1jb21tb24uaCAoQ19FWFBfT1JJR0lOQUxfQ09ERSk6IFJlbW92ZS4KCSogYy1jb21tb24uYyAoY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uKTogRG9uJ3QgY2hlY2sKCUNfRVhQX09SSUdJTkFMX0NPREUuCgkqIGMtdHlwZWNrLmMgKHBhcnNlcl9idWlsZF9iaW5hcnlfb3ApOiBVc2UgY19leHByIHN0cnVjdHVyZXMuCglEb24ndCB1c2UgQ19FWFBfT1JJR0lOQUxfQ09ERS4KCShkZWZhdWx0X2NvbnZlcnNpb24sIGRlZmF1bHRfZnVuY3Rpb25fYXJyYXlfY29udmVyc2lvbik6IERvbid0IHVzZQoJQ19FWFBfT1JJR0lOQUxfQ09ERS4gIFByZXNlcnZlIFRSRUVfTk9fV0FSTklORy4KCShpbnRlcm5hbF9idWlsZF9jb21wb3VuZF9leHByKTogTWVyZ2UgaW50byBidWlsZF9jb21wb3VuZF9leHByLgoJKGJ1aWxkX2NvbXBvdW5kX2V4cHIpOiBUYWtlIHR3byBvcGVyYW5kcyBpbnN0ZWFkIG9mIGEgVFJFRV9MSVNULgoJKiBvYmpjL29iamMtYWN0LmMgKGdldF9zdXBlcl9yZWNlaXZlcik6IFVwZGF0ZSBjYWxscyB0bwoJYnVpbGRfY29tcG91bmRfZXhwci4KCjIwMDQtMDctMTggIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWcvc2gvc2guYyAoc2hfdXNlX2RmYV9pbnRlcmZhY2UpOiBSZW1vdmUuCgkoVEFSR0VUX1NDSEVEX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogU2V0IHRvCglob29rX2ludF92b2lkXzEuCgkqIGNvbmZpZy9zaC9zaC5tZDogRXh0cmFjdCBwaXBlbGluZSBkZXNjcmlwdGlvbnMKCWludG8gc2VwYXJhdGUgZmlsZXMuCgkqIGNvbmZpZy9zaC9zaDEubWQ6IE5ldyBmaWxlLCBleHRyYWN0ZWQgZnJvbSBzaC5tZC4KCSogY29uZmlnL3NoL3NoNC5tZDogTmV3IGZpbGUsIGV4dHJhY3RlZCBmcm9tIHNoLm1kLgoJKiBjb25maWcvc2gvc2htZWRpYS5tZDogTmV3IGZpbGUsIGV4dHJhY3RlZCBmcm9tIHNoLm1kCglhbmQgcmV3cml0dGVuIHVzaW5nIG5ldy1zdHlsZSBwaXBlbGluZSBkZXNjcmlwdGlvbi4KCjIwMDQtMDctMTggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcGEvcGEubWQ6IERlbGV0ZSB0aGUgdHdvIHJlbWFpbmluZyBkZWZpbmVfcGVlcGhvbGUKCXBhdHRlcm5zLgoKMjAwNC0wNy0xOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoJICAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1jb21tb24uYyAoY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uKTogRG9uJ3Qgd2FybiBpZgoJVFJFRV9OT19XQVJOSU5HIGlzIHNldC4KCjIwMDQtMDctMTggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoc2ltcGxpZnlfYnVpbHRpbl9tZW1jbXAsIHNpbXBsaWZ5X2J1aWx0aW5fc3RyY21wLAoJc2ltcGxpZnlfYnVpbHRpbl9zdHJuY21wKTogRGVsZXRlLgoJKGZvbGRfYnVpbHRpbl9tZW1jbXAsIGZvbGRfYnVpbHRpbl9zdHJjbXAsIGZvbGRfYnVpbHRpbl9zdHJuY21wKToKCUNoYW5nZSBhcmd1bWVudCB0byBhY2NlcHQgYW4gYXJnbGlzdCBpbnN0ZWFkIG9mIGFuICJleHAiLiAgQXNzdW1lCgl0aGF0IHRoZSByZXR1cm4gdHlwZSBpcyBhbHdheXMgaW50ZWdlcl90eXBlX25vZGUuICBDb3B5IG1pc3NpbmcKCXRyYW5zZm9ybWF0aW9ucyBmcm9tIHRoZWlyIG5vdyBvYnNvbGV0ZSBzaW1wbGlmeV9idWlsdGluXyoKCWVxdWl2YWxlbnRzLgoJKGZvbGRfYnVpbHRpbl8xKTogUGFzcyBhcmdsaXN0IGluc3RlYWQgb2YgZXhwIHRvIGZvbGRfYnVpbHRpbl9tZW1jbXAsCglmb2xkX2J1aWx0aW5fc3RyY21wIGFuZCBmb2xkX2J1aWx0aW5fc3RybmNtcC4KCShzaW1wbGlmeV9idWlsdGluKTogQ2FsbCBmb2xkX2J1aWx0aW5fbWVtY21wLCBmb2xkX2J1aWx0aW5fc3RyY21wCglhbmQgZm9sZF9idWlsdGluX3N0cm5jbXAgaW5zdGVhZCBvZiBzaW1wbGlmeV9idWlsdGluX21lbWNtcCwKCXNpbXBsaWZ5X2J1aWx0aW5fc3RyY21wIGFuZCBzaW1wbGlmeV9idWlsdGluX3N0cm5jbXAgcmVzcGVjdGl2ZWx5LgoKMjAwNC0wNy0xOCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AZGViaWFuLm9yZz4KCgkqIE1ha2VmaWxlLmluICh0cmVlLWFsaWFzLWNvbW1vbi5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCjIwMDQtMDctMTcgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCSogY2ZnbG9vcC5jIChmbG93X2xvb3BfbmVzdGVkX3ApOiBGaXggY29tbWVudC4KCjIwMDQtMDctMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8xNjExNQoJKiBzdG9yLWxheW91dC5jIChyZWxheW91dF9kZWNsKTogTmV3IGZuLgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgkoREVDTF9CWV9SRUZFUkVOQ0UpOiBOZXcgbWFjcm8uCgoyMDA0LTA3LTE3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJKiBsaWJnY2MyLmMgKF9fZW5hYmxlX2V4ZWN1dGVfc3RhY2spOiBOZXcgc3ltYm9sLgoJKiBsaWJnY2Mtc3RkLnZlciAoR0NDXzMuNC4yKTogTmV3IHZlcnNpb24uICBJbmhlcml0IGZyb20gR0NDXzMuNAoJYW5kIGRlY2xhcmUgX19lbmFibGVfZXhlY3V0ZV9zdGFjay4KCSogbWtsaWJnY2MuaW4gKGxpYjJmdW5jcyk6IEFkZCBfZW5hYmxlX2V4ZWN1dGVfc3RhY2suCgkqIGNvbmZpZy9uZXRic2QuaCAoTkVUQlNEX0VOQUJMRV9FWEVDVVRFX1NUQUNLKTogQU5TSWZ5LgoJKiBjb25maWcvc29sMi5oIChUUkFOU0ZFUl9GUk9NX1RSQU1QT0xJTkUpOiBSZW5hbWUgaW50bwoJRU5BQkxFX0VYRUNVVEVfU1RBQ0suCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9pbml0aWFsaXplX3RyYW1wb2xpbmUpOiBDb25kaXRpb25hbGl6ZQoJb24gRU5BQkxFX0VYRUNVVEVfU1RBQ0sgaW5zdGVhZCBvZiBUUkFOU0ZFUl9GUk9NX1RSQU1QT0xJTkUuCgkqIGNvbmZpZy9hbHBoYS9uZXRic2QuaCAoVFJBTlNGRVJfRlJPTV9UUkFNUE9MSU5FKTogUmVuYW1lIGludG8KCUVOQUJMRV9FWEVDVVRFX1NUQUNLLgoJKiBjb25maWcvYWxwaGEvb3NmLmggKFRSQU5TRkVSX0ZST01fVFJBTVBPTElORSk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHg4Nl9pbml0aWFsaXplX3RyYW1wb2xpbmUpOiBDb25kaXRpb25hbGl6ZQoJb24gRU5BQkxFX0VYRUNVVEVfU1RBQ0sgaW5zdGVhZCBvZiBUUkFOU0ZFUl9GUk9NX1RSQU1QT0xJTkUuCgkqIGNvbmZpZy9pMzg2L25ldGJzZC1lbGYuaCAoVFJBTlNGRVJfRlJPTV9UUkFNUE9MSU5FKTogUmVuYW1lIGludG8KCUVOQUJMRV9FWEVDVVRFX1NUQUNLLgoJKiBjb25maWcvaTM4Ni9uZXRic2QuaCAoVFJBTlNGRVJfRlJPTV9UUkFNUE9MSU5FKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L25ldGJzZDY0LmggKFRSQU5TRkVSX0ZST01fVFJBTVBPTElORSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvZnJlZWJzZC5oIChUUkFOU0ZFUl9GUk9NX1RSQU1QT0xJTkUpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL25ldGJzZC1lbGYuaCAoVFJBTlNGRVJfRlJPTV9UUkFNUE9MSU5FKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19pbml0aWFsaXplX3RyYW1wb2xpbmUpOiBDb25kaXRpb25hbGl6ZQoJb24gRU5BQkxFX0VYRUNVVEVfU1RBQ0sgaW5zdGVhZCBvZiBUUkFOU0ZFUl9GUk9NX1RSQU1QT0xJTkUuCgkoc3BhcmM2NF9pbml0aWFsaXplX3RyYW1wb2xpbmUpOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGkgKHRyYW1wb2xpbmVzKTogQWRkIEVOQUJMRV9FWEVDVVRFX1NUQUNLIG1hY3JvLgoKMjAwNC0wNy0xNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBsYW5naG9va3MuaCAoYnVpbHRpbl9mdW5jdGlvbik6IE5ldyBsYW5naG9vay4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX0JVSUxUSU5fRlVOQ1RJT04pOiBOZXcuCgkoTEFOR19IT09LU19JTklUSUFMSVpFUik6IFVwZGF0ZS4KCSogdHJlZS5oIChidWlsdGluX2Z1bmN0aW9uKTogUmVtb3ZlLgoJKiBkb2MvdG0udGV4aTogVXBkYXRlLgoJKiBjLXRyZWUuaCAoYnVpbHRpbl9mdW5jdGlvbik6IERlY2xhcmUuCgkqIGMtY29tbW9uLmMsIGNvbmZpZy9hbHBoYS9hbHBoYS5jLCBjb25maWcvYXJtL2FybS5jLAoJY29uZmlnL2M0eC9jNHguYywgY29uZmlnL2Zydi9mcnYuYywgY29uZmlnL2kzODYvaTM4Ni5jLAoJY29uZmlnL2lhNjQvaWE2NC5jLCBjb25maWcvaXEyMDAwL2lxMjAwMC5jLAoJY29uZmlnL3JzNjAwMC9yczYwMDAuYywgY29uZmlnL3MzOTAvczM5MC5jLCBjb25maWcvc2gvc2guYywKCWNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jOiBBbGwgY2FsbGVycyBvZiBidWlsdGluX2Z1bmN0aW9uCgljaGFuZ2VkLgoKMjAwNC0wNy0xNyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzE2NTU2CgkqIGNvbmZpZy9pMzg2L2Rhcndpbi5oIChVTkxJS0VMWV9FWEVDVVRFRF9URVhUX1NFQ1RJT05fTkFNRSk6CglSZW1vdmUgd2hpdGUgc3BhY2UgYWZ0ZXIgdGhlIGJhY2tzbGFzaC4KCjIwMDQtMDctMTcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8xNjI5NAoJKiByZXNvdXJjZS5jIChyZXR1cm5faW5zbl9wKTogTmV3IHByZWRpY2F0ZS4KCShtYXJrX3RhcmdldF9saXZlX3JlZ3MpOiBVc2UgaXQuICBTcGVjaWFsLWNhc2UgcmV0dXJuIGluc25zLgoJKGluaXRfcmVzb3VyY2VfaW5mbyk6IFVzZSBpdC4gIERvbid0IHNjYW4gdGhlIGVwaWxvZ3VlIHBhc3QKCWEgcmV0dXJuLgoKMjAwNC0wNy0xNyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogbG9vcC1pbml0LmMgKGxvb3Bfb3B0aW1pemVyX2luaXQsIGxvb3Bfb3B0aW1pemVyX2ZpbmFsaXplKTogRG8gbm90CglkZXN0cm95IGRvbWluYW5jZSBpbmZvcm1hdGlvbi4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfaGFuZGxlX2xvb3AyKTogRnJlZSBkb21pbmFuY2UgaW5mb3JtYXRpb24uCgkqIHRyZWUtY2ZnLmMgKGNsZWFudXBfdHJlZV9jZmcpOiBSZW1vdmUgdW5yZWFjaGFibGUgYmxvY2tzIGJlZm9yZQoJanVtcCB0aHJlYWRpbmcuCgkodGhyZWFkX2p1bXBzKTogVXBkYXRlIGRvbWluYW5jZSBpbmZvcm1hdGlvbiBhbmQgcmVtb3ZlIHVucmVhY2hhYmxlCglibG9ja3MuCgkqIHRyZWUtc3NhLXBoaW9wdC5jIChyZXBsYWNlX3BoaV93aXRoX3N0bXQpOiBVcGRhdGUgZG9taW5hbmNlCglpbmZvcm1hdGlvbiBhbmQgcmVtb3ZlIHRoZSB1bnJlYWNoYWJsZSBibG9jay4KCjIwMDQtMDctMTcgIEdyYWhhbSBTdG90dCAgPGdyYWhhbS5zdG90dEBidGludGVybmV0LmNvbT4KCgkqIGVtaXQtcnRsLmMgKHJlb3JkZXJfaW5zbnMpOiBEb24ndCBzZXQgQkIgZm9yIGEgQkFSUklFUiBpbnNuLgoKMjAwNC0wNy0xNyAgVG9vbiBNb2VuZSAgPHRvb25AbW9lbmUuaW5kaXYubmx1dWcubmw+CgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogUmVtb3ZlIGxpYmYyYyBlbnRyeS4KCjIwMDQtMDctMTcgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChtb3Z2MTZxaV9pbnRlcm5hbCk6IEZpeCB0eXBvLgoKMjAwNC0wNy0xNyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRml4IGJyb2tlbiBjb21taXQgZnJvbSBwcmV2aW91cwoJcGF0Y2guCgoyMDA0LTA3LTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtdHlwZWNrLmMgKHBhcnNlcl9idWlsZF9iaW5hcnlfb3ApOiBDb25kaXRpb24gd2FybmluZ3MgZm9yCglYPD1ZPD1aIG9uIC1XcGFyZW50aGVzZXMgaW5zdGVhZCBvZiAtV2V4dHJhLgoJKiBkb2MvaW52b2tlLnRleGk6IFVwZGF0ZS4gIERvY3VtZW50IHRoYXQgbW9zdCBvZiAtV3BhcmVudGhlc2VzIGlzCglzdXBwb3J0ZWQgZm9yIEMgb25seS4KCjIwMDQtMDctMTcgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGNmZ2NsZWFudXAuYyAodHJ5X3NpbXBsaWZ5X2NvbmRqdW1wKTogRG9uJ3QgcmVtb3ZlIGxpbmUKCW5vdGVzIHRvIGF2b2lkIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZ3MuCgkqIHRvcGxldi5jIChiYWNrZW5kX2luaXQpOiBEb24ndCBlbWl0IGxpbmUgbm90ZXMgZm9yCgl1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmdzLgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogRG9uJ3QgZGlzdHJpYnV0ZSBhCglSRUdfVlRBQkxFX1JFRiBub3RlLgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBEb24ndCBoYW5kbGUgaXQuCgkqIHJ0bC5jIChyZWdfbm90ZV9uYW1lKTogUmVtb3ZlIGl0LgoJKiBydGwuaCAoZW51bSByZWdfbm9kZSk6IERpdG8uCgoJKiBlbWl0LXJ0bC5jIChmb3JjZV9saW5lX251bWJlcnMsIHJlc3RvcmVfbGluZV9udW1iZXJfc3RhdHVzKToKCVJlbW92ZS4KCSogcnRsLmggKGZvcmNlX2xpbmVfbnVtYmVycywgcmVzdG9yZV9saW5lX251bWJlcl9zdGF0dXMpOgoJUmVtb3ZlIHByb3RvdHlwZXMuCgoJKiBzdG10LmMgKHVzaW5nX2VoX2Zvcl9jbGVhbnVwc19wLCB1c2luZ19laF9mb3JfY2xlYW51cHMpOiBNb3ZlLi4uCgkqIHRyZWUtZWguYyAodXNpbmdfZWhfZm9yX2NsZWFudXBzX3ApOiAuLi5oZXJlLiAgTWFrZSBzdGF0aWMuCgkodXNpbmdfZWhfZm9yX2NsZWFudXBzKTogQWxzbyBtb3ZlZCBoZXJlLgoKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpIDxDQVNFX0xBQkVMX0VYUFI+OiBEaWUgaWYgd2Ugc2VlIG9uZS4KCTxTV0lUQ0hfRVhQUj46IERpZSBpZiB3ZSBoYXZlIGEgbm9uLU5VTEwgU1dJVENIX0JPRFkuICBVcGRhdGUgY2FsbHMKCXRvIGV4cGFuZF9zdGFydF9jYXNlIGFuZCBhZGRfY2FzZV9ub2RlLgoJKiBzdG10LmMgKHN0cnVjdCBuZXN0aW5nKTogQ2xlYW51cCB1bnVzZWQgZmllbGRzIGNvbmRpdGlvbl9jb2RlLAoJbGFzdF91bmNvbmRpdGlvbmFsX2NsZWFudXAsIG5vbWluYWxfdHlwZSwgcHJpbnRuYW1lLCBhbmQKCWxpbmVfbnVtYmVyX3N0YXR1cy4KCShzdHJ1Y3QgZml4dXBfZ290byk6IFJlbW92ZS4KCShzdHJ1Y3Qgc3RtdF9zdGF0dXMpOiBSZW1vdmUgeF9nb3RvX2ZpeHVwX2NoYWluIGZpZWxkLgoJKGdvdG9fZml4dXBfY2hhaW4pOiBSZW1vdmUuCgkoc3RyaXBfZGVmYXVsdF9jYXNlX25vZGVzLCBncm91cF9jYXNlX25vZGVzLCBlbWl0X2p1bXBfaWZfcmVhY2hhYmxlLAoJcHVzaGNhc2UsIHB1c2hjYXNlX3JhbmdlKTogUmVtb3ZlLgoJKGV4cGFuZF9zdGFydF9iaW5kaW5nc19hbmRfYmxvY2spOiBEb24ndCBzZXQgdW51c2VkIGZpZWxkcyBpbgoJdGhlIG5lc3Rpbmcgc3RhY2suCgkoZXhwYW5kX3N0YXJ0X2Nhc2UsIGFkZF9jYXNlX25vZGUpOiBDbGVhbnVwIHVudXNlZCBmb3JtYWwgYXJndW1lbnRzLgoJKGV4cGFuZF9lbmRfY2FzZV90eXBlKTogRG9uJ3Qgc2ltcGxpZnkgdGhlIGNhc2UtbGlzdC4gIFVzZSBlbWl0X2p1bXAKCWluc3RlYWQgb2YgZW1pdF9qdW1wX2lmX3JlYWNoYWJsZS4KCShlbWl0X2Nhc2Vfbm9kZXMpOiBMaWtld2lzZS4KCSogdHJlZS1jZmcuYyAoZ3JvdXBfY2FzZV9sYWJlbHMsIGNsZWFudXBfZGVhZF9sYWJlbHMpOiBObyBsb25nZXIKCXN0YXRpYy4KCSh1cGRhdGVfZWhfbGFiZWwpOiBXb3JrIGFyb3VuZCBsZWZ0LW92ZXIgZXhjZXB0aW9uIGhhbmRpbmcgcmVnaW9ucy4KCSogdHJlZS1mbG93LmggKGdyb3VwX2Nhc2VfbGFiZWxzLCBjbGVhbnVwX2RlYWRfbGFiZWxzKTogQWRkIHByb3Rvcy4KCSogdHJlZS1vcHRpbWl6ZS5jIChleGVjdXRlX2NsZWFudXBfY2ZnX3Bvc3Rfb3B0aW1pemluZyk6IE5ldyBmdW5jdGlvbi4KCShwYXNzX2NsZWFudXBfY2ZnX3Bvc3Rfb3B0aW1pemluZyk6IE5ldyBwYXNzLgoJKGluaXRfdHJlZV9vcHRpbWl6YXRpb25fcGFzc2VzKTogUnVuIHRoZSBuZXcgcGFzcyBhZnRlciBhbGwKCW9wdGltaXphdGlvbnMuCgkqIHRyZWUuaCAocHVzaGNhc2UsIHB1c2hjYXNlX3JhbmdlKTogUmVtb3ZlIHByb3RvdHlwZXMuCgkoZXhwYW5kX3N0YXJ0X2Nhc2UsIGFkZF9jYXNlX25vZGUpOiBVcGRhdGUgcHJvdG90eXBlcy4KCjIwMDQtMDctMTYgIEtyaXN0ZXIgV2FsZnJpZHNzb24gIDxjYXRvQGRmLmx0aC5zZT4KCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKTogQ29ycmVjdCBpbmNyZWFzZSBvZiBjb3VudC4KCjIwMDQtMDctMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChzdGRfZXhwYW5kX2J1aWx0aW5fdmFfYXJnKTogUmVtb3ZlLgoJKGV4cGFuZF9idWlsdGluX3ZhX2FyZyk6IFJlbW92ZS4KCSogZXhwci5oOiBEb24ndCBkZWNsYXJlIHRoZW0uCgkqIGdpbXBsaWZ5LmMgKG1hcmtfZGVjbHNfdm9sYXRpbGVfcik6IFJlbW92ZS4KCShjb3B5X2lmX3NoYXJlZF9yKTogRG9uJ3QgY2FsbCBpdC4KCSogdGFyZ2V0LWRlZi5oOiBEb24ndCB0ZXN0IEVYUEFORF9CVUlMVElOX1ZBX0FSRy4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBEb24ndCBoYW5kbGUgVkFfQVJHX0VYUFIuCgkqIGdpbXBsZS1sb3cuYyAobG93ZXJfc3RtdCk6IExpa2V3aXNlLgoJKiB0cmVlLWNmZy5jIChjZmdfcmVtb3ZlX3VzZWxlc3Nfc3RtdHNfYmIpOiBMaWtld2lzZS4KCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX3RtcF9yaHMsIGlzX2dpbXBsZV9zdG10KTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGdldF9leHByX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfR0lNUExJRllfVkFfQVJHX0VYUFIpOiBEb24ndCBtZW50aW9uCglFWFBBTkRfQlVJTFRJTl9WQV9BUkcuCgkqIHN5c3RlbS5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBQb2lzb24uCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oLCBjb25maWcvYWxwaGEvdW5pY29zbWsuaCwgY29uZmlnL2kzODYvaTM4Ni5oLAoJY29uZmlnL2lhNjQvaWE2NC5oLCBjb25maWcvcnM2MDAwL3JzNjAwMC5oLCBjb25maWcvczM5MC9zMzkwLmgsCgljb25maWcvc3BhcmMvc3BhcmMuaCAoRVhQQU5EX0JVSUxUSU5fVkFfQVJHKTogUmVtb3ZlLgoKMjAwNC0wNy0xNiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1wcmUuYyAoaW5zZXJ0X2F1eCk6IEJyZWFrIG91dCBpZiB3ZSBoaXQKCWEgY3JpdGljYWwgZWRnZS4KCjIwMDQtMDctMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChyZW1vdmVfZmFrZV9leGl0X2VkZ2VzKTogRGVjbGFyZS4KCSogY2ZnYW5hbC5jIChyZW1vdmVfZmFrZV9wcmVkZWNlc3NvcnMpOiBSZW5hbWUgZnJvbQoJcmVtb3ZlX2Zha2Vfc3VjY2Vzc29yczsgaXRlcmF0ZSBvdmVyIHByZWRlY2Vzc29ycy4KCShyZW1vdmVfZmFrZV9leGl0X2VkZ2VzKTogTmV3LgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9vcHRpbWl6ZV9jZmcpOiBVc2UgaXQuCgkqIGdjc2UuYyAob25lX3ByZV9nY3NlX3Bhc3MsIHN0b3JlX21vdGlvbik6IExpa2V3aXNlLgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogTGlrZXdpc2UuCgkodHJlZV9lc3RpbWF0ZV9wcm9iYWJpbGl0eSwgbm90ZV9wcmVkaWN0aW9uX3RvX2JyX3Byb2IpOiBMaWtld2lzZS4KCSogdHJlZS1jZmcuYyAobWFrZV9lZGdlcyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1wcmUuYyAoZmluaV9wcmUpOiBMaWtld2lzZS4KCSogcHJvZmlsZS5jIChpbnN0cnVtZW50X2VkZ2VzKTogRG9uJ3QgcmVtb3ZlX2Zha2VfZWRnZXMuCgkoYnJhbmNoX3Byb2IpOiBEbyBpdCBlYXJsaWVyIGhlcmUuCgoyMDA0LTA3LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMpOiBGaXggMjAwNC0wNy0xNQoJc3dpdGNoaWZpY2F0aW9uIHdydCBDT05TVFJVQ1RPUi4gIERvY3VtZW50IHRoZSByZWFzb24uCgoyMDA0LTA3LTE2ICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUByZWRoYXQuY29tPgoKCSogdHJlZS1tdWRmbGFwLmMgKG1mX2ZpbGVfZnVuY3Rpb25fbGluZV90cmVlKTogQ29ycmVjdCB0eXBvCgl0aGF0IHByZXZlbnRlZCBkZXNjcmlwdGl2ZSBfX21mX2NoZWNrIHNvdXJjZSBsb2NhdGlvbiBzdHJpbmdzLgoKMjAwNC0wNy0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtZGVmIChXSVRIX1NJWkVfRVhQUik6IE5ldy4KCSogZXhwbG93LmMgKGV4cHJfc2l6ZSwgaW50X2V4cHJfc2l6ZSk6IEhhbmRsZSBXSVRIX1NJWkVfRVhQUi4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBMaWtld2lzZS4KCSogZ2ltcGxpZnkuYyAobWF5YmVfd2l0aF9zaXplX2V4cHIpOiBOZXcuCgkoZ2ltcGxpZnlfYXJnLCBnaW1wbGlmeV9tb2RpZnlfZXhwcik6IFVzZSBpdC4KCShnaW1wbGlmeV9tb2RpZnlfZXhwcl90b19tZW1jcHkpOiBUYWtlIHNpemUgcGFyYW1ldGVyLgoJKGdpbXBsaWZ5X21vZGlmeV9leHByX3RvX21lbXNldCk6IExpa2V3aXNlLgoJKGdpbXBsaWZ5X2V4cHIpOiBIYW5kbGUgV0lUSF9TSVpFX0VYUFIuCgkqIHRyZWUtYWxpYXMtY29tbW9uLmMgKGZpbmRfZnVuY19hbGlhc2VzKTogTGlrZXdpc2UuCgkqIHRyZWUtZWguYyAodHJlZV9jb3VsZF90cmFwX3ApOiBMaWtld2lzZS4KCSh0cmVlX2NvdWxkX3Rocm93X3ApOiBMaWtld2lzZS4KCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX2x2YWx1ZSk6IExpa2V3aXNlLgoJKGdldF9jYWxsX2V4cHJfaW4pOiBMaWtld2lzZS4KCSogdHJlZS1pbmxpbmUuYyAoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBMaWtld2lzZS4KCShleHBhbmRfY2FsbHNfaW5saW5lKTogTGlrZXdpc2UuCgkqIHRyZWUtbmVzdGVkLmMgKGNvbnZlcnRfY2FsbF9leHByKTogTGlrZXdpc2UuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3JhLmMgKHNyYV93YWxrX2V4cHIpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAoYWRkX3BvaW50ZWRfdG9fZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1jY3AuYyAoZ2V0X3Jocywgc2V0X3Jocyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiB0cmVlLXRhaWxjYWxsLmMgKGZpbmRfdGFpbF9jYWxscyk6IExpa2V3aXNlLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBSZXNldCBvbGRfc3RhY2tfYWxsb2NhdGVkIGFmdGVyCgljYWxsaW5nIGVtaXRfc3RhY2tfcmVzdG9yZS4KCjIwMDQtMDctMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19DT1BZX1JFU19ERUNMX0ZPUl9JTkxJTklORywKCWxoZF90cmVlX2lubGluaW5nX2NvcHlfcmVzX2RlY2xfZm9yX2lubGluaW5nKTogUmVtb3ZlLgoJKiBsYW5naG9va3MuYyAobGhkX3RyZWVfaW5saW5pbmdfY29weV9yZXNfZGVjbF9mb3JfaW5saW5pbmcpOiBSZW1vdmUuCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rc19mb3JfdHJlZV9pbmxpbmluZyk6IFJlbW92ZQoJY29weV9yZXNfZGVjbF9mb3JfaW5saW5pbmcuCgoJKiB0cmVlLWlubGluZS5jIChkZWNsYXJlX3JldHVybl92YXJpYWJsZSk6IE5ldyBtb2RpZnlfZGVzdCBhcmd1bWVudC4KCVVzZSBpdCBhcyB0aGUgcmV0dXJuIHZhbHVlLCB3aGVuIHBvc3NpYmxlIG9yIG1hbmRpdG9yeS4gIEhhbmRsZQoJVFJFRV9BRERSRVNTQUJMRSB0eXBlcy4KCShleHBhbmRfY2FsbF9pbmxpbmUpOiBFeHRyYWN0IE1PRElGWV9FWFBSIGxocyBmb3IgY2FsbC4gIFNpbXBsaWZ5CglyZXBsYWNlbWVudCBvZiBDQUxMX0VYUFIuCgoyMDA0LTA3LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1mbG93LmggKHN0cnVjdCB2YXJfYW5uX2QpOiBSZW1vdmUgaGFzX2hpZGRlbl91c2UuCgkqIGdpbXBsZS1sb3cuYyAoZXhwYW5kX3Zhcl9wKTogRG9uJ3QgY2hlY2sgaXQuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKHNldHVwX3BvaW50ZXJzX2FuZF9hZGRyZXNzYWJsZXMpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY29weXJlbmFtZS5jIChyZW5hbWVfc3NhX2NvcGllcyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfc3RtdF9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIHRyZWUtZGZhLmMgKGZpbmRfaGlkZGVuX3VzZV92YXJzLCBmaW5kX2hpZGRlbl91c2VfdmFyc19yKTogS2lsbC4KCShmaW5kX3JlZmVyZW5jZWRfdmFycyk6IERvbid0IGNhbGwgdGhlbS4KCSogdHJlZS1mbG93LWlubGluZS5oIChoYXNfaGlkZGVuX3VzZSwgc2V0X2hhc19oaWRkZW5fdXNlKTogS2lsbC4KCjIwMDQtMDctMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChwYXNzX2J5X3JlZmVyZW5jZSk6IFRydWUgZm9yIGFsbCB2YXJpYWJsZSBzaXplZCB0eXBlcy4KCjIwMDQtMDctMTYgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCSogTWFrZWZpbGUuaW4gKHRyZWUtcHJldHR5LXByaW50Lm8pOiBEZXBlbmQgb24gdHJlZS1jaHJlYy5oLgoJKiB0cmVlLXByZXR0eS1wcmludC5jOiBJbmNsdWRlIHRyZWUtY2hyZWMuaC4KCShkdW1wX2dlbmVyaWNfbm9kZSk6IFByZXR0eSBwcmludCBTQ0VWX0tOT1dOLCBTQ0VWX05PVF9LTk9XTgoJYW5kIFBPTFlOT01JQUxfQ0hSRUMgbm9kZXMuCgoyMDA0LTA3LTE2ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cGNweSk6IERvIG5vdCBjcmVhdGUgdGVtcG9yYXJ5CglyZWcgd2l0aCBWT0lEbW9kZS4KCjIwMDQtMDctMTYgIFNlZ2hlciBCb2Vzc2Vua29vbCAgPHNlZ2hlckBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKCSogY29uZmlnL3JzNjAwMC9lYWJpLmFzbSAoX19lYWJpX2NvbnZlcnQpOiBGaXggdHlwbyAoY21waSB2cy4gY21wd2kpLgoKMjAwNC0wNy0xNiAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQ6IENoYW5nZWQgZXZlcnkgb2NjdXJlbmNlIG9mIEJBU0VfUkVHSVNURVIKCXRvIEJBU0VfUkVHTlVNLgoJKiBjb25maWcvczM5MC9zMzkwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmg6IExpa2V3aXNlLgoKMjAwNC0wNy0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoYWRkc2kzLCBhZGRkaTMpOiBSZW1vdmUgc3BlY2lhbCBoYW5kbGluZwoJb2YgJHNwIGFkZHMuICBSZW1vdmUgUkVHTk8gY2hlY2tzIGZyb20gbWlwczE2IHBhdHRlcm5zLgoKMjAwNC0wNy0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZDogRGVsZXRlIG91dGRhdGVkIGNvbW1lbnQuCgoyMDA0LTA3LTE2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGdldF9mbG9hdF9jb21wYXJlX2NvZGVzKTogRGVsZXRlLgoJKG1pcHNfZW1pdF9jb21wYXJlKTogTmV3IGZ1bmN0aW9uLCBtb3N0bHkgZXh0cmFjdGVkIGZyb20KCWdldF9mbG9hdF9jb21wYXJlX2NvZGVzIGFuZCBnZW5fY29uZGl0aW9uYWxfYnJhbmNoLgoJKGdlbl9jb25kaXRpb25hbF9icmFuY2gsIGdlbl9jb25kaXRpb25hbF9tb3ZlKTogVXNlIGl0LgoKMjAwNC0wNy0xNiAgU2VnaGVyIEJvZXNzZW5rb29sICA8c2VnaGVyQGtlcm5lbC5jcmFzaGluZy5vcmc+CgoJKiBnZW5hdXRvbWF0YS5jIChhZGRfdmVjdCk6IFNwZWVkdXAgYnkgdXNpbmcgaW50ZWdlcnMgYXMKCWJpdC12ZWN0b3JzIGZvciB3YWxraW5nIHRocm91Z2ggdGhlIGNvbWJfdmVjdCBhbmQgZmluZGluZwoJYSBtYXRjaC4KCjIwMDQtMDctMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc196ZXJvX2lmX2VxdWFsKTogT25seSB1c2UgWE9ScyBpZiB0aGUgc2Vjb25kCglvcGVyYW5kIGlzIGFuIHVuc19hcml0aF9vcGVyYW5kOyB1c2Ugc3VidHJhY3Rpb24gb3RoZXJ3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChjbXBzaSwgY21wZGkpOiBBbGxvdyBhbnkgbm9ubWVtb3J5X29wZXJhbmQsCglub3QganVzdCBhcml0aF9vcGVyYW5kcy4KCjIwMDQtMDctMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKGdlbl9pbnRfcmVsYXRpb25hbCk6IERlbGV0ZS4KCShtaXBzX2VtaXRfc2NjKTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChpbnRlcm5hbF90ZXN0KTogRGVsZXRlLgoJKHNsZV9vcGVyYW5kLCBzbGV1X29wZXJhbmQpOiBOZXcgZnVuY3Rpb25zLgoJKG1hcF90ZXN0X3RvX2ludGVybmFsX3Rlc3QsIGdlbl9pbnRfcmVsYXRpb25hbCk6IERlbGV0ZS4KCShtaXBzX2VtaXRfYmluYXJ5LCBtaXBzX3JlbGF0aW9uYWxfb3BlcmFuZF9va19wKQoJKG1pcHNfZW1pdF9pbnRfcmVsYXRpb25hbCwgbWlwc196ZXJvX2lmX2VxdWFsKQoJKG1pcHNfZW1pdF9zY2MpOiBOZXcgZnVuY3Rpb25zLgoJKGdlbl9jb25kaXRpb25hbF9icmFuY2gpOiBSZXdvcmsgdG8gdXNlIG1pcHNfZW1pdF9pbnRfcmVsYXRpb25hbC4KCSogY29uZmlnL21pcHMvbWlwcy5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgc2xlX29wZXJhbmQgYW5kCglzbGV1X29wZXJhbmQuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKHNlcSwgc25lLCBzZ3QsIHNnZSwgc2x0LCBzbGUsIHNndHUsIHNnZXUpCgkoc2x0dSwgc2xldSk6IFVzZSBtaXBzX2VtaXRfc2NjLgoJKCpzZ2VfW3NkXWksICpzZ2V1X1tzZF1pKTogTmV3IHBhdHRlcm5zLgoJKCpzbGVfW3NkXWksICpzbGVfW3NkXWlfbWlwczE2KTogVXNlIHNsZV9vcGVyYW5kLgoJKCpzbGV1X1tzZF1pLCAqc2xldV9bc2RdaV9taXBzMTYpOiBVc2Ugc2xldV9vcGVyYW5kLgoKMjAwNC0wNy0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKnNndF9kaV9taXBzMTYpOiBGaXggZGVzdGluYXRpb24gY29uc3RyYWludC4KCjIwMDQtMDctMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCpzZXFfW3NkXWkpOiBSZW5hbWVkIGZyb20gc2VxX1tzZF1pX3plcm8uCgkoKnNuZV9bc2RdaSk6IExpa2V3aXNlIHNuZV9bc2RdaV96ZXJvLgoJKCpzZ3RfW3NkXWkpOiAuLi5hbmQgc2d0X1tzZF1pLgoJKCpzbHRfW3NkXWkpOiAuLi5hbmQgc2x0X1tzZF1pLgoJKCpzZ3R1X1tzZF1pKTogLi4uYW5kIHNndHVfW3NkXWkuCgkoKnNsdHVfW3NkXWkpOiAuLi5hbmQgc2x0dV9bc2RdaS4KCSgqc2xldV9bc2RdaSk6IC4uLmFuZCBzbGV1X1tzZF1pX2NvbnN0LgoJTmFtZSBwcmV2aW91c2x5IHVubmFtZWQgbWlwczE2IHBhdHRlcm5zLiAgRm9ybWF0dGluZyBmaXhlcy4KCjIwMDQtMDctMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoY21wX29wZXJhbmRzKTogUmVuYW1lZCBmcm9tIGJyYW5jaF9jbXAuCgkoYnJhbmNoX3R5cGUpOiBEZWxldGUuCgkoZ2VuX2NvbmRpdGlvbmFsX2JyYW5jaCwgZ2VuX2NvbmRpdGlvbmFsX21vdmUpCgkobWlwc19nZW5fY29uZGl0aW9uYWxfdHJhcCk6IFVwZGF0ZSBhZnRlciBuYW1lIGNoYW5nZS4gIEdldCB0aGUKCWNvbXBhcmlzb24gbW9kZSBmcm9tIGNtcF9vcGVyYW5kc1swXS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChjbXBfdHlwZSwgYnJhbmNoX3R5cGUpOiBEZWxldGUuCgkoY21wX29wZXJhbmRzKTogUmVuYW1lZCBmcm9tIGJyYW5jaF9jbXAuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGNtcHNpLCBjbXBkaSwgY21wc2YsIGNtcGRmKTogVXBkYXRlIGFmdGVyCgluYW1lIGNoYW5nZS4gIERvbid0IHNldCBicmFuY2hfdHlwZS4KCShzZXEsIHNuZSwgc2d0LCBzZ2UsIHNsdCwgc2xlLCBzZ3R1LCBzZ2V1LCBzbHR1LCBzbGV1KTogQ2hlY2sgdGhlCgltb2RlIGNsYXNzIG9mIGNtcF9vcGVyYW5kc1swXSByYXRoZXIgdGhhbiBicmFuY2hfdHlwZS4gIFVwZGF0ZSBhZnRlcgoJbmFtZSBjaGFuZ2UuCgoyMDA0LTA3LTE2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcnR4X2Nvc3RzKTogSW4gbWlwczE2IGNvZGUsIHNldCB0aGUgY29zdAoJb2YgMC4uLjI1NSB0byAwIHdoZW4gaW5zaWRlIGEgU0VULgoKMjAwNC0wNy0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZDogUmVtb3ZlIG1pcHMxNiBkZWZpbmVfcGVlcGhvbGVzLgoKMjAwNC0wNy0xNiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1wcmUuYyAoaW5pdF9wcmUpOiBDb25uZWN0IGluZmluaXRlIGxvb3BzIHRvIGV4aXQuCgkoZmluaV9wcmUpOiBSZW1vdmUgZmFrZSBlZGdlcy4KCjIwMDQtMDctMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IFVzZSBhIHN3aXRjaC4gIFNwbGl0IG91dC4uLgoJKGdldF9pbmRpcmVjdF9yZWZfb3BlcmFuZHMsIGdldF9jYWxsX2V4cHJfb3BlcmFuZHMpOiAuLi4gdGhlc2UuCgoyMDA0LTA3LTE1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmVjLmggKFZFQ19hZGRyZXNzKTogTmV3IGZ1bmN0aW9uLgoKMjAwNC0wNy0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNTg4NQoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9hcmcpOiBOZXcgZm4sIHNwbGl0IG91dCBmcm9tLi4uCgkoZ2ltcGxpZnlfY2FsbF9leHByKTogSGVyZS4gIFNwZWNpYWwtY2FzZSBCVUlMVF9JTl9WQV9TVEFSVC4KCjIwMDQtMDctMTUgIFJvbWFuIFppcHBlbCAgPHppcHBlbEBsaW51eC1tNjhrLm9yZz4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAob3V0cHV0X21vdmVfcWltb2RlKTogQWJvcnQgb24gYW4gYXR0ZW1wdCB0bwoJZ2VuZXJhdGUgY29kZSB3aGljaCBpcyBnZW5lcmF0ZWQgYnkgcHVzaHFpMSBub3cKCSogY29uZmlnL202OGsvbTY4ay5oIChNT1ZFX0JZX1BJRUNFU19QKTogUmVtb3ZlLgoKMjAwNC0wNy0xNSAgUm9tYW4gWmlwcGVsICA8emlwcGVsQGxpbnV4LW02OGsub3JnPgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zZXQpOiBtYXRjaCB0aGUgbW9kZSBvZiB0aGUgY29uc3RhbnQgMCB3aXRoCgl0aGUgdGVzdGVkIG9wZXJhbmQgdG8gbWF0Y2ggdGhlIGNvbXBhcmUgYmVoYXZpb3VyIGFuZCB0aGUKCXNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKCkgZXhwZWN0YXRpb24uCgoyMDA0LTA3LTE1ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoImJ1bm9yZGVyZWQiKTogRGlzYWJsZSBmb3IgZTUwMC4KCSgiYm9yZGVyZWQiKTogU2FtZS4KCjIwMDQtMDctMTUgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICgiKmNjZXFfaW9yX2NvbXBhcmUiKTogQWxsb3cKCXVuY29uZGl0aW9uYWxseS4KCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKCJlNTAwX2NjZXFfaW9yX2NvbXBhcmUiKTogUmVtb3ZlLgoKMjAwNC0wNy0xNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2FkanVzdF9pbnNuX2xlbmd0aCk6IEZpeCBoYW5kbGluZyBvZgoJY2FsbHMgaW4gbWlwczE2IGNvZGUuCgoyMDA0LTA3LTE1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBJbiB0aGUgbWlwczE2IGxpL25lZyBzcGxpdHRlciwgdXNlIFNJbW9kZSBmb3IKCXRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgbGkgYXMgd2VsbCBhcyBmb3IgdGhlIG5lZy4KCjIwMDQtMDctMTUgIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQHJlZGhhdC5jb20+CgoJZysrLzE1ODYxCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2J1aWxkX3N0YXRpY19jZHRvcik6IEFkZCBwcmlvcml0eSBhcmd1bWVudC4KCSogY2dyYXBoLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbi4KCSogYy1kZWNsLmMgKGJ1aWxkX2NkdG9yKTogVXBkYXRlIGNhbGwgd2l0aCBkZWZhdWx0IHByaW9yaXR5LgoJKiBjb3ZlcmFnZS5jIChjcmVhdGVfY292ZXJhZ2UpOiBEaXR0by4KCSogdHJlZS1tdWRmbGFwLmMgKG1mX2luaXRfZm5kZWNsKTogTmV3IHRyZWUuCgkobXVkZmxhcF9pbml0KTogU2V0IGl0LgoJKG11ZGZsYXBfcmVnaXN0ZXJfY2FsbCk6IEFycmFuZ2UgdG8gY2FsbCBfX21mX2luaXQgYmVmb3JlIHRoZSBmaXJzdAoJX19tZl9yZWdpc3RlciBjYWxsLgoJKG11ZGZsYXBfZmluaXNoX2ZpbGUpOiBNYXJrIHRoZSBtdWRmbGFwIHN0YXRpYyBpbml0aWFsaXplciBhcyBleHRyYQoJaGlnaCBwcmlvcml0eSwgdG8gYmVhdCBhbGwgQysrIHN0YXRpYyBjb25zdHJ1Y3RvcnMuCgoyMDA0LTA3LTE1ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogbG9vcC5jIChjaGVja19pbnNuX2Zvcl9naXZzKTogUmVzdG9yZSBjaGVjayBmb3IgY29kZSBsYWJlbHMgdGhhdCB3YXMKCWFjY2lkZW50YWxseSBkZWxldGVkIGJ5IGEgcmVjZW50IGNoZWNraW4uCgoyMDA0LTA3LTE1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmVjLmggKFZFQ19UX3RydW5jYXRlKTogQWxsb3cgdHJ1bmNhdGlvbiBvZiBhbiBlbXB0eSB2ZWN0b3IuCgkoVkVDX1RfcXVpY2tfaW5zZXJ0LCBWRUNfVF9vcmRlcmVkX3JlbW92ZSk6IEZpeCBzaXplb2YoVCkgdGhpbmtvLgoKMjAwNC0wNy0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IEZpeCBjYXN0cyBsYXN0IGNoYW5nZS4KCjIwMDQtMDctMTUgIFBhdWwgQnJvb2sJPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfYmVnaW5fcHJvbG9ndWUpOiBSZW5hbWUgSUE2NF9VTldJTkRfSU5GTwoJdG8gVEFSR0VUX1VOV0lORF9JTkZPLgoJKiBleGNlcHQuYyAob3V0cHV0X2Z1bmN0aW9uX2V4Y2VwdGlvbl90YWJsZSk6IERpdHRvLgoJKiBleGNlcHQuaDogRGl0dG8uCgkqIG9wdHMuYyAoZGVjb2RlX29wdGlvbnMpOiBEaXR0by4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfaGFuZGxlX2ZpbmFsKTogRGl0dG8uCgkqIGZpbmFsLmMgKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogRGl0dG8uCgkoZmluYWxfc2Nhbl9pbnNuLCBmaW5hbF9zY2FuX2luc24pOiBSZXBsYWNlIElBNjRfVU5XSU5EX0VNSVQgd2l0aAoJdGFyZ2V0IGhvb2suCgkqIHRhcmdob29rcy5oIChkZWZhdWx0X3Vud2luZF9lbWl0KTogRGVjbGFyZS4KCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfdW53aW5kX2VtaXQpOiBOZXcgZnVuY3Rpb24uCgkqIHRhcmdldC1kZWYuaDogRGVmaW5lIGFuZCB1c2UgVEFSR0VUX1VOV0lORF9FTUlULgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBBZGQgdW53aW5kX2VtaXQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoVEFSR0VUX1VOV0lORF9FTUlUKTogRGVmaW5lLgoJKiBjb25maWcvaWE2NC9pYTY0Lmg6IFJlbmFtZSBJQTY0X1VOV0lORF9JTkZPIHRvIFRBUkdFVF9VTldJTkRfSU5GTy4KCVJlbW92ZSBJQTY0X1VOV0lORF9FTUlULgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgVEFSR0VUX1VOV0lORF9FTUlUIGFuZCBUQVJHRVRfVU5XSU5EX0lORk8uCgoyMDA0LTA3LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogSGFuZGxlIFNTQV9OQU1FLgoKMjAwNC0wNy0xNCAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCVBSIHRhcmdldC8xNjMyNQoJKiBjb25maWcvbWlwcy9taXBzLmggKFNUQVJUSU5HX0ZSQU1FX09GRlNFVCk6IFdoZW4gZmxhZ19wcm9maWxlX3ZhbHVlCglhbmQgISBUQVJHRVRfNjRCSVQsIGluY2x1ZGUgUkVHX1BBUk1fU1RBQ0tfU1BBQ0UuCgoyMDA0LTA3LTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2Fzc2lnbm1lbnQpOiBSZWVuYWJsZSBiaXRmaWVsZCArPSBvcHRpbWl6YXRpb25zLgoJVXNlIGFsaWFzIHNldCAwIGZvciBtZW1vcnksIGRvIHByb3BlciBtb2RlIGNhbGN1bGF0aW9ucyBhbmQgYWRqdXN0CglhZGRyZXNzIGZvciBtZW1vcmllcy4KCjIwMDQtMDctMTQgIFBlciBCb3RobmVyCSA8cGVyQGJvdGhuZXIuY29tPgoKCSogaW5wdXQuaDogSWYgVVNFX01BUFBFRF9MT0NBVElPTiwgZGVmaW5lIHNlcGFyYXRlIGV4cGFuZGVkX2xvY2F0aW9uCglzdHJ1Y3R1cmUgd2l0aCBleHRyYSBjb2x1bW4gZmllbGQuCgkqIHRyZWUuYyAoZXhwYW5kX2xvY2F0aW9uKTogQWxzbyBmaWxsIGluIGNvbHVtbiBmaWVsZC4KCSogZ2VuZ3R5cGUtbGV4Lmw6IElnbm9yZSBleHBhbmRlZF9sb2NhdGlvbiB0eXBlZGVmLCBzaW56ZSBnZW5ndHlwZQoJZ2V0cyBjb25mdXNlZCBieSB0aGUgdHdvIGNvbmRpdGlvbmFsbHktY29tcGlsZWQgZGVmaW5pdGlvbnMuCgoyMDA0LTA3LTE0ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDQtMDctMTQgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9jb21wYXJlKTogQWxsb3cgT1JERVJFRAoJY29tcGFyaXNpb24gb2YgVEZtb2RlLgoKMjAwNC0wNy0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9naW1wbGlmeV92YV9hcmdfMSk6IE1vdmUgaW5kaXJlY3QgLi4uCgkoYWxwaGFfZ2ltcGxpZnlfdmFfYXJnKTogLi4uIGhhbmRsaW5nIGhlcmUuICBVc2UgcGFzc19ieV9yZWZlcmVuY2UuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9naW1wbGlmeV92YV9hcmdfZXhwcik6IFVzZSBwYXNzX2J5X3JlZmVyZW5jZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2dpbXBsaWZ5X3ZhX2FyZyk6IExpa2V3aXNlLgoJKiBjb25maWcvaTg2MC9pODYwLmMgKGk4NjBfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2dpbXBsaWZ5X3ZhX2FyZyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9naW1wbGlmeV92YV9hcmdfZXhwcik6IExpa2V3aXNlLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jICh4dGVuc2FfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBMaWtld2lzZS4KCjIwMDQtMDctMTQgIE1pa2UgU3R1bXAJPG1yc0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmggKFdJTlRfVFlQRSk6IERlZmluZSB0byBiZSBpbnQgdG8gbWF0Y2gKCXN5c3RlbSBoZWFkZXIgZmlsZXMuCgoyMDA0LTA3LTE0ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBDaGVjayBmb3IgYXJncwoJdGhhdCBtdXN0IGJlIHBhc3NlZCBpbiB0aGUgc3RhY2suCgkoeHRlbnNhX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogU2tpcCBzcGVjaWFsLWNhc2UgcGFkZGluZyBmb3Igc21hbGwKCWFyZ3VtZW50cyBpZiB0aGUgc2l6ZSBpcyBub3QgYSBjb25zdGFudC4KCjIwMDQtMDctMTQgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogYy10eXBlY2suYyAoZW1pdF9zaWRlX2VmZmVjdF93YXJuaW5ncyk6IFVzZSBFWFBSX0hBU19MT0NBVElPTgoJaW5zdGVhZCBvZiBFWFBSX0xPQ1VTIGluIGEgYm9vbGVhbiBjb250ZXh0LCB3aGljaCBpcyBhbHdheXMgdHJ1ZQoJaWYgLS1lbmFibGUtbWFwcGVkLWxvY2F0aW9uLgoJKiBzdG10LmMgKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogTGlrZXdpc2UuICBBbHNvIHVzZSBFWFBSX0xPQ0FUSU9OLgoKMjAwNC0wNy0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRvbWluYW5jZS5jIChzdHJ1Y3QgZG9tX2luZm8pOiBBZGQgZmFrZV9leGl0X2VkZ2UuCgkoaW5pdF9kb21faW5mbyk6IEFsbG9jYXRlIGl0LgoJKGZyZWVfZG9tX2luZm8pOiBGcmVlIGl0LgoJKGNhbGNfZGZzX3RyZWUpOiBTZXQgaXQuICBIYW5kbGUgbm9yZXR1cm4gYW5kIGluZmluaXRlIGxvb3BzCglpbiB0d28gcGFzc2VzLgoJKGNhbGNfaWRvbXMpOiBIb25vciBmYWtlX2V4aXRfZWRnZS4KCjIwMDQtMDctMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX3JlZ19yaHMsIGlzX2dpbXBsZV9tZW1fcmhzKTogTmV3IGZucy4KCShyaHNfdGVzdF9mb3IpOiBOZXcgZm4uCgkoaXNfZ2ltcGxlX3RtcF9yaHMpOiBSZW5hbWUgZnJvbSBpc19naW1wbGVfcmhzLgoJKiB0cmVlLWdpbXBsZS5oOiBEZWNsYXJlIHRoZW0uCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X21vZGlmeV9leHByKTogVXNlIHRoZSBuZXcgZm5zLgoKMjAwNC0wNy0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhcm1fdmFfYXJnKTogUmVtb3ZlLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fdmFfYXJnKTogUmVtb3ZlLgoJKGFybV9pbml0X2V4cGFuZGVycyk6IEZpeCBhbGlnbm1lbnQgb2YgYXJnX3BvaW50ZXJfcnR4LgoJKiBjb25maWcvYXJtL2FybS5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoyMDA0LTA3LTE0ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuYyAoZml4X3JhbmdlKTogTmV3IGZ1bmN0aW9uIHRvIG1hcmsgYSByYW5nZShzKSBvZiByZWdpc3RlcnMgYXMKCWZpeGVkIHJlZ2lzdGVycy4KCShvdmVycmlkZV9vcHRpb25zKTogQ2FsbCBmaXhfcmFuZ2UgaWYgdGhlIC1tZml4ZWQtcmFuZ2Ugb3B0aW9uIHN0cmluZwoJaXMgbm90IGVtcHR5LgoJKiBwYS5oIChUQVJHRVRfT1BUSU9OUyk6IEFkZCAtbWZpeGVkLXJhbmdlIG9wdGlvbi4KCSogZG9jL2ludm9rZS50ZXhpICgtbWZpeGVkLXJhbmdlKTogRG9jdW1lbnQgbmV3IG9wdGlvbi4KCjIwMDQtMDctMTQgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGZ1bmN0aW9uX2FyZ19wYWRkaW5nKTogRG8gbm90IHBhZCBTRm1vZGUKCWZvciBUQVJHRVRfNjRCSVQuCgkocnM2MDAwX2dpbXBsaWZ5X3ZhX2FyZyk6IFVzZSBzaXplX2ludCBpbnN0ZWFkIG9mIGJ1aWxkX2ludF8yLgoKMjAwNC0wNy0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHBtZWQuYyAoZXhwYW5kX3NkaXZfcG93Mik6IE5ldyBmdW5jdGlvbiB0byBleHBhbmQgc2lnbmVkIGRpdmlzaW9uCglieSBhIHBvc2l0aXZlIHBvd2VyIG9mIHR3bywgc3BsaXQgb3V0IGZyb20gZXhwYW5kX2Rpdm1vZC4gIFByb3ZpZGUKCWFuIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiB3aGVuIHNoaWZ0cyBhcmUgZXhwZW5zaXZlLiAgTG93ZXIgdGhlCgl0aHJlc2hvbGQgZm9yIHVzaW5nIGEgYnJhbmNobGVzcyBpbXBsZW1lbnRhdGlvbiB0byBCUkFOQ0hfQ09TVCA+PSAyLgoJKGV4cGFuZF9kaXZtb2QpOiBDYWxsIGV4cGFuZF9zZGl2X3BvdzIgZm9yIHN1aXRhYmxlIGRpdmlzaW9ucy4KCjIwMDQtMDctMTQgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiB0cmVlLWRmYS5jIChtYWtlX3JlbmFtZV90ZW1wKTogKlJlYWxseSogd29yayBqdXN0CglsaWtlIGNyZWF0ZV90bXBfdmFyIGlmIGNhbGxlZCB3aGlsZSBvdXRzaWRlIFNTQSBmb3JtLgoKMjAwNC0wNy0xNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoInVkaXZzaTMiKTogRW5zdXJlIHRyYXAgaXMgZ2VuZXJhdGVkCglmb3IgZGl2aXNpb24gYnkgemVyby4KCSgidW1vZHNpMyIpOiBMaWtld2lzZS4KCjIwMDQtMDctMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19vdXRwdXRfbW92ZSk6IFdoZW4gZ2VuZXJhdGluZyBtaXBzMTYgY29kZSwKCWZvcmNlIGxvYWRzIG9mIG5lZ2F0aXZlIGNvbnN0YW50cyB0byBiZSBzcGxpdC4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKm1vdmhpX21pcHMxNiwgKm1vdnFpX21pcHMxNik6IExpa2V3aXNlLgoJR2VuZXJhbGl6ZSBTSW1vZGUgbGkvbmVnIHNwbGl0dGVyIHRvIGNvcGUgd2l0aCBvdGhlciBtb2Rlcy4KCjIwMDQtMDctMTQgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBleHBtZWQuYzogUmVtb3ZlIG1vcmUgcmVmZXJlbmNlcyB0byBRVUVVRUQgaW4gdGhlIGNvbW1lbnRzLgoJKiBleHByLmM6IExpa2V3aXNlLgoKMjAwNC0wNy0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVJldmVydDoKCTIwMDQtMDctMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19wYXNzX2J5X3JlZmVyZW5jZSk6IEhhbmRsZSBtb2RlIHNpemVzCgljb3JyZWN0bHkuCgoyMDA0LTA3LTE0ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogdHJlZS1kZmEuYyAobWFrZV9yZW5hbWVfdGVtcCk6IFdvcmsganVzdCBsaWtlCgljcmVhdGVfdG1wX3ZhciBpZiBjYWxsZWQgd2hpbGUgb3V0c2lkZSBTU0EgZm9ybS4KCjIwMDQtMDctMTQgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBleHByLmMgKGVucXVldWVfaW5zbiwgZmluaXNoX2V4cHJfZm9yX2Z1bmN0aW9uLAoJcHJvdGVjdF9mcm9tX3F1ZXVlLCBxdWV1ZWRfc3ViZXhwX3AsIG1hcmtfcXVldWUsCgllbWl0X2luc25zX2VucXVldWVkX2FmdGVyX21hcmssIGVtaXRfcXVldWUsCglleHBhbmRfaW5jcmVtZW50KTogUmVtb3ZlLgoJKHN0b3JlX2NvbnN0cnVjdG9yKTogRXhwYW5kIGluY3JlbWVudCBhcyBhbiBhc3NpZ25tZW50LgoJKGV4cGFuZF9leHByX3JlYWxfMSA8Y2FzZSBQUkVJTkNSRU1FTlRfRVhQUiwKCWNhc2UgUFJFREVDUkVNRU5UX0VYUFIsIGNhc2UgUE9TVElOQ1JFTUVOVF9FWFBSLAoJY2FzZSBQT1NUREVDUkVNRU5UX0VYUFI+KTogQWJvcnQuCgkqIGV4cHIuaCAoUVVFVUVEX1ZBUiwgUVVFVUVEX0lOU04sIFFVRVVFRF9DT1BZLAoJUVVFVUVEX0JPRFksIFFVRVVFRF9ORVhULCBmaW5pc2hfZXhwcl9mb3JfZnVuY3Rpb24sCglwcm90ZWN0X2Zyb21fcXVldWUsIGVtaXRfcXVldWUsIHF1ZXVlZF9zdWJleHBfcCk6IFJlbW92ZS4KCSogZnVuY3Rpb24uaCAocGVuZGluZ19jaGFpbiwgeF9wZW5kaW5nX2NoYWluKTogUmVtb3ZlLgoJKiBydGwuZGVmIChRVUVVRUQpOiBSZW1vdmUuCgoJKiBlbWl0LXJ0bC5jIChjb3B5X2luc25fMSwgY29weV9tb3N0X3J0eCwKCXNldF91c2VkX2ZsYWdzLCB2ZXJpZnlfcnR4X3NoYXJpbmcpOiBSZW1vdmUgcmVmZXJlbmNlcyB0byBRVUVVRUQuCgkqIGdlbmF0dHJ0YWIuYyAoYXR0cl9jb3B5X3J0eCwgY2xlYXJfc3RydWN0X2ZsYWcsCgllbmNvZGVfdW5pdHNfbWFzayk6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jIChlcXVpdl9pbml0X3Zhcmllc19wKTogTGlrZXdpc2UuCgkqIHJ0bC5jIChjb3B5X3J0eCk6IExpa2V3aXNlLgoJKiBydGxhbmFsLmMgKHJ0eF91bnN0YWJsZV9wLCBydHhfdmFyaWVzX3ApOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2dlbl9zdWJyZWcpOiBMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChsZWdpdGltYXRlX3BpY19vcGVyYW5kX3ApOiBMaWtld2lzZS4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluLCBleHBhbmRfYnVpbHRpbl9hcHBseSwKCWV4cGFuZF9idWlsdGluX21hdGhmbiwgZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzIsCglleHBhbmRfYnVpbHRpbl9tYXRoZm5fMywgZXhwYW5kX2J1aWx0aW5fc2V0am1wX3NldHVwKToKCVJlbW92ZSBjYWxscyB0byBlbWl0X3F1ZXVlIGFuZCBwcm90ZWN0X2Zyb21fcXVldWUuCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsLCBwcmVjb21wdXRlX2FyZ3VtZW50cywKCXByZWNvbXB1dGVfcmVnaXN0ZXJfcGFyYW1ldGVycywgcnR4X2Zvcl9mdW5jdGlvbl9jYWxsLAoJc3RvcmVfb25lX2FyZyk6IExpa2V3aXNlLgoJKiBkb2p1bXAuYyAoZG9fY29tcGFyZV9hbmRfanVtcCwgZG9fanVtcCk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAobWVtb3J5X2FkZHJlc3MpOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKGNsZWFyX2J5X3BpZWNlc18xLCBjbGVhcl9zdG9yYWdlLAoJY2xlYXJfc3RvcmFnZV92aWFfbGliY2FsbCwgZW1pdF9ncm91cF9sb2FkLAoJZW1pdF9ncm91cF9zdG9yZSwgZW1pdF9zdG9yZV9mbGFnLAoJZXhwYW5kX2V4cHJfcmVhbF8xLCBzdG9yZV9ieV9waWVjZXMsCglzdG9yZV9jb25zdHJ1Y3Rvciwgc3RvcmVfZXhwciwgdHJ5X2Nhc2VzaSwKCXRyeV90YWJsZWp1bXApOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoZXhwYW5kX3BlbmRpbmdfc2l6ZXMpOiBMaWtld2lzZS4KCSogb3B0YWJzLmMgKGVtaXRfY21wX2FuZF9qdW1wX2luc25zLAoJZW1pdF9jb25kaXRpb25hbF9hZGQsIGVtaXRfY29uZGl0aW9uYWxfbW92ZSwKCWV4cGFuZF9maXgsIGV4cGFuZF9mbG9hdCwgcHJlcGFyZV9jbXBfaW5zbik6IExpa2V3aXNlLgoJKiBzdG10LmMgKGVtaXRfY2FzZV9iaXRfdGVzdHMsCglleHBhbmRfYXNtX2V4cHIsIGV4cGFuZF9jb21wdXRlZF9nb3RvLAoJZXhwYW5kX2RlY2xfaW5pdCwgZXhwYW5kX2VuZF9jYXNlX3R5cGUsCglleHBhbmRfZW5kX3N0bXRfZXhwciwgZXhwYW5kX2V4cHJfc3RtdF92YWx1ZSwKCWV4cGFuZF9yZXR1cm4sIGV4cGFuZF9zdGFydF9jYXNlLAoJb3B0aW1pemVfdGFpbF9yZWN1cnNpb24pOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2V4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9leHBhbmRfY21wbWVtKTogTGlrZXdpc2UuCgoyMDA0LTA3LTE0ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIHZlYy5oOiBDb21tZW50IGZpeC4KCjIwMDQtMDctMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBBZGQgY2FsbHMucGFzc19ieV9yZWZlcmVuY2UuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKiBmdW5jdGlvbi5jIChwYXNzX2J5X3JlZmVyZW5jZSk6IFVzZSB0aGUgaG9vay4KCSogc3lzdGVtLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFBvaXNvbi4KCSogdGFyZ2hvb2tzLmMsIHRhcmdob29rcy5oIChob29rX3Bhc3NfYnlfcmVmZXJlbmNlX2ZhbHNlKTogTmV3LgoJKGhvb2tfcGFzc19ieV9yZWZlcmVuY2VfbXVzdF9wYXNzX2luX3N0YWNrKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoZnVuY3Rpb25fYXJnKTogRG9uJ3QgcXVlcnkgcGFzcy1ieS1yZWYuCgkoYWxwaGFfcGFzc19ieV9yZWZlcmVuY2UpOiBOZXcuCgkoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogUmVtb3ZlLgoJKiBjb25maWcvYXJjL2FyYy5jIChhcmNfcGFzc19ieV9yZWZlcmVuY2UpOiBOZXcuCgkoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKiBjb25maWcvYXJjL2FyYy5oIChGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UpOiBSZW1vdmUuCgkoRlVOQ1RJT05fQVJHX0NBTExFRV9DT1BJRVMpOiBUcnVlLgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX2Z1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IFJlbW92ZS4KCSogY29uZmlnL2FybS9hcm0uYyAoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKGFybV9wYXNzX2J5X3JlZmVyZW5jZSk6IFJlbmFtZSBmcm9tIGFybV9mdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UuCgkqIGNvbmZpZy9hcm0vYXJtLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCSogY29uZmlnL2M0eC9jNHguaCAoRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogUmVtb3ZlLgoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKGNyaXNfcGFzc19ieV9yZWZlcmVuY2UpOiBOZXcuCgkoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKEZVTkNUSU9OX0FSRyk6IERvbid0IHF1ZXJ5IHBhc3MtYnktcmVmLgoJKEZVTkNUSU9OX0lOQ09NSU5HX0FSRywgRlVOQ1RJT05fQVJHX0FEVkFOQ0UpOiBMaWtld2lzZS4KCShGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UpOiBSZW1vdmUuCgkqIGNvbmZpZy9mcjMwL2ZyMzAuYyAoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKiBjb25maWcvZnIzMC9mcjMwLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCSogY29uZmlnL2Zydi9mcnYtcHJvdG9zLmggKGZydl9mdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBLaWxsLgoJKiBjb25maWcvZnJ2L2Zydi5jIChUQVJHRVRfUEFTU19CWV9SRUZFUkVOQ0UpOiBOZXcuCgkoZnJ2X2Z1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IFJlbW92ZS4KCSogY29uZmlnL2Zydi9mcnYuaCAoRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogUmVtb3ZlLgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBSZW1vdmUuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKGl4ODZfcGFzc19ieV9yZWZlcmVuY2UpOiBSZW5hbWUgZnJvbSBmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogUmVtb3ZlLgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChpYTY0X2Z1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IEtpbGwuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKGlhNjRfcGFzc19ieV9yZWZlcmVuY2UpOiBSZW5hbWUgZnJvbQoJaWE2NF9mdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogUmVtb3ZlLgoJKiBjb25maWcvaXAyay9pcDJrLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCSogY29uZmlnL2lxMjAwMC9pcTIwMDAtcHJvdG9zLmggKGZ1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IEtpbGwuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmMgKFRBUkdFVF9QQVNTX0JZX1JFRkVSRU5DRSk6IE5ldy4KCShpcTIwMDBfcGFzc19ieV9yZWZlcmVuY2UpOiBSZW5hbWUgZnJvbSBmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCShGVU5DVElPTl9BUkdfQ0FMTEVFX0NPUElFUyk6IERvbid0IHJlZmVyZW5jZSBwYXNzLWJ5LXJlZi4KCSogY29uZmlnL20zMnIvbTMyci1wcm90b3MuaCAobTMycl9wYXNzX2J5X3JlZmVyZW5jZSk6IFJlbW92ZS4KCSogY29uZmlnL20zMnIvbTMyci5jIChUQVJHRVRfUEFTU19CWV9SRUZFUkVOQ0UpOiBOZXcuCgkobTMycl9wYXNzX2J5X3JlZmVyZW5jZSk6IEFkanVzdCBwcm90b3R5cGUuICBNYWtlIHN0YXRpYy4KCUhhbmRsZSBtb2RlIHNpemVzIGNvcnJlY3RseS4KCSogY29uZmlnL20zMnIvbTMyci5oIChGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UpOiBSZW1vdmUuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEtcHJvdG9zLmgsIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYwoJKG02OGhjMTFfZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogUmVtb3ZlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCShGVU5DVElPTl9BUkdfQ0FMTEVFX0NPUElFUyk6IERvbid0IHJlZmVyZW5jZSBwYXNzLWJ5LXJlZi4KCSogY29uZmlnL21jb3JlL21jb3JlLmMgKFRBUkdFVF9QQVNTX0JZX1JFRkVSRU5DRSk6IE5ldy4KCSogY29uZmlnL21jb3JlL21jb3JlLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogUmVtb3ZlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKFRBUkdFVF9QQVNTX0JZX1JFRkVSRU5DRSk6IE5ldy4KCShtaXBzX3ZhX2FyZyk6IFVzZSBwYXNzX2J5X3JlZmVyZW5jZS4KCShtaXBzX3Bhc3NfYnlfcmVmZXJlbmNlKTogUmVuYW1lIGZyb20gZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlLgoJSGFuZGxlIG1vZGUgc2l6ZXMgY29ycmVjdGx5LgoJKiBjb25maWcvbWlwcy9taXBzLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCShGVU5DVElPTl9BUkdfQ0FMTEVFX0NPUElFUyk6IERvbid0IHJlZmVyZW5jZSBwYXNzLWJ5LXJlZi4KCSogY29uZmlnL21taXgvbW1peC1wcm90b3MuaCAobW1peF9mdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBLaWxsLgoJKiBjb25maWcvbW1peC9tbWl4LmMgKFRBUkdFVF9QQVNTX0JZX1JFRkVSRU5DRSk6IE5ldy4KCShtbWl4X3Bhc3NfYnlfcmVmZXJlbmNlKTogUmVuYW1lIGZyb20KCW1taXhfZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlLgoJKiBjb25maWcvbW1peC9tbWl4LmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCShGVU5DVElPTl9BUkdfQ0FMTEVFX0NPUElFUyk6IFRydWUuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKG1uMTAzMDBfcGFzc19ieV9yZWZlcmVuY2UpOiBOZXcuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogUmVtb3ZlLgoJKEZVTkNUSU9OX0FSR19DQUxMRUVfQ09QSUVTKTogVHJ1ZS4KCSogY29uZmlnL3BhL3BhLmMgKHBhX3Bhc3NfYnlfcmVmZXJlbmNlKTogTmV3LgoJKFRBUkdFVF9QQVNTX0JZX1JFRkVSRU5DRSk6IE5ldy4KCSogY29uZmlnL3BhL3BhLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCShGVU5DVElPTl9BUkdfQ0FMTEVFX0NPUElFUyk6IFRydWUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBLaWxsLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChUQVJHRVRfUEFTU19CWV9SRUZFUkVOQ0UpOiBOZXcuCgkocnM2MDAwX3Bhc3NfYnlfcmVmZXJlbmNlKTogUmVuYW1lIGZyb20gZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UpOiBSZW1vdmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogS2lsbC4KCSogY29uZmlnL3MzOTAvczM5MC5jIChUQVJHRVRfUEFTU19CWV9SRUZFUkVOQ0UpOiBOZXcuCgkoczM5MF9wYXNzX2J5X3JlZmVyZW5jZSk6IFJlbmFtZSBmcm9tCglzMzkwX2Z1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZS4KCShzMzkwX2Z1bmN0aW9uX2FyZ19hZHZhbmNlKTogRG9uJ3QgcXVlcnkgcGFzcy1ieS1yZWYuCgkoczM5MF9mdW5jdGlvbl9hcmcpOiBMaWtld2lzZS4KCShzMzkwX2dpbXBsaWZ5X3ZhX2FyZyk6IFVzZSBwYXNzX2J5X3JlZmVyZW5jZS4KCShzMzkwX2NhbGxfc2F2ZWRfcmVnaXN0ZXJfdXNlZCk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCSogY29uZmlnL3NoL3NoLmMgKFRBUkdFVF9QQVNTX0JZX1JFRkVSRU5DRSk6IE5ldy4KCShzaGNvbXBhY3RfYnlyZWYsIHNoX3Bhc3NfYnlfcmVmZXJlbmNlKTogTmV3LgoJKiBjb25maWcvc2gvc2guaCAoRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogUmVtb3ZlLgoJKFNIQ09NUEFDVF9CWVJFRik6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLXByb3Rvcy5oIChmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBLaWxsLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKHNwYXJjX3Bhc3NfYnlfcmVmZXJlbmNlKTogUmVuYW1lIGZyb20gZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlLgoJKHNwYXJjX2dpbXBsaWZ5X3ZhX2FyZyk6IFVzZSBwYXNzX2J5X3JlZmVyZW5jZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5jIChUQVJHRVRfUEFTU19CWV9SRUZFUkVOQ0UpOiBOZXcuCgkodjg1MF9wYXNzX2J5X3JlZmVyZW5jZSk6IE5ldy4KCSogY29uZmlnL3Y4NTAvdjg1MC5oIChGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UpOiBSZW1vdmUuCgkoRlVOQ1RJT05fQVJHX0NBTExFRV9DT1BJRVMpOiBUcnVlLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1BBU1NfQllfUkVGRVJFTkNFKTogVXBkYXRlIGZyb20KCUZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSBkb2NzLgoKMjAwNC0wNy0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSAgICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX3ZhX2FyZyk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL21pcHMuYzogSW5jbHVkZSB0cmVlLWdpbXBsZS5oLgoJKFRBUkdFVF9HSU1QTElGWV9WQV9BUkdfRVhQUik6IERlZmluZS4KCShtaXBzX2FyZ19pbmZvKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgb2YgbXVzdF9wYXNzX2luX3N0Y2sgYXJncy4KCShtaXBzX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogUmV3cml0dGVuIGZyb20gbWlwc192YV9hcmcuCgkoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogUmV0dXJuIHRydWUgaWYgbXVzdF9wYXNzX2luX3N0YWNrLgoKMjAwNC0wNy0xMyAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9naW1wbGlmeV92YV9hcmdfZXhwcik6IFN3YXAKCWFyZ3VtZW50cyBmb3IgQ09ORF9FWFBSIGluIGJpZy1lbmRpYW4gYWRqdXN0bWVudCBjb2RlLgoKMjAwNC0wNy0xMyAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLTY0LmggKEFSR19QT0lOVEVSX1JFR05VTSwgU1RBVElDX0NIQUlOX1JFR05VTSk6IERlbGV0ZS4KCSogcGEuaCAoQVJHX1BPSU5URVJfUkVHTlVNLCBTVEFUSUNfQ0hBSU5fUkVHTlVNKTogTW9kaWZ5IGZvciBocHBhNjQuCgkqIHBhMzItcmVncy5oIChSRUdfQUxMT0NfT1JERVIpOiBSZW9yZGVyIGNhbGxlci1zYXZlZCByZWdpc3RlcnMuCgkqIHBhNjQtcmVncy5oIChSRUdfQUxMT0NfT1JERVIpOiBMaWtld2lzZS4KCjIwMDQtMDctMTMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE2NDQzCgkqIHRyZWUtc3NhLWFsaWFzLmM6IEFkZCBtb3JlIGRlc2NyaXB0aW9uIGZvcgoJQ0FMTF9DTE9CQkVSRURfVkFSUyBhbmQgQUREUkVTU0FCTEVfVkFSUy4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2FzbV9leHByX29wZXJhbmRzKTogUmUtb3JkZXIgdGhlCgljbG9iYmVyaW5nIG9mIGNhbGwtY2xvYmJlcmVkIGFuZCBhZGRyZXNzYWJsZSB2YXJpYWJsZXMuICBJZgoJdGhlcmUgYXJlIGFueSBiZWZvcmUgYWxpYXNlcyBoYXZlIGJlZW4gY29tcHV0ZWQsIGFkZCB0aGVtLgoKMjAwNC0wNy0xMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLW9wdGltaXplLmMgKGV4ZWN1dGVfdG9kbyk6IEZsdXNoIERVTVBfRklMRSBiZWZvcmUKCXZlcmlmaWNhdGlvbi4KCjIwMDQtMDctMTMgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9naW1wbGlmeV92YV9hcmcpOiBVc2Ugc2l6ZV9pbnQgaW5zdGVhZAoJb2YgYnVpbGRfaW50XzIuICBDb252ZXJ0IGJvdGggb3BlcmFuZHMgb2YgUExVU19FWFBSIGFuZCBNVUxUX0VYUFIKCXRvIHRoZSBzYW1lIHR5cGUuCgoyMDA0LTA3LTEzICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBIYW5kbGUgLS1uby1kZW1hbmdsZSBhbmQgLS1kZW1hbmdsZSBmbGFncy4KCjIwMDQtMDctMTMgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMtY29tbW9uKTogQWRkIHRyZWUtZGF0YS1yZWYuby4KCSh0cmVlLXNjYWxhci1ldm9sdXRpb24ubyk6IEFkZCBtaXNzaW5nIGRlcGVuZGVuY2VzIG9uIHRyZWUtcGFzcy5oIGZsYWdzLmguCgkodHJlZS1kYXRhLXJlZi5vKTogTmV3IHJ1bGUuCgkqIGxhbWJkYS5oOiBOZXcgZmlsZS4KCSogdHJlZS1kYXRhLXJlZi5jOiBOZXcgZmlsZS4KCSogdHJlZS1kYXRhLXJlZi5oOiBOZXcgZmlsZS4KCSogdHJlZS5jIChpbnRfY3N0X3ZhbHVlLCB0cmVlX2ZvbGRfZ2NkKTogTmV3IGZ1bmN0aW9ucy4KCSogdHJlZS5oIChpbnRfY3N0X3ZhbHVlLCB0cmVlX2ZvbGRfZ2NkKTogRGVjbGFyZWQgaGVyZS4KCjIwMDQtMDctMTMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdGFyZ2V0LzEzOTI2CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCAob3V0cHV0X3VicmFuY2gpOiBOZXcgcHJvdG90eXBlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAob3V0cHV0X3VicmFuY2gpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoanVtcCBwYXR0ZXJuKTogVXNlIGl0LgoKMjAwNC0wNy0xMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTY0OTQKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKG91dHB1dF9jYnJhbmNoKTogUHJvcGVybHkgZ3VhcmQKCXRoZSBjb2RlIGhhbmRsaW5nIGZhciBicmFuY2hlcyB3aXRoIFRBUkdFVF9WOS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChsZW5ndGggYXR0cmlidXRlKTogRG9jdW1lbnQgdGhlCglzaWRlLWVmZmVjdCBvZiBoYXZpbmcgYSBsZW5ndGggZ3JlYXRlciBvciBlcXVhbCB0byAzLgoKMjAwNC0wNy0xMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCSAgICBMbG95ZCBQYXJrZXMgIDxsbG95ZEBtdXN0LWhhdmUtY29mZmVlLmdlbi5uej4KCglQUiB0YXJnZXQvMTUxODYKCSogY29uZmlnL3NwYXJjL3NvbDItYmkuaCAoTElOS19BUkNINjRfU1BFQ19CQVNFKTogUGFzcwoJL3Vzci91Y2JsaWIvc3BhcmN2OSBhcyAtUiBwYXRoIHdoZW4gLWNvbXBhdC1ic2QgaXMgc3BlY2lmaWVkLgoKMjAwNC0wNy0xMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCSAgICBNYXJ0aW4gU2Vib3IgIDxzZWJvckByb2d1ZXdhdmUuY29tPgoKCVBSIHRhcmdldC8xMjYwMgoJKiBkb2MvaW52b2tlLnRleGkgKFNQQVJDIG9wdGlvbnMpOiBEb2N1bWVudCAtdGhyZWFkcwoJYW5kIC1wdGhyZWFkcyBvbiBTb2xhcmlzLgoKMjAwNC0wNy0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKHN0ZF9naW1wbGlmeV92YV9hcmdfZXhwcik6IEhhbmRsZSB0eXBlcyBwYXNzZWQKCWJ5IHJlZmVyZW5jZS4KCShpbmRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBSZW1vdmUuCgkqIHRyZWUuaCAoaW5kX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogUmVtb3ZlLgoJKiBjb25maWcvcGEvcGEuYyAoaHBwYV9naW1wbGlmeV92YV9hcmdfZXhwcik6IERvbid0IHVzZSBpdC4KCSogY29uZmlnL21taXgvbW1peC5jIChtbWl4X2Z1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IEFsbG93CglhcmdzcCB0byBiZSBudWxsLgoKCSogY29uZmlnL2FyYy9hcmMuYyAoYXJjX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogUmVtb3ZlLgoJKFRBUkdFVF9HSU1QTElGWV9WQV9BUkdfRVhQUik6IFJlbW92ZS4KCSogY29uZmlnL2NyaXMvY3Jpcy5jLCBjb25maWcvZnIzMC9mcjMwLmMsIGNvbmZpZy9mcnYvZnJ2LmMsCgljb25maWcvaXEyMDAwL2lxMjAwMC5jLCBjb25maWcvbTMyci9tMzJyLmMsIGNvbmZpZy9tbWl4L21taXguYywKCWNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYywgY29uZmlnL3Y4NTAvdjg1MC5jOiBTaW1pbGFybHkuCgoyMDA0LTA3LTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAocGFzc19ieV9yZWZlcmVuY2UpOiBOZXcuCgkoYXNzaWduX3Bhcm1fZmluZF9kYXRhX3R5cGVzKTogVXNlIGl0LgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogTGlrZXdpc2UuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IExpa2V3aXNlLgoJKiBleHByLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFJlbW92ZS4KCSogZnVuY3Rpb24uaCAocGFzc19ieV9yZWZlcmVuY2UpOiBEZWNsYXJlLgoKMjAwNC0wNy0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX01VU1RfUEFTU19JTl9TVEFDSyk6IE5ldy4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIGNhbGxzLm11c3RfcGFzc19pbl9zdGFjay4KCSogZXhwci5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIHN5c3RlbS5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBQb2lzb24uCgkqIHRyZWUuaCAobXVzdF9wYXNzX2luX3N0YWNrX3Zhcl9zaXplKTogRGVjbGFyZS4KCShtdXN0X3Bhc3NfaW5fc3RhY2tfdmFyX3NpemVfb3JfcGFkKTogRGVjbGFyZS4KCSogY2FsbHMuYyAobXVzdF9wYXNzX2luX3N0YWNrX3Zhcl9zaXplKTogTmV3LgoJKG11c3RfcGFzc19pbl9zdGFja192YXJfc2l6ZV9vcl9wYWQpOiBSZW5hbWUgZnJvbQoJZGVmYXVsdF9tdXN0X3Bhc3NfaW5fc3RhY2suCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jICh1bmljb3Nta19tdXN0X3Bhc3NfaW5fc3RhY2spOiBOZXcuCgkoVEFSR0VUX01VU1RfUEFTU19JTl9TVEFDSyk6IE5ldy4KCSogY29uZmlnL2FscGhhL3VuaWNvc21rLmggKE1VU1RfUEFTU19JTl9TVEFDSyk6IFJlbW92ZS4KCSogY29uZmlnL2ZyMzAvZnIzMC5jIChmcjMwX211c3RfcGFzc19pbl9zdGFjayk6IE5ldy4KCShUQVJHRVRfTVVTVF9QQVNTX0lOX1NUQUNLKTogTmV3LgoJKiBjb25maWcvZnIzMC9mcjMwLmggKE1VU1RfUEFTU19JTl9TVEFDSyk6IFJlbW92ZS4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X211c3RfcGFzc19pbl9zdGFjayk6IE5ldy4KCShUQVJHRVRfTVVTVF9QQVNTX0lOX1NUQUNLKTogTmV3LgoJKiBjb25maWcvZnJ2L2Zydi5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfbXVzdF9wYXNzX2luX3N0YWNrKTogUmVtb3ZlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKFRBUkdFVF9NVVNUX1BBU1NfSU5fU1RBQ0spOiBOZXcuCgkoaXg4Nl9tdXN0X3Bhc3NfaW5fc3RhY2spOiBNYWtlIHN0YXRpYy4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoVEFSR0VUX01VU1RfUEFTU19JTl9TVEFDSyk6IE5ldy4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAoVEFSR0VUX01VU1RfUEFTU19JTl9TVEFDSyk6IE5ldy4KCSogY29uZmlnL20zMnIvbTMyci5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS1wcm90b3MuaCAobWNvcmVfbXVzdF9wYXNzX29uX3N0YWNrKTogUmVtb3ZlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYyAoVEFSR0VUX01VU1RfUEFTU19JTl9TVEFDSyk6IE5ldy4KCShtY29yZV9tdXN0X3Bhc3Nfb25fc3RhY2spOiBSZW1vdmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoVEFSR0VUX01VU1RfUEFTU19JTl9TVEFDSyk6IE5ldy4KCSogY29uZmlnL21pcHMvbWlwcy5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIGNvbmZpZy9wYS9wYS5jIChUQVJHRVRfTVVTVF9QQVNTX0lOX1NUQUNLKTogTmV3LgoJKiBjb25maWcvcGEvcGEuaCAoTVVTVF9QQVNTX0lOX1NUQUNLKTogUmVtb3ZlLgoJKiBjb25maWcvcnM2MDAwL2FpeC5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9tdXN0X3Bhc3NfaW5fc3RhY2spOiBOZXcuCgkoVEFSR0VUX01VU1RfUEFTU19JTl9TVEFDSyk6IE5ldy4KCSogY29uZmlnL3NoL3NoLmMgKFRBUkdFVF9NVVNUX1BBU1NfSU5fU1RBQ0spOiBOZXcuCgkqIGNvbmZpZy9zaC9zaC5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChUQVJHRVRfTVVTVF9QQVNTX0lOX1NUQUNLKTogTmV3LgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoTVVTVF9QQVNTX0lOX1NUQUNLKTogUmVtb3ZlLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jIChUQVJHRVRfTVVTVF9QQVNTX0lOX1NUQUNLKTogTmV3LgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfTVVTVF9QQVNTX0lOX1NUQUNLKTogVXBkYXRlIGZyb20KCU1VU1RfUEFTU19JTl9TVEFDSy4KCgkqIGNhbGxzLmMsIGZ1bmN0aW9uLmMsIGNvbmZpZy9hbHBoYS9hbHBoYS5jLCBjb25maWcvYWxwaGEvYWxwaGEuaCwKCWNvbmZpZy9hbHBoYS91bmljb3Ntay5oLCBjb25maWcvYWxwaGEvdm1zLmgsIGNvbmZpZy9jNHgvYzR4LmMsCgljb25maWcvY3Jpcy9jcmlzLmgsIGNvbmZpZy9mcjMwL2ZyMzAuYywgY29uZmlnL2ZyMzAvZnIzMC5oLAoJY29uZmlnL2Zydi9mcnYuYywgY29uZmlnL2kzODYvaTM4Ni5jLCBjb25maWcvaXEyMDAwL2lxMjAwMC5jLAoJY29uZmlnL21jb3JlL21jb3JlLmMsIGNvbmZpZy9tY29yZS9tY29yZS5oLCBjb25maWcvbWlwcy9taXBzLmMsCgljb25maWcvbW1peC9tbWl4LmMsIGNvbmZpZy9tbWl4L21taXguaCwgY29uZmlnL3JzNjAwMC9yczYwMDAuYywKCWNvbmZpZy9zaC9zaC5jLCBjb25maWcvc2gvc2guaCwgY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMsCgljb25maWcveHRlbnNhL3h0ZW5zYS5jOiBVc2UgdGFyZ2V0IGhvb2suCgoyMDA0LTA3LTEzICBBbnRob255IEhlYWRpbmcgIDxhaGVhZGluZ0BqcG1vcmdhbi5jb20+CgoJKiBjb25maWd1cmUuYWMgKGdjY19jdl9hc19vZmZzZXRhYmxlX2xvMTApOiBGaXggYSB0eXBvLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDA0LTA3LTEzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIGZvciBNSVBTIC1tcm5hbWVzIG9wdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5oIChtaXBzX3JlZ19uYW1lcyk6IERvbid0IGRlY2xhcmUuCgkoTUFTS19OQU1FX1JFR1MpOiBEZWxldGUuICBTaHVmZmxlIG90aGVyIE1BU0tfKiB2YWx1ZXMgZG93bi4KCShUQVJHRVRfTkFNRV9SRUdTKTogRGVsZXRlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSAtbXJuYW1lcy4KCShSRUdJU1RFUl9OQU1FUyk6IEluaXRpYWxpc2Ugd2l0aCB0aGUgb2xkIGNvbnRlbnRzIG9mIG1pcHNfcmVnX25hbWVzW10uCgkoQURESVRJT05BTF9SRUdJU1RFUl9OQU1FUyk6IFJlbW92ZSBlbnRyaWVzIGZvciBuYW1lcyBtZW50aW9uZWQKCWluIFJFR0lTVEVSX05BTUVTLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcmVnX25hbWVzLCBtaXBzX3N3X3JlZ19uYW1lcyk6IERlbGV0ZS4KCShvdmVycmlkZV9vcHRpb25zKTogUmVtb3ZlIGhhbmRsaW5nIG9mIFRBUkdFVF9OQU1FX1JFR1MuCgoyMDA0LTA3LTEzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKFRBUkdFVF8qKTogQm9vbGlmeS4KCjIwMDQtMDctMTIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjOiBBZGQgc2gtKi1zeW1iaWFuZWxmIHRhcmdldC4KCSogY29uZmlnL3NoL3NoLmM6IEFkZCBuZXcgdGFyZ2V0IG1hY3JvczoKCVRBUkdFVF9FTkNPREVfU0VDVElPTl9JTkZPLCBUQVJHRVRfU1RSSVBfTkFNRV9FTkNPRElORywKCVRBUkdFVF9DWFhfSU1QT1JUX0VYUE9SVF9DTEFTUy4KCShzaF9maWxlX3N0YXJ0KTogQ3JlYXRlIGEgZGVmaW5pdGlvbiBvZiB0aGUgLmRpcmVjdGl2ZSBzZWN0aW9uLgoJKHNoX2F0dHJpYnV0ZSk6IEFkZCBkbGxpbXBvcnQgYW5kIGRsbGV4cG9ydCBhdHRyaWJ1dGVzLgoJKiBjb25maWcvc2gvc3ltYmlhbi1wcmUuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9zaC9zeW1iaWFuLXBvc3QuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9zaC9zeW1iaWFuLmM6IE5ldyBmaWxlLiBDb250YWlucyBTeW1iaWFuIHNwZWNpZmljCglmdW5jdGlvbnMuCgkqIGNvbmZpZy9zaC9zaC1wcm90b3MuaDogQWRkIHByb3RvdHlwZXMgZm9yIG5ldyBmdW5jdGlvbnMKCXByb3ZpZGVkIGJ5IHN5bWJpYW4uYy4KCSogY29uZmlnL3NoL3Qtc3ltYmlhbjogTmV3IGZpbGUuCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgc3VwcG9ydCBmb3IgZGxsaW1wb3J0IGFuZCBkbGxleHBvcnQKCWF0dHJpYnV0ZXMgYnkgdGhlIHNoLXN5bWJpYW5lbGYgdGFyZ2V0LgoKMjAwNC0wNy0xMiAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEFSKTogVXNlIEBBUkAgbm90IGFyLgoJKE5NKTogTmV3LgoJKEFSX0ZPUl9UQVJHRVQpOiBVc2UgJChBUikgbm90IGFyIGZvciBuYXRpdmUuCgkoTk1fRk9SX1RBUkdFVCk6IFVzZSAkKE5NKSBub3Qgbm0gZm9yIG5hdGl2ZS4KCSogY29uZmlndXJlLmFjOiBBZGQgQUNfQ0hFQ0tfUFJPRyBjYWxscyBmb3IgTk0gYW5kIEFSLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTA3LTEyICBEYXZpZCBTLiBNaWxsZXIgIDxkYXZlbUBudXRzLmRhdmVtbG9mdC5uZXQ+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKGFzaGxzaTMpOiBFbGltaW5hdGUgY29uc3QgMQoJc3BlY2lhbCBjYXNlLgoJKGFzaGxkaTNfc3A2NCk6IExpa2V3aXNlLgoKMjAwNC0wNy0xMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiB0YXJnZXQvMTY0NzcKCSogcGEuYyAoZnVuY3Rpb25fYXJnKTogVXBkYXRlIGNvbW1lbnQuCgkqIHBhLmggKEJMT0NLX1JFR19QQURESU5HKTogRGVmaW5lLgoKMjAwNC0wNy0xMiAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE2NDYxCgkqIHRyZWUtdGFpbGNhbGwuYyAoaW5kZXBlbmRlbnRfb2Zfc3RtdF9wKTogSGFuZGxlIG5vbi1TU0EgbmFtZQoJYXJndW1lbnRzIG9mIHBoaSBub2Rlcy4KCjIwMDQtMDctMTIgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKERhcndpbiBPcHRpb25zKTogRG9jdW1lbnQgLWd1c2VkIGFuZCAtZ2Z1bGwuCgoyMDA0LTA3LTEyICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9zdGFydCk6IEVuc3VyZSByX3NhdmUgaXMgaW4gUG1vZGUuCgkqIGNhbGxzLmMgKHByZXBhcmVfY2FsbF9hZGRyZXNzKTogRW5zdXJlIHN0YXRpY19jaGFpbl92YWx1ZSBpcwoJaW4gUG1vZGUuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX25vbmxvY2FsX2dvdG8pOiBFbnN1cmUgcl9sYWJlbCBhbmQKCXJfc2F2ZV9hcmVhIGFyZSBpbiBQbW9kZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2luaXRpYWxpemVfdHJhbXBvbGluZSk6IEVuc3VyZSBhZGRyLAoJZm5hZGRyLCBhbmQgc3RhdGljX2NoYWluIGFyZSBpbiBQbW9kZS4KCjIwMDQtMDctMTIgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNjQ0NQoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGJ1bmRsaW5nKTogRG9uJ3QgY291bnQgaWdub3JlZCBpbnNucy4KCjIwMDQtMDctMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBNb3ZlIGdpbXBsaWZ5X3ZhX2FyZ19leHByCgluZXh0IHRvIGJ1aWxkX2J1aWx0aW5fdmFfbGlzdC4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfR0lNUExJRllfVkFfQVJHX0VYUFIpOiBVcGRhdGUgdG8gbWF0Y2guCgkqIGJ1aWx0aW5zLmMgKGdpbXBsaWZ5X3ZhX2FyZ19leHByKTogTGlrZXdpc2UuCgkqIGdpbXBsaWZ5LmMgKGNvcHlfaWZfc2hhcmVkX3IpOiBMaWtld2lzZS4KCjIwMDQtMDctMTIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogcGFzc2VzLmMgKHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbik6IERvbid0IGRlZmVyIGNhbGwgb2YKCWFzc2VtYmxlX3ZhcmlhYmxlIGlmIGl0cyBERUNMX1JUTCBpcyBhbHJlYWR5IHNldC4KCjIwMDQtMDctMTIgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCSogY2ZnbG9vcC5oIChzdHJ1Y3QgbG9vcCk6IEFkZCBuYl9pdGVyYXRpb25zIGZpZWxkLgoJKGN1cnJlbnRfbG9vcHMpOiBEZWNsYXJlLgoJKiB0cmVlLWNocmVjLmMgKGNocmVjX25vdF9hbmFseXplZF95ZXQsCgljaHJlY19kb250X2tub3csIGNocmVjX2tub3duLCBjb3VudF9ldl9pbl93aWRlcl90eXBlLAoJY2hyZWNfY29udGFpbnNfc3ltYm9sc19kZWZpbmVkX2luX2xvb3ApOiBSZW1vdmUgdGhlIHRlbXBvcmFyeQoJaG9va3MuCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAobG9vcF9jb250YWluaW5nX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jOiBBZGQgaW1wbGVtZW50YXRpb24uCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5oOiBBZGQgZGVjbGFyYXRpb25zLgoKMjAwNC0wNy0xMiBWbGFkaW1pciBNYWthcm92IDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTU5MjEKCSogTWFrZWZpbGUuaW4gKGdsb2JhbC5vKTogQWRkIHJlY29nLmguCgoJKiBnbG9iYWwuYyAocmVjb2cuaCk6IEFkZCB0aGUgaW5jbHVkZS1jbGF1c2UuCgkoYmJfaW5mbyk6IE5ldyBtZW1iZXIgZWFybHljbG9iYmVyLgoJKGFsbG9jYXRlX2JiX2luZm8sIGZyZWVfYmJfaW5mbyk6IEluaXRpYWxpemUvZmluaXNoIHRoZSBuZXcKCW1lbWJlci4KCShlYXJseWNsb2JiZXJfcmVnY2xhc3MsIGVhcmx5Y2xvYmJlcl9yZWdjbGFzc19sZW5ndGgpOiBUaGUgbmV3CglnbG9iYWwgdmFyaWFibGVzLgoJKGNoZWNrX2Vhcmx5Y2xvYmJlciwgcmVnY2xhc3NfaW50ZXJzZWN0LAoJbWFya19yZWdfdXNlX2Zvcl9lYXJseWNsb2JiZXIsIG1hcmtfcmVnX3VzZV9mb3JfZWFybHljbG9iYmVyXzEpOgoJTmV3IGZ1bmN0aW9ucy4KCShjYWxjdWxhdGVfbG9jYWxfcmVnX2JiX2luZm8pOiBDYWxjdWxhdGUgdmFsdWUgb2YgZWFybHljbG9iYmVyLgoJKG1ha2VfYWNjdXJhdGVfbGl2ZV9hbmFseXNpcyk6IE1vZGlmeSBwYXZpbi4KCjIwMDQtMDctMTIgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1jZmcuYyAoZmluZF90YWtlbl9lZGdlKTogU3RhdGljYWxseSBjb21wdXRlIHRoZSB0cnV0aAoJdmFsdWUgb2YgYSBwcmVkaWNhdGUgY29tcGFyaW5nIGFuIFNTQV9OQU1FIHRvIGl0c2VsZi4KCjIwMDQtMDctMTIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3J0eF9jb3N0cyk6IEluZGljYXRlIHRoYXQgdGhlCglyczYwMDAgZG9lc24ndCBoYXZlIHNoaWZ0LWFuZC1hZGQgb3Igc2hpZnQtYW5kLXN1YiBpbnN0cnVjdGlvbnMKCWJ5IHJldHVybmluZyB0aGUgY29zdCBvZiBhIG11bHRpcGxpY2F0aW9uIHBsdXMgYW4gYWRkaXRpb24uCgoyMDA0LTA3LTEyICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE0MTA3CgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X3JldHVybl9leHByKTogQWNjZXB0IGEKCVJFVFVSTl9FWFBSIHdpdGggYW4gZXJyb3IgYXJndW1lbnQuCgkqIHRyZWUtb3B0aW1pemUuYyAoaW5pdF90cmVlX29wdGltaXphdGlvbl9wYXNzZXMpOgoJUnVuIHBhc3Nfd2Fybl9mdW5jdGlvbl9yZXR1cm4gYXQgLU8wLgoKMjAwNC0wNy0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IENvcnJlY3QgLWZhc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyBvcHRpb24KCWluZGV4IGVudHJ5LgoKMjAwNC0wNy0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlKTogRGVsZXRlLgoJKFRBUkdFVF9TQ0hFRF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IERlZmluZSB0byBob29rX2ludF92b2lkXzEuCgkqIGNvbmZpZy9taXBzLzMwMDAubWQ6IEFkZCBjb3B5cmlnaHQgbm90aWNlLiAgUmVtb3ZlIGF1dG9tb3RhIGFuZAoJZnVuY3Rpb24gdW5pdHM7IHVzZSBnZW5lcmljIG9uZXMgaW5zdGVhZC4gIE9ubHkgZGVmaW5lIHJlc2VydmF0aW9ucwoJZm9yIHRoaW5ncyB0aGF0IGFyZSBkaWZmZXJlbnQgZnJvbSBnZW5lcmljLm1kLiAgRXh0ZW5kIGVhY2ggY2xhdXNlCgl0byBpbmNsdWRlIHIzOTAwLgoJKiBjb25maWcvbWlwcy97NDAwMCw0MTAwLDQzMDAsNDYwMCw1MDAwLDYwMDAsZ2VuZXJpY30ubWQ6IE5ldyBmaWxlcy4KCSogY29uZmlnL21pcHMvbWlwcy5tZDogSW5jbHVkZSB0aGVtLiBSZW1vdmUgZGVmaW5lX2Z1bmN0aW9uX3VuaXRzLgoJKGFsdSwgaW11bGRpdik6IE5ldyBhdXRvbWF0YSBhbmQgdW5pdHMuCgoyMDA0LTA3LTEyICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW1pemUgT3B0aW9ucyk6IERvY3VtZW50IC1mcmVuYW1lLXJlZ2lzdGVycwoJbm90IGJlaW5nIGVuYWJsZWQgYnkgZGVmYXVsdCBhdCAtTzMuCgoyMDA0LTA3LTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgPFBMVVNfRVhQUj46IENhbm9uaWNhbGl6ZSBYICsgLUMgYXMgWCAtIEMgZm9yCglmbG9hdGluZyBwb2ludCBhZGRpdGlvbnMsIHRvIGtlZXAgcmVhbCBpbW1lZGlhdGUgY29uc3RhbnQgcG9zaXRpdmUuCgk8TUlOVVNfRVhQUj46IEZvciBmbG9hdGluZyBwb2ludCBzdWJ0cmFjdGlvbnMsIG9ubHkgdHJhbnNmb3JtIFggLSAtQwoJaW50byBYICsgQywgYW5kIGxlYXZlIHBvc2l0aXZlIHJlYWwgY29uc3RhbnRzIGFzIFggLSBDLgoKMjAwNC0wNy0xMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmMgKGhwcGFfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBSZW1vdmUgY29tbWVudC4KCjIwMDQtMDctMTEgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNTY1NAoJKiB0cmVlLXRhaWxjYWxsLmMgKGVsaW1pbmF0ZV90YWlsX2NhbGwpOiBSZW1vdmUgdW5yZWFjaGFibGUgY29kZS4KCjIwMDQtMDctMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2ZwdXRzKTogRG9uJ3QgYm90aGVyIGNvbnZlcnRpbmcgdGhlCglyZXR1cm4gdHlwZSB0byBpbnRlZ2VyX3R5cGVfbm9kZSwgYXMgd2UndmUgYWxyZWFkeSBjaGVja2VkIHRoYXQKCXRoZSByZXN1bHQgd2lsbCBiZSBpZ25vcmVkLgoKCSogdHJlZS1laC5jICh0cmVlX2NvdWxkX3RyYXBfcCk6IEFkZCBzdXBwb3J0IGZvciAtZnRyYXB2IHN1Y2gKCXRoYXQgc2lnbmVkIGFkZGl0aW9uLCBzdWJ0cmFjdGlvbiwgbXVsdGlwbGljYXRpb24sIGRpdmlzaW9uLAoJcmVtYWluZGVyLCBuZWdhdGlvbiBhbmQgYWJzb2x1dGUgdmFsdWUgbWF5IHBvdGVudGlhbGx5IHRyYXAuCgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfaWdub3JlZF9yZXN1bHQpOiBOZXcgZnVuY3Rpb24gdG8gc3RyaXAKCW5vbi1zaWRlLWVmZmVjdGluZyB0cmVlIG5vZGVzIGZyb20gYW4gZXhwcmVzc2lvbiB3aG9zZSByZXN1bHQKCWlzIGlnbm9yZWQuCgkoZm9sZF9jb252ZXJ0KTogQ2FsbCBmb2xkX2lnbm9yZWRfcmVzdWx0IHdoZW4gY2FzdGluZyBhIHZhbHVlCgl0byBWT0lEX1RZUEUuCgkob21pdF9vbmVfb3BlcmFuZCk6IENhbGwgZm9sZF9pZ25vcmVkX3Jlc3VsdCBvbiB0aGUgIm9taXR0ZWQiCglvcGVyYW5kIHdoZW4gYnVpbGRpbmcgYSBDT01QT1VORF9FWFBSLgoJKHBlZGFudGljX29taXRfb25lX29wZXJhbmQpOiBMaWtld2lzZS4KCSogdHJlZS5oIChmb2xkX2lnbm9yZWRfcmVzdWx0KTogUHJvdG90eXBlIGhlcmUuCgkqIHRyZWUtc3NhLWNjcC5jIChjY3BfZm9sZF9idWlsdGluKTogQ2FsbCBmb2xkX2lnbm9yZWRfcmVzdWx0Cgl3aGVuIHdlJ3JlIGdvaW5nIHRvIGlnbm9yZSB0aGUgcmVzdWx0LgoKMjAwNC0wNy0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdC8xNjM4MwoJKiB0cmVlLXNzYS1jY3AuYyAoZm9sZF9zdG10X3IpOiBTcGxpdCBvdXQuLi4KCSogdHJlZS5jIChmaWVsZHNfY29tcGF0aWJsZV9wLCBmaW5kX2NvbXBhdGlibGVfZmllbGQpOiAuLi4gbmV3LgoJKiB0cmVlLmggKGZpZWxkc19jb21wYXRpYmxlX3AsIGZpbmRfY29tcGF0aWJsZV9maWVsZCk6IERlY2xhcmUuCgkqIHRyZWUtc3JhLmMgKHNyYV9oYXNoX3RyZWUpOiBIYXNoIGZpZWxkcyBieSBvZmZzZXQuCgkoc3JhX2VsdF9lcSk6IFVzZSBmaWVsZHNfY29tcGF0aWJsZV9wLgoJKGdlbmVyYXRlX29uZV9lbGVtZW50X3JlZik6IFVzZSBmaW5kX2NvbXBhdGlibGVfZmllbGQuCgoyMDA0LTA3LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0LzE2NDIyCgkqIHRyZWUtc3JhLmMgKGdlbmVyYXRlX29uZV9lbGVtZW50X2luaXQpOiBOZXcuCgkoZ2VuZXJhdGVfZWxlbWVudF9pbml0KTogVXNlIGl0LgoJKHNjYWxhcml6ZV9pbml0KTogUHVzaC9wb3AgZ2ltcGxpZnkgY29udGV4dCBhcm91bmQgaXQuCgkoZmluZF9uZXdfcmVmZXJlbmNlZF92YXJzXzEsIGZpbmRfbmV3X3JlZmVyZW5jZWRfdmFycyk6IE5ldy4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfZXhwcik6IEFsbG93IFNTQV9OQU1FLgoKMjAwNC0wNy0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBydGxhbmFsLmMgKGluc25fcnR4X2Nvc3QpOiBOZXcgZnVuY3Rpb24sIG1vdmVkIGFuZCByZW5hbWVkIGZyb20KCWNvbWJpbmUuYydzIGNvbWJpbmVfaW5zbl9jb3N0LgoJKiBydGwuaCAoaW5zbl9ydHhfY29zdCk6IFByb3RvdHlwZSBoZXJlLgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfaW5zbl9jb3N0KTogRGVsZXRlIGZ1bmN0aW9uLgoJKGNvbWJpbmVfdmFsaWRhdGVfY29zdCk6IFVwZGF0ZSBjYWxsZXJzIG9mIGNvbWJpbmVfaW5zbl9jb3N0IHRvCgljYWxsIGluc25fcnR4X2Nvc3QgaW5zdGVhZC4KCShjb21iaW5lX2luc3RydWN0aW9ucyk6IExpa2V3aXNlLiAgVXNlIE5PTkpVTVBfSU5TTl9QIHRvIGF2b2lkCglyZXF1ZXN0aW5nIHRoZSBydHhfY29zdCBvZiBjYWxsIGFuZC9vciBqdW1wIGluc3RydWN0aW9ucy4KCgkqIGlmY3Z0LmMgKHRvdGFsX2JiX3J0eF9jb3N0KTogVXNlIGluc25fcnR4X2Nvc3QgaW5zdGVhZCBvZiBjYWxsaW5nCglydHhfY29zdCBkaXJlY3RseS4gIERvbid0IHJlcXVlc3QvdXNlIHRoZSBjb3N0IG9mIGNhbGwgb3IganVtcAoJaW5zdHJ1Y3Rpb25zLiAgUmV0dXJuIC0xIGlmIHRoZSBjb3N0IG9mIGFueSBpbnN0cnVjdGlvbiBjYW4ndCBiZQoJZGV0ZXJtaW5lZCAob3IgdGhlIEJCIGNvbnRhaW5zIGEgZnVuY3Rpb24gY2FsbCkuCgkoZmluZF9pZl9jYXNlXzEpOiBBYm9ydCB0cmFuc2Zvcm1hdGlvbiBpZiB0b3RhbF9iYl9ydHhfY29zdCByZXR1cm5zCgktMSAoaS5lLiBjYW4ndCBkZXRlcm1pbmUgdGhlIGNvc3Qgb2YgYW55IGluc3RydWN0aW9uIG9yIHRoZSBiYXNpYwoJYmxvY2sgY29udGFpbnMgYSBzdWJyb3V0aW5lIGNhbGwpLgoJKGZpbmRfaWZfY2FzZV8yKTogTGlrZXdpc2UuCgoyMDA0LTA3LTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHJzNjAwMC5jIChzdHJ1Y3QgcHJvY2Vzc29yX2Nvc3RzKTogQ2hhbmdlIHNlbWFudGljcyBvZiBmaWVsZHMgdG8KCWluY2x1ZGUgdGhlIENPU1RfTl9JTlNOUyBzY2FsaW5nLCBhbmQgdXBkYXRlIGFsbCBpbml0aWFsaXplcnMuCgkocnM2MDAwX3J0eF9jb3N0cyk6IERvbid0IHVzZSBDT1NUU19OX0lOU05TIG9uIHJzNjAwMF9jb3N0IGZpZWxkcy4KCVVzZSBDT1NUU19OX0lOU05TKDEpIGZvciBOT1QsIFNJR05fRVhURU5ELCBaRVJPX0VYVEVORCBhbmQgQ09NUEFSRS4KCVVzZSByczYwMDBfY29zdC0+ZnAgZm9yIGJvdGggRkxPQVRfVFJVTkNBVEUgYW5kIFVOU1BFQ19GUlNQLiAgV2hlbgoJb3B0aW1pemluZyBmb3Igc2l6ZSwgdXNlIENPU1RTX05fSU5TTlMoMSkgZm9yIENBTEwgYW5kIElGX1RIRU5fRUxTRS4KCjIwMDQtMDctMTEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogTEFOR1VBR0VTOiBSZW1vdmUgb2Jzb2xldGUgaW5mb3JtYXRpb24uCgoyMDA0LTA3LTExICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9saW51eC5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiBGb3IgU0lHU0VHViBhbmQKCVNJR0JVUyBzaWduYWwgZnJhbWVzLCB0aGUgUFNXIGFkZHJlc3MgcG9pbnRzICp0byogdGhlIGZhdWx0aW5nCglpbnN0cnVjdGlvbiwgbm90IGFmdGVyIGl0LgoKMjAwNC0wNy0xMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChsZWdpdGltaXplX3Rsc19hZGRyZXNzKTogSGFuZGxlIGNvbnN0YW50IG9mZnNldHMKCWFkZGVkIHRvIFRMUyBzeW1ib2wgYWRkcmVzc2VzLgoKMjAwNC0wNy0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGV4cG1lZC5jIChpbml0X2V4cG1lZCk6IFVzZSBzdGFjay1sb2NhbCBzdHJ1Y3R1cmVzIGZvcgoJdGVtcG9yYXJ5IHJ0bC4gIERvbid0IHJlY29nbml6ZSBzaGlmdHMuCgoyMDA0LTA3LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5jIChzdG9yZV9leHByKTogRG9uJ3QgZmlkZGxlIHN1YnJlZyBwcm9tb3Rpb24gZm9yIHR5cGVzCgl3aXRoIHByZWNpc2lvbiBzbWFsbGVyIHRoYW4gdGhlIG1vZGUuCgoyMDA0LTA3LTExICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIHRyZWUuaCAoYWxsX3R5cGVzX3Blcm1hbmVudCk6IFJlbW92ZS4KCjIwMDQtMDctMTEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogbGFuZ2hvb2tzLmggKGVzdGltYXRlX251bV9pbnNucywgcHVzaGxldmVsLCBwb3BsZXZlbCwgc2V0X2Jsb2NrLAoJbWF5YmVfYnVpbGRfY2xlYW51cCwgdXBkYXRlX2RlY2xfYWZ0ZXJfc2F2aW5nKTogUmVtb3ZlIGhvb2tzLgoJKiBsYW5naG9va3MuYyAobGhkX2NsZWFyX2JpbmRpbmdfc3RhY2spOiBSZW1vdmUuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX2NsZWFyX2JpbmRpbmdfc3RhY2ssCglMQU5HX0hPT0tTX01BWUJFX0JVSUxEX0NMRUFOVVAsCglMQU5HX0hPT0tTX1VQREFURV9ERUNMX0FGVEVSX1NBVklORywKCUxBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19FU1RJTUFURV9OVU1fSU5TTlMsIExBTkdfSE9PS1NfUFVTSExFVkVMLAoJTEFOR19IT09LU19QT1BMRVZFTCwgTEFOR19IT09LU19TRVRfQkxPQ0spOiBSZW1vdmUuCgkoTEFOR19IT09LU19DTEVBUl9CSU5ESU5HX1NUQUNLKTogRGVmaW5lIHRvIGxoZF9kb19ub3RoaW5nLgoJKiBzeXN0ZW0uaCAoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0VTVElNQVRFX05VTV9JTlNOUywKCUxBTkdfSE9PS1NfUFVTSExFVkVMLCBMQU5HX0hPT0tTX1NFVF9CTE9DSywKCUxBTkdfSE9PS1NfTUFZQkVfQlVJTERfQ0xFQU5VUCwKCUxBTkdfSE9PS1NfVVBEQVRFX0RFQ0xfQUZURVJfU0FWSU5HLCBMQU5HX0hPT0tTX1BPUExFVkVMKTogUG9pc29uLgoJKiB0cmVlLmggKHBvcGxldmVsKTogRG9uJ3QgZGVjbGFyZS4KCSogYy1sYW5nLmMgKExBTkdfSE9PS1NfQ0xFQVJfQklORElOR19TVEFDSywgTEFOR19IT09LU19QVVNITEVWRUwsCglMQU5HX0hPT0tTX1BPUExFVkVMLCBMQU5HX0hPT0tTX1NFVF9CTE9DSyk6IFJlbW92ZS4KCSogb2JqYy9vYmpjLWxhbmcuYyAoTEFOR19IT09LU19DTEVBUl9CSU5ESU5HX1NUQUNLLAoJTEFOR19IT09LU19QVVNITEVWRUwsIExBTkdfSE9PS1NfUE9QTEVWRUwsIExBTkdfSE9PS1NfU0VUX0JMT0NLKToKCVJlbW92ZS4KCjIwMDQtMDctMTEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE2NDM3CgkqIGMtY29tbW9uLmMgKHNob3J0ZW5fY29tcGFyZSk6IERvbid0IG1hcmsgcmVzdWx0IG9mIGNvbnZlcnNpb24gdG8KCW5hcnJvd2VyIHNpZ25lZCB0eXBlIGFzIG92ZXJmbG93aW5nLgoJKiBmb2xkLWNvbnN0LmMgKGRlY29kZV9maWVsZF9yZWZlcmVuY2UpOiBEZXRlcm1pbmUgd2hldGhlcgoJc2lnbmVkbmVzcyBjb21lcyBmcm9tIG91dGVyIHR5cGUgdXNpbmcgcHJlY2lzaW9uIHJhdGhlciB0aGFuIHNpemUuCgoyMDA0LTA3LTExICBQaGlsIEVkd2FyZHMgIDxwaGlsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuYWM6IEFscGhhYmV0aXplIC0tZW5hYmxlLWNoZWNraW5nIGxpc3QsIGFkZAoJbWlzc2luZyB2YWxncmluZCBlbnRyeS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wNy0xMSAgUGhpbCBFZHdhcmRzICA8cGhpbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aSAoVGVzdGluZyk6IEZpeCBzeW50YXggaW4gIm1ha2UgY2hlY2siIGV4YW1wbGUuCgoyMDA0LTA3LTEwICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWcvZ29mYXN0LmggKGdvZmFzdF9tYXliZV9pbml0X2xpYmZ1bmNzKTogVXNlIFNJbW9kZSBmb3IgbGl0b2RwLgoKMjAwNC0wNy0xMCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMTYwMDEKCSogbG9vcC1pdi5jIChpdl9udW1iZXJfb2ZfaXRlcmF0aW9ucyk6IFByZXZlbnQgY29weSBwcm9wYWdhdGlvbiBpbgoJbml0ZXJfZXhwci4KCjIwMDQtMDctMTAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX0NPTU1BTkRfU1BFQyk6IERvbid0IGNhbGwgYysrZmlsdC4KCjIwMDQtMDctMTAgIFN0ZXZlIEthcmdsICA8c2drQHRyb3V0bWFzay5hcGwud2FzaGluZ3Rvbi5lZHU+CgkgICAgSmFtZXMgTW9ycmlzb24gIDxwaHl0aG9uQGdjYy5nbnUub3JnPgoKCSogZG9jL2NvbnRyaWIudGV4aSAoQ29udHJpYnV0b3JzKTogQWRkIGdmb3J0cmFuIGNvbnRyaWJ1dG9ycyBhbmQKCWZpeCBhIGNvdXBsZSBvZiB0eXBvcy4KCjIwMDQtMDctMTAgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE1Mzg3CgkqIGNhbGxzLmMgKGNoZWNrX3NpYmNhbGxfYXJndW1lbnRfb3ZlcmxhcF8xKTogSGFuZGxlIHBvaW50ZXJzCgl0byBpbmNvbWluZyBhcmdzIHNwYWNlIGNvcnJlY3RseS4KCjIwMDQtMDctMTAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChvdXRwdXRfaW5kaXJlY3RfY2FsbCk6IE9ubHkgdXNlICVyMiBhcyB0aGUgbGluayByZWdpc3RlciBpbgoJaW5kaXJlY3QgY2FsbHMgd2l0aCB0aGUgbG9uZyBQQSAyLjAgcGMtcmVsYXRpdmUgYnJhbmNoLgoKMjAwNC0wNy0xMCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AZGViaWFuLm9yZz4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFBpY2sgYSA2NC1iaXQgQ1BVCglmb3IgdGhlIGRlZmF1bHQgdHVuaW5nIGlmIFRBUkdFVF82NEJJVC4KCjIwMDQtMDctMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChzdGRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBXaWRlbiBhbGlnbi9ib3VuZGFyeQoJdG8gSE9TVF9XSURFX0lOVC4gIEZvbGQgcGFkLWFyZ3MtZG93biBhcml0aG1ldGljLgoKMjAwNC0wNy0xMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleHByLmggKHN0b3JlX2JpdF9maWVsZCwgZXh0cmFjdF9iaXRfZmllbGQpOiBSZW1vdmUgbGFzdCBhcmd1bWVudC4KCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCwgZXh0cmFjdF9iaXRfZmllbGQpOiBSZW1vdmUgbGFzdAoJYXJndW1lbnQuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3NpZ25iaXQpOiBBZGp1c3QgY2FsbGVycy4KCSogb3B0YWJzLmMgKGV4cGFuZF92ZWN0b3JfYmlub3AsIGV4cGFuZF92ZWN0b3JfdW5vcCk6IExpa2V3aXNlLgoJKiBjYWxscy5jIChzdG9yZV91bmFsaWduZWRfYXJndW1lbnRzX2ludG9fcHNldWRvcyk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChub2NlX2VtaXRfbW92ZV9pbnNuKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX3JldHVybik6IExpa2V3aXNlLgoJKiBleHByLmMgKGVtaXRfZ3JvdXBfbG9hZCwgZW1pdF9ncm91cF9zdG9yZSwgY29weV9ibGttb2RlX2Zyb21fcmVnLAoJc3RvcmVfZmllbGQsIGV4cGFuZF9leHByX3JlYWxfMSk6IExpa2V3aXNlLgoKMjAwNC0wNy0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKHN0ZF9naW1wbGlmeV92YV9hcmdfZXhwcik6IEZpeCBib3JrZWQgQklUX0FORF9FWFBSLgoKMjAwNC0wNy0wOSAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG5vX2RlYWRfc3RyaXApOiBBZGQuCgkoSEFWRV9ERUFEX1NUUklQKTogQWRkLgoJKGRhcndpbl9lbWl0X3Vud2luZF9sYWJlbCk6IEVuc3VyZSB0aGF0IHdlIGRvbid0IGRlYWQgY29kZSBzdHJpcAoJdGhlIC5laCBsYWJlbC4KCjIwMDQtMDctMDkgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIHRyZWUtc3NhLWxvb3AtaW0uYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluICh0cmVlLXNzYS1sb29wLWltLm8pOiBBZGQuCgkqIGNmZ2xvb3AuYyAoc3VwZXJsb29wX2F0X2RlcHRoKTogTmV3IGZ1bmN0aW9uLgoJKiBjZmdsb29wLmggKHN1cGVybG9vcF9hdF9kZXB0aCk6IERlY2xhcmUuCgkqIGNvbW1vbi5vcHQgKGZ0cmVlLWxpbSk6IE5ldyBmbGFnLgoJKiBleHByLmMgKGFycmF5X3JlZl91cF9ib3VuZCk6IE5ldyBmdW5jdGlvbi4KCSogcGFyYW1zLmRlZiAoUEFSQU1fTElNX0VYUEVOU0lWRSk6IE5ldyBwYXJhbWV0ZXIuCgkqIHRpbWV2YXIuZGVmIChUVl9MSU0pOiBOZXcgdGltZXZhci4KCSogdHJlZS1kZmEuYyAoY29tcHV0ZV9pbW1lZGlhdGVfdXNlcyk6IFJlc3BlY3QgVERGQV9VU0UgZmxhZ3Mgd2hlbgoJY29tcHV0aW5nIGltbWVkaWF0ZSB1c2VzIG9mIGEgcGhpIG5vZGUuCgkqIHRyZWUtZmxvdy5oIChzdHJ1Y3QgdHJlZV9hbm5fY29tbW9uX2QpOiBBZGQgYXV4IGZpZWxkLgoJKGxvb3BfY29tbWl0X2luc2VydHMsIGZvcl9lYWNoX2luZGV4LCB0cmVlX3NzYV9saW0pOiBEZWNsYXJlLgoJKiB0cmVlLW9wdGltaXplLmMgKGluaXRfdHJlZV9vcHRpbWl6YXRpb25fcGFzc2VzKTogQWRkIHBhc3NfbGltLgoJKiB0cmVlLXBhc3MuaCAocGFzc19saW0pOiBEZWNsYXJlLgoJKiB0cmVlLXNzYS1sb29wLmMgKHRyZWVfc3NhX2xvb3BfaW0sIGdhdGVfdHJlZV9zc2FfbG9vcF9pbSk6IE5ldwoJZnVuY3Rpb25zLgoJKHBhc3NfbGltKTogTmV3IHBhc3Mgc3RydWN0dXJlLgoJKiB0cmVlLWVoLmMgKHRyZWVfY291bGRfdHJhcF9wKTogSGFuZGxlIEFSUkFZX1JFRnMgY29ycmVjdGx5LgoJKiB0cmVlLmMgKGluX2FycmF5X2JvdW5kc19wKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmggKFRSRUVfVEhJU19OT1RSQVApOiBEZWZpbmUgYWxzbyBmb3IgQVJSQVlfUkVGcy4KCShpbl9hcnJheV9ib3VuZHNfcCwgYXJyYXlfcmVmX3VwX2JvdW5kKTogRGVjbGFyZS4KCSogZG9jL2ludm9rZS50ZXhpICgtZnRyZWUtbGltLCAtLXBhcmFtIGxpbS1leHBlbnNpdmUpOiBEb2N1bWVudC4KCSogZG9jL3Bhc3Nlcy50ZXhpICh0cmVlLXNzYS1sb29wLWltLmMpOiBEb2N1bWVudC4KCjIwMDQtMDctMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHBjcHkpOiBEb24ndCBtb2RpZnkgbGVuLgoKCSogdHJlZS1zc2EtY2NwLmMgKGNjcF9mb2xkX2J1aWx0aW4pOiBTdHJpcCBjb252ZXJzaW9uIGV4cHJzCgl3aXRoIHByZWp1ZGljZS4KCjIwMDQtMDctMTAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBmbGFncy5oOiBEZWxldGUgcmVkdW5kYW50IHByb3RvdHlwZXMgdGhhdCBhcmUgYmVpbmcgZ2VuZXJhdGVkCglpbiBvcHRpb25zLmggZnJvbSBjb21tb24ub3B0LgoJKiBjb21tb24ub3B0OiBBZGQgaW4gdGhlIGV4cG9zaXRvcnkgY29tbWVudHMgZm9ybWVybHkgaW4gZmxhZ3MuaC4KCjIwMDQtMDctMDkgIEphbiBCZXVsaWNoICA8amJldWxpY2hAbm92ZWxsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBTZXQgbW14L3NzZSByZWdpc3RlcnMKCWF2YWlsYWJsZSBmb3IgdXNlIG9ubHkgd2hlbiBUQVJHRVRfTU1YL19TU0UgaXMgc2V0LCBhbmQgY2hlY2sgZm9yCgl2YXJpYWJsZSBhcmd1bWVudCBmdW5jdGlvbiBpZiBhbnkgcmVnaXN0ZXIgY291bnQgaXMgbm9uLXplcm8uCgkoZnVuY3Rpb25fYXJnKTogQ29ycmVjdGx5IHN1cHByZXNzIHJlcGVhdGVkIHdhcm5pbmdzIGZvciBwYXNzaW5nIFNTRQoJdmVjdG9ycyBhcmUgYXJndW1lbnRzIHdpdGhvdXQgU1NFIGVuYWJsZWQuCgkoaXg4Nl9mdW5jdGlvbl9hcmdfYm91bmRhcnkpOiBXaXRob3V0IFNTRSBlbmFibGVkLCB0aGUgdXNlIG9mIHdoYXQKCXdvdWxkIGJlIFNTRSByZWdpc3RlciBtb2RlcyBkb2VzIG5vIGxvbmdlciBpbmZsdWVuY2UgdGhlIGFsaWdubWVudC4KCjIwMDQtMDctMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChzdGRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBEZW55IEFSR1NfR1JPV19ET1dOV0FSRC4KCUFsd2F5cyBhbGlnbiB1cHdhcmQgdG8gYXJnIGJvdW5kYXJ5LiAgVXNlIHNpemVfaW5fYnl0ZXMvcm91bmRfdXAuCglNYWludGFpbiB0eXBlLWNvcnJlY3RuZXNzIG9mIGNvbnN0YW50cy4KCSogc3Rvci1sYXlvdXQuYyAocm91bmRfdXAsIHJvdW5kX2Rvd24pOiBTcGVjaWFsLWNhc2UgcG93ZXJzIG9mIDIuCgoyMDA0LTA3LTA5ICBEYXZpZCBTLiBNaWxsZXIgIDxkYXZlbUBudXRzLmRhdmVtbG9mdC5uZXQ+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoKl9jb3N0cyk6IFNjYWxlIGluc3RydWN0aW9uIGNvc3RzCglieSBDT1NUU19OX0lOU05TLgoJKHNwYXJjX3J0eF9jb3N0cyk6IEFkanVzdCBhcyBhcHByb3ByaWF0ZS4KCjIwMDQtMDctMDkgIEphbiBCZXVsaWNoICA8amJldWxpY2hAbm92ZWxsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L21tM2Rub3cuaDogTmV3LgoJKiBjb25maWcuZ2NjOiBBZGQgbW0zZG5vdy5oIHRvIGV4dHJhX2hlYWRlcnMgZm9yIGk/ODYgYW5kIHg4Ni02NC4KCjIwMDQtMDctMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfY29uc3RfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBPbmx5Cglsb29rIGF0IGJvdW5kcyBvZiBzY2FsYXIgaW50ZWdlcnMuCgoyMDA0LTA3LTA5ICBKYW4gQmV1bGljaCAgPGpiZXVsaWNoQG5vdmVsbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChzc2UyX2NsZmx1c2gpOiBVc2UgY29ycmVjdCBvcGVyYW5kIGZvciBjbGZsdXNoLgoKMjAwNC0wNy0wOSAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogb2JqYy9vYmpjLWFjdC5jIChidWlsZF9tb2R1bGVfZGVzY3JpcHRvcik6IE1hcmsgVU9CSkNfTU9EVUxFU19kZWNsIGFzCglhbHdheXMgcmVmZXJlbmNlZC4KCShzeW50aF9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6IExpa2V3aXNlIGZvciBVT0JKQ19DTEFTU19kZWNsIGFuZAoJVU9CSkNfTUVUQUNMQVNTX2RlY2wuCgoyMDA0LTA3LTA5ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJUFIgdGFyZ2V0LzE2MzY0CgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9mdW5jdGlvbl9hcmcpOiBGb3IgYSBzaW5nbGUgZWxlbWVudCBIRkEsCglkbyByZXR1cm4gYSBwYXJhbGxlbCBpZiBoZmFfbW9kZSA9PSBYRm1vZGUgYW5kIG1vZGUgPT0gVEltb2RlLgoKMjAwNC0wNy0wOSAgSmFuIEJldWxpY2ggIDxqYmV1bGljaEBub3ZlbGwuY29tPgoKCSogYy10eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBpbmNsdWRlIFZFQ1RPUl9UWVBFIGluIHNldCBvZiBjb2RlcwoJcGVybWlzc2libGUgZm9yIHVuYXJ5IHBsdXMuCgoyMDA0LTA3LTA5ICBKYW4gQmV1bGljaCAgPGpiZXVsaWNoQG5vdmVsbC5jb20+CgoJKiBidWlsdGluLXR5cGVzLmRlZiAoQlRfVUlOVCk6IFJlbmFtZSBmcm9tIEJUX1VOU0lHTkVELgoJKEJUX0ZOX1VJTlQpOiBSZW5hbWUgZnJvbSBCVF9GTl9VTlNJR05FRC4KCShCVF9GTl9QVFJfVUlOVCk6IFJlbmFtZSBmcm9tIEJUX0ZOX1BUUl9VTlNJR05FRC4KCShCVF9VTE9ORywgQlRfVUxPTkdMT05HLCBCVF9VSU5UTUFYLCBCVF9GTl9JTlRfVUlOVCwgQlRfRk5fSU5UX1VMT05HLAoJQlRfRk5fSU5UX1VMT05HTE9ORywgQlRfRk5fSU5UX0lOVE1BWCwgQlRfRk5fSU5UX1VJTlRNQVgpOiBOZXcuCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRJTl9DTFp4eHgsIEJVSUxUSU5fQ1RYeHh4LCBCVUlMVElOX1BBUklUWXh4eCwKCUJVSUxUSU5fUE9QQ09VTlR4eHgpOiBBcmd1bWVudHMgYXJlIHVuc2lnbmVkLgoJKEJVSUxUSU5feHh4SU1BWCk6IE5ldy4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fRkZTSU1BWCwKCUJVSUxUX0lOX0NMWklNQVgsIEJVSUxUX0lOX0NUWklNQVgsIEJVSUxUX0lOX1BPUENPVU5JTUFYLCBhbmQKCUJVSUxUX0lOX1BBUklUWUlNQVguCgoyMDA0LTA3LTA5ICBEYXZpZCBTLiBNaWxsZXIgIDxkYXZlbUBudXRzLmRhdmVtbG9mdC5uZXQ+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAocHJvY2Vzc29yX2Nvc3RzKTogRGVmaW5lLgoJKHNwYXJjX2Nvc3RzKTogRGVjbGFyZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGN5cHJlc3NfY29zdHMsIHN1cGVyc3BhcmNfY29zdHMsCgloeXBlcnNwYXJjX2Nvc3RzLCBzcGFyY2xldF9jb3N0cywgdWx0cmFzcGFyY19jb3N0cywKCXVsdHJhc3BhcmMzX2Nvc3RzKTogTmV3LgoJKHNwYXJjX292ZXJyaWRlX29wdGlvbnMpOiBTZXQgc3BhcmNfY29zdHMgYXMgYXBwcm9wcmlhdGUuCgkoc3BhcmNfcnR4X2Nvc3RzKTogVXNlIHNwYXJjX2Nvc3RzIGluc3RlYWQgb2YgbWVzc3kKCWNvbmRpdGlvbmFscy4KCjIwMDQtMDctMDkgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGRvYy9tZC50ZXhpIChQcm9jZXNzb3IgcGlwZWxpbmUgZGVzY3JpcHRpb24pOiBNZW50aW9uIHRoYXQKCXRoZSBvbGQgcGlwZWxpbmUgZGVzY3JpcHRpb24gaXMgZGVwcmVjYXRlZC4KCgkqIGNvbmZpZy9yczYwMDAvNzQ1MC5tZCAoYXV0b21hdG9uIHBwYzc0NTApOiBTcGxpdCB1cCwgbW92ZQoJbWNpdV83NDUwIGZ1bmN0aW9uIHVuaXQgdG8uLi4KCShhdXRvbWF0b24gcHBjNzQ1MG1jaXUpOiAuLi5uZXcgYXV0b21hdG9uLgoKCSogaGFpZmEtc2NoZWQuYyAoaW5zZXJ0X3NjaGVkdWxlX2J1YmJsZXNfcCk6IFJlbW92ZS4KCShzY2hlZHVsZV9ibG9jayk6IERvbid0IGNvbnNpZGVyIGluc2VydGluZyBidWJibGVzLgoJKHNjaGVkX2luaXQpOiBEb24ndCBpbml0aWFsaXplIERGQSBidWJibGVzLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9TQ0hFRF9JTklUX0RGQV9CVUJCTEVTLAoJVEFSR0VUX1NDSEVEX0RGQV9CVUJCTEUpOiBSZW1vdmUuCgkqIHRhcmdldC5oIChpbml0X2RmYV9idWJibGVzLCBkZmFfYnViYmxlKTogUmVtb3ZlIGhvb2tzLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1NDSEVEX0lOSVRfREZBX0JVQkJMRVMsCglUQVJHRVRfU0NIRURfREZBX0JVQkJMRSk6IFJlbW92ZSBkb2N1bWVudGF0aW9uLgoKCSogc3RtdC5jIChjb25kaXRpb25hbF9jb250ZXh0KTogUmVtb3ZlIHByb3RvdHlwZS4KCSogdHJlZS5oIChjb25kaXRpb25hbF9jb250ZXh0KTogUmVtb3ZlLgoJKiB0cmVlLWNmZy5jIChwcmVfaW5zZXJ0X29uX2VkZ2UpOiBSZW1vdmUuCgoJKiBjLWNvbW1vbi5oIChjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBjLXR5cGVjay5jIChjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBSZW1vdmUuCgoyMDA0LTA3LTA5ICBKYW4gQmV1bGljaCAgPGpiZXVsaWNoQG5vdmVsbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGNsYXNzaWZ5X2FyZ3VtZW50KTogVHJlYXQgVjF4eCBtb2RlcyB0aGUgc2FtZSBhcwoJdGhlaXIgYmFzZSBtb2Rlcy4gQ1RJbW9kZSwgVENtb2RlLCBhbmQgWENtb2RlIG11c3QgYmUgcGFzc2VkIGluIG1lbW9yeS4KCVRGbW9kZSAoX19mbG9hdDEyOCkgbXVzdCBiZSBpcyBhbiBTU0UvU1NFVVAgcGFpci4gVjJTSW1vZGUsIFY0SEltb2RlLAoJYW5kIFY4UUkgYXJlIGNsYXNzIFNTRS4gQWxsIHN1ZmZpY2llbnRseSBzbWFsbCByZW1haW5pbmcgdmVjdG9yIG1vZGVzCgltdXN0IGJlIHBhc3NlZCBpbiBvbmUgb3IgdHdvIGludGVnZXIgcmVnaXN0ZXJzLgoJKGl4ODZfbGliY2FsbF92YWx1ZSk6IFRGbW9kZSBtdXN0IGJlIHJldHVybmVkIGluIHhtbTAsIFhDbW9kZSBtdXN0IGJlCglyZXR1cm5lZCBpbiBtZW1vcnkuCgkoYmRlc2NfMmFyZywgaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBfX2J1aWx0aW5faWEzMl9wbXVsdWRxIGFuZAoJX19idWlsdGluX2lhMzJfcG11bHVkcTEyOCBoYXZlIG5vbi11bmlmb3JtIGFyZ3VtZW50IGFuZCByZXR1cm4gdHlwZXMKCWFuZCBtdXN0IHRodXMgYmUgaGFuZGxlZCBleHBsaWNpdGx5LgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqbW92ZGlfMV9yZXg2NCk6IEFkZCBjYXNlcyBmb3IgbW92aW5nIGJldHdlZW4KCU1NWCBhbmQgWE1NIHJlZ3MuCgkobW92djhxaV9pbnRlcm5hbCwgbW92djRoaV9pbnRlcm5hbCwgbW92djJzaV9pbnRlcm5hbCwKCW1vdnYyc2ZfaW50ZXJuYWwpOiBQZXJtaXQgbW92aW5nIGJldHdlZW4gTU1YIGFuZCBYTU0gcmVnaXN0ZXJzIChzaW5jZQoJTU1YIGFyZWd1bWVudHMgYW5kIHJldHVybiB2YWx1ZXMgYXJlIHBhc3NlZCBpbiBYTU0gcmVnaXN0ZXJzKS4KCShzc2UyX3VtdWxzaWRpMyk6IENvcnJlY3QgdHlwZSBhbmQgbW9kZS4KCjIwMDQtMDctMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLWNmZy5jIChkdW1wX2NmZ19zdGF0cyk6IEZpeCA2NC1iaXQgZm9ybWF0IG1pc21hdGNoIGVycm9ycy4KCjIwMDQtMDctMDkgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC80MHgubWQ6IFNwbGl0IGludG8gdHdvIGF1dG9tYXRvbnMuCgoyMDA0LTA3LTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoJICAgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBGb3JjZSB1bml0LWF0LWEtdGltZSBtb2RlCglvbiB3aGVuIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBpbnB1dCBmaWxlLgoJKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiBSZXN0b3JlIGxvb3Agb3ZlciBhbGwgaW5wdXQgZmlsZXMuCglDbGFyaWZ5IGRpYWdub3N0aWMgZm9yIC1keSB3aGVuIFlZREVCVUcgd2Fzbid0IGRlZmluZWQuCgoJKiBjLWRlY2wuYyAoc2V0X3R5cGVfY29udGV4dCk6IE5ldyBmdW5jdGlvbi4KCShwb3Bfc2NvcGUpOiBVc2UgaXQgdG8gc2V0IGNvbnRleHQgb2YgdHlwZXMuICBXaGVuIHdlCgllbmNvdW50ZXIgYSBUWVBFX0RFQ0wsIHNldCB0aGUgY29udGV4dCBvZiB0aGUgYXR0YWNoZWQgdHlwZSB0b28uCgkocG9wX2ZpbGVfc2NvcGUpOiBEb24ndCBjYWxsIGNwcF91bmRlZl9hbGwgaGVyZS4KCShkaWFnbm9zZV9taXNtYXRjaGVkX2RlY2xzKTogRG8gbm90IGNvbXBsYWluIGFib3V0IGEgc2Vjb25kCglkZWZpbml0aW9uIG9mIGFuICdleHRlcm4gaW5saW5lJyBmdW5jdGlvbiBpZiBpdCdzIG5vdCBpbiB0aGUKCXNhbWUgdHJhbnNsYXRpb24gdW5pdC4gIERvIG5vdCBjb21wbGFpbiBhYm91dCBpbmxpbmUKCWRlY2xhcmF0aW9uIGFmdGVyIHVzZSBpZiB0aGUgdXNlIHdhcyBpbiBhIGRpZmZlcmVudAoJdHJhbnNsYXRpb24gdW5pdC4KCShtZXJnZV9kZWNscyk6IERvbid0IGNsb2JiZXIgb2xkZGVjbCdzIERFQ0xfQ09OVEVYVC4KCShwdXNoZGVjbCk6IERvIG5vdCBwdXQgREVDTF9FWFRFUk5BTCwgIVRSRUVfUFVCTElDIGRlY2xzIGluCgl0aGUgZXh0ZXJuYWwgc2NvcGUuCgkocHVzaGRlY2xfdG9wX2xldmVsKTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBDbGFyaWZ5IHdoYXQgaXMgZ29pbmcgb24gd2l0aCBzZXR0aW5nCglERUNMX0VYVEVSTkFMIG9uIGZ1bmN0aW9uIHR5cGVzLCBhIGxpdHRsZS4KCShjX3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBEb24ndCBkbyBhbnl0aGluZyBpZgoJLWZzeW50YXgtb25seSBvciBlcnJvcnMgaGF2ZSBiZWVuIGVuY291bnRlcmVkLgoKMjAwNC0wNy0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHZlYy5jLCB2ZWMuaCAodmVjX2Fzc2VydF9mYWlsKTogVXNlIHVuc2lnbmVkIGludCBmb3IgTElORSBhcmd1bWVudC4KCjIwMDQtMDctMDkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzE2NDU5CgkqIHBhLmMgKG91dHB1dF9pbmRpcmVjdF9jYWxsKTogVXNlICVyMiBhcyB0aGUgbGluayByZWdpc3RlciB3aGVuCgljYWxsaW5nICQkZHluY2FsbCB3aXRoIGEgcGMtcmVsYXRpdmUgYnJhbmNoLgoKMjAwNC0wNy0wOCAgR2VyYWxkIFBmZWlmZXIgIDxnZXJhbGRAcGZlaWZlci5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChCaW5hcmllcyk6IE1lbnRpb24gT3BlblBLRy4KCjIwMDQtMDctMDkgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8xNTU1NQoJKiB0cmVlLWRmYS5jIChkdW1wX3ZhcmlhYmxlKTogSWYgdGhlIHZhcmlhYmxlIGlzIGEgcG9pbnRlcgoJU1NBX05BTUUsIGFsc28gZHVtcCBpdHMgcG9pbnRzLXRvIGluZm9ybWF0aW9uLgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IHB0cl9pbmZvX2RlZik6IEFkZCBmaWVsZAoJaXNfZGVyZWZlcmVuY2VkLgoJKGR1bXBfcG9pbnRzX3RvX2luZm9fZm9yKTogRGVjbGFyZS4KCShkZWJ1Z19wb2ludHNfdG9faW5mb19mb3IpOiBEZWNsYXJlLgoJKiB0cmVlLW9wdGltaXplLmMgKGluaXRfdHJlZV9vcHRpbWl6YXRpb25fcGFzc2VzKTogQWRkIGEKCXNlY29uZCBhbGlhcyBhbmFseXNpcyBwYXNzIGFmdGVyIERPTTIuCglNb3ZlIHBhc3NfZGVsX3B0YSB0byBhIGxhdGVyIHNwb3QuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbXB1dGVfcG9pbnRzX3RvX2FuZF9hZGRyX2VzY2FwZSk6IERvIG5vdAoJY3JlYXRlIGEgbmFtZSB0YWdzIHdoZW4gd2UgZmluZCBhIGRlcmVmZXJlbmNlZCBwb2ludGVyLiAgSnVzdAoJbWFyayB0aGUgcG9pbnRlciBkZXJlZmVyZW5jZWQuCgkoY29sbGVjdF9wb2ludHNfdG9faW5mb19mb3IpOiBNb3ZlIGNvZGUgdG8gY2xlYXIgcG9pbnRzLXRvCglpbmZvcm1hdGlvbiB0byBjcmVhdGVfbmFtZV90YWdzLgoJKGNyZWF0ZV9uYW1lX3RhZ3MpOiBOZXcgZnVuY3Rpb24uCgkoY29tcHV0ZV9mbG93X3NlbnNpdGl2ZV9hbGlhc2luZyk6IENhbGwgaXQuCgkoc2V0dXBfcG9pbnRlcnNfYW5kX2FkZHJlc3NhYmxlcyk6IE1hcmsgdHlwZSB0YWdzIGZvciByZW5hbWluZwoJaGVyZSBpbnN0ZWFkIG9mIC4uLgoJKGNyZWF0ZV9tZW1vcnlfdGFnKTogLi4uIGhlcmUuCgkobWVyZ2VfcG9pbnRlZF90b19pbmZvKTogRG8gbm90IG1lcmdlIFBUX01BTExPQyBhdHRyaWJ1dGVzLgoJKGR1bXBfcG9pbnRzX3RvX2luZm9fZm9yKTogRGVjbGFyZSBleHRlcm4uCgkoZGVidWdfcG9pbnRzX3RvX2luZm9fZm9yKTogTmV3IGZ1bmN0aW9uLgoKMjAwNC0wNy0wOSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcmMvYXJjLm1kOiBTd2l0Y2ggdG8gREZBLWJhc2VkIHNjaGVkdWxlciBkZXNjcmlwdGlvbi4KCSogY29uZmlnL2FyYy9hcmMuYzogU3dpdGNoIHRvIERGQS1iYXNlZCBzY2hlZHVsZXIgZGVzY3JpcHRpb24uCgoyMDA0LTA3LTA5ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS91bmtub3duLWVsZi5oIChUQVJHRVRfREVGQVVMVCk6IERvbid0IHJlcXVpcmUgYW4gQVBDUyBmcmFtZQoJcG9pbnRlci4KCjIwMDQtMDctMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS1wcm90b3MuaCAoeHRlbnNhX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogTmV3LgoJKHh0ZW5zYV9naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSB4dGVuc2FfdmFfYXJnLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoJKiBjb25maWcvdjg1MC92ODUwLXByb3Rvcy5oICh2ODUwX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5jIChUQVJHRVRfR0lNUExJRllfVkFfQVJHX0VYUFIpOiBOZXcuCgkodjg1MF9naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSB2ODUwX3ZhX2FyZy4KCSogY29uZmlnL3Y4NTAvdjg1MC5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgkoRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogSGFuZGxlIHZhcmlhYmxlIHNpemUgdHlwZXMuCgkoRlVOQ1RJT05fQVJHX0NBTExFRV9DT1BJRVMpOiBVc2UgRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFLgoKMjAwNC0wNy0wOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJUFIgdGFyZ2V0LzEyMTMzCgkqIGFybS5jIChhcm1fbGVnaXRpbWF0ZV9pbmRleF9wKSBBbGxvdyBERm1vZGUgZm9yIHNvZnQtZmxvYXQKCWFuZCBESW1vZGUgdG8gdXNlICsvLTRrIG9mZnNldC4KCjIwMDQtMDctMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYtcHJvdG9zLmggKHhzdG9ybXkxNl9leHBhbmRfYnVpbHRpbl92YV9hcmcpOgoJUmVtb3ZlLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogTmV3LgoJKHhzdG9ybXkxNl9naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbQoJeHN0b3JteTE2X2V4cGFuZF9idWlsdGluX3ZhX2FyZy4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmggKEVYUEFORF9CVUlMVElOX1ZBX0FSRyk6IFJlbW92ZS4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCAoc3BhcmNfdmFfYXJnKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfZ2ltcGxpZnlfdmFfYXJnKTogTWFyayBzdGF0aWMuCgoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmggKHNoX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL3NoL3NoLmMgKFRBUkdFVF9HSU1QTElGWV9WQV9BUkdfRVhQUik6IE5ldy4KCShzaF9naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSBzaF92YV9hcmcuCgkqIGNvbmZpZy9zaC9zaC5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoJKiBjb25maWcvcGEvcGEtcHJvdG9zLmggKGhwcGFfdmFfYXJnKTogUmVtb3ZlLgoJKiBjb25maWcvcGEvcGEuYyAoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogTmV3LgoJKGhwcGFfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBSZXdyaXRlIGZyb20gaHBwYV92YV9hcmcuCgkqIGNvbmZpZy9wYS9wYS5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oIChtbjEwMzAwX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChUQVJHRVRfR0lNUExJRllfVkFfQVJHX0VYUFIpOiBOZXcuCgkobW4xMDMwMF9naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSBtbjEwMzAwX3ZhX2FyZy4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoyMDA0LTA3LTA5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChyZXR1cm4pOiBSZXdyaXRlIGxlbmd0aCBmb3JtdWxhLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAob3V0cHV0X3JldHVybik6IFBhc3MgMSBhcyA1dGgKCWFyZ3VtZW50IHRvIGZpbmFsX3NjYW5faW5zbiB3aGVuIGluIGEgZGVsYXkgc2xvdC4KCShvdXRwdXRfc2liY2FsbCk6IExpa2V3aXNlLgoKMjAwNC0wNy0wOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoYXJtX2NwcF9pbnRlcndvcmspOiBOZXcgdmFyaWFibGUuCgkoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBTZXQgaXQgaWYgVEFSR0VUX0lOVEVSV09SSyB3YXMgb24gdGhlIGNvbW1hbmQKCWxpbmUuCgkqIGFybS5oIChhcm1fY3BwX2ludGVyd29yayk6IERlY2xhcmUgaXQuCgkoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBVc2UgaXQgdG8gY29udHJvbCBkZWZpbml0aW9uIG9mCglfX1RIVU1CX0lOVEVSV09SS19fIGluIHRoZSBwcmVwcm9jZXNzb3IuCgoyMDA0LTA3LTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmVjLmggKFZFQ19UX2FsbG9jKTogRml4IE1FTV9TVEFUX0RFQ0wgcGFzdG8uCgoyMDA0LTA3LTA5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xNjQxNgoJKiBjb25maWcvc3BhcmMvc29sMi1iaS5oIChPUFRJT05fREVGQVVMVF9TUEVDUyk6IE5ldyBtYWNyby4KCU92ZXJyaWRlIGRlZmF1bHQgc2V0dGluZ3MgdG8gYWNjb3VudCBmb3IgLW0zMiBhbmQgLW02NC4KCjIwMDQtMDctMDggIFJhbmRvbHBoIENodW5nICA8dGF1c3FAZGViaWFuLm9yZz4KCgkqIHBhMzItbGludXguaCAoTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SKTogRGVmaW5lLgoKMjAwNC0wNy0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fc3RybmNweSk6IE1ha2Ugc3VyZSBsZW4gaXMgYSBjb25zdGFudAoJYmVmb3JlIGNvbXBhcmluZyBpdCBhcyBzdWNoLgoKMjAwNC0wNy0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKHN0ZF9naW1wbGlmeV92YV9hcmdfZXhwcik6IEhvaXN0IHZhbGlzdCBpbnRvIGEKCXRlbXBvcmFyeS4gIFVzZSBiaXQgYXJpdGhtZXRpYyB0byBhbGlnbi4KCjIwMDQtMDctMDggIEplcnJ5IFF1aW5uICA8amxxdWlubkBvcHRvbmxpbmUubmV0PgoKCSogYWxpYXMuYyAobm9ubG9jYWxfbWVudGlvbmVkX3AsIG5vbmxvY2FsX3JlZmVyZW5jZWRfcCwKCW5vbmxvY2FsX3NldF9wLCBpbml0X2FsaWFzX2FuYWx5c2lzKTogVXNlLCBMQUJFTF9QLCBKVU1QX1AsIENBTExfUCwKCU5PTkpVTVBfSU5TTl9QLCBJTlNOX1AsIE5PVEVfUCwgQkFSUklFUl9QLgoJKiBiYi1yZW9yZGVyLmMgKG1hcmtfYmJfZm9yX3VubGlrZWx5X2V4ZWN1dGVkX3NlY3Rpb24sCglhZGRfbGFiZWxzX2FuZF9taXNzaW5nX2p1bXBzLCBmaW5kX2p1bXBfYmxvY2ssCglmaXhfY3Jvc3NpbmdfdW5jb25kaXRpb25hbF9icmFuY2hlcywgYWRkX3JlZ19jcm9zc2luZ19qdW1wX25vdGVzKToKCUxpa2V3aXNlLgoJKiBidC1sb2FkLmMgKGJ0cl9yZWZlcmVuY2VkX3AsIGNvbXB1dGVfZGVmc191c2VzX2FuZF9nZW4sCglsaW5rX2J0cl91c2VzLCBtb3ZlX2J0cl9kZWYpOiBMaWtld2lzZS4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbG9uZ2ptcCwgZXhwYW5kX2J1aWx0aW5fbm9ubG9jYWxfZ290bywKCWV4cGFuZF9idWlsdGluX2V4cGVjdF9qdW1wKTogTGlrZXdpc2UuCgkqIGNhbGxlci1zYXZlLmMgKHNhdmVfY2FsbF9jbG9iYmVyZWRfcmVncywgaW5zZXJ0X29uZV9pbnNuKTogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogTGlrZXdpc2UuCgkqIGNmZ2FuYWwuYyAoZm9yd2FyZGVyX2Jsb2NrX3ApOiBMaWtld2lzZS4KCSogY2ZnYnVpbGQuYyAoaW5zaWRlX2Jhc2ljX2Jsb2NrX3AsIGNvdW50X2Jhc2ljX2Jsb2NrcywKCW1ha2VfbGFiZWxfZWRnZSwgcnRsX21ha2VfZWhfZWRnZSwgbWFrZV9lZGdlcywgZmluZF9iYXNpY19ibG9ja3NfMSwKCWZpbmRfYmJfYm91bmRhcmllcyk6IExpa2V3aXNlLgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9zaW1wbGlmeV9jb25kanVtcCwgdHJ5X2ZvcndhcmRfZWRnZXMsCgltZXJnZV9ibG9ja3NfbW92ZV9wcmVkZWNlc3Nvcl9ub2p1bXBzLAoJbWVyZ2VfYmxvY2tzX21vdmVfc3VjY2Vzc29yX25vanVtcHMsIGluc25zX21hdGNoX3AsCglmbG93X2ZpbmRfY3Jvc3NfanVtcCwgb3V0Z29pbmdfZWRnZXNfbWF0Y2gsIHRyeV9jcm9zc2p1bXBfdG9fZWRnZSwKCXRyeV9vcHRpbWl6ZV9jZmcpOiBMaWtld2lzZS4KCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9ibG9jaywgY29uc3RydWN0X2V4aXRfYmxvY2spOiBMaWtld2lzZS4KCSogY2ZnbGF5b3V0LmMgKHNraXBfaW5zbnNfYWZ0ZXJfYmxvY2ssIGxhYmVsX2Zvcl9iYiwKCXJlY29yZF9lZmZlY3RpdmVfZW5kcG9pbnRzLCBpbnNuX2xvY2F0b3JzX2luaXRpYWxpemUsCglmaXh1cF9yZW9yZGVyX2NoYWluLCB1cGRhdGVfdW5saWtlbHlfZXhlY3V0ZWRfbm90ZXMpOiBMaWtld2lzZS4KCSogY2ZnbWFpbmxvb3AuYyAoY3JlYXRlX2xvb3Bfbm90ZXMpOiBMaWtld2lzZS4KCSogY2ZncnRsLmMgKGRlbGV0ZV9pbnNuLCBkZWxldGVfaW5zbl9jaGFpbiwKCWNyZWF0ZV9iYXNpY19ibG9ja19zdHJ1Y3R1cmUsIHJ0bF9kZWxldGVfYmxvY2ssIGZyZWVfYmJfZm9yX2luc24sCgl1cGRhdGVfYmJfZm9yX2luc24sIHJ0bF9tZXJnZV9ibG9ja3MsIHJ0bF9jYW5fbWVyZ2VfYmxvY2tzLAoJYmxvY2tfbGFiZWwsIHRyeV9yZWRpcmVjdF9ieV9yZXBsYWNpbmdfanVtcCwgbGFzdF9sb29wX2JlZ19ub3RlLAoJcmVkaXJlY3RfYnJhbmNoX2VkZ2UsIGZvcmNlX25vbmZhbGx0aHJ1X2FuZF9yZWRpcmVjdCwKCXJ0bF90aWR5X2ZhbGx0aHJ1X2VkZ2UsIGJhY2tfZWRnZV9vZl9zeW50YWN0aWNfbG9vcF9wLAoJcnRsX3NwbGl0X2VkZ2UsIGNvbW1pdF9vbmVfZWRnZV9pbnNlcnRpb24sIHByaW50X3J0bF93aXRoX2JiLAoJdXBkYXRlX2JyX3Byb2Jfbm90ZSwgcnRsX3ZlcmlmeV9mbG93X2luZm9fMSwgcnRsX3ZlcmlmeV9mbG93X2luZm8sCglwdXJnZV9kZWFkX2VkZ2VzLCBjZmdfbGF5b3V0X3JlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCwKCWNmZ19sYXlvdXRfZGVsZXRlX2Jsb2NrLCBjZmdfbGF5b3V0X2Nhbl9tZXJnZV9ibG9ja3NfcCwKCWNmZ19sYXlvdXRfbWVyZ2VfYmxvY2tzLCBydGxfYmxvY2tfZW5kc193aXRoX2NhbGxfcCwKCW5lZWRfZmFrZV9lZGdlX3AsIHJ0bF9mbG93X2NhbGxfZWRnZXNfYWRkKTogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYyAoY29tYmluZV9pbnN0cnVjdGlvbnMsIGNhbl9jb21iaW5lX3AsIHRyeV9jb21iaW5lLAoJZmluZF9zcGxpdF9wb2ludCwgcmVjb3JkX2RlYWRfYW5kX3NldF9yZWdzLCByZWdfZGVhZF9hdF9wLAoJZGlzdHJpYnV0ZV9ub3RlcywgZGlzdHJpYnV0ZV9saW5rcywgaW5zbl9jdWlkKTogTGlrZXdpc2UuCgkqIGNzZS5jIChmb2xkX3J0eCwgY3NlX2luc24sIGNzZV9hcm91bmRfbG9vcCwKCWludmFsaWRhdGVfc2tpcHBlZF9ibG9jaywgY3NlX3NldF9hcm91bmRfbG9vcCwKCWNzZV9lbmRfb2ZfYmFzaWNfYmxvY2ssIGNzZV9tYWluLCBjc2VfYmFzaWNfYmxvY2ssCgljc2VfY29uZGl0aW9uX2NvZGVfcmVnKTogTGlrZXdpc2UuCgkqIGNzZWxpYi5jIChjc2VsaWJfcHJvY2Vzc19pbnNuKTogTGlrZXdpc2UuCgkqIGRkZy5jIChjcmVhdGVfZGRnKTogTGlrZXdpc2UuCgkqIGRmLmMgKGRmX2luc25fcmVmc19yZWNvcmQsIGRmX2JiX3JkX2xvY2FsX2NvbXB1dGUsIGRmX2luc25zX21vZGlmeSk6CglMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9zdGFja19hZGp1c3QsIGR3YXJmMm91dF9mcmFtZV9kZWJ1ZywKCWdlbl9sYWJlbF9kaWUsIGR3YXJmMm91dF92YXJfbG9jYXRpb24pOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoZ2V0X2ZpcnN0X25vbm5vdGVfaW5zbiwgZ2V0X2xhc3Rfbm9ubm90ZV9pbnNuLAoJbmV4dF9pbnNuLCBwcmV2aW91c19pbnNuLCBuZXh0X25vbm5vdGVfaW5zbiwgcHJldl9ub25ub3RlX2luc24sCglsYXN0X2NhbGxfaW5zbiwgYWN0aXZlX2luc25fcCwgbmV4dF9sYWJlbCwgcHJldl9sYWJlbCwKCWxpbmtfY2MwX2luc25zLCBuZXh0X2NjMF91c2VyLCB0cnlfc3BsaXQsIGFkZF9pbnNuX2FmdGVyLAoJYWRkX2luc25fYmVmb3JlLCByZW1vdmVfaW5zbiwgYWRkX2Z1bmN0aW9uX3VzYWdlX3RvLAoJcmVvcmRlcl9pbnNucywgZmluZF9saW5lX25vdGUsIHJlbW92ZV91bm5lY2Vzc2FyeV9ub3RlcywKCWVtaXRfaW5zbl9hZnRlcl8xLCBjbGFzc2lmeV9pbnNuKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChjb252ZXJ0X2Zyb21fZWhfcmVnaW9uX3Jhbmdlc18xLCBlbWl0X3RvX25ld19iYl9iZWZvcmUsCgljb25uZWN0X3Bvc3RfbGFuZGluZ19wYWRzLCBzamxqX21hcmtfY2FsbF9zaXRlcywKCXNqbGpfZW1pdF9mdW5jdGlvbl9lbnRlciwgc2psal9lbWl0X2Z1bmN0aW9uX2V4aXQsIHJlYWNoYWJsZV9oYW5kbGVycywKCWNhbl90aHJvd19pbnRlcm5hbCwgY2FuX3Rocm93X2V4dGVybmFsLCBzZXRfbm90aHJvd19mdW5jdGlvbl9mbGFncywKCWNvbnZlcnRfdG9fZWhfcmVnaW9uX3Jhbmdlcyk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAob3B0aW1pemVfc2F2ZV9hcmVhX2FsbG9jYSk6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWwpOiBMaWtld2lzZS4KCSogZmluYWwuYyAoaW5zbl9jdXJyZW50X3JlZmVyZW5jZV9hZGRyZXNzLCBjb21wdXRlX2FsaWdubWVudHMsCglzaG9ydGVuX2JyYW5jaGVzLCBmaW5hbCwgc2Nhbl9haGVhZF9mb3JfdW5saWtlbHlfZXhlY3V0ZWRfbm90ZSwKCWZpbmFsX3NjYW5faW5zbiwgb3V0cHV0X2FzbV9sYWJlbCwgbGVhZl9mdW5jdGlvbl9wKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoZmlyc3RfaW5zbl9hZnRlcl9iYXNpY19ibG9ja19ub3RlLCBkZWxldGVfZGVhZF9qdW1wdGFibGVzLAoJcHJvcGFnYXRlX2Jsb2NrX2RlbGV0ZV9pbnNuLCBwcm9wYWdhdGVfb25lX2luc24sCglpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvLCBwcm9wYWdhdGVfYmxvY2ssIGxpYmNhbGxfZGVhZF9wLAoJbWFya19zZXRfMSwgYXR0ZW1wdF9hdXRvX2luYywgZmluZF9hdXRvX2luYywgdHJ5X3ByZV9pbmNyZW1lbnQpOgoJTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncywJcmVvcmRlcl9ibG9ja3NfMSwKCWV4cGFuZF9mdW5jdGlvbl9zdGFydCwgZXhwYW5kX2Z1bmN0aW9uX2VuZCwgY29udGFpbnMsCgl0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zLAoJcmVwb3NpdGlvbl9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfbm90ZXMpOiBMaWtld2lzZS4KCSogZ2NzZS5jIChjb25zdHByb3BfcmVnaXN0ZXIsIGJ5cGFzc19jb25kaXRpb25hbF9qdW1wcywKCWluc2VydF9pbnNuX2VuZF9iYiwgZ2NzZV9hZnRlcl9yZWxvYWQpOiBMaWtld2lzZS4KCSogZ2VuZW1pdC5jIChnZW5fZXhwYW5kLCBnZW5fc3BsaXQpOiBMaWtld2lzZS4KCSogZ2VucGVlcC5jIChnZW5fcGVlcGhvbGUsIG1haW4pOiBMaWtld2lzZS4KCSogZ2xvYmFsLmMgKGJ1aWxkX2luc25fY2hhaW4pOiBMaWtld2lzZS4KCSogZ3JhcGguYyAobm9kZV9kYXRhLCBwcmludF9ydGxfZ3JhcGhfd2l0aF9iYik6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jICh1bmxpbmtfb3RoZXJfbm90ZXMsIHVubGlua19saW5lX25vdGVzLAoJZ2V0X2Jsb2NrX2hlYWRfdGFpbCwgbm9fcmVhbF9pbnNuc19wLCBybV9saW5lX25vdGVzLCBzYXZlX2xpbmVfbm90ZXMsCglyZXN0b3JlX2xpbmVfbm90ZXMsIHJtX3JlZHVuZGFudF9saW5lX25vdGVzLCBybV9vdGhlcl9ub3RlcywKCW9rX2Zvcl9lYXJseV9xdWV1ZV9yZW1vdmFsLCBzZXRfcHJpb3JpdGllcywgc2NoZWRfaW5pdCk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChjb3VudF9iYl9pbnNucywgZmlyc3RfYWN0aXZlX2luc24sIGxhc3RfYWN0aXZlX2luc24sCgljb25kX2V4ZWNfcHJvY2Vzc19pbnNucywgZW5kX2lmY3Z0X3NlcXVlbmNlLCBub2NlX3Byb2Nlc3NfaWZfYmxvY2ssCgltZXJnZV9pZl9ibG9jaywgYmxvY2tfanVtcHNfYW5kX2ZhbGx0aHJ1X3AsIGZpbmRfaWZfYmxvY2ssCglkZWFkX29yX3ByZWRpY2FibGUpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKHRyeV9jb25zdGFudHMpOiBMaWtld2lzZS4KCSoganVtcC5jIChyZWJ1aWxkX2p1bXBfbGFiZWxzLCBjbGVhbnVwX2JhcnJpZXJzLAoJcHVyZ2VfbGluZV9udW1iZXJfbm90ZXMsIGluaXRfbGFiZWxfaW5mbywgbWFya19hbGxfbGFiZWxzLAoJc3F1ZWV6ZV9ub3RlcywgZ2V0X2xhYmVsX2JlZm9yZSwgZ2V0X2xhYmVsX2FmdGVyLAoJcmV2ZXJzZWRfY29tcGFyaXNvbl9jb2RlX3BhcnRzLCBzaW1wbGVqdW1wX3AsIHBjX3NldCwKCXJldHVybmp1bXBfcCwgb25seWp1bXBfcCwgZm9sbG93X2p1bXBzLCBtYXJrX2p1bXBfbGFiZWwsCglkZWxldGVfYmFycmllciwgZGVsZXRlX3ByaW9yX2NvbXB1dGF0aW9uLCBkZWxldGVfY29tcHV0YXRpb24sCglkZWxldGVfcmVsYXRlZF9pbnNucywgZGVsZXRlX2Zvcl9wZWVwaG9sZSwgcmVkaXJlY3RfanVtcCk6CglMaWtld2lzZS4KCSogbGNtLmMgKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmMgKHZhbGlkYXRlX2VxdWl2X21lbSwgdXBkYXRlX2VxdWl2X3JlZ3MsIGJsb2NrX2FsbG9jKToKCUxpa2V3aXNlLgoJKiBsb29wLWRvbG9vcC5jIChkb2xvb3BfdmFsaWRfcCwgZG9sb29wX29wdGltaXplKTogTGlrZXdpc2UuCgkqIGxvb3AtaW52YXJpYW50LmMgKGZpbmRfZXhpdHMsIGZpbmRfaW52YXJpYW50c19iYik6IExpa2V3aXNlLgoJKiBsb29wLWl2LmMgKHNpbXBsaWZ5X3VzaW5nX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCSogbG9vcC5jIChjb21wdXRlX2x1aWRzLCBsb29wX29wdGltaXplLCBzY2FuX2xvb3AsIGxpYmNhbGxfb3RoZXJfcmVnLAoJbGliY2FsbF9iZW5lZml0LCBza2lwX2NvbnNlY19pbnNucywgbW92ZV9tb3ZhYmxlcywgcHJlc2Nhbl9sb29wLAoJZmluZF9hbmRfdmVyaWZ5X2xvb3BzLCBsYWJlbHNfaW5fcmFuZ2VfcCwgZm9yX2VhY2hfaW5zbl9pbl9sb29wLAoJbG9vcF9iaXZzX2luaXRfZmluZCwgc3RyZW5ndGhfcmVkdWNlLCBjaGVja19pbnNuX2Zvcl9iaXZzLAoJY2hlY2tfaW5zbl9mb3JfZ2l2cywgY2hlY2tfZmluYWxfdmFsdWUsIHVwZGF0ZV9naXZfZGVyaXZlLAoJYmFzaWNfaW5kdWN0aW9uX3ZhciwgcHJvZHVjdF9jaGVhcF9wLCBjaGVja19kYnJhX2xvb3AsCglsb29wX2luc25fZmlyc3RfcCwgbGFzdF91c2VfdGhpc19iYXNpY19ibG9jaywKCWNhbm9uaWNhbGl6ZV9jb25kaXRpb24sIGdldF9jb25kaXRpb24sIGxvb3BfcmVnc19zY2FuLCBsb2FkX21lbXMsCgl0cnlfY29weV9wcm9wLCBMT09QX0JMT0NLX05VTSwgbG9vcF9kdW1wX2F1eCk6IExpa2V3aXNlLgoJKiBtb2R1bG8tc2NoZWQuYyAoZG9sb29wX3JlZ2lzdGVyX2dldCwgZmluZF9saW5lX25vdGUsIHNtc19zY2hlZHVsZSwKCXNtc19zY2hlZHVsZV9ieV9vcmRlcik6IExpa2V3aXNlLgoJKiBvcHRhYnMuYyAoZW1pdF9ub19jb25mbGljdF9ibG9jaywgZW1pdF9saWJjYWxsX2Jsb2NrKTogTGlrZXdpc2UuCgkqIHBvc3RyZWxvYWQuYyAocmVsb2FkX2NzZV9zaW1wbGlmeV9vcGVyYW5kcywgcmVsb2FkX2NvbWJpbmUsCglyZWxvYWRfY3NlX21vdmUyYWRkKTogTGlrZXdpc2UuCgkqIHByZWRpY3QuYyAoY2FuX3ByZWRpY3RfaW5zbl9wLCBlc3RpbWF0ZV9wcm9iYWJpbGl0eSwKCWV4cGVjdGVkX3ZhbHVlX3RvX2JyX3Byb2IsIHByb2Nlc3Nfbm90ZV9wcmVkaWN0aW9ucyk6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4LCBwcmludF9ydGwsIHByaW50X3J0bF9zaW5nbGUpOiBMaWtld2lzZS4KCSogcHJvZmlsZS5jIChicmFuY2hfcHJvYik6IExpa2V3aXNlLgoJKiByYS1idWlsZC5jIChsaXZlX291dF8xLCBsaXZldGhyb3VnaF9jb25mbGljdHNfYmIsCglkZXRlY3Rfd2Vic19zZXRfaW5fY29uZF9qdW1wKTogTGlrZXdpc2UuCgkqIHJhLWRlYnVnLmMgKHJhX3ByaW50X3J0eF9vYmplY3QsIHJhX2RlYnVnX2luc25zLAoJcmFfcHJpbnRfcnRsX3dpdGhfYmIpOiBMaWtld2lzZS4KCSogcmEtcmV3cml0ZS5jIChpbnNlcnRfc3RvcmVzLCByZXdyaXRlX3Byb2dyYW0yKTogTGlrZXdpc2UuCgkqIHJlY29nLmMgKG5leHRfaW5zbl90ZXN0c19ub19pbmVxdWFsaXR5LCBmaW5kX3NpbmdsZV91c2UsCglzcGxpdF9hbGxfaW5zbnMsIHBlZXBob2xlMl9vcHRpbWl6ZSwgaWZfdGVzdF9ieXBhc3NfcCk6IExpa2V3aXNlLgoJKiByZWctc3RhY2suYyAobmV4dF9mbGFnc191c2VyLCByZWNvcmRfbGFiZWxfcmVmZXJlbmNlcywKCWVtaXRfc3dhcF9pbnNuLCBzd2FwX3J0eF9jb25kaXRpb24sIHN1YnN0X3N0YWNrX3JlZ3MsCgljb21wZW5zYXRlX2VkZ2UsIGNvbnZlcnRfcmVnc18xKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHNjYW5fb25lX2luc24pOiBMaWtld2lzZS4KCSogcmVnbW92ZS5jIChvcHRpbWl6ZV9yZWdfY29weV8xLCBvcHRpbWl6ZV9yZWdfY29weV8yLCBmaXh1cF9tYXRjaF8yLAoJcmVnbW92ZV9vcHRpbWl6ZSwgZml4dXBfbWF0Y2hfMSwgc2luZ2xlX3NldF9mb3JfY3NhLAoJY29tYmluZV9zdGFja19hZGp1c3RtZW50c19mb3JfYmxvY2spOiBMaWtld2lzZS4KCSogcmVncmVuYW1lLmMgKGJ1aWxkX2RlZl91c2UsIGNvcHlwcm9wX2hhcmRyZWdfZm9yd2FyZF8xKTogTGlrZXdpc2UuCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMsIGZpbmRfcmVsb2Fkc19hZGRyZXNzXzEsIHN1YnN0X3JlbG9hZHMsCglmaW5kX2VxdWl2X3JlZyk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKHJlbG9hZCwgY2FsY3VsYXRlX25lZWRzX2FsbF9pbnNucywgc2V0X2xhYmVsX29mZnNldHMsCglyZWxvYWRfYXNfbmVlZGVkLCBlbWl0X2lucHV0X3JlbG9hZF9pbnNucywgZG9fb3V0cHV0X3JlbG9hZCwKCWRlbGV0ZV9vdXRwdXRfcmVsb2FkLCBkZWxldGVfYWRkcmVzc19yZWxvYWRzXzEsIGZpeHVwX2Fibm9ybWFsX2VkZ2VzKToKCUxpa2V3aXNlLgoJKiByZW9yZy5jIChmaW5kX2VuZF9sYWJlbCwgZW1pdF9kZWxheV9zZXF1ZW5jZSwKCWRlbGV0ZV9mcm9tX2RlbGF5X3Nsb3QsIGRlbGV0ZV9zY2hlZHVsZWRfanVtcCwgb3B0aW1pemVfc2tpcCwKCWdldF9qdW1wX2ZsYWdzLCByYXJlX2Rlc3RpbmF0aW9uLCBtb3N0bHlfdHJ1ZV9qdW1wLAoJdHJ5X21lcmdlX2RlbGF5X2luc25zLCByZWR1bmRhbnRfaW5zbiwgb3duX3RocmVhZF9wLAoJZmlsbF9zaW1wbGVfZGVsYXlfc2xvdHMsIGZpbGxfc2xvdHNfZnJvbV90aHJlYWQsCglmaWxsX2VhZ2VyX2RlbGF5X3Nsb3RzLCByZWxheF9kZWxheV9zbG90cywgbWFrZV9yZXR1cm5faW5zbnMsCglkYnJfc2NoZWR1bGUpOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYyAoZmluZF9iYXNpY19ibG9jaywgbmV4dF9pbnNuX25vX2FubnVsLAoJZmluZF9kZWFkX29yX3NldF9yZWdpc3RlcnMsIG1hcmtfdGFyZ2V0X2xpdmVfcmVncyk6IExpa2V3aXNlLgoJKiBydGwuaCAoUlRYX1BSRVYpOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChnbG9iYWxfcmVnX21lbnRpb25lZF9wLCBub19sYWJlbHNfYmV0d2Vlbl9wLAoJbm9fanVtcHNfYmV0d2Vlbl9wLCByZWdfdXNlZF9iZXR3ZWVuX3AsIHJlZ19yZWZlcmVuY2VkX2JldHdlZW5fcCwKCXJlZ19zZXRfcCwgZmluZF9sYXN0X3ZhbHVlLCBkZWFkX29yX3NldF9yZWdub19wLCBmaW5kX3JlZ19mdXNhZ2UsCglmaW5kX3JlZ25vX2Z1c2FnZSwgcHVyZV9jYWxsX3AsIHJlcGxhY2VfbGFiZWwsIHJ0eF9yZWZlcmVuY2VkX3BfMSwKCXRhYmxlanVtcF9wLCBjb21wdXRlZF9qdW1wX3AsIGluc25zX3NhZmVfdG9fbW92ZV9wLAoJZmluZF9maXJzdF9wYXJhbWV0ZXJfbG9hZCwgY2FuX2hvaXN0X2luc25fcCk6IExpa2V3aXNlLgoJKiBzY2hlZC1kZXBzLmMgKGdldF9jb25kaXRpb24sIGFkZF9kZXBlbmRlbmNlLCBzY2hlZF9hbmFseXplXzIsCglzY2hlZF9hbmFseXplX2luc24sIHNjaGVkX2FuYWx5emUsIGFkZF9mb3J3YXJkX2RlcGVuZGVuY2UpOiBMaWtld2lzZS4KCSogc2NoZWQtZWJiLmMgKGZpeF9iYXNpY19ibG9ja19ib3VuZGFyaWVzLCBhZGRfZGVwc19mb3Jfcmlza3lfaW5zbnMsCglzY2hlZHVsZV9lYmJzKTogTGlrZXdpc2UuCgkqIHNjaGVkLXJnbi5jIChpc19jZmdfbm9ucmVndWxhciwgZmluZF9jb25kaXRpb25hbF9wcm90ZWN0aW9uLAoJaXNfY29uZGl0aW9uYWxseV9wcm90ZWN0ZWQsIGNhbl9zY2hlZHVsZV9yZWFkeV9wLAoJYWRkX2JyYW5jaF9kZXBlbmRlbmNlcywgZGVidWdfZGVwZW5kZW5jaWVzKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZW1pdF9ub3AsIGV4cGFuZF9zdGFydF9jYXNlLCBlbWl0X2p1bXBfaWZfcmVhY2hhYmxlKToKCUxpa2V3aXNlLgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3AsIGNvcHlfbG9vcF9ib2R5LCBiYWNrX2JyYW5jaF9pbl9yYW5nZV9wLAoJcmVnX2RlYWRfYWZ0ZXJfbG9vcCwgbG9vcF9maW5kX2VxdWl2X3ZhbHVlLCBsb29wX2l0ZXJhdGlvbnMsCglzZXRfZG9taW5hdGVzX3VzZSwgdWp1bXBfdG9fbG9vcF9jb250KTogTGlrZXdpc2UuCgkqIHZhci10cmFja2luZy5jIChwcm9sb2d1ZV9zdGFja19hZGp1c3QsIHZ0X2luaXRpYWxpemUpOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdGFudF9wb29sXzEpOiBMaWtld2lzZS4KCjIwMDQtMDctMDggIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jOiBOZXcgZmlsZS4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmg6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoU0NFVl9IKTogTmV3LgoJKHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5vLCB0cmVlLXNzYS1sb29wLW5pdGVyLm8pOiBBZGQgbmV3IGZpbGVzLgoJKiBjZmdsb29wLmggKHN0cnVjdCBsb29wKTogQWRkIGJvdW5kcyBmaWVsZC4KCSogdHJlZS1mbG93LmggKHN0cnVjdCB0cmVlX25pdGVyX2Rlc2MpOiBOZXcgdHlwZS4KCShudW1iZXJfb2ZfaXRlcmF0aW9uc19jb25kLCBudW1iZXJfb2ZfaXRlcmF0aW9uc19leGl0LAoJbG9vcF9uaXRlcl9ieV9ldmFsLCBmaW5kX2xvb3Bfbml0ZXJfYnlfZXZhbCwKCWVzdGltYXRlX251bWJlcnNfb2ZfaXRlcmF0aW9ucywgY2FuX2NvdW50X2l2X2luX3dpZGVyX3R5cGUsCglmcmVlX251bWJlcnNfb2ZfaXRlcmF0aW9uc19lc3RpbWF0ZXMpOiBEZWNsYXJlLgoJKiB0cmVlLmggKGxvd2VyX2JvdW5kX2luX3R5cGUsIHVwcGVyX2JvdW5kX2luX3R5cGUpOiBEZWNsYXJlLgoJKiBwYXJhbXMuZGVmIChQQVJBTV9NQVhfSVRFUkFUSU9OU19UT19UUkFDSyk6IE5ldyBwYXJhbWV0ZXIuCgkqIGRvYy9pbnZva2UudGV4aSAobWF4LWl0ZXJhdGlvbnMtdG8tdHJhY2spOiBEb2N1bWVudC4KCjIwMDQtMDctMDggIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmMgKHNoX3ZhX2FyZyk6IEluaXRpbmFsaXplIGxhYl9vdmVyLgoJKiBjb25maWcvc2gvc2guaCAoQ09OU1RfT0tfRk9SX0oxNik6IFVzZSBwYXJlbnRoZXNlcy4KCShNT0RFX0FGVEVSKTogQWRkIGNhc3QgYXBwcm9wcmlhdGVseS4KCSogY29uZmlnL3NoL3NoLm1kIChtb3ZkaSBzcGxpdHRlcik6IExpa2V3aXNlLgoJKGNhc2VzaV93b3JrZXJfMik6IEFkZCBjb25zdCBxdWFsaWZpZXIgYXBwcm9wcmlhdGVseS4KCShlaF9yZXR1cm4pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKGluc3YpOiBJbml0aWFsaXplIHY7CgoyMDA0LTA3LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL21taXgvbW1peC1wcm90b3MuaCAobW1peF9leHBhbmRfYnVpbHRpbl92YV9hcmcpOiBSZW1vdmUuCgkqIGNvbmZpZy9tbWl4L21taXguYyAoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogTmV3LgoJKG1taXhfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBSZXdyaXRlIGZyb20gbW1peF9leHBhbmRfYnVpbHRpbl92YV9hcmcuCgkqIGNvbmZpZy9tbWl4L21taXguaCAoRVhQQU5EX0JVSUxUSU5fVkFfQVJHKTogUmVtb3ZlLgoJKEZSQU1FX1BPSU5URVJfUkVRVUlSRUQpOiBVc2UgY3VycmVudF9mdW5jdGlvbl9oYXNfbm9ubG9jYWxfbGFiZWwuCgoJKiBjb25maWcvbTMyci9tMzJyLXByb3Rvcy5oIChtMzJyX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL20zMnIvbTMyci5jIChUQVJHRVRfR0lNUExJRllfVkFfQVJHX0VYUFIpOiBOZXcuCgkobTMycl9naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSBtMzJyX3ZhX2FyZy4KCSogY29uZmlnL20zMnIvbTMyci5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC1wcm90b3MuaCAoaXEyMDAwX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuYyAoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogTmV3LgoJKGlxMjAwMF9naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSBpcTIwMDBfdmFfYXJnLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoJKiBjb25maWcvZnJ2L2Zydi1wcm90b3MuaCAoZnJ2X2V4cGFuZF9idWlsdGluX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL2Zydi9mcnYuYyAoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogTmV3LgoJKGZydl9naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSBmcnZfZXhwYW5kX2J1aWx0aW5fdmFfYXJnLgoJKiBjb25maWcvZnJ2L2Zydi5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoJKiBjb25maWcvaTg2MC9pODYwLXByb3Rvcy5oIChpODYwX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL2k4NjAvaTg2MC5jIChUQVJHRVRfR0lNUExJRllfVkFfQVJHX0VYUFIpOiBOZXcuCgkoaTg2MF9naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSBpODYwX3ZhX2FyZy4KCSogY29uZmlnL2k4NjAvaTg2MC5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoyMDA0LTA1LTMxICBBYXJvbiBXLiBMYUZyYW1ib2lzZSA8YWFyb25yYW9sZXRlMzZAYWFyb253bC5jb20+CgoJKiBzeXN0ZW0uaDogUHJvdG90eXBlIGdldHBhZ2VzaXplIGlmIG1pc3NpbmcuCgkqIGNvbmZpZ3VyZS5hYzogQWRkIGdldHBhZ2VzaXplIHRvIGdjY19BQ19DSEVDS19ERUNMUy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoyMDA0LTA3LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2ZyMzAvZnIzMC1wcm90b3MuaCAoZnIzMF92YV9hcmcpOiBSZW1vdmUuCgkqIGNvbmZpZy9mcjMwL2ZyMzAuYyAoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogTmV3LgoJKGZyMzBfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBOZXcuCgkoZnIzMF9wYXNzX2J5X3JlZmVyZW5jZSwgZnIzMF9wYXNzX2J5X3ZhbHVlLCBmcjMwX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL2ZyMzAvZnIzMC5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoyMDA0LTA3LTA4ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTY0MTQKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2RmYV9uZXdfY3ljbGUpOiBGaXggdHlwbyBpbiBjb21wYXJpc29uCglvZiBhc21fbm9wZXJhbmRzIHJlc3VsdC4KCjIwMDQtMDctMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvY3Jpcy9jcmlzLXByb3Rvcy5oIChjcmlzX2V4cGFuZF9idWlsdGluX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL2NyaXMvY3Jpcy5jIChUQVJHRVRfR0lNUExJRllfVkFfQVJHX0VYUFIpOiBOZXcuCgkoY3Jpc19naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSBjcmlzX2V4cGFuZF9idWlsdGluX3ZhX2FyZy4KCSogY29uZmlnL2NyaXMvY3Jpcy5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoyMDA0LTA3LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoaW5kX2dpbXBsaWZ5X3ZhX2FyZ19leHByKTogTmV3LgoJKiB0cmVlLmggKGluZF9naW1wbGlmeV92YV9hcmdfZXhwcik6IERlY2xhcmUuCgkqIGNvbmZpZy9hcmMvYXJjLmMgKGFyY19naW1wbGlmeV92YV9hcmdfZXhwcik6IFVzZSBpdC4KCjIwMDQtMDctMDggIEphbiBCZXVsaWNoICA8amJldWxpY2hAbm92ZWxsLmNvbT4KCgkqIGV4cG1lZC5jIChleHRyYWN0X2JpdF9maWVsZCk6IENvcnJlY3QgY29uZGl0aW9uIHRvIHVzZSB2ZWNfZXh0cmFjdAoJcGF0dGVybnMgYWxzbyBvbiB2ZWN0b3IgZWxlbWVudHMgb3RoZXIgdGhhbiB0aGUgZmlyc3Qgb25lLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh2ZWNfZXh0cmFjdHYyZGYsIHZlY19leHRyYWN0djRzZik6IEFkZCBtaXNzaW5nCglicmVhayBzdGF0ZW1lbnRzLgoKMjAwNC0wNy0wOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi1sZG91YmxlLmM6IENvcnJlY3QgcmVmZXJlbmNlCgl0byB0aGUgTGlubmFpbm1hYSBwYXBlci4KCjIwMDQtMDctMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJjL2FyYy1wcm90b3MuaCAoYXJjX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL2FyYy9hcmMuYyAoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogTmV3LgoJKGFyY19naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSBhcmNfdmFfYXJnLgoJKiBjb25maWcvYXJjL2FyYy5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoJKiBjb25maWcvYzR4L2M0eC1wcm90b3MuaCAoYzR4X3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL2M0eC9jNHguYyAoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogTmV3LgoJKGM0eF9naW1wbGlmeV92YV9hcmdfZXhwcik6IFJld3JpdGUgZnJvbSBjNHhfdmFfYXJnLgoJKiBjb25maWcvYzR4L2M0eC5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBSZW1vdmUuCgoyMDA0LTA3LTA4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEubWQgKHByZWZldGNoXzMyLCBwcmVmZXRjaF82NCk6IFNpbXBsaWZ5IGNvbnN0cmFpbnQgY2hlY2tzLgoKMjAwNC0wNy0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChzdGF0aWNfY3RvcnMsIHN0YXRpY19kdG9ycyk6IE1ha2Ugc3RhdGljLgoJKHBvcF9maWxlX3Njb3BlKTogQ2FsbCBjX2NvbW1vbl93cml0ZV9wY2ggYW5kCgljZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdCBoZXJlLgoJKGJ1aWxkX2NkdG9yKTogTW92ZWQgaGVyZSBmcm9tIGMtb2JqYy1jb21tb24uYzsgc2ltcGxpZnkuCgkoY193cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zXzEpOiBDbGFyaWZ5IGNvbW1lbnQuCgkoY193cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zKTogQ2xvc2UgdGhlIGV4dGVybmFsIHNjb3BlIGJlZm9yZQoJZG9pbmcgYW55dGhpbmcgZWxzZS4gIENhbGwgYnVpbGRfY2R0b3IsIGNncmFwaF9vcHRpbWl6ZSwgYW5kCgltdWRmbGFwX2ZpbmlzaF9maWxlIGhlcmUuCgkqIGMtbGFuZy5jIChmaW5pc2hfZmlsZSk6IERvbid0IGNhbGwgY19vYmpjX2NvbW1vbl9maW5pc2hfZmlsZS4KCUNsYXJpZnkgY29tbWVudC4KCSogYy1vYmpjLWNvbW1vbi5jOiBObyBuZWVkIHRvIGluY2x1ZGUgY2dyYXBoLmguCgkoYnVpbGRfY2R0b3IpOiBNb3ZlZCB0byBjLWRlY2wuYy4KCShjX29iamNfY29tbW9uX2ZpbmlzaF9maWxlKTogRGVsZXRlLgoJKiBjLXRyZWUuaDogVXBkYXRlIHRvIG1hdGNoLgoJKiBvYmpjL29iamMtYWN0LmMgKGZpbmlzaF9maWxlKTogRG9uJ3QgY2FsbCBjX29iamNfY29tbW9uX2ZpbmlzaF9maWxlLgoJKGdlbmVyYXRlX3N0YXRpY19yZWZlcmVuY2VzKTogU2V0IFRSRUVfVVNFRCBiZWZvcmUgY2FsbGluZyBmaW5pc2hfZGVjbC4KCUVsaW1pbmF0ZSB1bm5lY2Vzc2FyeSBkdW1teSBkZWNsYXJhdGlvbi4gIENhbGwgcmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uCglvbiB0aGUgc3RhdGljX2luc3RhbmNlc19kZWNsLgoKMjAwNC0wNy0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChwb3Bfc2NvcGUpOiBEbyBub3Qgc2V0IERFQ0xfQ09OVEVYVCBvbiBmaWxlLXNjb3BlCglkZWNscyB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGlucHV0IHRyYW5zbGF0aW9uIHVuaXQuCgkqIGxhbmdob29rcy5jIChsaGRfc2V0X2RlY2xfYXNzZW1ibGVyX25hbWUpOiBQYXJ0aWFsbHkgcmV2ZXJ0CgljaGFuZ2Ugb2YgMjAwNC0wNy0wNTsgZG8gbm90IHRyZWF0IGRlY2xhcmF0aW9ucyB3aXRoCglERUNMX0NPTlRFWFQgYSBUUkFOU0xBVElPTl9VTklUX0RFQ0wgc3BlY2lhbGx5LgoJKiBvcHRzLmMgKGN1cl9pbl9mbmFtZSk6IERlbGV0ZS4KCSogb3B0cy5oOiBMaWtld2lzZS4KCSogdHJlZS5jOiBSZXZlcnQgY2hhbmdlcyBvZiAyMDA0LTA3LTA1OyBubyBzcGVjaWFsIHRyZWF0bWVudAoJZm9yIFRSQU5TTEFUSU9OX1VOSVRfREVDTHMuCgkqIE1ha2VmaWxlLmluICh0cmVlLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwNC0wNy0wOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fc3RyY3B5KTogTWVyZ2UgZnVuY3Rpb25hbGl0eSBmcm9tCglzaW1wbGlmeV9idWlsdGluX3N0cmNweS4gIEFkZCBhZGRpdGlvbmFsIGxlbiBhcmd1bWVudC4gIE5vIGxvbmdlcgoJc3RhdGljLiAgUmVtb3ZlIGZ1bmN0aW9uIHByb3RvdHlwZS4KCShmb2xkX2J1aWx0aW5fc3RybmNweSk6IExpa2V3aXNlIGludGVncmF0ZSBmdW5jdGlvbmFsaXR5IGZyb20KCXNpbXBsaWZ5X2J1aWx0aW5fc3RybmNweS4gIEFkZCBhZGRpdGlvbmFsIHNsZW4gYXJndW1lbnQuICBObwoJbG9uZ2VyIHN0YXRpYy4gIFJlbW92ZSBmdW5jdGlvbiBwcm90b3R5cGUuCgkoc2ltcGxpZnlfYnVpbHRpbl9zdHJjeSwgc2ltcGxpZnlfYnVpbHRpbl9zdHJuY3B5KTogRGVsZXRlLgoJKHNpbXBsaWZ5X2J1aWx0aW5fZnB1dHMpOiBSZW5hbWUgdG8gZm9sZF9idWlsdGluX2ZwdXRzLiAgQ2hhbmdlCgl0eXBlcyBvZiAiaWdub3JlIiBhbmQgInVubG9ja2VkIiBwYXJhbWV0ZXJzIHRvIGJvb2wuCgkoZm9sZF9idWlsdGluXzEpOiBBZGQgYWRkaXRpb25hbCBpZ25vcmUgYXJndW1lbnQuICBDYWxsIHJlbmFtZWQKCWZvbGRfYnVpbHRpbl9mcHV0cyB0byBzaW1wbGlmeSBHQ0MgImZwdXRzIiBhbmQgImZwdXRzX3VubG9ja2VkIgoJYnVpbHRpbnMuICBVcGRhdGUgYXJndW1lbnRzIHRvIGZvbGRfYnVpbHRpbl9zdHJuY3B5IGFuZAoJZm9sZF9idWlsdGluX3N0cmNweS4gIEFkZCBmdW5jdGlvbiBwcm90b3R5cGUuCgkoZm9sZF9idWlsdGluKTogQWRkIGFkZGl0aW9uYWwgQm9vbGVhbiBpZ25vcmUgYXJndW1lbnQgdG8gcGFzcwoJdG8gZm9sZF9idWlsdGluXzEuCgkoc2ltcGxpZnlfYnVpbHRpbik6IENhbGwgZm9sZF9idWlsdGluX2ZwdXRzLCBmb2xkX2J1aWx0aW5fc3RyY3B5CglhbmQgZm9sZF9idWlsdGluX3N0cm5jcHkgaW5zdGVhZCBvZiBzaW1wbGlmeV9idWlsdGluX2ZwdXRzLAoJc2ltcGxpZnlfYnVpbHRpbl9zdHJjcHkgYW5kIHNpbXBsaWZ5X2J1aWx0aW5fc3RybmNweSByZXNwZWN0aXZlbHkuCgoJKiBleHByLmggKHNpbXBsaWZ5X2J1aWx0aW5fZnB1dHMsIHNpbXBsaWZ5X2J1aWx0aW5fc3RyY3B5LAoJc2ltcGxpZnlfYnVpbHRpbl9zdHJuY3B5KTogRGVsZXRlIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgkqIHRyZWUuaCAoZm9sZF9idWlsdGluX2ZwdXRzLCBmb2xkX2J1aWx0aW5fc3RyY3B5LAoJZm9sZF9idWlsdGluX3N0cm5jcHkpOiBBZGQgZnVuY3Rpb24gcHJvdG90eXBlcyBoZXJlLgoJKGZvbGRfYnVpbHRpbik6IFVwZGF0ZSBmdW5jdGlvbiBwcm90b3R5cGUgd2l0aCBuZXcgImJvb2wgaWdub3JlIi4KCgkqIHRyZWUtc3NhLWNjcC5jIChjY3BfZm9sZCk6IFVwZGF0ZSBjYWxsIHRvIGZvbGRfYnVpbHRpbi4KCShjY3BfZm9sZF9idWlsdGluKTogVXBkYXRlIGNhbGwgdG8gZm9sZF9idWlsdGluLiAgQ2FsbAoJZm9sZF9idWlsdGluX2ZwdXRzLCBmb2xkX2J1aWx0aW5fc3RyY3B5IGFuZCBmb2xkX2J1aWx0aW5fc3RybmNweQoJaW5zdGVhZCBvZiBzaW1wbGlmeV9idWlsdGluX2ZwdXRzLCBzaW1wbGlmeV9idWlsdGluX3N0cmNweSBhbmQKCXNpbXBsaWZ5X2J1aWx0aW5fc3RybmNweSByZXNwZWN0aXZlbHkuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IFVwZGF0ZSBjYWxsIHRvIGZvbGRfYnVpbHRpbi4KCjIwMDQtMDctMDggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RwY3B5KTogVW4tc2ltcGxpZnkgZGVjYXkgb2Ygc3RwY3B5Cgl0byBzdHJjcHkuCgoJKiBleHByLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogRGVmYXVsdCB0byAwLgoJKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IExpa2V3aXNlLgoJKEZVTkNUSU9OX0FSR19DQUxMRUVfQ09QSUVTKTogTGlrZXdpc2UuCgkqIGNhbGxzLmM6IFJlbW92ZSBpZmRlZnMgb2YgbWFjcm9zIGFib3ZlLgoJKiBmdW5jdGlvbnMuYzogTGlrZXdpc2UuCgkqIGV4cHIuYzogTGlrZXdpc2UuCgoyMDA0LTA3LTA4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChVTlNQRUNWX0dPVE9fVjkpOiBEZWxldGUuCgkoYXJjaCBhdHRyaWJ1dGUpOiBEZWxldGUuCgkoY3VycmVudF9mdW5jdGlvbl9jYWxsc19hbGxvY2EgYXR0cmlidXRlKTogUmVuYW1lIGludG8gY2FsbHNfYWxsb2NhLgoJKGNhbGxzX2VoX3JldHVybik6IE5ldyBhdHRyaWJ1dGUuCgkobGVhZl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGxlbmd0aCBhdHRyaWJ1dGUpOiBGaXggZm9ybXVsYSBmb3Igc2liY2FsbHMuCgkocmV0dXJuIGluc24pOiBDb3JyZWN0bHkgY29tcHV0ZSB0aGUgJ2xlbmd0aCcgYXR0cmlidXRlLgoJKGRvX2J1aWx0aW5fc2V0am1wX3NldHVwKTogQWRqdXN0IHVzZSBvZiBjdXJyZW50X2Z1bmN0aW9uX2NhbGxzX2FsbG9jYS4KCjIwMDQtMDctMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLWNmZy5jIChtYWtlX2V4aXRfZWRnZXMpOiBVc2UgZ2V0X2NhbGxfZXhwcl9pbi4KCShyZW1vdmVfdXNlbGVzc19zdG10c18xLCBpc19jdHJsX2FsdGVyaW5nX3N0bXQpOiBMaWtld2lzZS4KCSh0cmVlX2Jsb2NrX2VuZHNfd2l0aF9jYWxsX3AsIG5lZWRfZmFrZV9lZGdlX3ApOiBMaWtld2lzZS4KCSogdHJlZS1laC5jIChsb3dlcl9laF9jb25zdHJ1Y3RzXzEpOiBMaWtld2lzZS4KCSogdHJlZS1zcmEuYyAoc3JhX3dhbGtfbW9kaWZ5X2V4cHIpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtZGNlLmMgKG1hcmtfc3RtdF9pZl9vYnZpb3VzbHlfbmVjZXNzYXJ5KTogTGlrZXdpc2UuCgkoZWxpbWluYXRlX3VubmVjZXNzYXJ5X3N0bXRzKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRzZS5jIChkc2Vfb3B0aW1pemVfc3RtdCk6IExpa2V3aXNlLgoJKiB0cmVlLXRhaWxjYWxsLmMgKG9wdGltaXplX3RhaWxfY2FsbCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1jY3AuYyAoZ2V0X3Jocywgc2V0X3Jocyk6IFJlb3JnIHRvIHVzZSBzd2l0Y2guCgoyMDA0LTA3LTA4ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoJICAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogRW5hYmxlCglTU0UgcHJlZmV0Y2hlcyB3aXRoIC1tdHVuZSwgYXMgbG9uZyBhcyB3ZSBhcmUKCWNvbXBpbGluZyBmb3IgaTY4NiBvciBoaWdoZXIuICBBbGwgaTY4NiBwcm9jZXNzb3JzCglhY2NlcHQgU1NFIHByZWZldGNoZXMgYXMgTk9QUywgc29tZSBpNTg2J3MgZG9uJ3QuCgoyMDA0LTA3LTA4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMDU2NwoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKHVwZGF0ZV9yZXR1cm4pOiBIb25vciBmbGFnX2RlbGF5ZWRfYnJhbmNoLgoKMjAwNC0wNy0wOCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfYXNtX2V4cHJfb3BlcmFuZHMpOiBGaXggdGhpbmtvcyBpbgoJdGhlIGhhbmRsaW5nIG9mIGNsb2JiZXJpbmcgQVNNX0VYUFJzLgoKMjAwNC0wNy0wOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTY0MzAKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGZ1bmN0aW9uX3ZhbHVlKTogSW4gNjQtYml0IG1vZGUsCglyZXR1cm4gdGhlIGFnZ3JlZ2F0ZXMgbGFyZ2VyIHRoYW4gMTYgYnl0ZXMgbGlrZSB1bmlvbnMuCgoyMDA0LTA3LTA4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xNjE5OQoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfZW1pdF9zZXRfc3ltYm9saWNfY29uc3Q2NCk6IFdoZW4KCSd0ZW1wJyBpcyB6ZXJvLCBnZW5lcmF0ZSBuZXcgcHNldWRvcyBhcyBuZWVkZWQgYW5kIGVtaXQgdGhlCglzZXF1ZW5jZSBvZiBpbnNucyBpbiBzaW5nbGUtYXNzaWdubWVudCBmb3JtLiAgUmVzeW5jIGNvbW1lbnRzCgl3aXRoIGNvZGUuCgkoc3BhcmNfZW1pdF9zZXRfY29uc3Q2NCk6IFBhc3MgemVybyBhcyAndGVtcCcgYXJndW1lbnQgdG8gYWJvdmUKCWZ1bmN0aW9uIGJlZm9yZSByZWxvYWQuCgoyMDA0LTA3LTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmVjLmMgKHZlY19hc3NlcnRfZmFpbCk6IFJlbW92ZSBkdXBsaWNhdGUgJ2Z1bmN0aW9uJy4KCgkqIHZlYy5jICh2ZWNfcF9yZXNlcnZlLCB2ZWNfb19yZXNlcnZlKTogQWxsb2NhdGlvbiBpcyBzaWduZWQuCgoJKiB2ZWMuaCAoVkVDX2FsbG9jLCBWRUNfZW1iZWRkZWRfc2l6ZSwgVkVDX2VtYmVkZGVkX2luaXQpOgoJQWxsb2NhdGlvbiBpcyBzaWduZWQuCgkoVkVDX3Jlc2VydmUpOiBSZXR1cm4gZmxhZywgYWxsb2NhdGlvbiBpcyBzaWduZWQuCgoyMDA0LTA3LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtY2NwLmMgKGZvbGRfc3RtdCk6IEdldCB0eXBlIGRpcmVjdGx5IGZyb20KCU9CSl9UWVBFX1JFRl9PQkpFQ1QuCgoyMDA0LTA3LTA4ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCSAgICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJUFIgYy8yNTExCglQUiBjLzMzMjUKCSogYy1kZWNsLmMgKGZpbmlzaF9zdHJ1Y3QpOiBFbnN1cmUgYml0LWZpZWxkcyBhcmUgZ2l2ZW4gdGhlCgljb3JyZWN0IHR5cGUuCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogRm9yIEMsIHJlcXVpcmUKCXRoZSBwcmVjaXNpb24gdG8gbWF0Y2ggYXMgd2VsbCBhcyB0aGUgbW9kZS4KCSogZXhwci5jIChyZWR1Y2VfdG9fYml0X2ZpZWxkX3ByZWNpc2lvbik6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfZXhwcl9yZWFsXzEpOiBSZWR1Y2UgZXhwcmVzc2lvbnMgb2YgYml0LWZpZWxkIHR5cGUgdG8KCXByb3BlciBwcmVjaXNpb24uCgkqIGxhbmdob29rcy5oIChyZWR1Y2VfYml0X2ZpZWxkX29wZXJhdGlvbnMpOiBOZXcgaG9vay4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX1JFRFVDRV9CSVRfRklFTERfT1BFUkFUSU9OUyk6CglEZWZpbmUuCgkqIGMtbGFuZy5jLCBvYmpjL29iamMtbGFuZy5jCgkoTEFOR19IT09LU19SRURVQ0VfQklUX0ZJRUxEX09QRVJBVElPTlMpOiBEZWZpbmUuCgkqIG9iamMvb2JqYy1hY3QuYyAoY2hlY2tfaXZhcnMpOiBDb252ZXJ0IHR5cGVzIHRvIGJpdC1maWVsZCB0eXBlcwoJYmVmb3JlIGNoZWNraW5nLgoJKiB0cmVlLmMgKGJ1aWxkX25vbnN0YW5kYXJkX2ludGVnZXJfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5oIChidWlsZF9ub25zdGFuZGFyZF9pbnRlZ2VyX3R5cGUpOiBOZXcgcHJvdG90eXBlLgoJKiB0cmVlLXNzYS5jICh0cmVlX3NzYV91c2VsZXNzX3R5cGVfY29udmVyc2lvbl8xKTogRG9uJ3QgdHJlYXQKCWNvbnZlcnNpb25zIGJldHdlZW4gaW50ZWdlciBhbmQgYm9vbGVhbiB0eXBlcyBhcyB1c2VsZXNzLgoKMjAwNC0wNy0wOCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IERvIG5vdAoJY3JlYXRlIF9fYnVpbHRpbl9wdHJkaWZmX3QgYW5kIF9fYnVpbHRpbl9zaXplX3QuCgoyMDA0LTA3LTA4ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAobGliYmFja2VuZC5vKTogQWRkIC1jb21iaW5lIHRvIHRoZSBnY2MKCWNvbW1hbmQgbGluZS4KCjIwMDQtMDctMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvdC1zdG9ybXkxNiAoVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTKTogRGVmaW5lLgoJU2V0IHRvIC1Pcy4KCjIwMDQtMDctMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2VoX3JlZ2lvbl9zdGFydCwgZXhwYW5kX2VoX3JlZ2lvbl9lbmQsCglleHBhbmRfZWhfaGFuZGxlciwgZXhwYW5kX2VoX3JlZ2lvbl9lbmRfY2xlYW51cCwKCWV4cGFuZF9zdGFydF9hbGxfY2F0Y2gsIGV4cGFuZF9zdGFydF9jYXRjaCwgZXhwYW5kX2VuZF9jYXRjaCwKCWV4cGFuZF9lbmRfYWxsX2NhdGNoLCBleHBhbmRfZWhfcmVnaW9uX2VuZF9hbGxvd2VkLAoJZXhwYW5kX2VoX3JlZ2lvbl9lbmRfbXVzdF9ub3RfdGhyb3csIGV4cGFuZF9laF9yZWdpb25fZW5kX3Rocm93LAoJZXhwYW5kX2VoX3JlZ2lvbl9lbmRfZml4dXApOiBSZW1vdmUuCgkqIHN0bXQuYyAoc3RydWN0IG5lc3RpbmcpOiBSZW1vdmUgc3RhY2tfbGV2ZWwsIGlubmVybW9zdF9zdGFja19ibG9jaywKCWNsZWFudXBzLCBvdXRlcl9jbGVhbnVwcywgbGFiZWxfY2hhaW4sIGV4Y2VwdGlvbl9yZWdpb24uCgkoc3RydWN0IGdvdG9fZml4dXApOiBSZW1vdmUgc3RhY2tfbGV2ZWwsIGNsZWFudXBfbGlzdF9saXN0LgoJKHN0cnVjdCBsYWJlbF9jaGFpbik6IFJlbW92ZS4KCShzdHJ1Y3Qgc3RtdF9zdGF0dXMpOiBSZW1vdmUgeF9zdGFja19ibG9ja19zdGFjay4KCShzdGFja19ibG9ja19zdGFjaywgZXhwYW5kX2dvdG9faW50ZXJuYWwsIGV4cGFuZF9maXh1cCwgZXhwYW5kX2ZpeHVwcywKCWZpeHVwX2dvdG9zLCBzYXZlX3N0YWNrX3BvaW50ZXIsIGV4cGFuZF9kZWNsX2NsZWFudXAsCglleHBhbmRfZGVjbF9jbGVhbnVwX2VoLCBleHBhbmRfY2xlYW51cHMsIHN0YXJ0X2NsZWFudXBfZGVmZXJyYWwsCgllbmRfY2xlYW51cF9kZWZlcnJhbCwgbGFzdF9jbGVhbnVwX3RoaXNfY29udG91ciwKCWNvbnRhaW5pbmdfYmxvY2tzX2hhdmVfY2xlYW51cHNfb3Jfc3RhY2tfbGV2ZWwsCglhbnlfcGVuZGluZ19jbGVhbnVwcyk6IFJlbW92ZS4KCShleHBhbmRfbnVsbF9yZXR1cm5fMSk6IFRha2Ugbm8gYXJndW1lbnRzLgoJKGV4cGFuZF9sYWJlbCwgZXhwYW5kX25ha2VkX3JldHVybiwgZXhwYW5kX3JldHVybiwKCWV4cGFuZF9zdGFydF9iaW5kaW5nc19hbmRfYmxvY2ssIGV4cGFuZF9lbmRfYmluZGluZ3MsIGV4cGFuZF9kZWNsLAoJZXhwYW5kX2Fub25fdW5pb25fZGVjbCwgZXhwYW5kX3N0YXJ0X2Nhc2UsIHB1c2hjYXNlLCBwdXNoY2FzZV9yYW5nZSwKCWV4cGFuZF9lbmRfY2FzZV90eXBlKTogRG9uJ3QgdXNlIGFueSBvZiB0aGVtLgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IExpa2V3aXNlLgoJKiBkb2p1bXAuYyAoZG9fanVtcCk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoc3RvcmVfZXhwciwgZXhwYW5kX2V4cHJfcmVhbF8xKTogTGlrZXdpc2UuCgkoc2FmZV9mcm9tX3ApOiBEb24ndCBoYW5kbGUgV0lUSF9DTEVBTlVQX0VYUFIsIENMRUFOVVBfUE9JTlRfRVhQUi4KCShleHBhbmRfZXhwcl9yZWFsXzEpOiBEb24ndCBoYW5kbGUgV0lUSF9DTEVBTlVQX0VYUFIsCglDTEVBTlVQX1BPSU5UX0VYUFIsIFRBUkdFVF9FWFBSLCBUUllfQ0FUQ0hfRVhQUiwgQ0FUQ0hfRVhQUiwKCUVIX0ZJTFRFUl9FWFBSLCBUUllfRklOQUxMWV9FWFBSLCBHT1RPX1NVQlJPVVRJTkVfRVhQUi4KCSogZm9sZC1jb25zdC5jIChmb2xkX2NoZWNrc3VtX3RyZWUpOiBVc2UgZmlyc3RfcnRsX29wLgoJKiBnZW5ndHlwZS5jIChhZGp1c3RfZmllbGRfdHJlZV9leHApOiBSZW1vdmUgcnRsIG9wIGhhbmRsaW5nLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jbGVhbnVwX3BvaW50X2V4cHIpOiBSZW51bWJlciBvcGVyYW5kcwoJZm9yIFdJVEhfQ0xFQU5VUF9FWFBSLgoJKGdpbXBsZV9wdXNoX2NsZWFudXApOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGNvcHlfZGVjbF9mb3JfaW5saW5pbmcpOiBEb24ndCBERUNMX1RPT19MQVRFLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBMaWtld2lzZS4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBSZW1vdmUgR09UT19TVUJST1VUSU5FX0VYUFIuCgkqIHRyZWUuYyAoZmlyc3RfcnRsX29wKTogQWx3YXlzIGp1c3QgVFJFRV9DT0RFX0xFTkdUSC4KCShoYXNfY2xlYW51cHMpOiBSZW1vdmUgR09UT19TVUJST1VUSU5FX0VYUFIuCgkqIHRyZWUuZGVmIChXSVRIX0NMRUFOVVBfRVhQUik6IFJlbW92ZSBvcDEgYW5kIG9wMi4KCShHT1RPX1NVQlJPVVRJTkVfRVhQUik6IFJlbW92ZS4KCSogdHJlZS5oIChXSVRIX0NMRUFOVVBfRVhQUl9SVEwpOiBSZW1vdmUuCgkoREVDTF9UT09fTEFURSk6IFJlbW92ZS4KCSogZXhjZXB0LmgsIHRyZWUuaDogVXBkYXRlIGRlY2xzLgoKMjAwNC0wNy0wOCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGV4cGxvdy5jIChvcHRpbWl6ZV9zYXZlX2FyZWFfYWxsb2NhKTogRG8gbm90IGFjY2VwdCBwYXJhbWV0ZXJzLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfZmluYWwpOiBIYW5kbGUgc3ltb3V0LgoJKHJlc3Rfb2ZfaGFuZGxlX25ld19yZWdhbGxvYywgcmVzdF9vZl9oYW5kbGVfb2xkX3JlZ2FsbG9jKToKCVB1c2ggdGltZXZhciBoZXJlLgoJKHJlc3Rfb2ZfaGFuZGxlX3NjaGVkKTogQnJlYWsgb3V0IFNNUy4gIFJlbW92ZSBpZnMgZm9yCglmbGFnX3NjaGVkdWxlX2luc25zIGFuZCBmbGFnX21vZHVsb19zY2hlZC4KCShyZXN0X29mX2hhbmRsZV9hZGRyZXNzb2YsIHJlc3Rfb2ZfaGFuZGxlX2NzZTIpOiBHYXJiYWdlCgljb2xsZWN0IGF0IHRoZSBlbmQuCgkocmVzdF9vZl9oYW5kbGVfZ2NzZTIpOiBQdXQgdW5kZXIgdGltZXZhciBUVl9SRUxPQURfQ1NFX1JFR1MuCgkocmVzdF9vZl9oYW5kbGVfcGFydGl0aW9uX2Jsb2NrcywgcmVzdF9vZl9oYW5kbGVfc21zLAoJcmVzdF9vZl9oYW5kbGVfaWZfYWZ0ZXJfcmVsb2FkLCByZXN0X29mX2hhbmRsZV9wZWVwaG9sZTIsCglyZXN0X29mX2hhbmRsZV9tb2RlX3N3aXRjaGluZywgcmVzdF9vZl9oYW5kbGVfanVtcCwKCXJlc3Rfb2ZfaGFuZGxlX2d1ZXNzX2JyYW5jaF9wcm9iLCByZXN0X29mX2hhbmRsZV9laCwKCXJlc3Rfb2ZfaGFuZGxlX2p1bXAyLCByZXN0X29mX2hhbmRsZV9wb3N0cmVsb2FkLAoJcmVzdF9vZl9oYW5kbGVfZmxvdzIsIHJlc3Rfb2ZfY2xlYW5fc3RhdGUsCglyZXN0X29mX2hhbmRsZV9zaG9ydGVuX2JyYW5jaGVzLAoJcmVzdF9vZl9oYW5kbGVfcHJvbG9ndWVfZXBpbG9ndWUsCglyZXN0X29mX2hhbmRsZV9icmFuY2hfdGFyZ2V0X2xvYWRfb3B0aW1pemUpOiBOZXcuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgdGhlIGFib3ZlLiAgUmVtb3ZlIGdnY19jb2xsZWN0CgljYWxscyBtb3ZlZCB0byByZXN0X29mX2hhbmRsZV8qLgoJKiBydGwuaCAob3B0aW1pemVfc2F2ZV9hcmVhX2FsbG9jYSk6IERvIG5vdCBhY2NlcHQgcGFyYW1ldGVycy4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfYmVnaW5fcHJvbG9ndWUpOiBVc2UgVFJFRV9OT1RIUk9XLgoJKiBleGNlcHQuYyAoc2V0X25vdGhyb3dfZnVuY3Rpb25fZmxhZ3MpOiBTZXQgVFJFRV9OT1RIUk9XLgoJKiBleGNlcHQuaCAoc2V0X25vdGhyb3dfZnVuY3Rpb25fZmxhZ3MpOiBVcGRhdGUgY29tbWVudC4KCSogZnVuY3Rpb24uYyAoY3VycmVudF9mdW5jdGlvbl9ub3Rocm93KTogUmVtb3ZlLgoJKiBvdXRwdXQuaCAoY3VycmVudF9mdW5jdGlvbl9ub3Rocm93KTogUmVtb3ZlLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IERvIG5vdCBzZXQgVFJFRV9OT1RIUk9XLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fY29tcHV0ZV9mdW5jX3R5cGUpOiBVc2UgVFJFRV9OT1RIUk9XLgoKMjAwNC0wNy0wOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBib290c3RyYXAvMTYzMjYKCSogcmVvcmcuYzogUmV2ZXJ0IDIwMDQtMDYtMzAgY2hhbmdlLgoJKGZpbmRfZW5kX2xhYmVsKTogSWYgSEFWRV9lcGlsb2d1ZSBhbmQgIUhBVkVfcmV0dXJuLAoJcmV0dXJuIDAgaW5zdGVhZCBvZiBjcmVhdGluZyBhIGxhYmVsIGF0IHRoZSBlbmQgb2YgdGhlIGluc24gY2hhaW4uCgkob3B0aW1pemVfc2tpcCk6IEFjY291bnQgZm9yIHRoZSBmYWlsdXJlIG1vZGUgb2YgZmluZF9lbmRfbGFiZWwuCgkoZmlsbF9zaW1wbGVfZGVsYXlfc2xvdHMpOiBMaWtld2lzZS4KCShmaWxsX3Nsb3RzX2Zyb21fdGhyZWFkKTogTGlrZXdpc2UuCgkocmVsYXhfZGVsYXlfc2xvdHMpOiBMaWtld2lzZS4KCjIwMDQtMDctMDggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1mbG93LmggKGFkZHJlc3NhYmxlX3ZhcnMpOiBEZWNsYXJlLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChhZGRyZXNzYWJsZV92YXJzKTogRGVmaW5lLgoJKHNldHVwX3BvaW50ZXJzX2FuZF9hZGRyZXNzYWJsZXMpOiBBZGQgYWRkcmVzc2FibGUgdmFyaWFibGVzCgl0byBhZGRyZXNzYWJsZV92YXJzLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfc3RtdF9vcGVyYW5kcyk6IE1vdmUKCWhhbmRsaW5nIG9mIEFTTV9FWFBScyAuLi4KCShnZXRfYXNtX2V4cHJfb3BlcmFuZHMpOiAuLi4gaGVyZS4KCVdoZW4gdGhlIEFTTV9FWFBSIGNsb2JiZXJzIG1lbW9yeSwgYWxzbyBjbG9iYmVyIGFkZHJlc3NhYmxlCgl2YXJpYWJsZXMuCgkqIHRyZWUtc3NhLmMgKGluaXRfdHJlZV9zc2EpOiBJbml0aWFsaXplIGFkZHJlc3NhYmxlX3ZhcnMuCgkoZGVsZXRlX3RyZWVfc3NhKTogUmVzZXQgYWRkcmVzc2FibGVfdmFycy4KCjIwMDQtMDctMDcgIEphbiBCZXVsaWNoICA8amJldWxpY2hAbm92ZWxsLmNvbT4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlKTogVXNlIGFzc2VtYmxlX3plcm9zIGZvcgoJemVyby1pbml0aWFsaXplZCB2YXJpYWJsZXMuCgkoY2F0ZWdvcml6ZV9kZWNsX2Zvcl9zZWN0aW9uKTogSG9ub3IgZmxhZ196ZXJvX2luaXRpYWxpemVkX2luX2JzcwoJZm9yIFNFQ0NBVF9CU1MgYW5kIFNFQ0NBVF9UQlNTLgoKMjAwNC0wNy0wNyAgSmFuIEJldWxpY2ggIDxqYmV1bGljaEBub3ZlbGwuY29tPgoKCSogdmFyYXNtLmMgKGFzbV9vdXRwdXRfYnNzKTogRG9uJ3QgZGVjbGFyZSB1bmxlc3MgQlNTX1NFQ1RJT05fQVNNX09QLgoKCSogZXhwbWVkLmMgKGVtaXRfc3RvcmVfZmxhZyk6IEFsc28gc3BlY2lhbC1jYXNlIGRvdWJsZS13b3JkCgkoaW4tKWVxdWFsaXR5IGNvbXBhcmlzb24gYWdhaW5zdCAtMS4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9naW1wbGlmeV92YV9hcmcpOiBEb24ndCBuZWVkIHRlbXBvcmFyeSBmb3IKCXBhc3NpbmcgYXJndW1lbnRzIHRoZSBjb250YWluZXJzIGZvciB3aGljaCBhcmUgcmVnaXN0ZXJzLgoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IFVzZSBtb2RlIG9mIGZ1bmN0aW9uIHBhcmFtZXRlcgoJcmF0aGVyIHRoYW4gdGhhdCBvZiBhcmd1bWVudCBzaW5jZSBjb25zdGFudHMgaGF2ZSBub25lLgoKMjAwNC0wNy0wOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJSW50cm9kdWNlIEg4U1ggc3VwcG9ydC4KCSogZXhwci5jIChleHBhbmRfc3RyY3B5KTogUmVuYW1lZCBhbmQgbW92ZWQgdG8uLi4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX21vdnN0cik6IC4uLiBoZXJlLiAgVHdlYWsuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY3B5KTogQWRqdXN0LiAgVXNlIG1vdnN0ciBpZiBsZW4gY2FuJ3QgYmUKCWNvbXB1dGVkIG9yIGhhcyBzaWRlIGVmZmVjdHMuCgkoZXhwYW5kX2J1aWx0aW5fc3RwY3B5KTogTGlrZXdpc2UuICBVc2Ugc3RyY3B5IGlmIHJldHVybiB2YWx1ZSBpcwoJdW51c2VkLCBvciBpZiBtZW1wY3B5IGZhaWxzLiAgQWRqdXN0IHRoZSByZXR1cm4gdmFsdWUgaW4gdGhlCglsYXR0ZXIgY2FzZS4gIFVzZSBtb3ZzdHIgaWYgZXZlcnl0aGluZyBlbHNlIGZhaWxzLgoJKiBkb2MvbWQudGV4aSAobW92c3RyKTogRG9jdW1lbnQuCgkobW92bWVtTSwgY2xybWVtTSk6IEZpeCBleHBsYW5hdGlvbiBvZiBtZW1vcnkgYmxvY2sgb3BlcmFuZHMuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoc3RwY3B5KTogUmVuYW1lZCB0by4uLgoJKG1vdnN0cik6IC4uLiB0aGlzLiAgQWRqdXN0LgoJMjAwNC0wNy0wNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogUmVuYW1lIG1vdnN0ciosIGV4Y2VwdCBmb3IgbW92c3RyaWN0KiwgdG8KCW1vdm1lbSogYW5kIGNscnN0ciogdG8gY2xybWVtKi4KCTIwMDQtMDYtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfcmVnX2NsYXNzX2Zyb21fbGV0dGVyKTogTWFwICdEJyB0bwoJR0VORVJBTF9SRUdTLCBhbHdheXMuCgkoaDgzMDBfc3dhcF9pbnRvX2VyNiwgaDgzMDBfc3dhcF9pbnRvX2VyNik6IEhhbmRsZSB0aGUgY2FzZSBvZgoJZ2V0dGluZyB0aGUgc3RhY2sgcG9pbnRlciBhcyBhZGRyLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoUFJFRElDQVRFX0NPREVTKTogUmVtb3ZlIGNvbnN0YW50IHJ0eGVzCglmcm9tIGdlbmVyYWxfb3BlcmFuZF9kc3QuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAobW92bWRfaW50ZXJuYWxfbm9ybWFsKTogTmV3LCBub3JtYWwtbW9kZQoJdmFyaWFudCBvZi4uLgoJKG1vdm1kX2ludGVybmFsKTogLi4uIHRoaXMuICBBZGQgbW9kZXMgdG8gb3BlcmFuZHMuICBEaXNwYXJhZ2UgYEQnCglpbnN0ZWFkIG9mIHJlcXVpcmluZyBpdCB0byBtYXRjaCBvbmx5IGJlZm9yZSByZWxvYWQuCgkoc3RwY3B5X2ludGVybmFsX25vcm1hbCk6IE5ldywgbm9ybWFsLW1vZGUgdmFyaWFudCBvZi4uLgoJKHN0cGNweV9pbnRlcm5hbCk6IC4uLiB0aGlzLiAgQWRkIG1vZGVzIHRvIG9wZXJhbmRzLiAgRGlzcGFyYWdlCglgRCcgaW5zdGVhZCBvZiByZXF1aXJpbmcgaXQgdG8gbWF0Y2ggb25seSBiZWZvcmUgcmVsb2FkLgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmggKGg4MzAwX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogQWRkCgltb2RlIGFyZ3VtZW50LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogUGFzcyBpdCB0by4uLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBQYXNzIGl0IHRvCgloODMwMF9nZXRfaW5kZXguCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoYXR0ciB0eXBlKTogQWRkIGNhbGwuCgkoYXR0ciBjYW5fZGVsYXkpOiBJZiB0eXBlIGlzIGNhbGwsIHNldCBpdCBuby4KCShjYWxsLCBjYWxsX3ZhbHVlKTogU2V0IHR5cGUgdG8gY2FsbC4KCTIwMDQtMDYtMjEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGxvZ2ljYWxoaTNfc24sIGxvZ2ljYWxzaTNfc24pOiBOZXcuCgkyMDA0LTA2LTE2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogdHJlZS5jIChnZXRfbmFycm93ZXIpOiBEb24ndCBuYXJyb3cgaW50ZWdyYWwgdHlwZXMgaW50bwoJbm9uLWludGVncmFsIHR5cGVzLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfZXhwYW5kX2VwaWxvZ3VlKTogSW5pdGlhbGl6ZQoJZnJhbWVfc2l6ZSAqYmVmb3JlKiB0aGUgZmlyc3QgdXNlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKG1vdnN0cmljdHFpKTogUmVpbnRyb2R1Y2UgcG9zdC1pbmNyZW1lbnQKCW9uIGlucHV0LgoJKHBlZXBob2xlMik6IERvbid0IHdpZGVuIGluc3RydWN0aW9ucyB0aGF0IHB1c2ggU1AuICBNb3ZlCglkZWNyZW1lbnQgb2YgU1AgdG8gdGhlIGVuZCBvZiBhbGwgc3RtLWdlbmVyYXRpbmcgcGVlcGhvbGVzLgoJMjAwMy0wNy0yNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGluc3YpOiBQcmVmZXIgdG8gdXNlIEFORCB0byBjbGVhciBhIGJpdGZpZWxkCglhbmQgT1IgdG8gc2V0IGl0IHRvIGFsbCBvbmVzLgoJMjAwMy0wNy0yNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGNhbl9kZWxheSk6IERlZmF1bHQgdG8gIm5vIiBmb3IgYml0IGJyYW5jaGVzLgoJKGNhbGwsIGNhbGxfdmFsdWUpOiBTZXQgY2FuX2RlbGF5IHRvICJubyIuCgkyMDAzLTA3LTIyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoZXh0enYpOiBNYWtlIHN1YnJlZyBjaGVjayBtb3JlIHJvYnVzdC4KCTIwMDMtMDctMjEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqYnJhYml0KTogUmVtb3ZlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCpicmFiYywgKmJyYWJzKTogUmVtb3ZlIG1vZGUgZnJvbQoJemVyb19leHRyYWN0LiAgVXNlIGJpdF9tZW1vcnlfb3BlcmFuZCBhcyB0aGUgcHJlZGljYXRlIGZvcgoJb3BlcmFuZCAxIGFuZCAnV1UnIGFzIHRoZSBjb25zdHJhaW50LiAgQ2hlY2sgdGhlIGRpZmZlcmVuY2UKCWJldHdlZW4gdGhlIGJhc2UgbGVuZ3RoIGFuZCB0aGUgZmluYWwgb25lIHdoZW4gZGVjaWRpbmcgd2hpY2gKCXR5cGUgb2YgYnJhbmNoIHRvIHVzZS4KCTIwMDMtMDctMjEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChleHR6dik6IFJlbW92ZSBtb2RlIGZyb20gb3BlcmFuZHMgMCBhbmQgMS4KCVVzZSBjb252ZXJ0X21vdmUgdG8gZXh0ZW5kIHRoZSByZXN1bHQgZm9yIFRBUkdFVF9IODMwMFNYLiAgQ2hlY2sKCWZvciBRSW1vZGUgbWVtb3J5IHJlZmVyZW5jZXMuICBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUKCWRlc3RpbmF0aW9uIGlzIGEgcGFyYWRveGljYWwgc3VicmVnLgoJMjAwMy0wNy0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCptb3ZzZl9oOHN4KTogQWRkIGFuIHIgPC0gRyBhbHRlcm5hdGl2ZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhbmRxaSk6IFJlbW92ZSBiY2xyIGZyb20gaDhzeCB2ZXJzaW9uLgoJMjAwMy0wNy0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IEluY2x1ZGUgbW92YS5tZAoJKGxlbmd0aF90YWJsZSk6IEFkZCBtb3ZhIGFuZCBtb3ZhX3plcm8uCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChwcmludF9vcGVyYW5kKTogSGFuZGxlICclbycuICBQcmludCBhIGxlbmd0aAoJYWZ0ZXIgYWxsIGNvbnN0YW50IGFkZHJlc3NlcyBmb3IgJyVSJywgJyVYJywgJyVUJyBhbmQgJyVTJy4KCShoODMwMF9tb3ZhX2xlbmd0aCk6IE5ldyBmdW5jdGlvbi4KCShoODMwMF9pbnNuX2xlbmd0aF9mcm9tX3RhYmxlKTogVXNlIGl0IHRvIGhhbmRsZSBtb3ZhIGFuZCBtb3ZhX3plcm8uCgkqIGNvbmZpZy9oODMwMC90LWg4MzAwIChtb3ZhLm1kKTogR2VuZXJhdGUgZnJvbSBnZW5tb3ZhLnNoLiAgQWRkIHRvCglkZXBlbmRlbmNpZXMgZm9yIHMtY29uZmlnLCBldGMuCgkqIGNvbmZpZy9oODMwMC9nZW1vdmEuc2g6IE5ldyBmaWxlLgoJKiBjb25maWcvaDgzMDAvbW92YS5tZDogR2VuZXJhdGVkLgoJMjAwMy0wNy0yMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF9iaXRmaWVsZF9sZW5ndGgpOiBOZXcuCgkobmliYmxlX29wZXJhbmQpOiBBZGp1c3QuCgkoaDgzMDBfYmluYXJ5X2xlbmd0aCk6IEhhbmRsZSBjb25kaXRpb25hbCBiaW5hcnkgb3AuCgkoaDgzMDBfaW5zbl9sZW5ndGhfZnJvbV90YWJsZSk6IEhhbmRsZSBiaXRmaWVsZCBhbmQgYml0YnJhbmNoLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaDogQ2hhbmdlIGNvbnN0cmFpbnRzIFcjIGFuZCBZIyB0byBQIz5YIGFuZAoJUCM8WCwgcmVzcGVjdGl2ZWx5LiAgVGhlIG9yaWdpbmFsIFAgaXMgbm93IElQND5YLiAgSW50cm9kdWNlZCBQIz4wCglhbmQgUCM8MCwgdW51c2VkIHNvIGZhci4gIFcgYW5kIFkgYXJlIG5vdyBwcmVmaXhlcyB0byBtdWx0aS1sZXR0ZXIKCWNvbnN0cmFpbnRzLiAgV1UgaXMgaW50cm9kdWNlZCBhcyBhIHZhcmlhbnQgb2YgVSB0aGF0IHJlcXVpcmVzIGEKCW1lbSwgYW5kIGlzIHRoZXJlZm9yZSBjb25zaWRlcmVkIGFuIEVYVFJBX01FTU9SWV9DT05TVFJBSU5ULgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGF0dHIgdHlwZSk6IEFkZGVkIGJpdGJyYW5jaC4KCShhdHRyIGxlbmd0aF90YWJsZSk6IEFkZGVkIGJpdGZpZWxkIGFuZCBiaXRicmFuY2guCgkoYXR0ciBsZW5ndGgpOiBDb21wdXRlIGJpdGJyYW5jaCBsZW5ndGguCgkoYW5kcWkpOiBTZXBhcmF0ZSBwYXR0ZXJuIGZvciBIODMwMFNYLiAgVXNlIGJmbGQgZm9yIGxvYWRpbmcgdGhlCglsZWFzdC1zaWduaWZpY2FudCBiaXQgb2YgYSBieXRlLgoJKGJyYWJpdCwgYnJhYmMsIGJyYWJzKTogTmV3LgoJKGluc3YsIGV4dHp2KTogRW1pdCBiZnN0IGFuZCBiZmxkIG9uIEg4MzAwU1guCgkoYmZsZCwgYmZzdCwgc2VxLCBzbmUpOiBOZXcuCgkoYnN0emhpcmVnLCBjbXBzdHosIGJzdHosIGJpc3R6KTogTmV3LgoJKGNtcGNvbmRic2V0LCBjb25kYnNldCwgY21wY29uZGJjbHIsIGNvbmRiY2xyKTogTmV3LgoJKGNtcGNvbmRic2V0cmVnLCBjb25kYnNldHJlZywgY21wY29uZGJjbHJyZWcsIGNvbmRiY2xycmVnKTogTmV3LgoJMjAwMy0wNy0xMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDhzeF9iaW5hcnlfbWVtb3J5X29wZXJhdG9yKTogTmV3IGZ1bmN0aW9uLgoJKGg4c3hfdW5hcnlfbWVtb3J5X29wZXJhdG9yKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoRVhUUkFfTUVNT1JZX0NPTlNUUkFJTlQpOiBEaXNhYmxlLgoJKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBoOHN4X3t1bmFyeSxiaW5hcnl9X21lbW9yeV9vcGVyYXRvci4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBBZGQgcGVlcGhvbGVzIHRvIGNvbWJpbmUgcmVsb2FkcyBhbmQKCWFyaXRobWV0aWMgaW5zbnMuCgkyMDAzLTA3LTEwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwLm1kIChjbXBxaSk6IFVzZSAnaScgcmF0aGVyIHRoYW4gJ24nIGluIGNvbnN0cmFpbnRzLgoJKCpjbXBoaV9oODMwMGhzLCAqYWRkcWkzLCAqYWRkaGkzX2g4c3gsIHN1YmhpMyk6IExpa2V3aXNlLgoJKGFuZD9pLCBpb3I/aSwgeG9yP2kpOiBMaWtld2lzZS4KCTIwMDMtMDctMTAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmM6IE1vdmUgZW51bXMgYW5kIHByb3RvdHlwZXMgdG8gaGVhZCBvZiBmaWxlLgoJVmFyaW91cyB3aGl0ZXNwYWNlIGZpeGVzLgoJKGg4MzAwX2NvbnN0YW50X2xlbmd0aCk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20uLi4KCShoODMwMF9kaXNwbGFjZW1lbnRfc2l6ZSk6IC4uLmhlcmUuICBSZW5hbWUgaDgzMDBfZGlzcGxhY2VtZW50X2xlbmd0aC4KCShoODMwMF9jbGFzc2lmeV9vcGVyYW5kKTogVXNlIElOX1JBTkdFLgoJKGg4MzAwX2NsYXNzaWZ5X29wZXJhbmQpOiBVc2UgaDgzMDBfY29uc3RhbnRfbGVuZ3RoLgoJKGg4MzAwX3Nob3J0X21vdmVfbWVtX3ApOiBUaWdodGVuIHNpemUgY2hlY2suCgkoaDhzeF9tZXJnZWFibGVfbWVtcmVmc19wKTogVGlnaHRlbiBlcXVhbGl0eSBjaGVjay4KCTIwMDMtMDYtMzAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9fSDgzMDBTWF9fCglmb3IgLW1zeC4KCSogY29uZmlnL2g4MzAwL2NydGkuYXNtOiBVc2UgLmg4MzAwc3ggb3IgLmg4MzAwc3huIGZvciAtbXN4IGNvZGUuCgkqIGNvbmZpZy9oODMwMC9jcnRuLmFzbTogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtOiBMaWtld2lzZS4gIFVzZSAzMi1iaXQgcG9pbnRlcnMKCWlmIF9fSDgzMDBTWF9fIGlzIGRlZmluZWQuCgkyMDAzLTA2LTI3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaCAoaDgzMDBfZ2V0X2luZGV4KTogQWRkIG1vZGUgcGFyYW1ldGVyLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKEdPX0lGX01PREVfREVQRU5ERU5UX0FERFJFU1MpOiBUcmVhdCBQT1NUX0RFQywgUFJFX0lOQyBhbmQgaW5kZXhlZAoJYWRkcmVzc2VzIGFzIG1vZGUtZGVwZW5kZW50LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogVXBkYXRlIGNhbGwgdG8KCWg4MzAwX2dldF9pbmRleC4KCShoODMwMF9nZXRfaW5kZXgpOiBUYWtlIGEgbW9kZSBhcmd1bWVudC4gIFJld29yayB0byBmaXggYW4KCWVhcmxpZXIgbWlzdW5kZXJzdGFuZGluZy4KCTIwMDMtMDYtMjYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKHplcm9fZXh0ZW5kcWlzaTIpOiBGb3JjZSB0aGUgc291cmNlIG9wZXJhbmQKCWludG8gYSByZWdpc3RlciBpZiBUQVJHRVRfSDgzMDBTWC4KCSgqemVyb19leHRlbmRxaXNpMl9oODMwMGhzLCAqZXh0ZW5kcWlzaTJfaDgzMDApOiBEaXNhYmxlIGZvcgoJVEFSR0VUX0g4MzAwU1guICBBbHNvIGRpc2FibGUgcmVsYXRlZCBkZWZpbmVfc3BsaXRzLgoJKCp6ZXJvX2V4dGVuZHFpc2kyX2g4c3gsICpleHRlbmRxaXNpMl9oOHN4KTogTmV3IHBhdHRlcm5zLgoJMjAwMy0wNi0yMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfcnR4X2Nvc3RzKTogQWRkIGg4c3ggaGFuZGxpbmcuCgkyMDAzLTA2LTIwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChPS19GT1JfWik6IE5ldyBtYWNyby4KCShFWFRSQV9DT05TVFJBSU5UX1NUUik6IENoZWNrIGl0LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfY2xhc3NpZnlfb3BlcmFuZCk6IEFjY2VwdCBudWxsCgljbGFzcyBhcmd1bWVudHMuCgkoaDgzMDBfaW5zbl9sZW5ndGhfZnJvbV90YWJsZSk6IEhhbmRsZSBMRU5HVEhfVEFCTEVfTU9WX0lNTTQuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAobGVuZ3RoX3RhYmxlKTogQWRkIG1vdl9pbW00LgoJKG1vdnFpLCBtb3ZoaSk6IEFkZCBaIDwtIFc0IGFsdGVybmF0aXZlcyB0byBoOHN4IHBhdHRlcm5zLgoJMjAwMy0wNi0yMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBnZW5hdHRydGFiLmMgKHdyaXRlX2VsaWdpYmxlX2RlbGF5KTogQWxsb3cgY2FuZGlkYXRlX2luc24gdG8KCWJlIGEgbGFiZWwuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChERUxBWV9TTE9UX0xFTkdUSCk6IE5ldyBtYWNyby4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGg4MzAwX3Jlb3JnKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9NQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IERlZmluZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChsZW5ndGgpOiBTdWJ0cmFjdCB0aGUgbGVuZ3RoIG9mIHRoZQoJZGVsYXkgc2xvdCBmcm9tIChwYykgd2hlbiBjaGVja2luZyB0aGUgcmFuZ2Ugb2YgZm9yd2FyZCBicmFuY2hlcy4KCShkZWxheV9zbG90LCBjYW5fZGVsYXkpOiBOZXcgYXR0cmlidXRlcy4KCShkZWZpbmVfZGVsYXkpOiBBZGQgYnJhL3MgaGFuZGxpbmcuCgkobW92bWRfaW50ZXJuYWwsIHJldHVybl9oOHN4LCAqcmV0dXJuXzEpOiBTZXQgY2FuX2RlbGF5IHRvIG5vLgoJKGp1bXApOiBBZGQgZGVsYXllZC1icmFuY2ggaGFuZGxpbmcuCgkyMDAzLTA2LTE3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGV4cHIuYyAoZXhwYW5kX3N0cmNweSk6IE5ldyBmdW5jdGlvbi4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RyY3B5KTogRmFsbCBiYWNrIG9uIGV4cGFuZF9zdHJjcHkuCgkoZXhwYW5kX2J1aWx0aW5fc3RwY3B5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaCAoaDhzeF9zcGxpdF9tb3ZtZCk6IFJlbW92ZS4KCShoODMwMF9zd2FwX2ludG9fZXI2LCBoODMwMF9zd2FwX291dF9vZl9lcjYpOiBEZWNsYXJlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfcmVnX2NsYXNzX2Zyb21fbGV0dGVyKTogVHdlYWsgJ2QnCgloYW5kbGluZyB0byBpbXByb3ZlIHJlZ2lzdGVyIGFsbG9jYXRpb24gZm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyLgoJKGg4c3hfc3BsaXRfbW92bWQpOiBEZWxldGUsIG1vdmluZyBlcjYgaGFuZGxpbmcgaW50by4uLgoJKGg4MzAwX3N3YXBfaW50b19lcjYsIGg4MzAwX3N3YXBfb3V0X29mX2VyNik6IC4uLnRoZXNlIG5ldyBmdW5jdGlvbnMuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoVU5TUEVDX1NUUENQWSk6IE5ldyB1bnNwZWMgY29uc3RhbnQuCgkobW92bWQpOiBBZGQgY2FsbHMgdG8gY29weV9ydHguCgkobW92bWRfaW50ZXJuYWwpOiBJbiB0aGUgc2Vjb25kIGFsdGVybmF0aXZlLCBhbGxvdyB0aGUgaW5pdGlhbCBhbmQKCWZpbmFsIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyB0byBiZSBkaWZmZXJlbnQgLiAgVXBkYXRlIHRoZSBzcGxpdHRlcgoJYWNjb3JkaW5nbHkuICBDYWxsIGg4MzAwX3N3YXBfaW50b19lcjYgYW5kIGg4MzAwX3N3YXBfb3V0X29mX2VyNgoJaW5zdGVhZCBvZiBoOHN4X3NwbGl0X21vdm1kLgoJKHN0cGNweSwgbW92c2QpOiBOZXcgZXhwYW5kZXJzLgoJKG1vdnNkX2ludGVybmFsKTogTmV3IGRlZmluZV9pbnNuLgoJMjAwMy0wNi0xMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmggKGg4MzAwX3JlZ19jbGFzc19mcm9tX2xldHRlcik6IERlY2xhcmUuCgkoaDhzeF9lbWl0X21vdm1kLCBoOHN4X3NwbGl0X21vdm1kKTogRGVjbGFyZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKHJlZ19jbGFzcyk6IEFkZCBDT1VOVEVSX1JFR1MsIFNPVVJDRV9SRUdTCglhbmQgREVTVElOQVRJT05fUkVHUy4KCShSRUdfQ0xBU1NfTkFNRVMsIFJFR19DTEFTU19DT05URU5UUyk6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCShSRUdOT19SRUdfQ0xBU1MpOiBNYXAgZXI0LCBlcjUgYW5kIGVyNiB0byB0aGUgbmV3IGNsYXNzZXMuCgkoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogVXNlIGg4MzAwX3JlZ19jbGFzc19mcm9tX2xldHRlci4KCShoODMwMF9tb3ZlX3JhdGlvKTogRGVjbGFyZS4KCShNT1ZFX1JBVElPKTogVXNlIGl0LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfbW92ZV9yYXRpbyk6IE5ldyB2YXJpYWJsZS4KCShoODMwMF9pbml0X29uY2UpOiBJbml0aWFsaXplIGl0LgoJKGg4MzAwX3JlZ19jbGFzc19mcm9tX2xldHRlcik6IE5ldyBmdW5jdGlvbi4KCShwcmludF9vcGVyYW5kKTogQWRkIGFuICdtJyBwcmVmaXggZm9yIHByaW50aW5nICIuYiIsICIudyIgb3IgIi5sIi4KCShoOHN4X2VtaXRfbW92bWQsIGg4c3hfc3BsaXRfbW92bWQpOiBOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKFVOU1BFQ19NT1ZNRCk6IE5ldyB1bnNwZWMgY29uc3RhbnQuCgkoQ09VTlRFUl9SRUcsIFNPVVJDRV9SRUcsIERFU1RJTkFUSU9OX1JFRyk6IE5ldyByZWdpc3RlciBjb25zdGFudHMuCgkobW92c3Ryc2ksIG1vdm1kKTogTmV3IGV4cGFuZGVycy4KCShtb3ZtZF9pbnRlcm5hbCk6IE5ldyBpbnNuLgoJMjAwMy0wNi0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoRVhUUkFfTUVNT1JZX0NPTlNUUkFJTlQpOiBEZWZpbmUuCgkyMDAzLTA2LTA0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9lbGYuaCAoTElOS19TUEVDKTogVXNlIC1tIGg4MzAwc3huZWxmIGZvciAtbXN4IC1tbi4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGFzbV9maWxlX3N0YXJ0KTogVXNlIC5oODMwMHN4biBsaWtld2lzZS4KCTIwMDMtMDYtMDMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKG5pYmJsZV9vcGVyYW5kKTogRml4IHdhcm5pbmcuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAobW92c3RyaWN0aGkpOiBTZXQgYWRqdXN0X2xlbmd0aCB0byBuby4KCShtb3ZzaV9oOHN4KTogTGlrZXdpc2UgaGVyZSBhbmQgdGhlIG5vcm1hbCBoOHN4IG1vdmhpIHBhdHRlcm4uCgkobW92c2ZfaDgzMDBoKTogRGlzYWJsZSBmb3IgVEFSR0VUX0g4MzAwU1guCgkyMDAzLTA2LTAzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgaDgzMDBfbGRtX3BhcmFsbGVsLAoJaDgzMDBfc3RtX3BhcmFsbGVsIGFuZCBoODMwMF9yZXR1cm5fcGFyYWxsZWwuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF9wdXNoX3BvcCwgaDgzMDBfc3RhY2tfb2Zmc2V0X3AsCgloODMwMF9sZG1fc3RtX3JlZ25vLCBoODMwMF9sZG1fc3RtX3BhcmFsbGVsLCBoODMwMF9sZG1fcGFyYWxsZWwsCgloODMwMF9zdG1fcGFyYWxsZWwsIGg4MzAwX3JldHVybl9wYXJhbGxlbCk6IE5ldyBmdW5jdGlvbnMuCgkoaDgzMDBfZXhwYW5kX3Byb2xvZ3VlKTogRG9uJ3QgZW5mb3JjZSBsZG0vc3RtIHJlZ2lzdGVyIGFsaWdubWVudAoJaWYgVEFSR0VUX0g4MzAwU1guICBVc2UgaDgzMDBfcHVzaF9wb3AuCgkoaDgzMDBfZXhwYW5kX2VwaWxvZ3VlKTogTGlrZXdpc2UuICBUcnkgdG8gbWVyZ2UgdGhlIHJldHVybiBpbnNuCglhbmQgZmluYWwgcG9wIHdoZW4gZ2VuZXJhdGluZyBoOHN4IGNvZGUuICBBbHdheXMgZW1pdCBzb21lIGZvcm0KCW9mIHJldHVybiBpbnNuLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IERvbid0IGVuZm9yY2UgcmVnaXN0ZXIgYWxpZ25tZW50IGluCglzdG0gcGVlcGhvbGVzIGlmIFRBUkdFVF9IODMwMFNYLgoJKGxkbV9oODMwMHMsIHN0bV9oODMwMHMsIHJldHVybl9oOHN4KTogTmV3IHBhdHRlcm5zLgoJKGxkbV9oODMwMHNfWzIzNF0sIHN0bV9oODMwMF9bMjM0XSk6IERpc2FibGUuCgkoZXBpbG9ndWUpOiBFeHBlY3QgaDgzMDBfZXhwYW5kX2VwaWxvZ3VlIHRvIGVtaXQgYSByZXR1cm4gaW5zbi4KCTIwMDMtMDYtMDMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL2g4MzAwL3QtaDgzMDAgKE1VTFRJTElCX09QVElPTlMpOiBBZGQgYSAtbXN4IG11bHRpbGliLgoJKE1VTFRJTElCX0RJUk5BTUVTKTogQWRkIGEgZGlyZWN0b3J5IGZvciBpdC4KCShNVUxUSUxJQl9NQVRDSEVTKTogRGVsZXRlLgoJMjAwMy0wNS0yOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBmaW5hbC5jICh3YWxrX2FsdGVyX3N1YnJlZyk6IEhhbmRsZSBhZGRyZXNzZXMgd2l0aCBzdWJyZWdzCglpbnNpZGUgYSBaRVJPX0VYVEVORCBvciBBTkQuCgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaCAoaDgzMDBfZ2V0X2luZGV4KTogRGVjbGFyZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKElOREVYX1JFR19DTEFTUyk6IFNldCB0byBHRU5FUkFMX1JFR1MKCWlmIFRBUkdFVF9IODMwMFNYLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IFVzZSBoODMwMF9nZXRfaW5kZXguCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBIYW5kbGUgQChkZCxSbkwuYiksCglAKGRkLFJuLncpIGFuZCBAKGRkLEVSbi5MKS4KCShoODMwMF9kaXNwbGFjZW1lbnRfc2l6ZSk6IFRha2UgdGhlIHdob2xlIGFkZHJlc3MgYXMgYXJndW1lbnQuCgkoaDgzMDBfY2xhc3NpZnlfb3BlcmFuZCwgaDgzMDBfc2hvcnRfbW92ZV9tZW1fcCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCTIwMDMtMDUtMjggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAoaDgzMDBfb3BlcmFuZHNfbWF0Y2hfcCk6IERlY2xhcmUuCgkoaDhzeF9tZXJnZWFibGVfbWVtcmVmc19wKTogRGVjbGFyZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKEhBVkVfUE9TVF9ERUNSRU1FTlQpOiBEZWZpbmUgdG8gVEFSR0VUX0g4MzAwU1guCgkoSEFWRV9QUkVfSU5DUkVNRU5UKTogTGlrZXdpc2UuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogQWNjZXB0IHByZS9wb3N0IGluY3JlbWVudC9kZWNyZW1lbnQKCWFkZHJlc3NlcyBmb3IgVEFSR0VUX0g4MzAwU1gsCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBEZWFsIHdpdGggUFJFX0lOQwoJYW5kIFBPU1RfREVDLgoJKG1vdmJfbGVuZ3RoX3RhYmxlLCBtb3ZsX2xlbmd0aF90YWJsZSk6IE5ldyB0YWJsZXMuCgkobW92d19sZW5ndGhfdGFibGUpOiBEZWZpbmUgdG8gbW92Yl9sZW5ndGhfdGFibGUuCgkoaDgzMDBfZGlzcGxhY2VtZW50X3NpemUpOiBOZXcsIHNwbGl0IG91dCBmcm9tLi4uCgkoaDgzMDBfY2xhc3NpZnlfYWRkcmVzcyk6IC4uLmhlcmUuICBIYW5kbGUgcHJlL3Bvc3QgaW5jL2RlYy4KCShoODMwMF9zaG9ydF9pbW1lZGlhdGVfbGVuZ3RoKTogQWxsb3cgSDhPUF9NRU1fQ09NUExFWCBvcGVyYW5kcy4KCShoODMwMF9pbnNuX2xlbmd0aF9mcm9tX3RhYmxlKTogQWRkIGNhc2VzIGZvciBtb3ZiLCBtb3Z3IGFuZCBtb3ZsLgoJKGg4c3hfbWVyZ2VhYmxlX21lbXJlZnNfcCwgaDgzMDBfb3BlcmFuZHNfbWF0Y2hfcCk6IE5ldyBmdW5jdGlvbnMuCgkob3V0cHV0X3BsdXNzaSk6IFVzZSBhZGQubCAjeHg6MyxSbiBhbmQgc3ViLmwgI3h4OjMsUm4gZm9yIGg4c3guCgkoY29tcHV0ZV9wbHVzc2lfbGVuZ3RoLCBjb21wdXRlX3BsdXNzaV9jYyk6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCShoOHN4X3VuYXJ5X3NoaWZ0X29wZXJhdG9yKTogR2V0IHRoZSBtb2RlIGZyb20gdGhlIG9wZXJhdG9yLgoJKGJpbmFyeV9zaGlmdF9vcGVyYXRvcik6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IElmIGEgcGVlcGhvbGUyIGFwcGxpZXMgZ2VuX2xvd3BhcnQgdG8KCWEgbWVtb3J5IHJlZmVyZW5jZSwgY2hlY2sgd2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIG9mZnNldHRhYmxlLgoJKGxlbmd0aF90YWJsZSk6IEFkZCBtb3ZiLCBtb3Z3IGFuZCBtb3ZsLgoJKG1vdnFpKTogQWRkIG5ldyBoOHN4IHBhdHRlcm4uICBEb24ndCBmb3JjZSBvbmUgb3BlcmFuZCB0byBiZSBhCglyZWdpc3RlciB3aGVuIGdlbmVyYXRpbmcgaDhzeCBjb2RlLgoJKG1vdmhpLCBtb3ZzaSwgbW92c2YpOiBMaWtld2lzZS4KCShtb3ZzdHJpY3RxaSk6IFVzZSB0aGUgbGVuZ3RoX3RhYmxlIGF0dHJpYnV0ZS4KCShtb3ZzdHJpY3RoaSk6IExpa2V3aXNlLiAgQWRkIGg4c3ggYWx0ZXJuYXRpdmUgZm9yIG1vdi53ICN4eDozLFJuLgoJKGFkZHFpMyk6IFNwbGl0IGludG8gYSBkZWZpbmVfZXhwYW5kIGFuZCBkZWZpbmVfaW5zbi4gIERvbid0IGFjY2VwdAoJbWVtb3J5IG9wZXJhbmRzIGluIHRoZSBleHBhbmRlci4gIFVzZSBoODMwMF9vcGVyYW5kc19tYXRjaF9wIHRvCgljaGVjayBmb3IgbWF0Y2hpbmcgb3BlcmFuZHMgaW4gdGhlIGRlZmluZV9pbnNuLgoJKHN1YnFpMywgbmVncWkyLCBvbmVfY21wbHFpMik6IExpa2V3aXNlLgoJKGFkZFtoc11pMyk6IERvbid0IGFjY2VwdCBtZW1vcnkgb3BlcmFuZHMgaW4gdGhlIGV4cGFuZGVyLiAgTGlrZXdpc2UKCWluIGFueSBwYXR0ZXJucyB0aGF0IGFyZSB1bnVzZWQgaW4gaDhzeCBjb2RlLiAgSW4gdGhlIGg4c3ggcGF0dGVybnMsCgl1c2UgaDgzMDBfb3BlcmFuZHNfbWF0Y2hfcCB0byBjaGVjayB3aGV0aGVyIG9wZXJhbmRzIG1hdGNoLgoJKHN1Yltoc11pMywgYW5kW2hpXTMsIGlvcltoc11pMywgeG9yW2hzXWkzLCBuZWdbaHNpXTMsCglvbmVfY21wbFtoc11pMyk6IExpa2V3aXNlLgoJKGFuZHFpMywgaW9ycWkzLCB4b3JxaTMpOiBMaWtld2lzZS4gIERvbid0IGNhbGwgZml4X2JpdF9vcGVyYW5kCglpbiB0aGUgZXhwYW5kZXIuCgkyMDAzLTA1LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaCAoZXhwYW5kX2Ffc2hpZnQpOiBSZXR1cm4gYSBib29sLgoJKGg4MzAwX2luc25fbGVuZ3RoX2Zyb21fdGFibGUpOiBBZGQgYSBzZWNvbmQgcGFyYW1ldGVyLgoJKG91dHB1dF9oOHN4X3NoaWZ0KTogRGVjbGFyZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKE9LX0ZPUl9XLCBPS19GT1JfWSk6IE5ldyBtYWNyb3MuCgkoRVhUUkFfQ09OU1RSQUlOVCk6IFJlcGxhY2Ugd2l0aC4uLgoJKEVYVFJBX0NPTlNUUkFJTlRfU1RSKTogLi4udGhpcy4gIFVzZSBPS19GT1JfVyBhbmQgT0tfRk9SX1kuCgkoQ09OU1RSQUlOVF9MRU4pOiBEZWZpbmUsIHJldHVybmluZyAyIGZvciAnVycgYW5kICdZJy4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgZW50cmllcyBmb3IgaDhzeF91bmFyeV9zaGlmdF9vcGVyYXRvcgoJYW5kIGg4c3hfYmluYXJ5X3NoaWZ0X29wZXJhdG9yLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAodHdvX2luc25fYWRkc19zdWJzX29wZXJhbmQpOiBSZXR1cm4gZmFsc2UKCWZvciBUQVJHRVRfSDgzMDBTWC4KCShiaXRfb3BlcmFuZCk6IFJlcGxhY2UgdXNlIG9mIEVYVFJBX0NPTlNUUkFJTlQgd2l0aCBPS19GT1JfVS4KCShiaXRfbWVtb3J5X29wZXJhbmQsIGZpeF9iaXRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGg4MzAwX2xlbmd0aF90YWJsZV9mb3JfaW5zbik6IFJlbW92ZS4KCShoODMwMF9jbGFzc2lmeV9vcGVyYW5kKTogRml4IGNoZWNrIGZvciAxNi1iaXQgb3BlcmFuZHMgaW4gMzItYml0CglpbnN0cnVjdGlvbnMuCgkoaDgzMDBfc2hvcnRfaW1tZWRpYXRlX2xlbmd0aCwgaDgzMDBfYmluYXJ5X2xlbmd0aCk6IE5ldyBmdW5jdGlvbnMuCgkoaDgzMDBfaW5zbl9sZW5ndGhfZnJvbV90YWJsZSk6IEFkZCBhbiBvcGNvZGVzIHBhcmFtZXRlci4gIFJld29yay4KCShvdXRwdXRfcGx1c3NpKTogVXNlIHN1YiB0byBhZGQgbmVnYXRpdmUgY29uc3RhbnRzLgoJKGNvbXB1dGVfcGx1c3NpX2xlbmd0aCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShoOHN4X3NpbmdsZV9zaGlmdF90eXBlKTogTmV3IGVudW0uCgkoaDhzeF9zaW5nbGVfc2hpZnQsIGg4c3hfdW5hcnlfc2hpZnRfb3BlcmF0b3IsCgloOHN4X2JpbmFyeV9zaGlmdF9vcGVyYXRvciwgb3V0cHV0X2g4c3hfc2hpZnQpOiBOZXcgZnVuY3Rpb25zLgoJKGV4cGFuZF9hX3NoaWZ0LCBleHBhbmRfYV9yb3RhdGUpOiBFbWl0IG5vdGhpbmcgaWYgdGhlIHNoaWZ0IGlzIGEKCXNpbmdsZSBoOHN4IGluc3RydWN0aW9uLiAgUmV0dXJuIGZhbHNlIGluIHRoaXMgY2FzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChsZW5ndGhfdGFibGUpOiBBZGQgc2hvcnRfaW1tZWRpYXRlLgoJKGxlbmd0aCk6IFBhc3MgdGhlIG9wZXJhbmQgYXJyYXkgdG8gaDgzMDBfaW5zbl9sZW5ndGhfZnJvbV90YWJsZS4KCShhZGp1c3RfbGVuZ3RoKTogQXNzdW1lICJubyIgZm9yIGluc25zIHdpdGggYSBsZW5ndGhfdGFibGUgYXR0cmlidXRlLgoJKCpjbXBoaV9oODMwMGhzLCBjbXBzaSk6IEFkZCBhbHRlcm5hdGl2ZXMgZm9yICN4eDozLgoJKCphZGRoaTNfaDgzMDBocyk6IERvbid0IHVzZSBmb3IgaDhzeC4KCSgqYWRkaGkzX2g4c3gpOiBOZXcgcGF0dGVybiwgd2l0aCBhbHRlcm5hdGl2ZXMgZm9yIGFkZC53ICN4eDozCglhbmQgc3ViLncgI3h4OjMuCgkoYXNobFtxaHNdaTMsIGxzaHJbcWhzXWkzLCBhc2hyW3Foc11pMywgcm90bFtxaHNdaTMpOiBDaGFuZ2Ugb3BlcmFuZAoJMSdzIHByZWRpY2F0ZSB0byBub25pbW1lZGlhdGVfb3BlcmFuZC4gIE9ubHkgc2tpcCBkZWZhdWx0IGV4cGFuc2lvbgoJaWYgZXhwYW5kX2Ffc2hpZnQgb3IgZXhwYW5kX2Ffcm90YXRlIHJldHVybnMgdHJ1ZS4gIEFkZCBuZXcgcGF0dGVybnMKCWZvciBzaW5nbGUgaDhzeCBzaGlmdCBpbnN0cnVjdGlvbnMuCgkyMDAzLTA1LTIyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKG5pYmJsZV9vcGVyYW5kKTogU3BsaXQgb3V0IG9mLi4uCgkocmVnX29yX25pYmJsZV9vcGVyYW5kKTogLi4uIHRoaXMuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGRlZCBuaWJibGVfb3BlcmFuZC4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiAobXVscWloaTMsIG11bGhpc2kzLCB1bXVscWloaTMsCgl1bXVsaGlzaTMpOiBJbnRyb2R1Y2UgZXhwYW5kLCBhbmQgaW50cm9kdWNlIHNlcGFyYXRlIGluc25zIGZvcgoJc2lnbi0gb3IgemVyby1leHRlbmRlZCBSRUcgYW5kIGFscmVhZHktZXh0ZW5kZWQgQ09OU1RfSU5ULgoJMjAwMy0wNS0yMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfdW5hcnlfbGVuZ3RoKTogRml4IG1pc2NvdW50aW5nLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKHN1YnFpMyk6IEdlbmVyYWxpemUgZm9yIGg4c3guCgkoc3ViaGkzKTogTGlrZXdpc2UuICBEb24ndCBhY2NlcHQgaW1tZWRpYXRlcyBmb3Igb3BlcmFuZCAxLgoJUmVtb3ZlIHRoZSBlYXJseSBjbG9iYmVyIGZyb20gc2Vjb25kIGFsdGVybmF0aXZlIG9mIHRoZSBoODMwMHMgcGF0dGVybi4KCShzdWJzaTMpOiBHZW5lcmFsaXplIGZvciBoOHN4LiAgRm9yY2Ugb3BlcmFuZCAyIGludG8gYSByZWdpc3RlcgoJb24gcGxhaW4gaDgzMDAgdGFyZ2V0cy4KCShzdWJzaTNfaDgzMDApOiBVc2UgaDgzMDBfZHN0X29wZXJhbmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggZXhwYW5kZXIuCgkoc3Vic2kzX2g4MzAwaCk6IEdlbmVyYWxpemUgZm9yIGg4c3guCgkob25lX2NtcGxxaTIsIG9uZV9jbXBsaGkyLCBvbmVfY21wbHNpMik6IExpa2V3aXNlLgoJMjAwMy0wNS0xOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChyZWdfb3JfbmliYmxlX29wZXJhbmQpOiBOZXcuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGp1c3QuCgkoVEFSR0VUX0g4MzAwU1hNVUwpOiBOZXcuCgkoQ09OU1RfT0tfRk9SX1ApOiBOZXcuCgkoQ09OU1RfT0tfRk9SX0xFVFRFUl9QKTogQWRqdXN0LgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKG11bHFpaGkzLCBtdWxoaXNpMywgdW11bHFpaGkzLAoJdW11bGhpc2kzKTogQWNjZXB0IDQtYml0IGltbWVkaWF0ZSBvbiBIOFNYLgoJKG11bGhpMywgbXVsc2kzLCBzbXVsc2kzX2hpZ2hwYXJ0LCB1bXVsc2kzX2hpZ2hwYXJ0KTogTmV3LgoJKHVkaXZzaTMsIGRpdmhpMywgdWRpdnNpMywgZGl2c2kzKTogTmV3LgoJMjAwMy0wNS0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmggKGg4MzAwX2luc25fbGVuZ3RoX2Zyb21fdGFibGUpOiBEZWNsYXJlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoT0tfRk9SX1EpOiBOZXcgbWFjcm8uCgkoRVhUUkFfQ09OU1RSQUlOVCk6IFVzZSBpdCB0byBjaGVjayB0aGUgJ1EnIGNvbnN0cmFpbnQuCgkoUFJFRElDQVRFX0NPREVTKTogQWRkIGg4MzAwX3NyY19vcGVyYW5kIGFuZCBoODMwMF9kc3Rfb3BlcmFuZC4KCUFkZCBBRERSRVNTT0YgdG8gdGhlIGJpdF9vcGVyYW5kIGVudHJ5LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfZHN0X29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgoJKGg4MzAwX3NyY19vcGVyYW5kKTogTGlrZXdpc2UuCgkoYml0X29wZXJhbmQpOiBDaGVjayBub25pbW1lZGlhdGVfb3BlcmFuZCByYXRoZXIgdGhhbiBnZW5lcmFsX29wZXJhbmQuCglBY2NlcHQgYW55IG5vbmltbWVkaWF0ZV9vcGVyYW5kIGluIGg4c3ggY29kZS4KCShoODMwMF9hbmRfY29zdHMpOiBJbml0aWFsaXplIG9wZXJhbmRzWzFdLgoJKGg4MzAwX3J0eF9jb3N0cykgPEFORD46IFJldHVybiBmYWxzZSBpZiB0aGUgb3BlcmFuZHMgYXJlbid0IHZhbGlkLgoJKGg4MzAwX29wZXJhbmRfY2xhc3MpOiBOZXcgZW51bS4KCShoODMwMF9sZW5ndGhfdGFibGUpOiBOZXcgdHlwZWRlZi4KCShhZGRiX2xlbmd0aF90YWJsZSwgYWRkd19sZW5ndGhfdGFibGUsIGFkZGxfbGVuZ3RoX3RhYmxlLAoJbG9naWNsX2xlbmd0aF90YWJsZSk6IE5ldyB0YWJsZXMuCgkobG9naWNiX2xlbmd0aF90YWJsZSwgbG9naWN3X2xlbmd0aF90YWJsZSk6IE5ldyBtYWNyb3MuCgkoaDgzMDBfY2xhc3NpZnlfb3BlcmFuZCwgaDgzMDBfbGVuZ3RoX2Zyb21fdGFibGUsCgloODMwMF9sZW5ndGhfdGFibGVfZm9yX2luc24sIGg4MzAwX3VuYXJ5X2xlbmd0aCwKCWg4MzAwX2luc25fbGVuZ3RoX2Zyb21fdGFibGUpOiBOZXcgZnVuY3Rpb25zLgoJKG91dHB1dF9wbHVzc2kpOiBPbmx5IHVzZSBhZGRzIGFuZCBzdWJzIGZvciByZWdpc3RlciBkZXN0aW5hdGlvbnMuCglEaXNhYmxlIHJlZHVuZGFudCBjbGF1c2UuCgkoY29tcHV0ZV9wbHVzc2lfY2MpOiBMaWtld2lzZS4KCShjb21wdXRlX3BsdXNzaV9sZW5ndGgpOiBMaWtld2lzZS4gIFVzZSBoODMwMF9sZW5ndGhfZnJvbV90YWJsZQoJdG8gd29yayBvdXQgdGhlIGxlbmd0aCBvZiBhbiBpbnNuLgoJKG91dHB1dF9sb2dpY2FsX29wKTogT25seSB1c2UgbmFycm93ZXIgaW1tZWRpYXRlIGluc3RydWN0aW9ucwoJaWYgdGhlIGRlc3RpbmF0aW9uIGlzIGEgcmVnaXN0ZXIuCgkoY29tcHV0ZV9sb2dpY2FsX29wX2NjKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9sb2dpY2FsX29wX2xlbmd0aCk6IExpa2V3aXNlLiAgVXNlIGg4MzAwX2xlbmd0aF9mcm9tX3RhYmxlLgoJKGg4MzAwX2FkanVzdF9pbnNuX2xlbmd0aCk6IFRpZ2h0ZW4gY2hlY2sgZm9yIHJlZzwtPm1lbSBtb3Zlcy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChsZW5ndGhfdGFibGUpOiBOZXcgYXR0cmlidXRlLgoJKGxlbmd0aCk6IFdoZW4gYW4gaW5zdHJ1Y3Rpb24gaGFzIGEgbGVuZ3RoX3RhYmxlIGF0dHJpYnV0ZSwgdXNlCgloODMwMF9pbnNuX2xlbmd0aF9mcm9tX3RhYmxlIHRvIGNhbGN1bGF0ZSBpdHMgZGVmYXVsdCBsZW5ndGguCgkoY21wcWkpOiBVc2UgaDgzMDBfZHN0X29wZXJhbmQgZm9yIHRoZSBmaXJzdCBvcGVyYW5kIGFuZAoJaDgzMDBfc3JjX29wZXJhbmQgZm9yIHRoZSBzZWNvbmQuCgkoY21waGksICpjbXBoaV9oODMwMGhzLCBjbXBzaSwgbmVncWkyLCBuZWdoaTIsIG5lZ2hpMl9oODMwMGgsIG5lZ3NpMiwKCW5lZ3NpMl9oODMwMGgsIGFkZHFpMywgYWRkaGkzLCAqYWRkaGkzX2g4MzAwLCAqYWRkaGkzX2g4MzAwaHMsIGFkZHNpMywKCWFkZHNpX2g4MzAwLCBhZGRzaV9oODMwMGgsIGFuZGhpMywgYW5kc2kzLCBpb3JoaTMsCglpb3JzaTMsIHhvcmhpMywgeG9yc2kzKTogTGlrZXdpc2UuCgkoYW5kcWkzKTogVXNlIGg4MzAwX3NyY19vcGVyYW5kIGZvciBvcGVyYW5kIDIuICBBZGp1c3QgdGhlIGNvbmRpdGlvbgoJc28gdGhhdCBpdCBhbGxvd3MgYW55IGNvbWJpbmF0aW9uIG9mIG9wZXJhbmRzIGZvciBUQVJHRVRfSDgzMDBTWC4KCShpb3JxaTMsIHhvcnFpMyk6IExpa2V3aXNlLgoJKGNtcHFpKTogVXNlIHRoZSBsZW5ndGhfdGFibGUgYXR0cmlidXRlLgoJKCpjbXBoaV9oODMwMGhzLCBjbXBzaSwgYWRkcWksICphZGRoaTNfaDgzMDBocywgYW5kcWkzLCBpb3JxaTMsCgl4b3JxaTMsIG5lZ3FpMiwgbmVnaGkyX2g4MzAwaCwgbmVnc2kyX2g4MzAwaCk6IExpa2V3aXNlLgoJKGNtcHFpKTogQWRkICdRJyBjb25zdHJhaW50LgoJKCpjbXBoaV9oODMwMGhzLCBjbXBzaSwgYWRkcWksICphZGRoaTNfaDgzMDBocywgYWRkc2lfaDgzMDBoLCBhbmRxaTMsCglpb3JxaTMsIHhvcnFpMywgbmVncWkyLCBuZWdoaTJfaDgzMDBoLCBuZWdzaTJfaDgzMDBoKTogTGlrZXdpc2UuCgkyMDAzLTA1LTE0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChNQVNLX0g4MzAwU1gpOiBOZXcgbWFjcm8uCgkoVEFSR0VUX0g4MzAwUyk6IFRydWUgZm9yIGJvdGggLW1zIGFuZCAtbXN4LgoJKFRBUkdFVF9IODMwMFNYKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBlbnRyaWVzIGZvciAtbXN4IGFuZCAtbW5vLXN4LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoYXNtX2ZpbGVfc3RhcnQpOiBXcml0ZSAuaDgzMDBzeCBmb3IgLW1zeC4KCSogY29uZmlnL2g4MzAwL2VsZi5oIChMSU5LX1NQRUMpOiBVc2UgLW0gaDgzMDBzeGVsZiBmb3IgLW1zeC4KCSogY29uZmlnL2g4MzAwL3QtaDgzMDAgKE1VTFRJTElCX01BVENIRVMpOiBVc2UgLW1zIG11bHRpbGlicyBmb3IgLW1zeC4KCVtUZW1wb3JhcnkgY2hhbmdlLl0KCTIwMDMtMDItMjggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoU0laRV9UWVBFLCBQVFJESUZGX1RZUEUpOiBVc2Ugc2hvcnQgd2l0aAoJMTYtYml0IHBvaW50ZXJzIGFuZCAzMi1iaXQgaW50cy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IEFjY2VwdAoJQ09OU1RfRE9VQkxFIHdpdGggbW9kZSBubyB3aWRlciB0aGFuIFNJbW9kZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChleHRlbmRxaXNpMl9oODMwMCk6IEFkZCBjb25zdHJhaW50cyBmb3IKCW91dHB1dCBvcGVyYW5kLgoJMjAwMy0wMi0yNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChnZW5lcmFsX29wZXJhbmRfc3JjKTogTWF0Y2ggQ09OU1RBTlRfUF9SVFgKCW9yIFNVQlJFRyB0aGVyZW9mLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoUFJFRElDQVRFX0NPREVTKTogQWRqdXN0LgoJMjAwMy0wMi0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChkb3NpemUpOiBUcnVuY2F0ZSBzaWduICogc2l6ZSB0byBQbW9kZS4KCjIwMDQtMDUtMjggIEFhcm9uIFcuIExhRnJhbWJvaXNlIDxhYXJvbnJhb2xldGUzNkBhYXJvbndsLmNvbT4KCgkqIGNvbmZpZy5nY2MgKGlbMzQ1NjddODYtKi1taW5ndzMyKik6IEVuYWJsZSB0aHJlYWRzIGJ5IGRlZmF1bHQuCgoyMDA0LTA3LTA3ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGZsb3cuYyAoYXR0ZW1wdF9hdXRvX2luYyk6IFJlbW92ZSBub3ctcmVkdW5kYW50IFBVVF9DT0RFLgoKMjAwNC0wNy0wNyAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBkYXJ3aW4uaCAoQVNNX09VVFBVVF9MQUJFTFJFRik6IEZpeCAtZm5vLWxlYWRpbmctdW5kZXJzY29yZS4KCSogZGFyd2luLmMgKG1hY2hvcGljX25vbl9sYXp5X3B0cl9uYW1lLCBtYWNob3BpY19zdHViX25hbWUpCgkobWFjaG9waWNfZmluaXNoKTogTGlrZXdpc2UuCgoyMDA0LTA3LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtZG9tLmMgKHNpbXBsaWZ5X3N3aXRjaF9hbmRfbG9va3VwX2F2YWlsX2V4cHIpOiBMb29rCgl0aHJvdWdoIGFueSB2YWx1ZS1wcmVzZXJ2aW5nIGNhc3QuCgoyMDA0LTA3LTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtX2ZpbmRfZGF0YV90eXBlcyk6IENhbGwKCUZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSBvbmx5IGlmIGl0J3MgZGVmaW5lZC4KCjIwMDQtMDctMDcgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHRyZWUtY2ZnLmMgKGdyb3VwX2Nhc2VfbGFiZWxzKTogUmVtb3ZlIGNhc2UgbGFiZWxzIHRoYXQgaGF2ZQoJdGhlIHNhbWUgdGFyZ2V0IGFzIHRoZSBkZWZhdWx0IGNhc2UuCgoyMDA0LTA3LTA3ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiB0cmVlLWlubGluZS5jIChvcHRpbWl6ZV9pbmxpbmVfY2FsbHMpOiBTZXQgREVDTF9JTkxJTkVEX0ZOUwoJcmVnYXJkbGVzcyBvZiBERUNMX0xBTkdfU1BFQ0lGSUMgYmVpbmcgcHJlc2VudCBvciBub3QuCgkqIHRyZWUuaCAoREVDTF9OVU1fU1RNVFMpOiBQdXJnZS4KCjIwMDQtMDctMDcgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZSB3aXRoIHRoZSByaWdodCBhdXRvY29uZi4KCjIwMDQtMDctMDcgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGlmY3Z0LmMgKHRvdGFsX2JiX3J0eF9jb3N0KTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfaWZfY2FzZV8xKTogQ29tcGFyZSBydHhfY29zdCBvZiBiYXNpYyBibG9jayB0byBjb3N0IG9mCglCUkFOQ0hfQ09TVCBpbnNucy4KCShmaW5kX2lmX2Nhc2VfMik6IFNhbWUuCgoyMDA0LTA3LTA3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMDU2NwoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAobG9hZF9waWNfcmVnaXN0ZXIpOiBIb25vciBmbGFnX2RlbGF5ZWRfYnJhbmNoLgoJKG91dHB1dF9yZXR1cm4pOiBMaWtld2lzZS4KCShvdXRwdXRfc2liY2FsbCk6IEFib3J0IGlmICFmbGFnX2RlbGF5ZWRfYnJhbmNoLgoJKHNwYXJjX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogUmV0dXJuIDAgaWYgIWZsYWdfZGVsYXllZF9icmFuY2guCgkoZW1pdF9hbmRfcHJlc2VydmUpOiBOZXcgZnVuY3Rpb24uCgkoc3BhcmNfb3V0cHV0X21pX3RodW5rKTogVXNlIGl0LiAgSG9ub3IgZmxhZ19kZWxheWVkX2JyYW5jaC4gIEVtaXQgYW4KCWluZGlyZWN0IGp1bXAgdG8gdGhlIHRodW5rZWQtdG8gZnVuY3Rpb24gaWYgIWZsYWdfZGVsYXllZF9icmFuY2guCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoZGVsYXllZF9icmFuY2gpOiBOZXcgYXR0cmlidXRlLgoJKGxvYWRfcGNyZWxfc3ltKTogSG9ub3IgZmxhZ19kZWxheWVkX2JyYW5jaC4gIFVzZSBhYm92ZQoJYXR0cmlidXRlIHRvIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiB0aGUgaW5zbi4KCShnb3RvX2hhbmRsZXJfYW5kX3Jlc3RvcmUpOiBMaWtld2lzZS4KCjIwMDQtMDctMDcgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNTc3NwoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfc2luZ2xlX2JpdF90ZXN0KTogRm9sZCB0aGUgeF4xIGV4cHJlc3Npb24uCgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSk6IEZpeCBmb3JtYXRpbmcuCglCVUZGRVJfUkVGIGFuZCBJTl9FWFBSIGFyZSBkZWFkLgoJKiBmb2xkLWNvbnN0LmMgKG5vbl9sdmFsdWUpOiBCVUZGRVJfUkVGIGlzIGRlYWQuCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKTogTGlrZXdpc2UuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogQlVGRkVSX1JFRiwKCUlOX0VYUFIsIFNFVF9MRV9FWFBSLCBhbmQgQ0FSRF9FWFBSIGFyZSBkZWFkLgoJKiB0cmVlLmRlZiAoQlVGRkVSX1JFRiwgSU5fRVhQUiwgU0VUX0xFX0VYUFIsIENBUkRfRVhQUik6IEtpbGwuCgoyMDA0LTA3LTA3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb2xsZWN0Mi5jIChkdW1wX2ZpbGUpOiBEb24ndCBjYWxsIGNwbHVzX2RlbWFuZ2xlIGlmCglIQVZFX0xEX0RFTUFOR0xFIGlzIGRlZmluZWQuCgkobWFpbik6IFBhc3MgIi0tZGVtYW5nbGUiIHRvIGxkIGlmIG5vX2RlbWFuZ2xlIGlzIG5vdCAwIGFuZAoJSEFWRV9MRF9ERU1BTkdMRSBpcyBkZWZpbmVkLiBEb24ndCBzZXQgY3VycmVudF9kZW1hbmdsaW5nX3N0eWxlCglpZiBIQVZFX0xEX0RFTUFOR0xFIGlzIGRlZmluZWQuCgoJKiBjb25maWd1cmUuYWMgKC0td2l0aC1kZW1hbmdsZXItaW4tbGQpOiBBZGRlZAoJKEhBVkVfTERfREVNQU5HTEUpOiBEZWZpbmUgaWYgbGQgc3VwcG9ydHMgLS1kZW1hbmdsZSB3aGVuCgktLXdpdGgtZGVtYW5nbGVyLWluLWxkIGlzIHVzZWQuCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZWQuCgkqIGNvbmZpZ3VyZTogTGlrZXdpc2UuCgoyMDA0LTA3LTA3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHN0cnVjdCBwcm9jZXNzb3JfY29zdHMpOiBBZGQgbmV3IGZpZWxkcwoJZm9yIHNpbXBsZSBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zICJmcCIsIGRvdWJsZSBwcmVjaXNpb24KCW11bHRpcGxpY2F0aW9uICJkbXVsIiwgYW5kIHNpbmdsZSBhbmQgZG91YmxlIHByZWNpc2lvbiBkaXZpc2lvbgoJInNkaXYiIGFuZCAiZGRpdiIuICBVcGRhdGUgYWxsIENQVSB2YXJpYW50IHRhYmxlcyBhcyBhcHByb3ByaWF0ZS4KCShwcGM2MzBfY29zdCk6IE5ldyB0YWJsZSBzcGxpdCBmcm9tIHBwYzYyMF9jb3N0LCB0byBkaXN0aW5ndWlzaAoJZGlmZmVyZW5jZXMgaW4gZmxvYXRpbmcgcG9pbnQgbGF0ZW5jaWVzLgoJKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogVXNlIHBwYzYzMF9jb3N0IGZvciBQUk9DRVNTT1JfUFBDNjMwLgoJKHJzNjAwMF9ydHhfY29zdHMpOiBBZGQgc3VwcG9ydCBmb3Igc2luZ2xlIGFuZCBkb3VibGUgcHJlY2lzaW9uCglmbG9hdGluZyBwb2ludCBhZGRpdGlvbiwgc3VidHJhY3Rpb24sIG11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwKCWZ1c2VkLW11bHRpcGx5LWFkZCwgZnVzZWQtbXVsdGlwbHktc3ViLCBuZWdhdGlvbiwgYWJzb2x1dGUgdmFsdWUKCWFuZCBuZWdhdGl2ZSBhYnNvbHV0ZSB2YWx1ZS4gIFR3ZWFrIE1FTSBjYXNlIHRvIHVzZSBwcmVmZXJlZCBpZGlvbS4KCjIwMDQtMDctMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKG1heV9wcm9wYWdhdGVfY29weSk6IE1vdmUuLi4KCSogdHJlZS1zc2EtY29weS5jIChtYXlfcHJvcGFnYXRlX2NvcHkpOiAuLi4gaGVyZS4gIEZhaWwgaWYgd2UKCWF0dGVtcHQgdG8gY29weSBiZXR3ZWVuIHR5cGVzIHJlcXVpcmluZyBjb252ZXJzaW9uLgoJKiB0cmVlLWZsb3cuaCAobWF5X3Byb3BhZ2F0ZV9jb3B5KTogVXBkYXRlIGRlY2wuCgkqIHRyZWUtc3NhLWRvbS5jIChjcHJvcF9vcGVyYW5kKTogVGlkeSByZWR1bmRhbnQgdGVzdHMuCgoyMDA0LTA3LTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IERvbid0IHNldCB4ODZfcHJlZmV0Y2hfc3NlCglmcm9tIC1tdHVuZT0gb3B0aW9uLgoKMjAwNC0wNy0wNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jOiBSZW5hbWUgbW92c3RyKiwgZXhjZXB0IGZvciBtb3ZzdHJpY3QqLCB0bwoJbW92bWVtKiBhbmQgY2xyc3RyKiB0byBjbHJtZW0qLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBleHByLmg6IExpa2V3aXNlLgoJKiBnZW5vcGluaXQuYzogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jOiBMaWtld2lzZS4KCSogbG9jYWwtYWxsb2MuYzogTGlrZXdpc2UuCgkqIG9wdGFicy5jOiBMaWtld2lzZS4KCSogb3B0YWJzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2F2ci9hdnIubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHgubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2k4NjAvaTg2MC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2k4NjAvaTg2MC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pcDJrL2lwMmsubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvaXAyay9saWJnY2MuUzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pcDJrL3QtaXAyazogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL25zMzJrL25zMzJrLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbnMzMmsvbnMzMmsuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9uczMyay9uczMyay5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5jOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3BkcDExL3BkcDExLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGRwMTEvcGRwMTEubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmM6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2gubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvdC1zaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3ZheC92YXgubWQ6IExpa2V3aXNlLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jOiBMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EubWQ6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvbWQudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9ydGwudGV4aTogTGlrZXdpc2UuCgoyMDA0LTA3LTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE2NDA3CgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfZGVjbGFyZV9jb21tb25fb2JqZWN0KTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2RlY2xhcmVfY29tbW9uX29iamVjdCk6IE5ldyBmdW5jdGlvbiwKCW1vc3RseSBzcGxpdCBvdXQgZnJvbS4uLgoJKG1pcHNfb3V0cHV0X2FsaWduZWRfZGVjbF9jb21tb24pOiAuLi5oZXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKEFTTV9PVVRQVVRfTE9DQUwpOiBSZW1vdmUgaW4gZmF2b3Igb2YuLi4KCShBU01fT1VUUFVUX0FMSUdORURfTE9DQUwpOiAuLi50aGlzIG5ldyBkZWZpbml0aW9uLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChBU01fT1VUUFVUX0FMSUdORURfTE9DQUwpOiBVbmRlZmluZSB0aGlzCglyYXRoZXIgdGhhbiBBU01fT1VUUFVUX0xPQ0FMLiAgQ2FsbCBtaXBzX2RlY2xhcmVfY29tbW9uX29iamVjdC4KCjIwMDQtMDctMDcgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgYy8xNjM5MgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBGaXggdHlwbyBmcm9tIHByZXZpb3VzIGNoYW5nZS4KCjIwMDQtMDctMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8xNTgxNQoJKiBkb2MvZXh0ZW5kLnRleGkgKEMrKyBJbnRlcmZhY2UpOiBDb3JyZWN0IGluZm9ybWF0aW9uIGFuZAoJZGlzY291cmFnZSB1c2UuCgoyMDA0LTA3LTA3ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTYxMzAKCVBSIHRhcmdldC8xNjE0MgoJUFIgdGFyZ2V0LzE2MTQzCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9kZmFfbmV3X2N5Y2xlKTogUmVzZXQgREZBIHN0YXRlIGZvciBhc20KCWluc24uCgoyMDA0LTA3LTA2ICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJUFIgdGFyZ2V0LzE2NzkuCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAobTMycl9mdW5jdGlvbl9zeW1ib2wpOiBOZXcgZnVuY3Rpb246CglHZW5lcmF0ZSBhIHN5bWJvbCBuYW1lIFJUWCB3aXRoIHRoZSBjb3JyZWN0IG0zMnIgc3BlY2lmaWMgZmxhZ3MKCXNldC4KCShibG9ja19tb3ZlX2NhbGwpOiBVc2UgbmV3IGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGNvcnJlY3Qgc3ltYm9sLgoJKiBjb25maWcvbTMyci9tMzJyLXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlIGZvciBuZXcgZnVuY2lvbi4KCSogY29uZmlnL20zMnIvbTMyci5oIChJTklUSUFMSVpFX1RSQU1QT0xJTkUpOiBVc2UgdGhlIG5ldwoJZnVuY3Rpb24uCgoyMDA0LTA3LTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChUWVBFX0JJTkZPX09GRlNFVCwgVFlQRV9CSU5GT19WVEFCTEUsCglUWVBFX0JJTkZPX1ZJUlRVQUxTLCBUWVBFX0JJTkZPX0JBU0VUWVBFUywKCVRZUEVfQklORk9fQkFTRVRZUEUpOiBSZW1vdmUuCgkoQklORk9fQkFTRVRZUEVTLCBCSU5GT19OX0JBU0VUWVBFUywgQklORk9fQkFTRVRZUEUpOiBSZW5hbWUKCXRvIC4uLgoJKEJJTkZPX0JBU0VfQklORk9TLCBCSU5GT19OX0JBU0VfQklORk9TLCBCSU5GT19CQVNFX0JJTkZPKTogLi4uCgloZXJlLgoJKEJJTkZPX0JBU0VBQ0NFU1NFUywgQklORk9fQkFTRUFDQ0VTUyk6IFJlbmFtZSB0byAuLi4KCShCSU5GT19CQVNFX0FDQ0VTU0VTLCBCSU5GT19CQVNFX0FDQ0VTUyk6IC4uLiBoZXJlLgoJKEJJTkZPX0lOSEVSSVRBTkNFX0NIQUlOKTogUmVkb2N1bWVudCBhcyBpdCBpcyBhY3R1YWxseSB1c2VkLgoJKHN0cnVjdCB0cmVlX2JpbmZvKTogUmVuYW1lIGJhc2VfdHlwZXMgdG8gYmFzZV9iaW5mb3MuCgkqIGFsaWFzLmMgKHJlY29yZF9jb21wb25lbnRfYWxpYXNlcyk6IEFkanVzdCBCSU5GTyBtYWNyb3MuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYyAoZ2VuX21lbWJlcl9kaWUpOiBMaWtld2lzZS4KCSogc2Rib3V0LmMgKHNkYm91dF9vbmVfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLWR1bXAuYyAoZGVxdWVfYW5kX2R1bXApOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChjbGFzc2lmeV9hcmd1bWVudCwKCWNvbnRhaW5zXzEyOGJpdF9hbGlnbmVkX3ZlY3Rvcl9wKTogTGlrZXdpc2UuCgoyMDA0LTA3LTA3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2ZyMzAvZnIzMC5jIChmcjMwX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBDaGFuZ2UKCWFyZ3VtZW50cyB0byBtYXRjaCBUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUyBwcm90b3R5cGUuCgoyMDA0LTA3LTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmVjLmg6IEZpeCB0aGUgZXhhbXBsZSB1c2UuCgoyMDA0LTA3LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX0dJTVBMRV9CRUZPUkVfSU5MSU5JTkcpOiBSZW1vdmUuCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rcyk6IFJlbW92ZSBnaW1wbGVfYmVmb3JlX2lubGluaW5nLgoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JvZHlfciwgc2V0dXBfb25lX3BhcmFtZXRlciwKCWluaXRpYWxpemVfaW5saW5lZF9wYXJhbWV0ZXJzLCBleHBhbmRfY2FsbF9pbmxpbmUsCglkZWNsYXJlX2lubGluZV92YXJzKTogRG9uJ3QgY2hlY2sgaXQuCgkoZXhwYW5kX2NhbGxzX2lubGluZSk6IFJlbW92ZSBvbGQgdmVyc2lvbiwgcmVuYW1lIG5ldyB2ZXJzaW9uCglmcm9tIGdpbXBsZV9leHBhbmRfY2FsbHNfaW5saW5lLgoJKiB0cmVlLW9wdGltaXplLmMgKGV4ZWN1dGVfZ2ltcGxlKTogUmVtb3ZlLgoJKHBhc3NfZ2ltcGxlKTogRG9uJ3QgcnVuIGFueXRoaW5nLgoKMjAwNC0wNy0wNiAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogVXNlIHNlbWljb2xvbnMgaW5zdGVhZCBvZiBjb21tYXMgaW4KCXNlY3Rpb24gdGl0bGUuCgoyMDA0LTA3LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1zcmEuYyAoc3RydWN0IHNyYV93YWxrX2Zucyk6IFJldmVydCAyMDA0LTA3LTA1IGNoYW5nZS4KCShzcmFfd2Fsa19tb2RpZnlfZXhwciwgc2Nhbl9pbml0KTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVfZWxlbWVudF96ZXJvKTogQ2hlY2sgdmlzaXRlZCBiZWZvcmUgc2Nhbm5pbmcgY2hpbGRyZW4uCgkoZ2VuZXJhdGVfZWxlbWVudF9pbml0KTogU2V0IHZpc2l0ZWQgb24gZXJyb3IuCgkoc2NhbGFyaXplX2luaXQpOiBIYW5kbGUgZ2VuZXJhdGVfZWxlbWVudF9pbml0IGZhaWx1cmUgc2ltaWxhcgoJdG8gdXNlX2Jsb2NrX2NvcHkuCgoyMDA0LTA3LTA2ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIHRvcGxldi5oIChOT19GUk9OVF9FTkRfRElBRywgQVRUUklCVVRFX0dDQ19GRV9ESUFHKTogRGVmaW5lLgoJKHdhcm5pbmcsIGVycm9yLCBwZWR3YXJuLCBzb3JyeSk6IFVzZSBBVFRSSUJVVEVfR0NDX0ZFX0RJQUcuCgoyMDA0LTA3LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTWFrZSBzdGF0aWMuCgkobGVnaXRpbWl6ZV9hZGRyZXNzKTogSGFuZGxlIENPTlNUIHdpdGggVExTIG9wZXJhbmQuCgkoaXg4Nl9leHBhbmRfbW92ZSk6IERvbid0IGNhbGwgbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyBkaXJlY3RseS4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IFJlbW92ZS4KCjIwMDQtMDctMDYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogaWZjdnQuYyAoc3RydWN0IG5vY2VfaWZfaW5mbyk6IEFkZCBhIEJvb2xlYW4gYl91bmNvbmRpdGlvbmFsIGZpZWxkLgoJKG5vY2VfdHJ5X3NpZ25fbWFzayk6IFR3ZWFrIHJ0eF9jb3N0IGNoZWNrIGlmIHQgaXMgZXZhbHVhdGVkIGFueXdheS4KCShub2NlX3Byb2Nlc3NfaWZfYmxvY2spOiBJbml0aWFsaXplIGlmX2luZm8uYl91bmNvbmRpdGlvbmFsIGlmIGluc25fYgoJaXMgY3VycmVudGx5IGV4ZWN1dGVkIHVuY29uZGl0aW9uYWxseSwgaS5lLiBub3QgaW4gImVsc2VfYmIiLgoKMjAwNC0wNy0wNiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlKTogUmVtb3ZlLgoJKFRBUkdFVF9TQ0hFRF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IERlZmluZSB0byBob29rX2ludF92b2lkXzEuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV91c2VfZGZhX3BpcGVsaW5lX2ludGVyZmFjZSk6IFJlbW92ZS4KCShUQVJHRVRfU0NIRURfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBEZWZpbmUgdG8gaG9va19pbnRfdm9pZF8xLgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UpOiBSZW1vdmUuCgkoVEFSR0VUX1NDSEVEX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogRGVmaW5lIHRvIGhvb2tfaW50X3ZvaWRfMS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpYTMyX3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlKTogUmVtb3ZlLgoJKFRBUkdFVF9TQ0hFRF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IERlZmluZSB0byBob29rX2ludF92b2lkXzEuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF91c2VfZGZhX3BpcGVsaW5lX2ludGVyZmFjZSk6IFJlbW92ZS4KCShUQVJHRVRfU0NIRURfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBEZWZpbmUgdG8gaG9va19pbnRfdm9pZF8xLgoJKiBjb25maWcvcGEvcGEuYyAoaGhwYV91c2VfZGZhX3BpcGVsaW5lX2ludGVyZmFjZSk6IFJlbW92ZS4KCShUQVJHRVRfU0NIRURfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBEZWZpbmUgdG8gaG9va19pbnRfdm9pZF8xLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UpOiBSZW1vdmUuCgkoVEFSR0VUX1NDSEVEX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogRGVmaW5lIHRvIGhvb2tfaW50X3ZvaWRfMS4KCSogY29uZmlnL3Y4NTAvdjg1MC5jICh2ODUwX3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlKTogUmVtb3ZlLgoJKFRBUkdFVF9TQ0hFRF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IERlZmluZSB0byBob29rX2ludF92b2lkXzEuCgoyMDA0LTA3LTA2ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGRvanVtcC5jIChkb19qdW1wKTogUkVGRVJFTkNFX0VYUFIgaXMgZGVhZC4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBEaXR0by4KCSogdHJlZS1pbmxpbmUuYyAoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBEaXR0by4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBEaXR0by4KCShvcF9zeW1ib2wpOiBEaXR0by4KCSogdHJlZS5kZWY6IERpdHRvLgoKMjAwNC0wNy0wNiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1wcmUuYyAocmVmZXJlbmNlX25vZGVfcG9vbCk6IE5ldyBwb29sLgoJKGZpbmRfb3JfZ2VuZXJhdGVfZXhwcmVzc2lvbik6IENsYXNzICdyJyBpcyBva2F5IHRvby4KCShjcmVhdGVfdmFsdWVfZXhwcl9mcm9tKTogRGl0dG8uCgkoYWRkX3RvX3NldHMpOiBMSFMgc2hvdWxkIG5vdCBpbmNsdWRlIHZ1c2VzLgoJKGVsaW1pbmF0ZSk6IERpdHRvLgoJKGNvbXB1dGVfYXZhaWwpOiBSZXZlcnNlIG9yZGVyaW5nIG9mIHRlc3RzLgoJVmFsdWl6ZSBJTkRJUkVDVF9SRUYgYXMgd2VsbC4KCjIwMDQtMDctMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE2MzgwCgkqIGxvb3AuYyAoY2hlY2tfZGJyYV9sb29wKTogU2luayBjb21wYXJpc29uIGluc3RydWN0aW9ucyBpZiB0aGV5CglkbyBzb21ldGhpbmcgb3RoZXIgdGhhbiBzZXQgY2MwLgoKMjAwNC0wNy0wNiAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogZG9jL2ludGVyZmFjZS50ZXhpIChsb25nam1wIGFuZCBhdXRvbWF0aWMgdmFyaWFibGVzKTogRGVsZXRlCglwYXJhZ3JhcGggcmVjb21tZW5kaW5nIHRha2luZyB0aGUgYWRkcmVzcyBvZiBhIHZhcmlhYmxlLgoKMjAwNC0wNy0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHZlYy5oIChWRUNfZW1iZWRkZWRfYWxsb2MpOiBSZW1vdmUuCgkoVkVDX2VtYmVkZGVkX3NpemUsIFZFQ19lbWJlZGRlZF9pbml0KTogTmV3LgoJKFZFQ19hbGxvYywgVkVDX3Jlc2VydmUsIFZFQ19zYWZlX3B1c2gsIFZFQ19zYWZlX2luc2VydCk6IEFkZAoJTUVNX1NUQVRfSU5GTy4KCShWRUNfdHJ1bmNhdGUpOiBOZXcuCgkodmVjX3BfcmVzZXJ2ZSwgdmVjX29fcmVzZXJ2ZSk6IEFkZCBNRU1fU1RBVF9ERUNMLgoJKHZlY19lbWJlZGRlZF9hbGxvYyk6IFJlbW92ZS4KCSogdmVjLmMgKHZlY19wX3Jlc2VydmUsIHZlY19vX3Jlc2VydmUpOiBBZGQgTUVNX1NUQVRfREVDTCwgYWRqdXN0LgoJKHZlY19lbWJlZGRlZF9hbGxvYyk6IFJlbW92ZS4KCjIwMDQtMDctMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAobGFuZ2hvb2tzLm8pOiBEbyBub3QgZGVwZW5kIG9uIGd0LWxhbmdob29rcy5oLgoJKGd0LWxhbmdob29rcy5oKTogUmVtb3ZlLgoKMjAwNC0wNy0wNiAgR2VvcmdlIEhlbGZmcmljaCA8Z2VvcmdlQGdseS5icmlzLmFjLnVrPgoKCSogeGNvZmZvdXQuaCAoREJYX0ZJTklTSF9TWU1CT0wpOiBGaXggdHlwby4KCjIwMDQtMDctMDYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZ2V0X3BjX3N5bWJvbCk6IFJlbmFtZSBpbnRvCglhZGRfcGNfdG9fcGljX3N5bWJvbC4KCShnZXRfcGNfc3ltYm9sX25hbWUpOiBSZW5hbWUgaW50byBhZGRfcGNfdG9fcGljX3N5bWJvbF9uYW1lLgoJKGxvYWRfcGljX3JlZ2lzdGVyKTogQWNjb3VudCBmb3IgcHJldmlvdXMgY2hhbmdlcy4KCVVzZSByZWdfbmFtZXMuICBEb24ndCBjcmVhdGUgdGhlIGxhYmVsIHR3aWNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKFVOU1BFQ19HRVRfUEMpOiBSZW5hbWUgaW50bwoJVU5TUEVDX0xPQURfUENSRUxfU1lNLgoJKGdldF9wYyk6IFJlbmFtZSBpbnRvIGxvYWRfcGNyZWxfc3ltLiAgQWRkIHByZWRpY2F0ZSB0bwoJb3BlcmFuZHMuICBSZW1vdmUgY29uZGl0aW9uLgoKMjAwNC0wNy0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IERvbid0IHRlc3Qgd2hldGhlciB0aGUgYmluZm8gc2xvdCBvZgoJUkVDT1JELCBVTklPTiAmIFFVQUxfVU5JT04gaXMgYWN0dWFsbHkgYSBiaW5mby4KCgkqIHRyZWUuaCAoVFJFRV9WSUFfVklSVFVBTCk6IFJlbmFtZSB0byAuLi4KCShCSU5GT19WSVJUVUFMX1ApOiAuLi4gaGVyZS4gUmVxdWlyZSBUUkVFX0JJTkZPIG9ubHkuCgkoQklORk9fTUFSS0VELCBCSU5GT19GTEFHX1sxNl0pOiBOZXcgYmluZm8gZmxhZ3MuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IFVzZSBCSU5GT19WSVJUVUFMX1AuCgkqIGR3YXJmMm91dC5jIChhZGRfZGF0YV9tZW1iZXJfbG9jYXRpb25fYXR0cmlidXRlKTogTGlrZXdpc2UuCgkoZ2VuX2luaGVyaXRhbmNlX2RpZSk6IExpa2V3aXNlLgoJKiB0cmVlLWR1bXAuYyAoZGVxdWVfYW5kX2R1bXApOiBMaWtld2lzZS4KCSogZG9jL2MtdHJlZS50ZXhpIChCaW5mb3MpOiBBZGQgdW5kZXIgcmVjb25zdHJ1Y3Rpb24gbm90ZS4KCjIwMDQtMDctMDYgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jIChUQVJHRVRfU0NIRURfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOgoJRGVmaW5lLgoJKiBjb25maWcvbWNvcmUvbWNvcmUubWQ6IE1vZGVsIG1lbW9yeSBsYXRlbmN5IHdpdGggYSBzaW1wbGUgREZBCglwaXBlbGluZSBkZXNjcmlwdGlvbiBpbnN0ZWFkIG9mIGEgZGVmaW5lX2Z1bmN0aW9uX3VuaXQuCgoyMDA0LTA3LTA1ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfVkFSX01PRF9UWVBFX1ApOiBFeHRyYSBhcmcuCgkqIGxhbmdob29rcy5oICh2YXJfbW9kX3R5cGVfcCk6IExpa2V3aXNlLgoJKiBjLWRlY2wuYyAoZmluaXNoX2RlY2wpOiBBZGQgZXh0cmEgYXJnIHRvIHZhcmlhYmx5X21vZGlmaWVkX3R5cGVfcC4KCSogZXhwci5jIChjb3VudF90eXBlX2VsZW1lbnRzKTogUHJvcGVybHkgaGFuZGxlIHJldHVybiBmcm9tCglhcnJheV90eXBlX25lbHRzIGFuZCBwcm9wZXJseSB0ZXN0IGZvciBvdmVyZmxvdy4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfaW5pdF9jb25zdHJ1Y3Rvcik6IFByb3Blcmx5IGhhbmRsZSByZXR1cm4KCWZyb20gYXJyYXlfdHlwZV9uZWx0cy4KCShnaW1wbGlmeV9hZGRyX2V4cHIpOiBSZW1vdmUgcmVkdW5kYW50IGNsZWFyIG9mIFRSRUVfU0lERV9FRkZFQ1RTLgoJKiBpbnRlZ3JhdGUuYyAoY29weV9kZWNsX2Zvcl9pbmxpbmluZyk6IENvcnJlY3QgY29tbWVudHMuCgkqIHRyZWUtaW5saW5lLmMgKHJlbWFwX2RlY2wpOiBVcGRhdGUgY29tbWVudHMsIHJlbW92ZSBkZWFkIGNvZGUsCglhbmQgY29weSBERUNMX0ZJRUxEX09GRlNFVCBhbmQgREVDTF9RVUFMSUZJRVIsIGlmIHRoZXkgZXhpc3QuCgkocmVtYXBfdHlwZSk6IE9ubHkgcmVtYXAgaWYgdmFyaWFibHkgbW9kaWZpZWQgYnkgdmFycyBpbiBmdW5jdGlvbgoJYmVpbmcgaW5saW5lZC4KCShjb3B5X2JvZHlfcik6IFVzZSBjb21wYXRpYmxlX3R5cGUgbGFuZ2hvb2tzIHRvIHNlZSB3aGVuIGNhbiBmb2xkLgoJKHNldHVwX29uZV9wYXJhbWV0ZXIpOiBEb24ndCByZW1hcCB0eXBlLgoJKGlubGluZV9mb3JiaWRkZW5fcF8xKTogQWRkIGFyZyB0byB2YXJpYWJseV9tb2RpZmllZF90eXBlX3AuCgkqIHRyZWUuYyAocmVjb21wdXRlX3RyZWVfaW52YXJhbnRfZm9yX2FkZHJfZXhwcik6IFByb3Blcmx5Cgljb21wdXRlIFRSRUVfSU5WQVJJQU5UIGZvciBkZWNsIGNhc2UuCgkoZmluZF92YXJfZnJvbV9mbik6IE5ldyBmdW5jdGlvbi4KCSh2YXJpYWJseV9tb2RpZmllZF90eXBlX3ApOiBBZGQgYXJnIGFuZCBjYWxsIG5ldyBmdW5jdGlvbi4KCSogdHJlZS5oICh2YXJpYWJseV9tb2RpZmllZF90eXBlX3ApOiBBZGQgZXh0cmEgYXJnLgoKMjAwNC0wNy0wNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobm9ubG9jYWxfZ290byk6IFJlbW92ZSBkaXNhYmxlZCBjb2RlLgoJKGdvdG9faGFuZGxlcl9hbmRfcmVzdG9yZV92OSk6IERlbGV0ZSBkaXNhYmxlZCBpbnNuLgoJKGdvdG9faGFuZGxlcl9hbmRfcmVzdG9yZV92OV9zcDY0KTogTGlrZXdpc2UuCgoyMDA0LTA3LTA1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNhbGxzLmMgKGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IENhbGwgZXhwYW5kX3NoaWZ0IGluc3RlYWQKCW9mIGV4cGFuZF9iaW5vcCB3aXRoIGFzaGxfb3B0YWIgKG9yIG90aGVyIHNoaWZ0IG9wdGFiKSBkaXJlY3RseS4KCSogZXhwci5jIChlbWl0X2dyb3VwX2xvYWQsIGVtaXRfZ3JvdXBfc3RvcmUpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1fc2V0dXBfYmxvY2spOiBMaWtld2lzZS4KCSogc3RtdC5jIChzaGlmdF9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KCjIwMDQtMDctMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfYXNzaWdubWVudCk6IERpc2FibGUgdGhlIGJpdGZpZWxkICs9IG9wdGltaXphdGlvbnMuCgoyMDA0LTA3LTA1ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2guCgoyMDA0LTA3LTA1ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtZGVjbC5jLCBjb25maWcvbTMyci9tMzJyLmMsIGV4cHIuYywgb3B0YWJzLmM6IERvbid0IGNoZWNrCglUQVJHRVRfTUVNX0ZVTkNUSU9OUy4KCSogc3lzdGVtLmg6IFBvaXNvbiBUQVJHRVRfTUVNX0ZVTkNUSU9OUy4KCSogbGliZnVuY3MuaCAoTFRJX2Jjb3B5LCBMVElfYmNtcCwgTFRJX2J6ZXJvLCBiY29weV9saWJmdW5jLAoJYmNtcF9saWJmdW5jLCBiemVyb19saWJmdW5jKTogUmVtb3ZlLgoJKiBvcHRhYnMuYyAoaW5pdF9vYnRhYnMpOiBEb24ndCBzZXQgYmNvcHlfbGliZnVuYywgYmNtcF9saWJmdW5jIG9yCgliemVyb19saWJmdW5jLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX01FTV9GVU5DVElPTlMpOiBSZW1vdmUuCgkqIGRvYy9zdGFuZGFyZHMudGV4aTogRG9uJ3QgbWVudGlvbiBjYWxsaW5nIEJTRCBzdHJpbmcgZnVuY3Rpb25zLgoJKiBkb2MvaW52b2tlLnRleGk6IExpa2V3aXNlLiAgTWVudGlvbiB0aGF0IG1lbW1vdmUgbWF5IGJlIGNhbGxlZC4KCSogY29uZmlnL3ZheC90LW1lbWZ1bmNzOiBOZXcuCgkqIGNvbmZpZy9tZW1jbXAuYywgY29uZmlnL21lbWNweS5jLCBjb25maWcvbWVtbW92ZS5jLAoJY29uZmlnL21lbXNldC5jOiBOZXcuCgkqIGNvbmZpZy9wZHAxMS90LXBkcDExIChMSUIyRlVOQ1NfRVhUUkEpOiBVc2UgdGhlc2UgZmlsZXMuCgkqIGNvbmZpZy5nY2MgKHZheC0qLWJzZCosIHZheC0qLXN5c3YqLCB2YXgtKi11bHRyaXgqKTogVXNlCgl2YXgvdC1tZW1mdW5jcy4KCSogY29uZmlnL2FscGhhL2FscGhhLmgsIGNvbmZpZy9hcmMvYXJjLmgsIGNvbmZpZy9hcm0vYXJtLmgsCgljb25maWcvYXZyL2F2ci5oLCBjb25maWcvYzR4L2M0eC5oLCBjb25maWcvY3Jpcy9hb3V0LmgsCgljb25maWcvZWxmb3MuaCwgY29uZmlnL2dudS5oLCBjb25maWcvaDgzMDAvaDgzMDAuaCwKCWNvbmZpZy9pMzg2L2dhcy5oLCBjb25maWcvaWE2NC9pYTY0LmgsIGNvbmZpZy9pbnRlcml4LmgsCgljb25maWcvaXAyay9pcDJrLmgsIGNvbmZpZy9seW54LW5nLmgsIGNvbmZpZy9tMzJyL20zMnIuaCwKCWNvbmZpZy9tY29yZS9tY29yZS5oLCBjb25maWcvbWlwcy9taXBzLmgsIGNvbmZpZy9tbWl4L21taXguaCwKCWNvbmZpZy9uZXRic2QuaCwgY29uZmlnL29wZW5ic2QuaCwgY29uZmlnL3BhL3BhLmgsCgljb25maWcvcnM2MDAwL3JzNjAwMC5oLCBjb25maWcvcnRlbXMuaCwgY29uZmlnL3MzOTAvczM5MC5oLAoJY29uZmlnL3NoL3NoLmgsIGNvbmZpZy9zcGFyYy9zcGFyYy5oLCBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaCwKCWNvbmZpZy9zdnIzLmg6IERvbid0IGRlZmluZSBUQVJHRVRfTUVNX0ZVTkNUSU9OUy4KCjIwMDQtMDctMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybV9zZXR1cF9yZWcpOiBQcm9wZXJseSByZW5hbWUgdmFyaWFibGVzIGluCglGVU5DVElPTl9BUkdfQ0FMTEVFX0NPUElFUyBzZWN0aW9uLgoKMjAwNC0wNy0wNSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUtbXVkZmxhcC5jOiBJbmNsdWRlIGNncmFwaC5oLgoJKG1mX2luaXRfZXh0ZXJuX3RyZWVzKTogUmVuYW1lIHRvIG11ZGZsYXBfaW5pdC4gIEV4cG9ydC4KCVJld3JpdGUgdG8gY3JlYXRlIHN5bnRoZXRpYyBkZWNsYXJhdGlvbnMgaW5zdGVhZCBvZiBsb29raW5nCgl1cCBkZWNsYXJhdGlvbnMgZnJvbSBtZi1ydW50aW1lLmguCgkobWZfbWFrZV9idWlsdGluLCBtZl9tYWtlX2NhY2hlX3N0cnVjdF90eXBlKTogTmV3IGZ1bmN0aW9ucy4KCShtZl9jYWNoZV9zaGlmdF9kZWNsLCBtZl9jYWNoZV9tYXNrX2RlY2wsIG1mX3VucmVnaXN0ZXJfZm5kZWNsKToKCUNvcnJlY3QgY29tbWVudGFyeS4KCShleGVjdXRlX211ZGZsYXBfZnVuY3Rpb25fZGVjbHMsIG11ZGZsYXBfcmVnaXN0ZXJfY2FsbCk6CglEb24ndCBjYWxsIG1mX2luaXRfZXh0ZXJuX3RyZWVzLgoJKG11ZGZsYXBfZmluaXNoX2ZpbGUpOiBVc2UgY2dyYXBoX2J1aWxkX3N0YXRpY19jZHRvci4KCgkqIHRyZWUtbXVkZmxhcC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogYy1tdWRmbGFwLmM6IERlbGV0ZSBmaWxlLgoJKiBjLWNvbW1vbi5jOiBJbmNsdWRlIHRyZWUtbXVkZmxhcC5oLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IENhbGwgbXVkZmxhcF9pbml0IGlmIGFwcHJvcHJpYXRlLgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIGMtbXVkZmxhcC5vLgoJVXBkYXRlIGRlcGVuZGVuY2llcy4KCjIwMDQtMDctMDUgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5tZCAocHJlZmV0Y2gsIHByZWZldGNoXzMyLCBwcmVmZXRjaF82NCk6IE9ubHkgYWxsb3cgc2hvcnQKCWRpc3BsYWNlbWVudHMgd2l0aCB0aGUgc3BhdGlhbC1sb2NhbGl0eSBjYWNoZS1jb250cm9sIGNvbXBsZXRlci4KCjIwMDQtMDctMDUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsYW5naG9va3MuYzogRG9uJ3QgaW5jbHVkZSBndC1sYW5naG9va3MuaC4KCSh2YXJfbGFiZWxubyk6IERlbGV0ZS4KCShsaGRfc2V0X2RlY2xfYXNzZW1ibGVyX25hbWUpOiBEbyBub3QgYXBwZW5kIGEgZGlzdGluZ3Vpc2hpbmcKCW51bWJlciB0byBmaWxlLXNjb3BlIGludGVybmFsLWxpbmthZ2UgZGVjbGFyYXRpb25zIGZvciB0aGUgZmlyc3QKCWlucHV0IGZpbGUsIGV2ZW4gaWYgdGhleSBoYXZlIERFQ0xfQ09OVEVYVCBzZXQuICBVc2UgREVDTF9VSUQgb2YKCXRoZSBkZWNsYXJhdGlvbiBpdHNlbGYgKGlmIGF0IGJsb2NrIHNjb3BlKSwgb3IgaXRzIGNvbnRhaW5pbmcKCVRSQU5TTEFUSU9OX1VOSVRfREVDTCAoaWYgYXQgZmlsZSBzY29wZSkgZm9yIHRoZSBkaXN0aW5ndWlzaGluZwoJbnVtYmVyLgoKCSogb3B0cy5jIChjdXJfaW5fZm5hbWUpOiBOZXcgZ2xvYmFsLgoJKiBvcHRzLmg6IERlY2xhcmUgaXQuCgkqIHRyZWUuYzogSW5jbHVkZSBvcHRzLmguCgkobWFrZV9ub2RlX3N0YXQpOiBJZiBjcmVhdGluZyBhIFRSQU5TTEFUSU9OX1VOSVRfREVDTCwgZ2l2ZSBpdAoJREVDTF9VSUQgZXF1YWwgdG8gY3VyX2luX2ZuYW1lLgoJKGNvcHlfbm9kZV9zdGF0KTogRG8gbm90IGNoYW5nZSBERUNMX1VJRCB3aGVuIGNvcHlpbmcgYQoJVFJBTlNMQVRJT05fVU5JVF9ERUNMLgoJKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzKTogQWRqdXN0IG5leHRfZGVjbF91aWQgdG8gcmVzZXJ2ZSB0aGUKCXJhbmdlIDAgLi4gbnVtX2luX2ZuYW1lcy0xIGZvciBUUkFOU0xBVElPTl9VTklUX0RFQ0xzLgoKCSogYy1kZWNsLmMgKGNfc3RhdGljX2Fzc2VtYmxlcl9uYW1lKTogRGVsZXRlLgoJKiBjLXRyZWUuaCAoY19zdGF0aWNfYXNzZW1ibGVyX25hbWUpOiBEZWxldGUgcHJvdG90eXBlLgoJKiBjLWxhbmcuYywgb2JqYy9vYmpjLWxhbmcuYzogRG9uJ3Qgb3ZlcnJpZGUKCUxBTkdfSE9PS1NfU0VUX0RFQ0xfQVNTRU1CTEVSX05BTUUuCgoJKiBNYWtlZmlsZS5pbiAodHJlZS5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCShHVEZJTEVTKTogUmVtb3ZlIGxhbmdob29rcy5jLgoKMjAwNC0wNy0wNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpIDxUUlVOQ19NT0RfRVhQUj46IE9wdGltaXplIHVuc2lnbmVkIG1vZHVsdXMKCWJ5IGEgcG93ZXIgb2YgdHdvIGludG8gYSBiaXQtd2lzZSBBTkQsIGkuZS4gIlggJSBDIiBhcyAiWCAmIChDLTEpIi4KCU5vcm1hbGl6ZSAiWCAlIEMiIGFzICJYICUgLUMiIGZvciBzaWduZWQgbW9kdWx1cyBhbmQgbmVnYXRpdmUgQy4KCU9wdGltaXplICJYICUgLVkiIGFzICJYICUgWSIgZm9yIHNpZ25lZCBtb2R1bHVzLgoJPEVRX0VYUFI+OiBSZWN1cnNpdmVseSBjYWxsICJmb2xkIiB3aGVuIHRyYW5zZm9ybWluZyAiKFggJSBZKSA9PSAwIgoJaW50byAiKCh1bnNpZ25lZCkgWCAlIFkpID09IDAiLgoKMjAwNC0wNy0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBzb3VyY2VidWlsZC50ZXhpIChDb25maWcgRnJhZ21lbnRzKTogVXNlIEBjb21tYXt9IGluCgljcm9zcy1yZWZlcmVuY2UgdG8gc2VjdGlvbiB0aXRsZS4KCjIwMDQtMDctMDUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmggKERFQ0xfU0VFTl9JTl9CSU5EX0VYUFJfUCk6IE5ldyBtYWNyby4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxlX2FkZF90bXBfdmFyLCBnaW1wbGlmeV9iaW5kX2V4cHIpOiBVc2UgaXQuCgkoZ2ltcGxpZnlfdGFyZ2V0X2V4cHIsIGdpbXBsaWZ5X2V4cHIpOiBMaWtld2lzZS4KCShjb3B5X2lmX3NoYXJlZF9yKTogTm8gbG9uZ2VyIG5lZWQgc3BlY2lhbCBjYXNlIGZvciBCSU5EX0VYUFIuCgkodW5zaGFyZV9ib2R5LCB1bnZpc2l0X2JvZHkpOiBPbmx5IGxvb2sgYXQgbmVzdGVkIGlmIEJPRFlfUCBpcwoJd2hvbGUgZnVuY3Rpb24uCgkoZ2ltcGxpZnlfY29tcG91bmRfbHZhbCk6IFNlZSBpZiB3ZSBjYW4gc3RyaXAgYW55IHVzZWxlc3MgY29udmVyc2lvbi4KCShnaW1wbGlmeV9tb2RpZnlfZXhwciwgZ2ltcGxpZnlfbW9kaWZ5X2V4cHJfdG9fbWVtY3B5KTogVGFrZSBzaXplCglmcm9tIFJIUywgbm90IExIUy4KCShnaW1wbGlmeV9tb2RpZnlfZXhwcl90b19tZW1zZXQpOiBMaWtld2lzZS4KCShnaW1wbGlmeV9leHByLCBjYXNlIENPTlNUUlVDVE9SKTogSGFuZGxlIHVzZSBhcyBzdGF0ZW1lbnQuCgkqIHRyZWUtaW5saW5lLmMgKHNldHVwX29uZV9wYXJhbWV0ZXIpOiBVc2UgREVDTF9TRUVOX0lOX0JJTkRfRVhQUl9QLgoJKGRlY2xhcmVfaW5saW5lX3ZhcnMpOiBMaWtld2lzZS4KCSh3YWxrX3R5cGVfZmllbGRzKTogTmV3IGZ1bmN0aW9uLgoJKHdhbGtfdHJlZSk6IFVzZSBpdC4KCSogdHJlZS1uZXN0ZWQuYyAoY3JlYXRlX3RtcF92YXJfZm9yKTogU2hvdyBzZWVuIGluIEJJTkRfRVhQUi4KCgkqIHRyZWUtc3JhLmMgKHN0cnVjdCBzcmFfd2Fsa19mbnMpOiBJbml0IGZ1bmN0aW9uIG5vdyByZXR1cm5zIGJvb2wuCgkoc3JhX3dhbGtfbW9kaWZ5X2V4cHIpOiBBbGxvdyBpbml0IGZ1bmN0aW9uIHRvIGZhaWwuCgkoc2Nhbl9pbml0KTogTm93IHJldHVybnMgYm9vbC4KCShnZW5lcmF0ZV9lbGVtZW50X2luaXQpOiBJZiBjYW4ndCB1bmRlcnN0YW5kIElOSVQsIHJldHVybiBmYWxzZS4KCShzY2FsYXJpemVfaW5pdCk6IFJldHVybiBmYWxzZSBpZiBnZW5lcmF0ZV9lbGVtZW50X2luaXQgZG9lcy4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlLCBjYXNlIEFSUkFZX1RZUEUpOiBQcm9wZXJseQoJcHJpbnQgYm91bmRzLgoKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEsIGNhc2UgU1dJVENIX0VYUFIpOiBEb24ndCBjaGVjayBhZ2FpbnN0Cglib3VuZHMgaWYgYm91bmRzIGFyZW4ndCBjb25zdGFudC4KCgkqIHRyZWUtY2ZnLmMgKHZlcmlmeV9leHByKTogVXNlIENIRUNLX09QIGluIGJpbmFyeSBjYXNlLgoKCSogZnVuY3Rpb24uYywgbGFuZ2hvb2tzLWRlZi5oLCBsYW5naG9va3MuaDogTW92ZSBtYXhfc2l6ZSBob29rCgl0byB0eXBlIGhvb2tzOyByZW1vdmUgYm9ndXMgUEFSQU1TLgoKMjAwNC0wNy0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHJlZS5oIChUWVBFX0FDVFVBTF9BUkdfVFlQRVMpOiBVc2UgVFlQRV9MQU5HX1NMT1RfMS4KCSogZHdhcmYyb3V0LmMgKGFkZF9kYXRhX21lbWJlcl9sb2NhdGlvbl9hdHRyaWJ1dGUpOiBDaGVjayBmb3IKCVRSRUVfQklORk8uCgkqIHRyZWUuYyAodHJlZV9ub2RlX2tpbmRzKTogQWRkICJiaW5mb3MiLgoJKGJpbmZvX2xhbmdfc2xvdHMpOiBOZXcuCgkobWFrZV9ub2RlX3N0YXQpOiBBZGQgVFJFRV9CSU5GTy4KCShtYWtlX3RyZWVfYmluZm9fc3RhdCk6IE5ldy4KCSh0cmVlX25vZGVfc3RydWN0dXJlKTogQWRkIFRSRUVfQklORk8uCgkqIHRyZWUuZGVmIChUUkVFX0JJTkZPKTogTmV3LgoJKiB0cmVlLmggKFJFQ19PUl9VTklPTl9DSEVDSyk6IFJlbmFtZSB0byAuLi4KCShSRUNPUkRfT1JfVU5JT05fQ0hFQ0spOiAuLi4gaGVyZS4KCShOT1RfUkVDT1JEX09SX1VOSU9OX0NIRUNLKTogTmV3LgoJKFRSRV9WSUFfVklSVFVBTCk6IEFsbG93IFRSRUVfTElTVCBvciBUUkVFX0JJTkZPLgoJKFRZUEVfRklFTERTLCBUWVBFX01FVEhPRFMsIFRZUEVfVkZJRUxEKTogQWRqdXN0IGZvcgoJUkVDT1JEX09SX1VOSU9OX0NIRUNLLgoJKFRZUEVfQklORk8pOiBVc2UgUkVDT1JEX09SX1VOSU9OX0NIRUNLLgoJKFRZUEVfTEFOR19TTE9UXzEpOiBOZXcuCgkoQklORk9fVFlQRSwgQklORk9fT0ZGU0VULCBCSU5GT19WVEFCTEUsIEJJTkZPX1ZJUlRVQUxTLAoJQklORk9fQkFTRVRZUEVTLCBUWVBFX0JJTkZPX0JBU0VUWVBFUywgQklORk9fVlBUUl9GSUVMRCwKCUJJTkZPX0JBU0VBQ0NFU1NFUywgQklORk9fSU5IRVJJVEFOQ0VfQ0hBSU4pOiBBZGp1c3QuCgkoQklORk9fRUxUUyk6IFJlbW92ZS4KCShCSU5GT19MQU5HX1NMT1QpOiBOZXcuCgkoc3RydWN0IHRyZWVfYmluZm8pOiBOZXcuCgkoYmluZm9fbGFuZ19zbG90cyk6IERlY2xhcmUuCgkoZW51bSB0cmVlX25vZGVfc3RydWN0dXJlX2VudW0pOiBBZGQgVFNfQklORk8uCgkodW5pb24gdHJlZV9ub2RlKTogQWRkIGJpbmZvLgoJKG1ha2VfdHJlZV9iaW5mb19zdGF0KTogRGVjbGFyZS4KCShtYWtlX3RyZWVfYmluZm8pOiBOZXcuCgkoZW51bSB0cmVlX25vZGVfa2luZCk6IEFkZCBiaW5mb19raW5kLgoKCSogb2JqYy9vYmpjLWFjdC5jIChzdGFydF9jbGFzcywgb2JqY19kZWNsYXJlX3Byb3RvY29scywKCXN0YXJ0X3Byb3RvY29scyk6IFVzZSBUWVBFX0xBTkdfU0xPVF8xLgoJKiBvYmpjL29iamMtYWN0LmggKENMQVNTX0JJTkZPX0VMVFMsIFBST1RPQ09MX0JJTkZPX0VMVFMpOiBSZW5hbWUKCXRvIC4uLgoJKENMQVNTX0xBTkdfU0xPVF9FTFRTLCBQUk9UT0NPTF9MQU5HX1NMT1RfRUxUUyk6IC4uLiBoZXJlLgoJKENMQVNTX0lWQVJTLCBDTEFTU19SQVdfSVZBUlMsIENMQVNTX1NUQVRJQ19URU1QTEFURSwKCUNMQVNTX0NBVEVHT1JZX0xJU1QsIENMQVNTX1BST1RPQ09MX0xJU1QsIENMQVNTX09XTl9JVkFSUywKCVBST1RPQ09MX0xJU1QsIFBST1RPQ09MX0ZPUldBUkRfREVDTCk6IFVzZSBUWVBFX0xBTkdfU0xPVF8xLgoKMjAwNC0wNy0wNSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogcnRsLmggKHN0cnVjdCBydHhfZGVmKTogUmVtb3ZlIHRoZSBpbnRlZ3JhdGVkIGZsYWcuCglVc2UgdGhlIHJldHVybl92YWwgZmxhZyBmb3IgTUVNX1NDQUxBUl9QLgoJUmVzaHVmZmxlIGFuZCB1cGRhdGUgZmxhZ3MgaW4gQ0xFQVJfUlRYX0ZMQUdTLgoKMjAwNC0wNy0wNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNjM1NwoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfYmxvY2tfbW92ZV9zdHJhaWdodCk6IFBhc3MgQkxLbW9kZSBtZW1yZWZzCgl0byBtaXBzX2V4cGFuZF91bmFsaWduZWRfbG9hZCwgbWlwc19leHBhbmRfdW5hbGlnbmVkX3N0b3JlLCBhbmQKCW1vdmVfYnlfcGllY2VzLgoKMjAwNC0wNy0wNSAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogdmFyLXRyYWNraW5nLmM6IEZpeCBzb21lIGNvbW1lbnRzLgoJKGZyYW1lX3N0YWNrX2FkanVzdCk6IE5ldy4KCSh2dF9zdGFja19hZGp1c3RtZW50cyk6IEluaXQgc3RhY2tfYWRqdXN0IG9mIGVudHJ5IGJsb2NrIHRvCgltaW51cyBzdGFjayBhZGp1c3RtZW50IG9mIGZ1bmN0aW9uIHByb2xvZ3VlLgoJKGFkanVzdF9zdGFja19yZWZlcmVuY2UpOiBEbyBub3QgYWRqdXN0IGlmIGFkanVzdG1lbnQgPT0gMC4KCShjb21wdXRlX2JiX2RhdGFmbG93KTogVXNlIHBsdXNfY29uc3RhbnQgaW5zdGVhZCBvZiBnZW5fcnR4X1BMVVMuCgkoZW1pdF9ub3Rlc19pbl9iYik6IExpa2V3aXNlLgoJKHZ0X2FkZF9mdW5jdGlvbl9wYXJhbWV0ZXJzKTogRG8gbm90IGFkanVzdCBsb2NhdGlvbnMgb2YKCWZ1bmN0aW9uIGFyZ3VtZW50cy4KCSh2dF9pbml0aWFsaXplKTogQ29tcHV0ZSB0aGUgc3RhY2sgYWRqdXN0bWVudCBvZiBmdW5jdGlvbgoJcHJvbG9ndWUgYW5kIG9mZnNldCB0aGUgaW5pdGlhbCAibG9jYXRpb24iIG9mIGZyYW1lX2Jhc2VfZGVjbAoJZnJvbSB0aGUgc3RhY2sgcG9pbnRlciBhZnRlciBwcm9sb2d1ZS4KCjIwMDQtMDctMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChzdHJ1Y3QgYXNzaWduX3Bhcm1fZGF0YV9hbGwpOiBOZXcuCgkoc3RydWN0IGFzc2lnbl9wYXJtX2RhdGFfb25lKTogTmV3LgoJKGFzc2lnbl9wYXJtc19pbml0aWFsaXplX2FsbCwgYXNzaWduX3Bhcm1zX2F1Z21lbnRlZF9hcmdfbGlzdCwKCWFzc2lnbl9wYXJtX2ZpbmRfZGF0YV90eXBlcywgYXNzaWduX3Bhcm1zX3NldHVwX3ZhcmFyZ3MsCglhc3NpZ25fcGFybV9maW5kX2VudHJ5X3J0bCwgYXNzaWduX3Bhcm1faXNfc3RhY2tfcGFybSwKCWFzc2lnbl9wYXJtX2ZpbmRfc3RhY2tfcnRsLCBhc3NpZ25fcGFybV9hZGp1c3RfZW50cnlfcnRsLAoJYXNzaWduX3Bhcm1fYWRqdXN0X3N0YWNrX3J0bCwgYXNzaWduX3Bhcm1fc2V0dXBfYmxvY2tfcCwKCWFzc2lnbl9wYXJtX3NldHVwX2Jsb2NrLCBhc3NpZ25fcGFybV9zZXR1cF9yZWcsCglhc3NpZ25fcGFybV9zZXR1cF9zdGFjaywgYXNzaWduX3Bhcm1zX3Vuc3BsaXRfY29tcGxleCk6IFNwbGl0IGZyb20gLi4uCgkoYXNzaWduX3Bhcm1zKTogLi4uIGhlcmUuCgoyMDA0LTA3LTA0ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHRyZWUtc3NhLXByZS5jIChiYl92YWx1ZV9zZXRzKTogcGhpX2dlbiwgdG1wX2dlbiwgbmV3X3NldHMKCW5vdyBhcmUgYml0bWFwX3NldF90J3MuCgkoYml0bWFwX2luc2VydF9pbnRvX3NldCk6IE5vIHBvaW50IGluIGluc2VydGluZyB0aGUgdmFsdWUgaWYKCWl0J3MgaW52YXJpYW50LgoJKGJpdG1hcF9zZXRfY29udGFpbnMpOiBOZXcgZnVuY3Rpb24uCgkoYml0bWFwX3NldF9yZXBsYWNlX3ZhbHVlKTogQWRkIGNvbW1lbnQgb24gd2h5IHdlIGRvIGl0Cgl0aGlzIHdheS4KCShzZXRfY29udGFpbnMpOiBSZW1vdmVkLgoJKGJpdG1hcF9zZXRfc3VidHJhY3RfZnJvbV92YWx1ZV9zZXQpOiBOZXcgbmFtZSBvZgoJc2V0X3N1YnRyYWN0IG5vdyB0aGF0IGl0J3MgYXJndW1lbnRzIGFyZSB0d28gZGlmZmVyZW50Cgl0eXBlcyBvZiBzZXRzLgoJVXBkYXRlIGNhbGxlcnMuCgkoYml0bWFwX2ZpbmRfbGVhZGVyKTogQ2hhbmdlIGFsZ29yaXRobSB1c2VkLgoJKGZpbmRfb3JfZ2VuZXJhdGVfZXhwcmVzc2lvbik6IFVwZGF0ZSB1c2Ugb2YgZnVuY3Rpb25zIGZvciBuZXcKCWJpdG1hcCBzZXRzLgoJKGNyZWF0ZV9leHByZXNzaW9uX2J5X3BpZWNlcyk6IERpdHRvLgoJKGluc2VydF9hdXgpOiBEaXR0by4KCShpbnNlcnQpOiBEaXR0by4KCShhZGRfdG9fc2V0cyk6IERpdHRvLgoJKGluaXRfcHJlKTogRGl0dG8uCgkoZXhlY3V0ZV9wcmUpOiBEaXR0by4KCShjb21wdXRlX2F2YWlsKTogRGl0dG8uCglBbHNvIGlnbm9yZSB2aXJ0dWFsIHBoaXMuCgoyMDA0LTA3LTA0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2NvbXBhcmlzb24pOiBGaXggY29tbWVudCB0eXBvLgoKMjAwNC0wNy0wNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChTSUJDQUxMX1NMT1RfRU1QVFlfUCk6IFJlbmFtZQoJaW50byBMRUFGX1NJQkNBTExfU0xPVF9SRVNFUlZFRF9QIGFmdGVyIG5lZ2F0aW9uLgoJKGVsaWdpYmxlX2Zvcl9zaWJjYWxsX2RlbGF5KTogQWRqdXN0IHVzZSBvZiBTSUJDQUxMX1NMT1RfRU1QVFlfUC4KCShvdXRwdXRfcmVzdG9yZSk6IENoYW5nZSBwYXJhbWV0ZXIgZnJvbSAnaW5zbicgdG8gJ3BhdCcuCgkob3V0cHV0X3JldHVybik6IEFkanVzdCBjYWxsIHRvIG91dHB1dF9yZXN0b3JlLgoJKG91dHB1dF9zaWJjYWxsKTogQWRqdXN0IHVzZSBvZiBTSUJDQUxMX1NMT1RfRU1QVFlfUC4KCUFkanVzdCBjYWxsIHRvIG91dHB1dF9yZXN0b3JlLgoKMjAwNC0wNy0wNCAgTmVpbCBCb290aCAgPG5laWxAZHVyb24uYWtpaGFiYXJhLmNvLnVrPgoKCSogY29uZmlnL25ldGJzZC5oIChORVRCU0RfT1NfQ1BQX0JVSUxUSU5TX0NPTU1PTik6IERlZmluZSBfX3VuaXhfXwoJYW5kIGFzc2VydCBzeXN0ZW0gaXMgYnNkLgoKMjAwNC0wNy0wNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChNQVNLX0RFQlVHX0MsIFRBUkdFVF9ERUJVR19DX01PREUpOiBEZWxldGUuCgkoVEFSR0VUX1NXSVRDSEVTKTogUmVtb3ZlIC1tZGVidWdjLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChzZXEsIHNuZSwgc2d0LCBzZ2UsIHNsdCwgc2xlLCBzZ3R1LCBzZ2V1KQoJKHNsdHUsIHNsZXUpOiBSZW1vdmUgVEFSR0VUX0RFQlVHX0NfTU9ERSBoYW5kbGluZy4KCShzZXFfW3NkXWksIHNuZV9bc2RdaSwgc2dlX1tzZF1pLCBzbGVfW3NkXWlfcmVnLCBzZ2V1X1tzZF1pKQoJKHNsZV9bc2RdaV9yZWcpOiBEZWxldGUuCgoyMDA0LTA3LTA0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5jIChUQVJHRVRfU0NIRURfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOgoJRGVmaW5lLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5tZDogVHJhbnNsYXRlIG9sZCBwaXBlbGluZSBkZXNjcmlwdGlvbiB0byBhbgoJZXF1aXZhbGVudCBuZXcgb25lLgoKMjAwNC0wNy0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmVlLXNzYS1jY3AuYyAoc2V0X3Jocyk6IENoYW5nZSBmdW5jdGlvbiB0byByZXR1cm4gYSBib29sLgoJRW5zdXJlIHRoZSByZXBsYWNlbWVudCByaHMgaXMgdmFsaWQgZ2ltcGxlIGJlZm9yZSBwZXJmb3JtaW5nCgl0aGUgc3Vic3RpdHV0aW9uLiAgUmV0dXJuIGZhbHNlIGlmIHRoZXNlIHNhbml0eSBjaGVja3MgZmFpbC4KCShmb2xkX3N0bXQpOiBPbmx5IHNldCBjaGFuZ2VkIHRvIHRydWUsIGlmIHNldF9yaHMgcmV0dXJucyB0cnVlLgoJKGV4ZWN1dGVfZm9sZF9hbGxfYnVpbHRpbnMpOiBPbmx5IGNhbGwgbW9kaWZ5X3N0bXQgaWYgc2V0X3JocwoJc3VjY2VlZHMuCgoyMDA0LTA3LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMvMTYzNDgKCSogYy10eXBlY2suYyAoY19maW5pc2hfbG9vcCk6IERvbid0IGNsZWFyIGNvbmQgZm9yIGNvbmRfaXNfZmlyc3QgbG9vcHMuCgoyMDA0LTA3LTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmFjIChyYW5saWJfZmxhZ3MpOiBOZXcgdmFyaWFibGUuCgkqIE1ha2VmaWxlLmluIChSQU5MSUJfRkxBR1MpOiBOZXcgdmFyaWFibGUuCgkobGliYmFja2VuZC5hKTogVXNlIGl0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwNC0wNy0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBpZmN2dC5jIChub2NlX3RyeV9zaWduX21hc2spOiBDYWxsIGVtaXRfc3RvcmVfZmxhZyB0byBnZW5lcmF0ZQoJYSAic2lnbiBtYXNrIiBpbnN0ZWFkIG9mIHVzaW5nIGFzaHJfb3B0YWIgZGlyZWN0bHkuCgoyMDA0LTA3LTA0ICBOZWlsIEJvb3RoICA8bmVpbEBkdXJvbi5ha2loYWJhcmEuY28udWs+CgoJKiBkb2MvY3BwLnRleGk6IERvbid0IGRvY3VtZW50IHdoYXQgd2UgZG8gZm9yIGlsbC1mb3JtZWQgZXhwcmVzc2lvbnMuCgkqIGRvYy9jcHBvcHRzLnRleGk6IENsYXJpZnkgcHJvY2Vzc2luZyBvZiBjb21tYW5kLWxpbmUgZGVmaW5lcy4KCjIwMDQtMDctMDQgIEdlcmFsZCBQZmVpZmVyICA8Z2VyYWxkQHBmZWlmZXIuY29tPgoKCSogZG9jL2NvbnRyaWIudGV4aSAoQ29udHJpYnV0b3JzKTogQWRqdXN0IGxpbmsgZm9yIEdOVSBDbGFzc3BhdGguCgoyMDA0LTA3LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcnRsLmRlZiAoQUREUkVTU09GKTogUmVtb3ZlLgoJKiBhbGlhcy5jIChydHhfZXF1YWxfZm9yX21lbXJlZl9wKTogRG9uJ3QgaGFuZGxlIGFkZHJlc3NvZi4KCShmaW5kX2Jhc2VfdGVybSwgbWVtcmVmc19jb25mbGljdF9wKTogTGlrZXdpc2UuCgkqIGNzZS5jIChmaXhlZF9iYXNlX3BsdXNfcCwgZmluZF9iZXN0X2FkZHI6IExpa2V3aXNlLgoJKGZvbGRfcnR4LCBjc2VfaW5zbiwgc2V0X2xpdmVfcCk6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYyAobWVtX2xvY19kZXNjcmlwdG9yKTogTGlrZXdpc2UuCgkoYWRkX2xvY2F0aW9uX29yX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChjb3B5X2luc25fMSk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAobWVtb3J5X2FkZHJlc3MpOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKHN0b3JlX3NwbGl0X2JpdF9maWVsZCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChpbnN0YW50aWF0ZV9kZWNsCgkoaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzXzEsIGZpeF9sZXhpY2FsX2FkZHIpOiBMaWtld2lzZS4KCSogZ2VucmVjb2cuYyAocHJlZHMsIHZhbGlkYXRlX3BhdHRlcm4pOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKTogTGlrZXdpc2UuCgkqIHJlY29nLmMgKGdlbmVyYWxfb3BlcmFuZCwgcmVnaXN0ZXJfb3BlcmFuZCk6IExpa2V3aXNlLgoJKG1lbW9yeV9hZGRyZXNzX3ApOiBMaWt3aXNlLgoJKiByZWxvYWQxLmMgKGVsaW1pbmF0ZV9yZWdzLCBlbGltaW5hdGlvbl9lZmZlY3RzKTogTGlrZXdpc2UuCgkqIHJ0bC5jIChjb3B5X3J0eCk6IExpa2V3aXNlLgoJKiBydGxhbmFsLmMgKHJ0eF91bnN0YWJsZV9wLCBydHhfdmFyaWVzX3ApOiBMaWtld2lzZS4KCShydHhfYWRkcl9jYW5fdHJhcF9wLCBub256ZXJvX2FkZHJlc3NfcCwgYWRkcmVzc19jb3N0KTogTGlrZXdpc2UuCgkqIHJ0bGhvb2tzLmMgKGdlbl9sb3dwYXJ0X2dlbmVyYWwpOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHdlYi5jIChlbnRyeV9yZWdpc3RlciwgcmVwbGFjZV9yZWYsIHdlYl9tYWluKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChpbnB1dF9vcGVyYW5kLCBhbHBoYV9sZWdpdGltYXRlX2FkZHJlc3NfcCwKCWFscGhhX2V4cGFuZF9ibG9ja19tb3ZlLCBhbHBoYV9leHBhbmRfYmxvY2tfY2xlYXIpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYyAodGh1bWJfcnR4X2Nvc3RzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF92YWxpZF9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5jIChtb3ZlX2Rlc3RpbmF0aW9uX29wZXJhbmQsIG1vdmVfc291cmNlX29wZXJhbmQsCgljb25kZXhlY19kZXN0X29wZXJhbmQsIGNvbmRleGVjX3NvdXJjZV9vcGVyYW5kLAoJY29uZGV4ZWNfbWVtb3J5X29wZXJhbmQpOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKFBSRURJQ0FURV9DT0RFUyk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGdlbmVyYWxfeGZtb2RlX29wZXJhbmQpOiBMaWtld2lzZS4KCShkZXN0aW5hdGlvbl94Zm1vZGVfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBSRURJQ0FURV9DT0RFUyk6IExpa2V3aXNlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKG1uMTAzMDBfYWRkcmVzc19jb3N0XzEpOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChnZW5lcmFsX3Nfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChtb3YqKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChQUkVESUNBVEVfQ09ERVMpOiBMaWtld2lzZS4KCgkqIGMtdHlwZWNrLmMgKGNfbWFya19hZGRyZXNzYWJsZSk6IERvbid0IHB1dF92YXJfaW50b19zdGFjay4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfZXhwYW5kX2J1aWx0aW4pOiBMaWtld2lzZS4KCgkqIGZ1bmN0aW9uLmMgKHN0cnVjdCBmaXh1cF9yZXBsYWNlbWVudCwgc3RydWN0IGluc25zX2Zvcl9tZW1fZW50cnksCglwb3N0cG9uZWRfaW5zbnMsIHB1dF92YXJfaW50b19zdGFjaywgcHV0X3JlZ19pbnRvX3N0YWNrLAoJc2NoZWR1bGVfZml4dXBfdmFyX3JlZnMsIGZpeHVwX3Zhcl9yZWZzLCBmaW5kX2ZpeHVwX3JlcGxhY2VtZW50LAoJZml4dXBfdmFyX3JlZnNfaW5zbnMsIGZpeHVwX3Zhcl9yZWZzX2luc25zX3dpdGhfaGFzaCwKCWZpeHVwX3Zhcl9yZWZzX2luc24sIGZpeHVwX3Zhcl9yZWZzXzEsIGZpeHVwX21lbW9yeV9zdWJyZWcsCgl3YWxrX2ZpeHVwX21lbW9yeV9zdWJyZWcsIGZpeHVwX3N0YWNrXzEsIG9wdGltaXplX2JpdF9maWVsZCwKCWdlbl9tZW1fYWRkcmVzc29mLCBmbHVzaF9hZGRyZXNzb2YsIHB1dF9hZGRyZXNzb2ZfaW50b19zdGFjaywKCXB1cmdlX2JpdGZpZWxkX2FkZHJlc3NvZl9yZXBsYWNlbWVudHMsIHB1cmdlX2FkZHJlc3NvZl9yZXBsYWNlbWVudHMsCglwdXJnZV9hZGRyZXNzb2ZfMSwgaW5zbnNfZm9yX21lbV9oYXNoLCBpbnNuc19mb3JfbWVtX2NvbXAsCglzdHJ1Y3QgaW5zbnNfZm9yX21lbV93YWxrX2luZm8sIGluc25zX2Zvcl9tZW1fd2FsaywKCWNvbXB1dGVfaW5zbnNfZm9yX21lbSwgaXNfYWRkcmVzc29mLCBwdXJnZV9hZGRyZXNzb2YsIHNldGptcF9wcm90ZWN0LAoJc2V0am1wX3Byb3RlY3RfYXJncyk6IFJlbW92ZS4KCShwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8pOiBEb24ndCBoYW5kbGUgdmFyX3JlZnNfcXVldWUuCgkocG9wX2Z1bmN0aW9uX2NvbnRleHRfZnJvbSwgZnJlZV9hZnRlcl9jb21waWxhdGlvbik6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncyk6IERvbid0IGhhbmRsZSBwYXJtX3JlZ19zdGFja19sb2MuCgkoYXNzaWduX3Bhcm1zLCBhbGxvY2F0ZV9zdHJ1Y3RfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSh1c2VfcmVnaXN0ZXJfZm9yX2RlY2wpOiBOZXcuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IERvbid0IHNldGptcF9wcm90ZWN0LgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZW1pdF9zdGF0dXMpOiBVcGRhdGUgY29tbWVudGFyeS4KCShzdHJ1Y3QgZnVuY3Rpb24pOiBSZW1vdmUgeF9tYXhfcGFybV9yZWcsIHhfcGFybV9yZWdfc3RhY2tfbG9jLgoJKG1heF9wYXJtX3JlZywgcGFybV9yZWdfc3RhY2tfbG9jKTogUmVtb3ZlLgoJKiBwYXNzZXMuYyAoREZJX2FkZHJlc3NvZik6IFJlbW92ZS4KCShkdW1wX2ZpbGVfaW5mbyk6IFJlbW92ZSBhZGRyZXNzb2YuCgkocmVzdF9vZl9oYW5kbGVfYWRkcmVzc29mKTogUmVtb3ZlLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEb24ndCBjYWxsIGl0LgoJKiBydGwuaCAoQUREUkVTU09GX1JFR05PLCBBRERSRVNTT0ZfREVDTCk6IFJlbW92ZS4KCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IFVzZSB1c2VfcmVnaXN0ZXJfZm9yX2RlY2wuCgkqIHRyZWUuaDogVXBkYXRlIGRlY2xzLgoJKiB3ZWIuYyAobWFya19hZGRyZXNzb2YpOiBSZW1vdmUuCgkqIGRvYy9pbnZva2UudGV4aSAoLWRGKTogUmVtb3ZlLgoKMjAwNC0wNy0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoc3BpbGxfeGZtb2RlX29wZXJhbmQpOiBVc2UgYXNzaWduX3N0YWNrX3RlbXAKCWluc3RlYWQgb2YgZ2VuX21lbV9hZGRyZXNzb2YuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdnhmKTogVXNlIGFzc2lnbl9zdGFja190ZW1wIHRvIGhhbmRsZQoJVEltb2RlIG91dHB1dCByZWdpc3Rlci4KCjIwMDQtMDctMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTYzNDEKCSogdHJlZS1zcmEuYyAoc3JhX3dhbGtfZnVuY3Rpb24pOiBJbmNyZW1lbnQgdG8gbmV4dCBzdG10IGJlZm9yZQoJcHJvY2Vzc2luZyB0aGUgY3VycmVudCBzdG10LgoJKHNyYV9pbnNlcnRfYWZ0ZXIpOiBBbHdheXMgdXNlIEJTSV9TQU1FX1NUTVQuCgoyMDA0LTA3LTAzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtZG9tLmMgKHNpbXBsaWZ5X3Joc19hbmRfbG9va3VwX2F2YWlsX2V4cHIpOiBEb24ndCBmb2xkCglmcCBwbHVzIHdpdGggbWludXMuCgoyMDA0LTA3LTAzICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIHRyZWUuYyAodHlwZV9oYXNoX2VxKTogQWxsb3cgVFlQRV9NSU5fVkFMVUUgd2hpY2ggY29tcGFyZXMgZXF1YWwKCXdpdGggdHJlZV9pbnRfY3N0X2VxdWFsLgoKMjAwNC0wNy0wMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQ6IERlZmluZSBuZXcgYXR0cmlidXRlICJlbXB0eSIuCgkocHJvbG9ndWVfdXNlLCBub3BfeCwgaW5zbl9ncm91cF9iYXJyaWVyKTogU2V0IGl0LgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3Jlb3JnKTogV2hlbiBsb29raW5nIGZvciB0cmFpbGluZyBjYWxsCglza2lwIG92ZXIgImVtcHR5IiBpbnNucy4KCjIwMDQtMDctMDMgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLWlubGluZS5jIChpbml0aWFsaXplX2lubGluZWRfcGFyYW1ldGVycyk6IFBhc3MgcHJvcGVyIGZ1bmN0aW9uCgljb250ZXh0IHRvIGdpbXBsaWZ5X2JvZHkuCgkod2Fsa190cmVlKTogRG9uJ3Qgd2FsayBpbnRvIHR5cGVzIHR3aWNlLgoJKHdhbGtfdHJlZSwgY2FzZSBQT0lOVEVSX1RZUEUpOiBEZWFsIHdpdGggbXV0dWFsbHkgcmVjdXJzaXZlIHBvaW50ZXJzLgoKCSogdHJlZS1zcmEuYyAoZ2VuZXJhdGVfZWxlbWVudF9pbml0KTogUmVtb3ZlIGFueSB1c2VsZXNzIGNvbnZlcnNpb25zLgoKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfY29udmVyc2lvbik6IFJlbW92ZSBzdHJpcHBpbmcgdXNlbGVzcwoJY29udmVyc2lvbnMgZnJvbSBoZXJlLgoJKGdpbXBsaWZ5X2V4cHIpOiBQdXQgaXQgaGVyZSwgaW4gcGxhY2Ugb2YgY2FsbCB0byBTVFJJUF9NQUlOX1RZUEVfTk9QUy4KCShnaW1wbGlmeV9tb2RpZnlfZXhwcl90b19tZW1jcHksIGdpbXBsaWZ5X3ZhcmlhYmxlX3NpemVkX2NvbXBhcmUpOgoJVW5zaGFyZSBiZWZvcmUgc3Vic3RpdHV0aW5nIFBMQUNFSE9MREVSX0VYUFIuCgkoZ2ltcGxpZnlfbW9kaWZ5X2V4cHJfdG9fbWVtc2V0KTogTGlrZXdpc2UuCglQYXNzIGFkZHJlc3Mgb2YgVE8gdG8gbWVtc2V0LCBub3QgVE8gaXRzZWxmLgoJKGdpbXBsaWZ5X2luaXRfY29uc3RydWN0b3IpOiBNYWtlIGNvcHkgb2YgT0JKRUNUIHNvIHdlIGhhdmUgaXQgZWFjaAoJdGltZSB3ZSBtYWtlIGFuIGV4cHJlc3Npb24gKHRvIG1hdGNoIGEgUExBQ0VIT0xERVJfRVhQUikuCgoJKiB0cmVlLXNzYS5jICh0cmVlX3NzYV91c2VsZXNzX3R5cGVfY29udmVyc2lvbik6IEFsc28gbG9vayBhdAoJVklFV19DT05WRVJUX0VYUFIgYW5kIE5PTl9MVkFMVUVfRVhQUi4KCSogdHJlZS1zc2EtY2NwLmMgKGZvbGRfc3RtdCk6IENhbGwganVzdCBTVFJJUF9VU0VMRVNTX1RZUEVfQ09OVkVSU0lPTi4KCSogdHJlZS1zc2EtZG9tLmMgKGxvY2FsX2ZvbGQpOiBMaWtld2lzZS4KCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19UWVBFX01BWF9TSVpFKTogTmV3IGxhbmdob29rLgoJKiBsYW5naG9va3MuaCAoc3RyY3QgbGFuZ19ob29rcyk6IE5ldyBmaWVsZCB0eXBlX21heF9zaXplLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fdGVtcCk6IENhbGwgaXQuCgoyMDA0LTA3LTAzICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBjb25maWcvc2gvc2guYyAoc2hfdXNlX2RmYV9pbnRlcmZhY2UpOiBBZGQgVEFSR0VUX1NIMS4KCSogY29uZmlnL3NoL3NoLm1kOiBDb252ZXJ0IHRoZSBTSDEgcGlwZWxpbmUgZGVzY3JpcHRpb24gdG8KCWEgREZBIG1vZGVsLgoKMjAwNC0wNy0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChzdHJ1Y3QgY19iaW5kaW5nKTogUmVtb3ZlIGNvbnRvdXIgZmllbGQ7IGFkZAoJZGVwdGgsIGludmlzaWJsZSwgbmVzdGVkIGZpZWxkcy4KCShCX0lOX1NDT1BFLCBCX0lOX0NVUlJFTlRfU0NPUEUsIEJfSU5fRklMRV9TQ09QRSkKCShCX0lOX0VYVEVSTkFMX1NDT1BFKTogTmV3IGNvbnZlbmllbmNlIG1hY3Jvcy4KCShiaW5kKTogQWRkIGludmlzaWJsZSBhbmQgbmVzdGVkIGFyZ3VtZW50cy4gSW5pdGlhbGl6ZQoJbmV3IGZpZWxkcyBvZiBzdHJ1Y3QgY19iaW5kaW5nOyBhZGp1c3QgbG9vcCBzY2FubmluZyBmb3IKCWluc2VydGlvbiBwb2ludC4KCShmcmVlX2JpbmRpbmdfYW5kX2FkdmFuY2UpOiBDbGVhciBzdHJ1Y3R1cmUgd2l0aCBtZW1zZXQuCgkocG9wX3Njb3BlKTogQWRqdXN0IHRvIG1hdGNoLiAgU2V0IERFQ0xfQ09OVEVYVCBvbiBldmVyeXRoaW5nCglpbiBmaWxlIHNjb3BlLCBldmVuIGlmIGl0J3MgaW4gZXh0ZXJuYWwgc2NvcGUgdG9vLgoJKHB1c2hkZWNsKTogQWRqdXN0IHRvIG1hdGNoLiAgQ3JlYXRlIGludmlzaWJsZSBmaWxlLXNjb3BlCglkZWNsYXJhdGlvbnMgZm9yIGJsb2NrLXNjb3BlIGZvcndhcmQgZGVjbGFyYXRpb25zIG9mIHN0YXRpYyBmdW5jdGlvbnMuCgkocHVzaHRhZywgd2Fybl9pZl9zaGFkb3dpbmcsIHB1c2hkZWNsX3RvcF9sZXZlbCwgaW1wbGljaXRseV9kZWNsYXJlKQoJKHVuZGVjbGFyZWRfdmFyaWFibGUsIGxvb2t1cF9sYWJlbCwgZGVjbGFyZV9sYWJlbCwgZGVmaW5lX2xhYmVsKQoJKGxvb2t1cF90YWcsIGxvb2t1cF9uYW1lLCBsb29rdXBfbmFtZV9pbl9zY29wZSwgYnVpbHRpbl9mdW5jdGlvbikKCShjX21ha2VfZm5hbWVfZGVjbCwgc3RvcmVfcGFybV9kZWNsc19uZXdzdHlsZSwgaWRlbnRpZmllcl9nbG9iYWxfdmFsdWUpCgkoc3RvcmVfcGFybV9kZWNsc19vbGRzdHlsZSk6IEFkanVzdCB0byBtYXRjaC4KCShkaWFnbm9zZV9taXNtYXRjaGVkX2RlY2xzKTogQ29ycmVjdCBoYW5kbGluZyBvZiBsaW5rYWdlIGNsYXNoZXMuCgkobWVyZ2VfZGVjbHMpOiBObyBuZWVkIHRvIGNvcHkgQ19ERUNMX0lOX0VYVEVSTkFMX1NDT1BFLgoKCSogYy10cmVlLmggKENfREVDTF9JTl9FWFRFUk5BTF9TQ09QRSk6IERlbGV0ZS4KCShDX0RFQ0xfREVDTEFSRURfQlVJTFRJTiwgQ19ERUNMX1JFR0lTVEVSKTogU2xpZGUgZG93biBvbmUuCgoyMDA0LTA3LTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgZnJvYiBjdXJyZW50X2Z1bmN0aW9uX2RlY2wKCWFyb3VuZCB2YXJpYWJsZV9zaXplLgoJKHNldF9kZWNsX25vbmxvY2FsKTogUmVtb3ZlLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBBZGQgc3RtdHMgZm9yIHBlbmRpbmcgc2l6ZXMuCgkqIGNhbGxzLmMgKGNhbGxzX2Z1bmN0aW9uLCBjYWxsc19mdW5jdGlvbl8xKTogUmVtb3ZlLgoJKHByZWNvbXB1dGVfYXJndW1lbnRzKTogRG9uJ3QgY2FsbCBpdC4KCSogY2ZnZXhwYW5kLmMgKHNldF9zYXZlX2V4cHJfY29udGV4dCk6IFJlbW92ZS4KCSh0cmVlX2V4cGFuZF9jZmcpOiBEb24ndCBjYWxsIGl0LgoJKiBkd2FyZjJvdXQuYyAoYWRkX2JvdW5kX2luZm8pOiBEb24ndCBoYW5kbGUgU0FWRV9FWFBSLgoJKGR3YXJmMm91dF9maW5pc2gpOiBMaWtld2lzZS4KCSogZXhwci5jIChlbWl0X2Jsb2NrX21vdmUpOiBBZGp1c3QgYWRkcmVzc2VzIHRvIEJMS21vZGUuCgkoc3RvcmVfY29uc3RydWN0b3IpOiBEb24ndCBwcmUtZXZhbHVhdGUgU0FWRV9FWFBSLgoJKHNhZmVfZnJvbV9wKTogRG9uJ3QgcXVldWUgU0FWRV9FWFBScy4KCShleHBhbmRfZXhwcl9yZWFsXzEgPGNhc2UgU0FWRV9FWFBSPik6IFJld3JpdGUgdG8gZXhwZWN0LAoJb3IgYnVpbGQgcGxhaW4gVkFSX0RFQ0xzLgoJKiBmb2xkLWNvbnN0LmMgKHR3b3ZhbF9jb21wYXJpc29uX3ApOiBEb24ndCBsb29rIGF0IFNBVkVfRVhQUl9SVEwuCgkoZm9sZCk6IExpa2V3aXNlLgoJKGZvbGRfY2hlY2tzdW1fdHJlZSk6IERvbid0IHNwZWNpYWwtY2FzZSBTQVZFX0VYUFIuCgkqIGZ1bmN0aW9uLmMgKGZyZWVfYWZ0ZXJfY29tcGlsYXRpb24pOiBEb24ndCBjbGVhciB4X3NhdmVfZXhwcl9yZWdzLgoJKHB1dF92YXJfaW50b19zdGFjayk6IERvbid0IGhhbmRsZSBTQVZFX0VYUFIuCgkoZ2VuX21lbV9hZGRyZXNzb2YpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIHhfc2F2ZV9leHByX3JlZ3MuCgkoc2F2ZV9leHByX3JlZ3MpOiBSZW1vdmUuCgkqIGdlbmd0eXBlLmMgKGFkanVzdF9maWVsZF90cmVlX2V4cCk6IERvbid0IHNwZWNpYWwtY2FzZSBTQVZFX0VYUFIuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IERvbid0IGR1bXAgU0FWRV9FWFBSX05PUExBQ0VIT0xERVIuCgkqIHN0b3ItbGF5b3V0LmMgKHZhcmlhYmxlX3NpemUpOiBEb24ndCBzZXQgaXQuCgkoZm9yY2VfdHlwZV9zYXZlX2V4cHJzLCBmb3JjZV90eXBlX3NhdmVfZXhwcnNfMSk6IFJlbW92ZS4KCSogdHJlZS1pbmxpbmUuYyAocmVtYXBfc2F2ZV9leHByKTogUmVtb3ZlIGZuIGFyZ3VtZW50LiAgVXBkYXRlCglhbGwgY2FsbGVycy4gIERvbid0IHNldCBTQVZFX0VYUFJfQ09OVEVYVC4KCSogdHJlZS1pbmxpbmUuaCAocmVtYXBfc2F2ZV9leHByKTogVXBkYXRlIGRlY2wuCgkqIHRyZWUuYyAoc2F2ZV9leHByKTogVXBkYXRlIGJ1aWxkIHNpemUuCgkoZmlyc3RfcnRsX29wKTogRG9uJ3QgaGFuZGxlIFNBVkVfRVhQUi4KCSh1bnNhdmVfZXhwcl8xLCBjb250YWluc19wbGFjZWhvbGRlcl9wKTogTGlrZXdpc2UuCgkoZGVjbF9mdW5jdGlvbl9jb250ZXh0KTogTGlrZXdpc2UuCgkqIHRyZWUuZGVmIChTQVZFX0VYUFIpOiBSZW1vdmUgYXJncyAxIGFuZCAyLgoJKiB0cmVlLmggKFNBVkVfRVhQUl9DT05URVhULCBTQVZFX0VYUFJfUlRMKTogUmVtb3ZlLgoJKFNBVkVfRVhQUl9OT1BMQUNFSE9MREVSLCBTQVZFX0VYUFJfUEVSU0lTVEVOVF9QKTogUmVtb3ZlLgoKMjAwNC0wNy0wMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvYnVncmVwb3J0LnRleGksIGRvYy9jb25maWd0ZXJtcy50ZXhpLCBkb2MvY29udHJpYi50ZXhpLAoJZG9jL2NvbnRyaWJ1dGUudGV4aSwgZG9jL2NwcC50ZXhpLCBkb2MvY3BwaW50ZXJuYWxzLnRleGksCglkb2MvZXh0ZW5kLnRleGksIGRvYy9pbnN0YWxsLnRleGksIGRvYy9pbnZva2UudGV4aSwgZG9jL21kLnRleGksCglkb2MvcG9ydGFiaWxpdHkudGV4aSwgZG9jL3RyZWUtc3NhLnRleGksIGRvYy90cm91YmxlLnRleGk6IEF2b2lkCglzb21lIGZpcnN0LXBlcnNvbiByZWZlcmVuY2VzIGFuZCBwYXRyb25pemluZyBjb21tZW50cy4gIEJhc2VkIG9uCglwcmludGVkIG1hbnVhbC4KCSogZG9jL2ludm9rZS50ZXhpOiBEb24ndCByZWZlcmVuY2UgZm9ydHJhbkBnbnUub3JnLgoJKiBkb2MvdHJvdWJsZS50ZXhpIChXYXJuaW5nIHdoZW4gYSBub24tdm9pZCBmdW5jdGlvbiB2YWx1ZSBpcwoJaWdub3JlZCk6IFJld3JpdGUuICBGcm9tIFJ1c3MgQWxsYmVyeSBhbmQgQ2hyaXMgRGV2ZXJzLgoKMjAwNC0wNy0wMiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmcpCgoJKiB0cmVlLXNzYS1wcmUuYyAoYml0bWFwX3NldF90KTogTmV3LgoJKGJiX3ZhbHVlX3NldHMpOiBhdmFpbF9vdXQgaXMgbm93IGEgYml0bWFwX3NldF90LgoJKGJpdG1hcF9maW5kX2xlYWRlcik6IE5ldyBmdW5jdGlvbi4KCShiaXRtYXBfdmFsdWVfaW5zZXJ0X2ludG9fc2V0KTogRGl0dG8uCgkoYml0bWFwX3NldF9jb3B5KTogRGl0dG8uCgkoYml0bWFwX3ZhbHVlX3JlcGxhY2VfaW5fc2V0KTogRGl0dG8uCgkoYml0bWFwX3NldF9jb250YWluc192YWx1ZSk6IERpdHRvLgoJKGJpdG1hcF9zZXRfbmV3KTogRGl0dG8uCgkoYml0bWFwX3NldF9wb29sKTogTmV3IHBvb2wuCgkoZmluZF9vcl9nZW5lcmF0ZV9leHByZXNzaW9uKTogVXNlIGJpdG1hcF8gZnVuY3Rpb25zIG9uIEFWQUlMIHNldHMuCgkoaW5zZXJ0X2F1eCk6IERpdHRvLgoJKGFkZF90b19zZXRzKTogRGl0dG8uCgkoY29tcHV0ZV9hdmFpbCk6IERpdHRvCgkoZWxpbWluYXRlKTogRGl0dG8uCgkoaW5pdF9wcmUpOiBEaXR0by4KCShmaW5pX3ByZSk6IERpdHRvLgoJKGV4ZWN1dGVfcHJlKTogRGl0dG8uCgoyMDA0LTA3LTAyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHN0cnVjdCBwcm9jZXNzb3JfY29zdHMpOiBOZXcgc3RydWN0dXJlCgl1c2VkIHRvIGhvbGQgaW5zdHJ1Y3Rpb24gbGF0ZW5jaWVzL3NpemVzIGZvciBwcm9jZXNzb3IgdHlwZXMuCgkocnM2MDAwX2Nvc3QpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlIHBvaW50aW5nIHRvIGN1cnJlbnQgQ1BVJ3MgY29zdHMuCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFsaXplIHJzNjAwMF9jb3N0IHRvIHBvaW50IHRvIHRoZQoJYXBwcm9wcmlhdGUgY29zdCB0YWJsZSBiYXNlZCB1cG9uIHJzNjAwMF9jcHUgYW5kIG9wdGltaXplX3NpemUuCgkocnM2MDAwX3J0eF9jb3N0cyk6IFVzZSByczYwMDBfY29zdCB0byBhdm9pZCBoYXJkY29kaW5nIHByb2Nlc3NvcgoJdGltaW5ncyBpbmxpbmUuCgoyMDA0LTA3LTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwbWVkLmMgKG1ha2VfdHJlZSk6IERvbid0IHVzZSBTRVRfREVDTF9SVEwuCgoyMDA0LTA3LTAyICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiB0cmVlLWZsb3cuaCAoYmJfYW5uX2QpOiBSZW1vdmUgZXBoaV9ub2RlcyBmaWVsZC4KCjIwMDQtMDctMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgZ3Bfc2F2ZV9ydHguCgkoYWxwaGFfZ3Bfc2F2ZV9ydHgpOiBVc2UgYXNzaWduX3N0YWNrX2xvY2FsIGluc3RlYWQgb2YKCWdlbl9tZW1fYWRkcmVzc29mLgoKMjAwNC0wNy0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChzdHJ1Y3QgYWxwaGFfcnR4X2Nvc3RfZGF0YSk6IEFkZCBpbnRfZGl2LgoJKGFscGhhX3J0eF9jb3N0X2RhdGEpOiBVcGRhdGUgdG8gbWF0Y2guCgkoYWxwaGFfcnR4X2Nvc3Rfc2l6ZSk6IE5ldy4KCShhbHBoYV9ydHhfY29zdHMpOiBIb25vciBvcHRpbWl6ZV9zaXplLgoKMjAwNC0wNy0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdpbXBsZS1sb3cuYyAobG93ZXJfZnVuY3Rpb25fYm9keSk6IERvbid0IHJlc2V0X2Jsb2NrX2NoYW5nZXMgaGVyZS4KCSogY2ZnZXhwYW5kLmMgKHRyZWVfZXhwYW5kX2NmZyk6IERvIGl0IGhlcmUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9vdXRwdXRfbWlfdGh1bmtfb3NmKTogQW5kIGhlcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9vdXRwdXRfbWlfdGh1bmspOiBBbmQgaGVyZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9taV90aHVuayk6IEFuZCBoZXJlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3V0cHV0X21pX3RodW5rKTogQW5kIGhlcmUuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9vdXRwdXRfbWlfdGh1bmspOiBBbmQgaGVyZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX291dHB1dF9taV90aHVuayk6IEFuZCBoZXJlLgoKMjAwNC0wNy0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuZGVmIChSVExfRVhQUik6IFJlbW92ZS4KCSogYy10eXBlY2suYyAobHZhbHVlX3ApOiBEb24ndCBoYW5kbGUgaXQuCgkqIGV4cHIuYyAoc2FmZV9mcm9tX3ApOiBMaWtld2lzZS4KCShleHBhbmRfZXhwcl9yZWFsXzEpOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChub25fbHZhbHVlLCBvcGVyYW5kX2VxdWFsX3AsIGZvbGQpOiBMaWtld2lzZS4KCShmb2xkX2NoZWNrc3VtX3RyZWUsIHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogTGlrZXdpc2UuCgkqIGdlbmd0eXBlLmMgKGFkanVzdF9maWVsZF90cmVlX2V4cCk6IExpa2V3aXNlLgoJKiBzdG10LmMgKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogTGlrZXdpc2UuCgkqIHRyZWUtZ2ltcGxlLmMgKHJlY2FsY3VsYXRlX3NpZGVfZWZmZWN0cyk6IExpa2V3aXNlLgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKG1ha2Vfbm9kZV9zdGF0LCBmaXJzdF9ydGxfb3AsIHVuc2F2ZV9leHByXzEpOiBMaWtld2lzZS4KCSh1bnNhZmVfZm9yX3JlZXZhbCwgc3RhYmlsaXplX3JlZmVyZW5jZSwgYnVpbGQxX3N0YXQpOiBMaWtld2lzZS4KCSogdHJlZS5oIChSVExfRVhQUl9TRVFVRU5DRSwgUlRMX0VYUFJfUlRMLCBSVExfRVhQUl9BTFRfUlRMKTogUmVtb3ZlLgoKCSogc3RtdC5jIChzdHJ1Y3Qgc3RtdF9zdGF0dXMpOiBSZW1vdmUgeF9sYXN0X2V4cHJfdHlwZSwKCXhfbGFzdF9leHByX3ZhbHVlLCB4X2xhc3RfZXhwcl9hbHRfcnRsLCB4X2V4cHJfc3RtdHNfZm9yX3ZhbHVlLgoJKGxhc3RfZXhwcl90eXBlLCBsYXN0X2V4cHJfdmFsdWUsIGxhc3RfZXhwcl9hbHRfcnRsKTogUmVtb3ZlLgoJKGV4cGFuZF9leHByX3N0bXQpOiBNZXJnZSB3aXRoIGV4cGFuZF9leHByX3N0bXRfdmFsdWUuICBSZW1vdmUKCWFsbCB0aGUgYml0cyB0aGF0IHRyYWNrZWQgbGFzdF9leHByLgoJKGV4cGFuZF9lbmRfYmluZGluZ3MpOiBEb24ndCB0cmFjayBsYXN0X2V4cHIuCgkoZXhwYW5kX3N0YXJ0X3N0bXRfZXhwciwgZXhwYW5kX2VuZF9zdG10X2V4cHIpOiBSZW1vdmUuCgkoY2xlYXJfbGFzdF9leHByKTogUmVtb3ZlLgoJKGV4cGFuZF9hc20pOiBEb24ndCBjYWxsIGl0LgoJKGV4cGFuZF9hc21fb3BlcmFuZHMsIGV4cGFuZF9lbmRfY29uZCk6IExpa2V3aXNlLgoJKGV4cGFuZF9uYWtlZF9yZXR1cm4sIGV4cGFuZF9udWxsX3JldHVybl8xKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGNfYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKiBjZmdleHBhbmQuYyAoZXhwYW5kX2Jsb2NrKTogVXNlIGV4cGFuZF9leHByX3N0bXQuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogTGlrZXdpc2UuCgkqIHRyZWUuaDogVXBkYXRlIHByb3RvdHlwZXMuCgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3Qgc2VxdWVuY2Vfc3RhY2spOiBSZW1vdmUgc2VxdWVuY2VfcnRsX2V4cHIuCgkoc3RydWN0IGVtaXRfc3RhdHVzKTogUmVtb3ZlIHNlcXVlbmNlX3J0bF9leHByLgoJKHN0cnVjdCBmdW5jdGlvbik6IFJlbW92ZSB4X3J0bF9leHByX2NoYWluLgoJKHNlcV9ydGxfZXhwciwgcnRsX2V4cHJfY2hhaW4pOiBSZW1vdmUuCgkqIGZ1bmN0aW9uLmMgKHN0cnVjdCB0ZW1wX3Nsb3QpOiBSZW1vdmUgcnRsX2V4cHIuCgkoYXNzaWduX3N0YWNrX3RlbXBfZm9yX3R5cGUpOiBEb24ndCBzZXQgaXQuCgkoZnJlZV90ZW1wX3Nsb3RzLCBwb3BfdGVtcF9zbG90cyk6IERvbid0IGNoZWNrIGl0LgoJKGZyZWVfYWZ0ZXJfY29tcGlsYXRpb24pOiBEb24ndCBjbGVhciB4X3J0bF9leHByX2NoYWluLgoJKGZpeHVwX3Zhcl9yZWZzKTogRG9uJ3Qgc2VhcmNoIGl0LgoJKHByZXNlcnZlX3J0bF9leHByX3Jlc3VsdCwgZnJlZV90ZW1wc19mb3JfcnRsX2V4cHIpOiBSZW1vdmUuCgkqIGVtaXQtcnRsLmMgKHN0YXJ0X3NlcXVlbmNlKTogRG9uJ3QgdXNlIHNlcXVlbmNlX3J0bF9leHByCglvciBzZXFfcnRsX2V4cHIuCgkocHVzaF90b3Btb3N0X3NlcXVlbmNlKTogTGlrZXdpc2UuCgkoZW5kX3NlcXVlbmNlLCBpbml0X2VtaXQpOiBMaWtld2lzZS4KCShzdGFydF9zZXF1ZW5jZV9mb3JfcnRsX2V4cHIpOiBSZW1vdmUuCgkqIGV4cG1lZC5jIChtYWtlX3RyZWUpOiBCdWlsZCBhIFZBUl9ERUNMIGluc3RlYWQgb2YgYW4gUlRMX0VYUFIuCgkqIHJ0bC5oIChwcmVzZXJ2ZV9ydGxfZXhwcl9yZXN1bHQpOiBSZW1vdmUuCgoyMDA0LTA3LTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogaWZjdnQuYywgbW9kdWxvLXNjaGVkLmMsIHRyZWUtYWxpYXMtY29tbW9uLmMsIHRyZWUtc3JhLmMsCgl0cmVlLXNzYS1jb3B5LmMsIHRyZWUtc3NhLWRvbS5jLCB0cmVlLXNzYS1wcmUuYzogRml4IGNvbW1lbnQKCXR5cG9zLgoKMjAwNC0wNy0wMiAgQWFyb24gVy4gTGFGcmFtYm9pc2UgPGFhcm9ucmFvbGV0ZTM2QGFhcm9ud2wuY29tPgoKCSogZ2NjLmMgKFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSk6IERlZmluZS4KCShTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIpOiBEZWZpbmUuCgkoc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xKTogSW5pdGlhbGl6ZSB0bwoJU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xLgoJKHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMik6IEluaXRpYWxpemUgdG8KCVNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMi4KCSogY29uZmlnL2kzODYvbWluZ3czMi5oIChNRF9TVEFSVEZJTEVfUFJFRklYKTogUmVtb3ZlLgoJKFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSk6IERlZmluZS4KCShTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIpOiBEZWZpbmUuCgkqIGRvYy90bS50ZXhpIChTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEpOiBEb2N1bWVudC4KCShTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIpOiBEb2N1bWVudC4KCjIwMDQtMDctMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNyYS5jIChzcmFfd2Fsa19leHByKTogRG9uJ3QgbWF5YmVfbG9va3VwX2VsZW1lbnRfZm9yX2V4cHIKCWluIG9yZGVyIHRvIGRpc2FibGUgc2NhbGFyaXphdGlvbi4gIEluc3RlYWQgc2V0IGEgZmxhZyBhbmQgd2FpdAoJZm9yIGEgY2FuZGlkYXRlIGRlY2wuCgoyMDA0LTA3LTAxICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9jcHBpbnRlcm5hbHMudGV4aSwgZG9jL2luc3RhbGwudGV4aSwgZG9jL2ludm9rZS50ZXhpLAoJZG9jL21kLnRleGksIGRvYy9zb3VyY2VidWlsZC50ZXhpLCBkb2MvdG0udGV4aSwgZG9jL3Ryb3VibGUudGV4aToKCVVzZSB0ZXJtaW5vbG9neSAidGVzdHN1aXRlIiBhbmQgImVudW1lcmF0ZWQiLgoKMjAwNC0wNy0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChyZWdfc2F2ZSk6IFVzZSBJTlZBTElEX1JFR05VTS4KCShkd2FyZjJvdXRfcmVnX3NhdmUsIGR3YXJmMm91dF9yZXR1cm5fc2F2ZSk6IExpa2V3aXNlLgoJKGluaXRpYWxfcmV0dXJuX3NhdmUpOiBMaWtld2lzZS4KCShmbHVzaF9xdWV1ZWRfcmVnX3NhdmVzKTogUmVtYXAgcmVnaXN0ZXIgbnVtYmVycy4KCShkd2FyZjJvdXRfcmV0dXJuX3JlZyk6IExpa2V3aXNlLgoKMjAwNC0wNy0wMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X29uZV9zaXplcG9zKTogRG9uJ3QgZG8gYW55dGhpbmcgaWYgYW55IFZBUl9ERUNMLgoKCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUsIGNhc2UgQVJSQVlfUkVGKTogVXNlCglhY2Nlc3MgZnVuY3Rpb25zIGZvciBsb3dlciBib3VuZCBhbmQgZWxlbWVudCBzaXplIGFuZCBvbmx5IG91dHB1dAoJaWYgbG93ZXIgYm91bmQgbm9uemVybyBvciBlbGVtZW50IHNpemUgbm90IHNhbWUgYXMgdGhhdCBvZiB0eXBlLgoJKGR1bXBfZ2VuZXJpY19ub2RlLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBVc2UgYWNjZXNzIGZ1bmMuIGZvciBvZmZzZXQuCgoyMDA0LTA3LTAxICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19wb3N0Zml4X2V4cHJlc3Npb24pOiBGaXggcGFzdG8uCgoyMDA0LTA3LTAxICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGZpbmFsLmMgKGZpbmFsKTogRml4IHR5cG8gcmVwb3J0ZWQgYnkgQWFyb24gVy4gTGFGcmFtYm9pc2UuCgoyMDA0LTA3LTAxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2Fzc2lnbm1lbnQpOiBPcHRpbWl6ZSBiaXRmbGQgKz0gY3N0IGZvciAxIGJpdAoJYml0ZmllbGRzIGFzIHdlbGwuICBTVFJJUF9OT1BTIGZyb20gc3JjIG9wZXJhbmQgYW5kIFBMVVNfRVhQUidzCglmaXJzdCBvcGVyYW5kLiAgRG9uJ3Qgb3B0aW1pemUgaWYgdGhlIGJpdGZpZWxkIGlzIHZvbGF0aWxlLgoKMjAwNC0wNy0wMSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfcG9zdGZpeF9leHByZXNzaW9uKTogSGFuZGxlCglmbG9hdGluZy1wb2ludCBjb21wYXJpc29uIG9wZXJhdG9ycy4KCShwcF9jX2V4cHJlc3Npb24pOiBQYXNzIGZsb2F0aW5nLXBvaW50IGNvbXBhcmlzb24KCW9wZXJhdG9ycyB0byBwcF9jX3Bvc3RmaXhfZXhwcmVzc2lvbi4KCjIwMDQtMDctMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pIDxQTFVTLCBNSU5VUz46IFVzZQoJcnR4X2Nvc3QgaW5zdGVhZCBvZiAiaGFkX211bHQiIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB0cmFuc2Zvcm1lZAoJZXhwcmVzc2lvbiBpcyBjaGVhcGVyIHRoYW4gdGhlIG9yaWdpbmFsLgoKMjAwNC0wNy0wMSAgSmVycnkgUXVpbm4gIDxqbHF1aW5uQG9wdG9ubGluZS5uZXQ+CgoJKiBhbGlhcy5jIChnZXRfYWxpYXNfc2V0LCBjYW5vbl9ydHgsIGdldF9hZGRyLAoJbm9ub3ZlcmxhcHBpbmdfbWVtcmVmc19wLCBub25sb2NhbF9yZWZlcmVuY2VkX3BfMSwgbWVtb3J5X21vZGlmaWVkXzEpOgoJVXNlIE1FTV9QLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9wcmVmZXRjaCwgZXhwYW5kX2J1aWx0aW5fcHJvZmlsZV9mdW5jLAoJZXhwYW5kX2J1aWx0aW4pOiBMaWtld2lzZS4KCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwsIGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEsIHN0b3JlX29uZV9hcmcpOgoJTGlrZXdpc2UuCgkqIGNvbWJpbmUuYyAoY2FuX2NvbWJpbmVfcCwgY29tYmluYWJsZV9pM3BhdCwgdHJ5X2NvbWJpbmUsCglmaW5kX3NwbGl0X3BvaW50LCBjb21iaW5lX3NpbXBsaWZ5X3J0eCwgc2ltcGxpZnlfc2V0LCBtYWtlX2V4dHJhY3Rpb24sCglydHhfZXF1YWxfZm9yX2ZpZWxkX2Fzc2lnbm1lbnRfcCwgZ2VuX2xvd3BhcnRfZm9yX2NvbWJpbmUsCglyZWNvcmRfZGVhZF9hbmRfc2V0X3JlZ3NfMSwgZ2V0X2xhc3RfdmFsdWVfdmFsaWRhdGUsCgltYXJrX3VzZWRfcmVnc19jb21iaW5lLCBtb3ZlX2RlYXRocywgdW5tZW50aW9uZWRfcmVnX3BfMSk6IExpa2V3aXNlLgoJKiBjc2UuYyAoY2hlY2tfZGVwZW5kZW5jZSwgY2Fub25faGFzaCwgZXF1aXZfY29uc3RhbnQsCglnZW5fbG93cGFydF9pZl9wb3NzaWJsZSwgY3NlX2luc24sIGludmFsaWRhdGVfZnJvbV9jbG9iYmVycywKCWNzZV9hcm91bmRfbG9vcCwgY3NlX2NoZWNrX2xvb3Bfc3RhcnQsIGNzZV9zZXRfYXJvdW5kX2xvb3AsCgljb3VudF9yZWdfdXNhZ2UpOiBMaWtld2lzZS4KCSogY3NlbGliLmMgKHJ0eF9lcXVhbF9mb3JfY3NlbGliX3AsIGFkZF9tZW1fZm9yX2FkZHIsIGNzZWxpYl9sb29rdXAsCgljc2VsaWJfaW52YWxpZGF0ZV9tZW0sIGNzZWxpYl9pbnZhbGlkYXRlX3J0eCwgY3NlbGliX3JlY29yZF9zZXQsCgljc2VsaWJfcmVjb3JkX3NldHMpOiBMaWtld2lzZS4KCSogZGJ4b3V0LmMgKFBBUk1fUEFTU0VEX0lOX01FTU9SWSwgZGJ4b3V0X3N5bWJvbCwKCWRieG91dF9zeW1ib2xfbG9jYXRpb24sIGRieG91dF9wYXJtcywgZGJ4b3V0X3JlZ19wYXJtcyk6IExpa2V3aXNlLgoJKiBkZGcuYyAobWFya19tZW1fdXNlLCBtYXJrX21lbV9zdG9yZSwgcnR4X21lbV9hY2Nlc3NfcCk6IExpa2V3aXNlLgoJKiBkZi5jIChkZl91c2VzX3JlY29yZCk6IExpa2V3aXNlLgoJKiBkb2p1bXAgKGRvX2p1bXApOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKHN0YWNrX2FkanVzdF9vZmZzZXQsIG1lbV9sb2NfZGVzY3JpcHRvciwKCWxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSwgcnRsX2Zvcl9kZWNsX2xvY2F0aW9uLCBhZGRfYm91bmRfaW5mbywKCWRlY2xfc3RhcnRfbGFiZWwpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoZ2VuX2NvbXBsZXhfY29uc3RhbnRfcGFydCwgZ2VuX2hpZ2hwYXJ0LAoJb3BlcmFuZF9zdWJ3b3JkLCBjaGFuZ2VfYWRkcmVzc18xLCBtYWtlX3NhZmVfZnJvbSk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAoYnJlYWtfb3V0X21lbW9yeV9yZWZzLCBjb3B5X2FsbF9yZWdzLCB2YWxpZGl6ZV9tZW0sCglzdGFiaWxpemUsIGZvcmNlX25vdF9tZW0pOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCwgc3RvcmVfc3BsaXRfYml0X2ZpZWxkLCBleHRyYWN0X2JpdF9maWVsZCwKCWV4cGFuZF9tdWx0X2NvbnN0LCBleHBhbmRfZGl2bW9kLCBlbWl0X3N0b3JlX2ZsYWcpOiBMaWtld2lzZS4KCSogZXhwci5jIChjb252ZXJ0X21vdmUsIGNvbnZlcnRfbW9kZXMsIGVtaXRfYmxvY2tfbW92ZSwKCWVtaXRfZ3JvdXBfbG9hZCwgZW1pdF9ncm91cF9zdG9yZSwgY2xlYXJfc3RvcmFnZSwgZW1pdF9tb3ZlX2luc24sCgllbWl0X21vdmVfaW5zbl8xLCBleHBhbmRfYXNzaWdubWVudCwgc3RvcmVfZXhwciwKCXN0b3JlX2NvbnN0cnVjdG9yX2ZpZWxkLCBzdG9yZV9jb25zdHJ1Y3Rvciwgc3RvcmVfZmllbGQsCglmb3JjZV9vcGVyYW5kLCBzYWZlX2Zyb21fcCwgZXhwYW5kX2V4cHJfcmVhbF8xLCBleHBhbmRfaW5jcmVtZW50KToKCUxpa2V3aXNlLgoJKiBmaW5hbC5jIChjbGVhbnVwX3N1YnJlZ19vcGVyYW5kcywgYWx0ZXJfc3VicmVnLAoJZ2V0X21lbV9leHByX2Zyb21fb3ApOiBMaWtld2lzZS4KCSogZmxvdy5jIChub3RpY2Vfc3RhY2tfcG9pbnRlcl9tb2RpZmljYXRpb25fMSwKCWluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8sIGluc25fZGVhZF9wLCBtYXJrX3NldF8xLCBtYXJrX3VzZWRfcmVncyk6CglMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAobWFya190ZW1wX2FkZHJfdGFrZW4sIHByZXNlcnZlX3RlbXBfc2xvdHMsCglwcmVzZXJ2ZV9ydGxfZXhwcl9yZXN1bHQsIHB1dF92YXJfaW50b19zdGFjaywgZml4dXBfdmFyX3JlZnNfMSwKCW9wdGltaXplX2JpdF9maWVsZCwgZmx1c2hfYWRkcmVzc29mLCBwdXJnZV9hZGRyZXNzb2ZfMSwKCWluc3RhbnRpYXRlX2RlY2wsIGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVnc18xLCBhc3NpZ25fcGFybXMsCglzZXRqbXBfcHJvdGVjdCwgc2V0am1wX3Byb3RlY3RfYXJncywgZml4X2xleGljYWxfYWRkciwKCWtlZXBfc3RhY2tfZGVwcmVzc2VkKTogTGlrZXdpc2UuCgkqIGlmY3Z0LmMgKG5vY2VfdHJ5X2Ntb3ZlX2FyaXRoLCBub2NlX3RyeV9hYnMsIG5vY2Vfb3BlcmFuZF9vaywKCW5vY2VfcHJvY2Vzc19pZl9ibG9jaywgZmluZF9tZW1vcnkpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKHN1YnN0X2NvbnN0YW50cywgYWxsb2NhdGVfaW5pdGlhbF92YWx1ZXMpOiBMaWtld2lzZS4KCSogbG9jYWwtYWxsb2MuYyAodmFsaWRhdGVfZXF1aXZfbWVtX2Zyb21fc3RvcmUsIG1lbXJlZl9yZWZlcmVuY2VkX3AsCgl1cGRhdGVfZXF1aXZfcmVncyk6IExpa2V3aXNlLgoJKiBsb29wLmMgKHNjYW5fbG9vcCwgcHJlc2Nhbl9sb29wLCBub3RlX2FkZHJfc3RvcmVkLCBjaGVja19zdG9yZSwKCW1heWJlX2VsaW1pbmF0ZV9iaXZfMSwgZmluZF9tZW1faW5fbm90ZV8xKTogTGlrZXdpc2UuCgkqIG9wdGFicy5jIChleHBhbmRfYWJzLCBlbWl0X3Vub3BfaW5zbik6IExpa2V3aXNlLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfZmluYWwpOiBMaWtld2lzZS4KCSogcG9zdHJlbG9hZC5jIChyZWxvYWRfY3NlX3NpbXBsaWZ5X3NldCwgcmVsb2FkX2NzZV9zaW1wbGlmeV9vcGVyYW5kcywKCW1vdmUyYWRkX25vdGVfc3RvcmUpOiBMaWtld2lzZS4KCSogcmEtYnVpbGQuYyAoZGV0ZWN0X3JlbWF0X3dlYnMpOiBMaWtld2lzZS4KCSogcmEtZGVidWcuYyAoZHVtcF9zdGF0aWNfaW5zbl9jb3N0KTogTGlrZXdpc2UuCgkqIHJhLXJld3JpdGUuYyAoc2xvdHNfb3ZlcmxhcF9wLCBpbnNlcnRfc3RvcmVzKTogTGlrZXdpc2UuCgkqIHJlY29nLmMgKHZhbGlkYXRlX2NoYW5nZSwgYXBwbHlfY2hhbmdlX2dyb3VwLCBjYW5jZWxfY2hhbmdlcywKCXZhbGlkYXRlX3JlcGxhY2VfcnR4XzEsIGdlbmVyYWxfb3BlcmFuZCwgcmVnaXN0ZXJfb3BlcmFuZCwKCW5vbm1lbW9yeV9vcGVyYW5kLCBwdXNoX29wZXJhbmQsIHBvcF9vcGVyYW5kLCBtZW1vcnlfb3BlcmFuZCwKCWluZGlyZWN0X29wZXJhbmQsIGFzbV9vcGVyYW5kX29rLCBvZmZzZXR0YWJsZV9tZW1yZWZfcCwKCW9mZnNldHRhYmxlX25vbnN0cmljdF9tZW1yZWZfcCwgY29uc3RyYWluX29wZXJhbmRzLAoJc3RvcmVfZGF0YV9ieXBhc3NfcCk6IExpa2V3aXNlLgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVnc19wYXQpOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYyAocmVjb3JkX29wZXJhbmRfY29zdHMsIHNjYW5fb25lX2luc24sIHJlY29yZF9yZWdfY2xhc3NlcywKCWNvcHlfY29zdCwgcmVnX3NjYW5fbWFya19yZWZzKTogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYyAob3B0aW1pemVfcmVnX2NvcHlfMywgc3RhY2tfbWVtcmVmX3AsCgljb21iaW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9jayk6IExpa2V3aXNlLgoJKiByZWdyZW5hbWUuYyAoY29weXByb3BfaGFyZHJlZ19mb3J3YXJkXzEpOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKGNhbl9yZWxvYWRfaW50bywgcHVzaF9yZWxvYWQsIGRlY29tcG9zZSwgaW1tdW5lX3AsCglmaW5kX3JlbG9hZHMsIGZpbmRfcmVsb2Fkc19hZGRyZXNzLCBmaW5kX3JlbG9hZHNfYWRkcmVzc18xLAoJcmVnX292ZXJsYXBfbWVudGlvbmVkX2Zvcl9yZWxvYWRfcCwgcmVmZXJzX3RvX21lbV9mb3JfcmVsb2FkX3AsCglmaW5kX2VxdWl2X3JlZyk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKHJlbG9hZCwgZWxpbWluYXRlX3JlZ3MsIGVsaW1pbmF0ZV9yZWdzX2luX2luc24sCglyZWxvYWRfYXNfbmVlZGVkLCBjaG9vc2VfcmVsb2FkX3JlZ3MsIGVtaXRfaW5wdXRfcmVsb2FkX2luc25zLAoJZG9faW5wdXRfcmVsb2FkLCBlbWl0X3JlbG9hZF9pbnNucywgZ2VuX3JlbG9hZCwgZGVsZXRlX291dHB1dF9yZWxvYWQsCglkZWxldGVfYWRkcmVzc19yZWxvYWRzKTogTGlrZXdpc2UuCgkqIHJlc291cmNlLmMgKG1hcmtfcmVmZXJlbmNlZF9yZXNvdXJjZXMpOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChnZXRfanVtcF90YWJsZV9vZmZzZXQsIGNvdW50X29jY3VycmVuY2VzLAoJcmVnX3JlZmVyZW5jZWRfcCwgcmVnX3NldF9wLCBzZXRfb2ZfMSwgc2V0X25vb3BfcCwKCXJlZ19vdmVybGFwX21lbnRpb25lZF9wLCBub3RlX3VzZXMsIHJlcGxhY2VfcmVncywgbm9uemVyb19iaXRzMSwKCW51bV9zaWduX2JpdF9jb3BpZXMxKTogTGlrZXdpc2UuCgkqIHJ0bGhvb2tzLmMgKGdlbl9sb3dwYXJ0X2dlbmVyYWwpOiBMaWtld2lzZS4KCSogc2NoZWQtZGVwcy5jIChzY2hlZF9hbmFseXplXzEsIHNjaGVkX2FuYWx5emVfMik6IExpa2V3aXNlLgoJKiBzZGJvdXQuYyAoUEFSTV9QQVNTRURfSU5fTUVNT1JZLCBzZGJvdXRfc3ltYm9sLAoJc2Rib3V0X3RvcGxldmVsX2RhdGEsIHNkYm91dF9wYXJtcywgc2Rib3V0X3JlZ19wYXJtcywKCXNkYm91dF9nbG9iYWxfZGVjbCk6IExpa2V3aXNlLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfc3VicmVnKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcywgZXhwYW5kX2V4cHJfc3RtdF92YWx1ZSwgZXhwYW5kX2RlY2wsCglleHBhbmRfYW5vbl91bmlvbl9kZWNsLCBleHBhbmRfZW5kX2Nhc2VfdHlwZSk6IExpa2V3aXNlLgoJKiB1bnJvbGwuYyAoY2FsY3VsYXRlX2dpdl9pbmMpOiBMaWtld2lzZS4KCSogdmFyLXRyYWNraW5nLmMgKHN0YWNrX2FkanVzdF9vZmZzZXRfcHJlX3Bvc3QsCgliYl9zdGFja19hZGp1c3Rfb2Zmc2V0LCB0cmFja19leHByX3AsIGNvdW50X3VzZXMsIGFkZF91c2VzLAoJYWRkX3N0b3JlcywgY29tcHV0ZV9iYl9kYXRhZmxvdywgdnRfZ2V0X2RlY2xfYW5kX29mZnNldCwKCXZ0X2FkZF9mdW5jdGlvbl9wYXJhbWV0ZXJzKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jIChtYWtlX3Zhcl92b2xhdGlsZSwgbm90aWNlX2dsb2JhbF9zeW1ib2wsCglhc3NlbWJsZV9leHRlcm5hbCwgZGVjb2RlX2FkZHJfY29uc3QsIG1hcmtfd2VhaywKCWRlZmF1bHRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoKMjAwNC0wNy0wMSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogc3RtdC5jIChjaGVja19zZWVubGFiZWwpOiBSZW1vdmUuCgkocHVzaGNhc2UsIHB1c2hjYXNlX3JhbmdlLCBleHBhbmRfZW5kX2Nhc2VfdHlwZSk6IERvbid0IGNhbGwgaXQuCgoyMDA0LTA3LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIHhfZnVuY3Rpb25fY2FsbF9jb3VudC4KCShmdW5jdGlvbl9jYWxsX2NvdW50KTogUmVtb3ZlLgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvbid0IHNldCBpdC4KCSogaW50ZWdyYXRlLmMgKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKTogTGlrZXdpc2UuCgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBSZW1vdmUgeF9jbGVhbnVwX2xhYmVsLgoJKGNsZWFudXBfbGFiZWwpOiBSZW1vdmUuCgkqIHN0bXQuYyAoZXhwYW5kX3ZhbHVlX3JldHVybik6IERvbid0IHVzZSBpdC4KCSogZnVuY3Rpb24uYyAoZnJlZV9hZnRlcl9jb21waWxhdGlvbik6IERvbid0IHNldCBpdC4KCShleHBhbmRfZnVuY3Rpb25fc3RhcnQpOiBMaWtld2lzZS4gIFJlbW92ZSBwYXJtc19oYXZlX2NsZWFudXBzIGFyZy4KCSogY2ZnZXhwYW5kLmMgKHRyZWVfZXhwYW5kX2NmZyk6IFVwZGF0ZSBjYWxsLgoJKiB0cmVlLmggKGV4cGFuZF9mdW5jdGlvbl9zdGFydCk6IFVwZGF0ZSBkZWNsLgoKMjAwNC0wNy0wMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xMDI3CgkqIGMtbGFuZy5jIChjX2luaXRpYWxpemVfZGlhZ25vc3RpY3MpOiBNb3ZlIGZyb20gaGVyZSAuLi4KCSogYy1vYmpjLWNvbW1vbi5jOiAuLi4gdG8gaGVyZS4gIEluY2x1ZGUgImMtcHJldHR5LXByaW50LmgiLgoJKGNfdHJlZV9wcmludGVyKTogVXNlIHByZXR0eS1wcmludGVyIHRvIGZvcm1hdCAlVC4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19zcGVjaWZpZXJfcXVhbGlmaWVyX2xpc3QpOiBJbmNsdWRlIHNwYWNlCgliZWZvcmUgJyonIGlmIG5vdCBDKysuCgkocHBfY19kaXJlY3RfYWJzdHJhY3RfZGVjbGFyYXRvcik6IERvbid0IHRyeSB0byBwcmludCBhcnJheSB1cHBlcgoJYm91bmQgZm9yIGZsZXhpYmxlIGFycmF5IG1lbWJlcnMuCgkqIGMtdHJlZS5oOiBJbmNsdWRlICJkaWFnbm9zdGljLmgiLgoJKGNfaW5pdGlhbGl6ZV9kaWFnbm9zdGljcyk6IERlY2xhcmUuCgkqIG9iamMvb2JqYy1sYW5nLmMgKExBTkdfSE9PS1NfSU5JVElBTElaRV9ESUFHTk9TVElDUyk6IERlZmluZS4KCSogYy1mb3JtYXQuYyAoZm9ybWF0X3R5cGVfd2FybmluZyk6IE5ldyBmdW5jdGlvbi4gIEltcHJvdmUKCWRpYWdub3N0aWNzIGZvciBpbmNvcnJlY3QgZm9ybWF0IGFyZ3VtZW50IHR5cGVzLgoJKGNoZWNrX2Zvcm1hdF90eXBlcyk6IFVzZSBpdC4gIEFkZCB0d28gcGFyYW1ldGVycy4gIFVzZSB0aGUKCVRZUEVfTUFJTl9WQVJJQU5UIG9mIHdhbnRlZF90eXBlLgoJKGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBQYXNzIG5ldyBwYXJhbWV0ZXJzIHRvCgljaGVja19mb3JtYXRfdHlwZXMuCgkoc3RydWN0IGZvcm1hdF93YW50ZWRfdHlwZSk6IFVwZGF0ZSBjb21tZW50LgoKMjAwNC0wNy0wMSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IEFkZCBuZXcgZmllbGQgdG8gc3RydWN0IGN4eDoKCWltcG9ydF9leHBvcnRfY2xhc3MuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0NYWCk6IEluaXRpYWxpc2UgdGhlIG5ldyBmaWVsZC4KCShUQVJHRVRfQ1hYX0lNUE9SVF9FWFBPUlRfQ0xBU1MpOiBQcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSBmb3IKCXRoZSBuZXcgZmllbGQuCgkqIGRvYy90bS50ZXhpOiBEb2N1bWVudCB0aGUgbmV3IHRhcmdldCBob29rLgoKMjAwNC0wNy0wMSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9jbGFzc2lmeSk6IEZpeCB0eXBvLgoKMjAwNC0wNy0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGlkZW50aWZ5X2Jsb2NrcywgaWRlbnRpZnlfYmxvY2tzXzEpOiBSZW1vdmUuCgkqIGZ1bmN0aW9uLmggKGlkZW50aWZ5X2Jsb2Nrcyk6IFJlbW92ZS4KCSogcnRsLmggKE5PVEVfSU5TTl9CTE9DS19CRUcpOiBVcGRhdGUgY29tbWVudC4KCjIwMDQtMDctMDEgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fY2xhc3NpZnkpOiBOZXcuCgkoZm9sZF9idWlsdGluX3Vub3JkZXJlZF9jbXApOiBGaXggY29tbWVudGFyeS4KCShmb2xkX2J1aWx0aW4pOiBVc2UgaXQuCgkqIGJ1aWx0aW5zLmRlZjogRGVmaW5lIGJ1aWx0aW5zIGZvciBpc25hbiwKCWlzbmFuZiwgaXNuYW5sLCBmaW5pdGUsIGZpbml0ZWYsIGZpbml0ZWwsCglpc2luZiwgaXNpbmZmLCBpc2luZmwuCgoyMDA0LTA3LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIGRvbnRfZW1pdF9ibG9ja19ub3Rlcy4KCSogZ2ltcGxlLWxvdy5jIChsb3dlcl9mdW5jdGlvbl9ib2R5KTogRG9uJ3Qgc2V0IGl0LgoJKiBjZmdleHBhbmQuYyAoZXhwYW5kX2Jsb2NrKTogRG9uJ3QgY2hlY2sgaXQuCgkqIGNmZ2xheW91dC5jIChpbnNuX2xvY2F0b3JzX2luaXRpYWxpemUpOiBMaWtld2lzZS4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsLCBleHBhbmRfZXhwcl9yZWFsXzEpOiBMaWtld2lzZS4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfc3RhcnRfYmluZGluZ3NfYW5kX2Jsb2NrKTogTGlrZXdpc2UuCgkoZXhwYW5kX2VuZF9iaW5kaW5ncyk6IExpa2V3aXNlLgoKMjAwNC0wNy0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNncmFwaC5oIChjZ3JhcGhfYnVpbGRfc3RhdGljX2NkdG9yKTogRGVjbGFyZS4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfYnVpbGRfc3RhdGljX2NkdG9yKTogTmV3LgoJKiBjLW9iamMtY29tbW9uLmMgKGJ1aWxkX2NkdG9yKTogVXNlIGl0LgoJKiBjb3ZlcmFnZS5jIChjcmVhdGVfY292ZXJhZ2UpOiBMaWtld2lzZS4KCSogbGliZnVuY3MuaCAoTFRJX2djb3ZfaW5pdCwgZ2Nvdl9pbml0X2xpYmZ1bmMpOiBSZW1vdmUuCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IERvbid0IHNldCBnY292X2luaXRfbGliZnVuYy4KCjIwMDQtMDYtMzAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwbWVkLmMgKGV4cGFuZF9zaGlmdCk6IENvbnNpZGVyIGV4cGFuZGluZyBMU0hJRlRfRVhQUiBieSBhCgljb25zdGFudCBhcyBhIHNlcXVlbmNlIG9mIGFkZGl0aW9ucyBkZXBlbmRpbmcgdXBvbiB0aGUgcnR4X2Nvc3RzLgoJKHN5bnRoX211bHQpOiBVcGRhdGUgdGhlICJvYnNlcnZlZCIgY29zdCBvZiBhIHNoaWZ0LCBiYXNlZCB1cG9uCgl0aGUgYWJvdmUgb3B0aW1pemF0aW9uLgoKMjAwNC0wNi0yOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgkgICAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCVBSIDE1ODEzCgkqIGR3YXJmMm91dC5jIChyZWdfc2F2ZSk6IE91dHB1dCBEV19DRkFfc2FtZV92YWx1ZSB3aGVuIGEKCXJlZ2lzdGVyIGlzIHNhdmVkIGluIGl0c2VsZi4KCShpbml0aWFsX3JldHVybl9zYXZlKTogSWYgdGhlIHJldHVybiBhZGRyZXNzIGlzIGEgcmVnaXN0ZXIsCglpdCdzIGFscmVhZHkgdGhlcmUsIGRvbid0IGJvdGhlciB0byBtZW50aW9uIGl0IGluIHRoZSBDRkkuCgkoc3RydWN0IHF1ZXVlZF9yZWdfc2F2ZSk6IEFkZCBmaWVsZCBzYXZlZF9yZWcuCgkoc3RydWN0IHJlZ19zYXZlZF9pbl9kYXRhKTogTmV3LgoJKHJlZ3Nfc2F2ZWRfaW5fcmVncyk6IE5ldy4KCShudW1fcmVnc19zYXZlZF9pbl9yZWdzKTogTmV3LgoJKHF1ZXVlX3JlZ19zYXZlKTogQWRkIGV4dHJhIHBhcmFtZXRlciB0byBzcGVjaWZ5IHJlZ2lzdGVyIHNhdmVkCglpbiByZWdpc3Rlci4gIFJlbW92ZSBkdXBsaWNhdGUgZW50cmllcyBmcm9tIHF1ZXVlLiAgQWRkIGNvbW1lbnQKCWZvciBmdW5jdGlvbi4KCShmbHVzaF9xdWV1ZWRfcmVnX3NhdmVzKTogSGFuZGxlIHJlZ2lzdGVycyBzYXZlZCBpbiByZWdpc3RlcnMuCglVcGRhdGUgcmVnc19zYXZlZF9pbl9yZWdzLiAgQWRkIGNvbW1lbnQgZm9yIGZ1bmN0aW9uLgoJKGNsb2JiZXJzX3F1ZXVlZF9yZWdfc2F2ZSk6IEFkZCBjb21tZW50IGZvciBmdW5jdGlvbi4gIEFsbG93Cglmb3IgcmVnc19zYXZlZF9pbl9yZWdzLgoJKHJlZ19zYXZlZF9pbik6IE5ldy4KCShkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwcik6IEhhbmRsZSBzYXZpbmcgcmVnaXN0ZXJzIGluIG90aGVyCglyZWdpc3RlcnMuCgkoZHdhcmYyb3V0X2ZyYW1lX2RlYnVnKTogUmVzZXQgcmVnc19zYXZlZF9pbl9yZWdzLgoJKiB1bndpbmQtZHcyLmMgKGV4ZWN1dGVfY2ZhX3Byb2dyYW0pOiBDb3JyZWN0IGhhbmRsaW5nIG9mCglEV19DRkFfc2FtZV92YWx1ZS4gIEFkZCBGSVhNRSBjb21tZW50IGFib3V0IGluY29ycmVjdCBpbXBsZW1lbnRhdGlvbgoJb2YgRFdfQ0ZBX3Jlc3RvcmVfZXh0ZW5kZWQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogTGV0Cglkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwciBzZWUgaW5zdHJ1Y3Rpb25zIHRoYXQgc2F2ZSByZWdpc3RlcnMKCWluIG90aGVyIHJlZ2lzdGVycyBvciBzYXZlIHRob3NlIG90aGVyIHJlZ2lzdGVycyBpbiBtZW1vcnkuCgoJKiB1bndpbmQtZHcyLmMgKERXQVJGX0ZSQU1FX1JFR0lTVEVSUyk6IE1vdmUgdG8gdW53aW5kLWR3Mi5oLgoJKF9VbndpbmRfRnJhbWVTdGF0ZSk6IExpa2V3aXNlLgoJKiB1bndpbmQtZHcyLmg6IE5ldy4KCSogTWFrZWZpbGUuaW4gKExJQjJBRERFSERFUCk6IEFkZCB1bndpbmQtZHcyLmguCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLWZhbGxiYWNrLmM6IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvdC1kYXJ3aW4gKExJQjJGVU5DU19FWFRSQSk6IEFkZCBkYXJ3aW4tZmFsbGJhY2suby4KCjIwMDQtMDctMDEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbWl4ZWRfZnVuY3Rpb25fYXJnKTogUmV3cml0ZS4KCShmdW5jdGlvbl9hcmcpOiBVc2UgcnM2MDAwX2FyZ19zaXplIHJhdGhlciB0aGFuIENMQVNTX01BWF9OUkVHUyBpbgoJY2FsY3VsYXRpbmcgZ3ByIHNpemUgZm9yIGFsdGl2ZWMuICBTaW1wbGlmeSBhbmQgY29ycmVjdAoJcnM2MDAwX21peGVkX2Z1bmN0aW9uX2FyZyBjYWxscy4gIENhbGwgcnM2MDAwX21peGVkX2Z1bmN0aW9uX2FyZwoJZm9yIEFCSV9WNCBncHIgY2FzZSB0b28uICBGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBsb25nIGRvdWJsZQoJcmVnIHRlc3QuICBHZW5lcmF0ZSB0aGUgY29ycmVjdCBQQVJBTExFTCB0byBoYW5kbGUgbG9uZyBkb3VibGUKCWZvciBBQklfQUlYIDMyLWJpdC4gIFVzZSB0aGlzIGZvciAtbTMyIC1tcG93ZXJwYzY0IGZwciBjYXNlIHRvby4KCShmdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncyk6IEFsaWduIGJlZm9yZSBjYWxjdWxhdGluZyByZWdzIGxlZnQuCglEb24ndCByZXR1cm4gaW5mbyBvbiBwYXJ0aWFsIGZwcnMgd2hlbiB3ZSBuZWVkIGluZm8gb24gZ3Bycy4KCUNvcnJlY3QgbG9uZyBkb3VibGUgZnByIG9mZi1ieS1vbmUgZXJyb3IuCgoyMDA0LTA2LTMwICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEtcHJvdG9zLmggKHByZWZldGNoX29wZXJhbmQpOiBBZGQgcHJvdG90eXBlLgoJKiBwYS5jIChwcmVmZXRjaF9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKiBwYS5oIChwcmVmZXRjaF9vcGVyYW5kKTogQWRkIHRvIFBSRURJQ0FURV9DT0RFUy4KCSogcGEubWQgKHByZWZldGNoLCBwcmVmZXRjaF8zMiwgcHJlZmV0Y2hfNjQpOiBOZXcgcHJlZmV0Y2ggcGF0dGVybnMuCgoyMDA0LTA2LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIHhfd2hvbGVfZnVuY3Rpb25fbW9kZV9wLgoJKiBjLWRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IERvbid0IHNldCBpdC4KCSogdHJlZS1vcHRpbWl6ZS5jICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEb24ndCBjaGVjayBpdC4KCSogc3RtdC5jIChleHBhbmRfZml4dXApOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoZml4dXBfdmFyX3JlZnNfaW5zbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgoyMDA0LTA2LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS5oIChpbW1lZGlhdGVfc2l6ZV9leHBhbmQpOiBEZWxldGUuCgkqIHN0b3ItbGF5b3V0LmMgKGltbWVkaWF0ZV9zaXplX2V4cGFuZCk6IERlbGV0ZS4KCSh2YXJpYWJsZV9zaXplKTogRG9uJ3QgbG9vayBhdCBpdC4KCSogYy1kZWNsLmMgKHB1c2hfcGFybV9kZWNsKTogRG9uJ3QgZnJvYiBpbW1lZGlhdGVfc2l6ZV9leHBhbmQuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogY2ZnZXhwYW5kLmMgKGNvbnN0cnVjdF9leGl0X2Jsb2NrKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGluaXRfZnVuY3Rpb25fc3RhcnQsIGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBMaWtld2lzZS4KCSogdHJlZS1vcHRpbWl6ZS5jICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCjIwMDQtMDYtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jb21wb3VuZF9sdmFsKTogVGFrZSBmYWxsYmFjayBhcmd1bWVudAoJaW5zdGVhZCBvZiB3YW50X2x2YWx1ZS4KCShnaW1wbGlmeV9jYWxsX2V4cHIpOiBUYWtlIHdhbnRfdmFsdWUgYXJndW1lbnQgaW5zdGVhZCBvZiB0ZXN0CglmdW5jdGlvbi4gIEdpbXBsaWZ5IGFyZ3VtZW50cyB0byB2YWwgb25seSBpZiByZWdfdHlwZTsgb3RoZXJ3aXNlCglhbGxvdyBsdmFsdWUgZm9ybXMuCgkoZ2ltcGxpZnlfZXhwcik6IFVwZGF0ZSBnaW1wbGlmeV9jb21wb3VuZF9sdmFsIGFuZCBnaW1wbGlmeV9jYWxsX2V4cHIKCWNhbGxzLgoJKiB0cmVlLWdpbXBsZS5jOiBVcGRhdGUgR0lNUExFIGdyYW1tZXIuICBVc2UgdHJ1ZS9mYWxzZSBub3QgMS8wLgoJVGlkeSBjb21tZW50YXJ5IGdsb2JhbGx5LgoJKGdldF9jYWxsX2V4cHJfaW4pOiBSZW1vdmUgUkVUVVJOX0VYUFIgaGFuZGxpbmcuICBUaWR5LgoJKiB0cmVlLWdpbXBsZS5oIChpc19naW1wbGVfY2FsbF9hZGRyKTogTWFyayBleHRlcm4uCgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9tb2RpZnlfZXhwcl90b19tZW1jcHkpOiBGaXggdHlwby4KCjIwMDQtMDYtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLWdpbXBsZS5jIChyaWdodF9hc3NvY2lmeV9leHByKTogS2lsbAoJKHJhdGlvbmFsaXplX2NvbXBvdW5kX2V4cHIpOiBLaWxsLgoJKiB0cmVlLWdpbXBsZS5oOiBMaWtld2lzZS4KCSogdHJlZS1pbmxpbmUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogRG9uJ3QgY2FsbCBpdC4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IFJlbW92ZSB4X2xhc3RfcGFybV9pbnNuLAoJaW5sX2xhc3RfcGFybV9pbnNuLgoJKGxhc3RfcGFybV9pbnNuKTogUmVtb3ZlLgoJKiBmdW5jdGlvbi5jIChmcmVlX2FmdGVyX2NvbXBpbGF0aW9uKTogRG9uJ3QgY2xlYXIgdGhlbS4KCShmaXh1cF92YXJfcmVmc19pbnNuLCBhc3NpZ25fcGFybXMpOiBEb24ndCBzZXQgdGhlbS4KCgkqIGZ1bmN0aW9uLmMsIHJ0bC5oIChnZXRfZmlyc3Rfbm9ucGFybV9pbnNuKTogUmVtb3ZlLgoKMjAwNC0wNi0zMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLWNvbW1vbi5oIChjaGVja19mdW5jdGlvbl9mb3JtYXQpOiBSZW1vdmUgZmlyc3QgcGFyYW1ldGVyLgoJKiBjLWZvcm1hdC5jIChmb3JtYXRfY2hlY2tfY29udGV4dCk6IFJlbW92ZSBzdGF0dXMuCgkoY2hlY2tfZm9ybWF0X2luZm8sIGNoZWNrX2Zvcm1hdF9pbmZvX21haW4sCgltYXliZV9yZWFkX2RvbGxhcl9udW1iZXIsIGF2b2lkX2RvbGxhcl9udW1iZXIsCglmaW5pc2hfZG9sbGFyX2Zvcm1hdF9jaGVja2luZywgY2hlY2tfZm9ybWF0X3R5cGVzLAoJY2hlY2tfZnVuY3Rpb25fZm9ybWF0KTogUmVtb3ZlIGZpcnN0IHBhcmFtZXRlci4gIERvbid0IHVzZQoJc3RhdHVzX3dhcm5pbmcuCgkoY2hlY2tfZm9ybWF0X2FyZyk6IERvbid0IHVzZSBzdGF0dXNfd2FybmluZy4KCShzdGF0dXNfd2FybmluZyk6IFJlbW92ZS4KCSogYy1jb21tb24uYyAoY2hlY2tfZnVuY3Rpb25fYXJndW1lbnRzKTogVXBkYXRlIGNhbGwgdG8KCWNoZWNrX2Z1bmN0aW9uX2Zvcm1hdC4KCjIwMDQtMDYtMzAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMtcHJvdG9zLmggKG91dHB1dF9jYnJhbmNoKTogQ29uc3RpZnkgcmV0dXJuCgl2YWx1ZS4KCShvdXRwdXRfdjlicmFuY2gpOiBMaWtld2lzZS4KCShzcGFyY192OHBsdXNfc2hpZnQpOiBMaWtld2lzZS4gIFJlbmFtZSBpbnRvIG91dHB1dF92OHBsdXNfc2hpZnQuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChvdXRwdXRfY2JyYW5jaCk6IENvbnN0aWZ5IHJldHVybiB2YWx1ZS4KCVByZXR0aWZ5IG91dHB1dCBmb3IgZGVsYXkgc2xvdHMuCgkob3V0cHV0X3Y5YnJhbmNoKTogTGlrZXdpc2UuCgkoc3BhcmNfdjhwbHVzX3NoaWZ0KTogQ29uc3RpZnkgcmV0dXJuIHZhbHVlLiAgUmVuYW1lIGludG8KCW91dHB1dF92OHBsdXNfc2hpZnQuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoYXNobGRpM192OHBsdXMpOiBBZGp1c3QgY2FsbCB0bwoJc3BhcmNfdjhwbHVzX3NoaWZ0LgoJKGFzaHJkaTNfdjhwbHVzKTogTGlrZXdpc2UuCgkobHNocmRpM192OHBsdXMpOiBMaWtld2lzZS4KCShjYWxsX2FkZHJlc3Nfc3RydWN0X3ZhbHVlX3NwMzIpOiBQcmV0dGlmeSBvdXRwdXQgZm9yIGRlbGF5IHNsb3RzLgoJKGNhbGxfc3ltYm9saWNfc3RydWN0X3ZhbHVlX3NwMzIpOiBMaWtld2lzZS4KCShjYWxsX2FkZHJlc3NfdW50eXBlZF9zdHJ1Y3RfdmFsdWVfc3AzMik6IExpa2V3aXNlLgoJKGNhbGxfc3ltYm9saWNfdW50eXBlZF9zdHJ1Y3RfdmFsdWVfc3AzMik6IExpa2V3aXNlLgoKMjAwNC0wNi0zMCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY29tbW9uLm9wdCAoZnRyZWUtbG9vcC1vcHRpbWl6ZSk6IE5ldyBmbGFnLgoJKiB0cmVlLWZsb3cuaCAoa2lsbF9yZWR1bmRhbnRfcGhpX25vZGVzKTogRGVjbGFyZS4KCSogdHJlZS1vcHRpbWl6ZS5jIChpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkZCBwYXNzX2xvb3AuCgkqIHRyZWUtcGFzcy5oIChwYXNzX2xvb3BfaW5pdCwgcGFzc19sb29wX2RvbmUpOiBEZWNsYXJlLgoJKiB0cmVlLXNzYS1sb29wLmMgKGN1cnJlbnRfbG9vcHMpOiBOZXcgdmFyaWFibGUuCgkodHJlZV9sb29wX29wdGltaXplcl9pbml0LCBnYXRlX2xvb3AsIHRyZWVfc3NhX2xvb3BfaW5pdCwKCXRyZWVfc3NhX2xvb3BfZG9uZSk6IE5ldyBmdW5jdGlvbnMuCgkocGFzc19sb29wLCBwYXNzX2xvb3BfaW5pdCwgcGFzc19sb29wX2RvbmUpOiBOZXcgcGFzc2VzLgoJKiB0cmVlLXNzYS5jIChraWxsX3JlZHVuZGFudF9waGlfbm9kZXMpOiBFeHBvcnQuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZ0cmVlLWxvb3Atb3B0aW1pemUpOiBEb2N1bWVudC4KCjIwMDQtMDYtMzAgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIHRyZWUtc3NhLWxvb3AtY2guYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluICh0cmVlLXNzYS1sb29wLWNoLm8pOiBBZGQuCgkodHJlZS1pbnRvLXNzYS5vKTogQWRkIEdHQ19IIGRlcGVuZGVuY3kuCgkqIHRyZWUtY2ZnLmMgKHRyZWVfZHVwbGljYXRlX2JiKTogQ29weSB2aXJ0dWFsIGFyZ3VtZW50cy4KCSogdHJlZS1mbG93LmggKHJld3JpdGVfaW50b19zc2EpOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKHJld3JpdGVfc3NhX2ludG9fc3NhLCBjb21wdXRlX2dsb2JhbF9saXZlaW4sIGR1cGxpY2F0ZV9zc2FfbmFtZSk6CglEZWNsYXJlLgoJKiB0cmVlLWludG8tc3NhLmM6IEluY2x1ZGUgZ2djLmguCgkoc3RydWN0IGRlZl9ibG9ja3NfZCk6IEFkZCBwaGlfYmxvY2tzIGZpZWxkLgoJKHN0cnVjdCBtYXJrX2RlZl9zaXRlc19nbG9iYWxfZGF0YSk6IEFkZCBuYW1lc190b19yZW5hbWUgZmllbGQuCgkoc3RydWN0IHNzYV9uYW1lX2luZm8pOiBOZXcuCgkoY29tcHV0ZV9nbG9iYWxfbGl2ZWluKTogRXhwb3J0LgoJKHNldF9kZWZfYmxvY2ssIGluc2VydF9waGlfbm9kZXMsIG1hcmtfZGVmX3NpdGVzLCBzZXRfbGl2ZWluX2Jsb2NrLAoJaW5zZXJ0X3BoaV9ub2Rlc18xLCByZXdyaXRlX2ZpbmFsaXplX2Jsb2NrLCBpbnNlcnRfcGhpX25vZGVzX2ZvciwKCXJlZ2lzdGVyX25ld19kZWYsIGdldF9yZWFjaGluZ19kZWYsIGRlZl9ibG9ja3NfZnJlZSwKCWdldF9kZWZfYmxvY2tzX2ZvciwgcmV3cml0ZV9pbnRvX3NzYSk6IE1vZGlmaWVkIHRvIHdvcmsgd2l0aAoJcmV3cml0ZV9zc2FfaW50b19zc2EuCgkoZ2V0X3NzYV9uYW1lX2FubiwgZ2V0X3BoaV9zdGF0ZSwgc2V0X3BoaV9zdGF0ZSwgZ2V0X2N1cnJlbnRfZGVmLAoJc2V0X2N1cnJlbnRfZGVmLCBzc2FfbWFya19kZWZfc2l0ZXNfaW5pdGlhbGl6ZV9ibG9jaywKCXNzYV9tYXJrX3BoaV91c2VzLCBzc2FfbWFya19kZWZfc2l0ZXMsIGR1cGxpY2F0ZV9zc2FfbmFtZSwKCXNzYV9yZWdpc3Rlcl9uZXdfZGVmLCBzc2FfcmV3cml0ZV9pbml0aWFsaXplX2Jsb2NrLAoJc3NhX3Jld3JpdGVfcGhpX2FyZ3VtZW50cywgc3NhX3Jld3JpdGVfZmluYWxpemVfYmxvY2ssCglzc2FfcmV3cml0ZV9zdG10LCByZXdyaXRlX3NzYV9pbnRvX3NzYSwgcmV3cml0ZV9hbGxfaW50b19zc2EpOiBOZXcKCWZ1bmN0aW9ucy4KCShwYXNzX2J1aWxkX3NzYSk6IENhbGwgcmV3cml0ZV9hbGxfaW50b19zc2EuCgkqIHRyZWUtb3B0aW1pemUuYyAoZXhlY3V0ZV90b2RvLCBleGVjdXRlX29uZV9wYXNzLAoJdHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uKTogQWxsb2NhdGUgdmFyc190b19yZW5hbWUgb25seSBvbmNlLgoJKiB0cmVlLXNzYS1kb20uYyAodHJlZV9zc2FfZG9taW5hdG9yX29wdGltaXplKTogUHJvdmlkZSBwYXJhbWV0ZXIKCXRvIHJld3JpdGVfaW50b19zc2EuCgkqIHRyZWUtc3NhLWxvb3AuYyAoc2hvdWxkX2R1cGxpY2F0ZV9sb29wX2hlYWRlcl9wLAoJbWFya19kZWZzX2Zvcl9yZXdyaXRlLCBkdXBsaWNhdGVfYmxvY2tzLCBkb193aGlsZV9sb29wX3AsCgljb3B5X2xvb3BfaGVhZGVycywgZ2F0ZV9jaCwgcGFzc19jaCk6IE1vdmVkIHRvIHRyZWUtc3NhLWxvb3AtY2guYy4KCVVzZSByZXdyaXRlX3NzYV9pbnRvX3NzYS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoY29weV92aXJ0dWFsX29wZXJhbmRzKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5oIChjb3B5X3ZpcnR1YWxfb3BlcmFuZHMpOiBEZWNsYXJlLgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX3NzYV9uYW1lKTogQWRkIGF1eCBmaWVsZC4KCShTU0FfTkFNRV9BVVgpOiBOZXcgbWFjcm8gdG8gYWNjZXNzIGl0LgoKMjAwNC0wNS0yOCBBYXJvbiBXLiBMYUZyYW1ib2lzZSA8YWFyb25yYW9sZXRlMzZAYWFyb253bC5jb20+CgoJKiBwcmVmaXguYyAobG9va3VwX2tleSk6IENhc3QgYnVmZmVyIHRvIExQQllURS4KCjIwMDQtMDYtMzAgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCUNvbmRpdGlvbmFsbHkgY29tcGlsZSBzdXBwb3J0IGZvciAtLWVuYWJsZS1tYXBwZWRfbG9jYXRpb24uCgkqIGlucHV0Lmg6ICNpbmNsdWRlIGxpbmUtbWFwLmggZm9yIHNvdXJjZV9sb2NhdGlvbiB0eXBlZGVmLgoJKEJVSUxUSU5TX0xPQ0FUSU9OLCBVTktOT1dOX0xPQ0FUSU9OLCBleHBhbmRfbG9jYXRpb24sCglMT0NBVElPTl9GSUxFLCBMT0NBVElPTl9MSU5FKTogTmV3IG1hY3JvcyBhbmQgZnVuY3Rpb25zLgoJKGV4cGFuZGVkX2xvY2F0aW9uLCBzb3VyY2VfbG9jdXMpOiBOZXcgdHlwZWRlZnMuCgkocHVzaF9zcmNsb2MpOiBDaGFuZ2UgcGFyYW1ldGVyIGxpc3QgaWYgVVNFX01BUFBFRF9MT0NBVElPTi4KCSogcnRsLmRlZiAoTk9URSwgQVNNX09QRVJBTkRTKTogTW9kaWZ5IHNwZWNpZmNhdGlvbiwgaWYKCVVTRV9NQVBQRURfTE9DQVRJT04uCgkqIHJ0bC5oIChOT1RFX0RFTEVURURfTEFCRUxfTkFNRSk6IE5ldyBtYWNyby4KCShOT1RFX1NPVVJDRV9MT0NBVElPTiwgTk9URV9FWFBOREVEX0xPQ0FUSU9OLCBTRVRfSU5TTl9ERUxFVEVEKToKCU5ldyBjb25kaXRpb25hbCBtYWNyb3MuCgkoQVNNX09QRVJBTkRTX1NPVVJDRV9GSUxFLCBBU01fT1BFUkFORFNfU09VUkNFX0xJTkUpOiBSZXBsYWNlCglieSBBU01fT1BFUkFORFNfU09VUkNFX0xPQ0FUSU9OIGlmIFVTRV9NQVBQRURfTE9DQVRJT04uCgkqIHRyZWUuaCAoRVhQUl9MT0NBVElPTiwgU0VUX0VYUFJfTE9DQVRJT04sIEVYUFJfSEFTX0xPQ0FUSU9OLAoJRVhQUl9MT0NVUywgU0VUX0VYUFJfTE9DVVMsIEVYUFJfRklMRU5BTUUsIEVYUFJfTElORU5PLAoJREVDTF9JU19CVUlMVElOKTogTmV3IG1hY3JvcywgbW9zdCBkZXBlbmRpbmcgb24gVVNFX01BUFBFRF9fTE9DQVRJT04uCgkodHJlZV9leHApOiBDaGFuZ2UgdHlwZSBvZiBsb2N1cyB0byB1c2UgbmV3IHNvdXJjZV9sb2N1cyB0eXBlZGVmLgoJKiB0cmVlLmMgKGJ1aWxkMV9zdGF0KTogVXNlIFNFVF9FWFBSX0xPQ0FUSU9OLgoJKGFubm90YXRlX3dpdGhfbG9jdXMsIGFubm90YXRlX3dpdGhfZmlsZV9saW5lKTogQ29uZGl0aW9uYWxpemUuCgkoZXhwYW5kX2xvY2F0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKiB0b3BsZXYuYyAodW5rbm93bl9sb2NhdGlvbik6IE5ldyBzdGF0aWMsIHdoZW4gVVNFX01BUFBFRF9MT0NBVElPTi4KCShwdXNoX3NyY2xvYywgcG9wX2xvYyk6IEFkanVzdCBwYXJhbWV0ZXIgaGFuZGxpbmcuCgkocHJvY2Vzc19vcHRpb25zKTogRG9uJ3Qgc2V0IGlucHV0X2ZpbGVuYW1lIGJ5IGl0c2VsZi4KCShsYW5nX2RlcGVuZGVudF9pbml0KTogU2F2ZSwgc2V0IGlucHV0X2xvY2F0aW9uIHRvIDxidWlsdC1pbj4uCgkod2Fybl9kZXByZWNhdGVkX3VzZSk6IFVzZSBleHBhbmRfbG9jYXRpb24uCgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgZWRnZV9kZWYpOiBVc2UgbmV3IHNvdXJjZV9sb2N1cyB0eXBlZGVmLgoJKiBjLWNvbW1vbi5jIChmbmFtZV9kZWNsKTogVXBkYXRlIHNhdmUvY2xlYXIvc3RvcmUgb2YgaW5wdXRfbG9jYXRpb24uCgkoY19kb19zd2l0Y2hfd2FybmluZ3MpOiBVcGRhdGUgZm9yIFVTRV9NQVBQRURfTE9DQVRJT04gY2FzZS4KCSogYy1kZWNsLmM6IExpa2V3aXNlLgoJKiBjLWR1bXAuYyAoZHVtcF9zdG10KTogTGlrZXdpc2UuCgkqIGMtZ2ltcGxpZnkuYyAoYy1naW1wbGlmeS5jKTogR2VuZXJhbGl6ZSB1c2luZyBTRVRfRVhQUl9MT0NBVElPTi4KCSogYy1sZXguYyAoY2JfbGluZV9jaGFuZ2UpOiBJZiBVU0VfTUFQUEVEX0xPQ0FUSU9OIHVzZSB0b2tlbidzCXNyY19sb2MKCXRvIHNldCBpbnB1dF9sb2NhdGlvbiBkaXJlY3Rpb24sIHJhdGhlciB0aGFuIHVzaW5nIGxpbmVtYXBfbG9va3VwLgoJKGZlX2ZpbGVfY2hhbmdlLCBjYl9kZWZfcHJhZ21hKTogQWdhaW4gdXNlIHNvdXJjZV9sb2NhdGlvbiBkaXJlY3RseS4KCSogYy1vcHRzLmMgKHNhdmVkX2xpbmVubyk6IFJlbW92ZSBzdGF0aWMgdmFyaWFibGUuCgkoY19jb21tb25fcG9zdF9vcHRpb25zLCBjX2NvbW1vbl9pbml0KTogRG9uJ3QgYm90aG5lciB0byBzYXZlLAoJY2xlYXIgYW5kIHJlc3RvcmUgaW5wdXRfTG9jYXRpb24gLSBub3cgaGFuZGxlZCBieSBsYW5nX2RlcGVuZGVudF9pbml0LgoJKiBmdW5jdGlvbi5jIChpbml0X2Z1bmN0aW9uX3N0YXJ0KTogVXNlIG5ldyBERUNMX0lTX0JVSUxUSU4gbWFjcm8uCgkqIHhjb2Zmb3V0LmMgKHhjb2ZmX2Fzc2lnbl9mdW5kYW1lbnRhbF90eXBlX251bWJlcik6IExpa2V3aXNlLgoJKiB0cmVlLW11ZGZsYXAuYyAobWZfZmlsZV9mdW5jdGlvbl9saW5lX3RyZWUpOiBUYWtlIGEgbG9jYXRpb25fdAoJcmF0aGVyIHRoYW4gYSBwb2ludGVyIHRvIG9uZS4gIFVzZSBleHBhbmRfbG9jYXRpb24uCgkobWZfdmFybmFtZV90cmVlKTogVXNlIGV4cGFuZF9sb2NhdGlvbi4KCSogdHJlZS1kdW1wLmM6IFVzZSBleHBhbmRfbG9jYXRpb24gb24gREVDTF9TT1VSQ0VfTE9DQVRJT04uCgkqIGNvdmVyYWdlLmM6IExpa2V3aXNlLgoJKiBwcmludC10cmVlLmM6IExpa2V3aXNlLgoJKiBjLWF1eC1pbmZvLmMgKGdlbl9hdXhfaW5mb19yZWNvcmQpOiBMaWtld2lzZS4KCSogYy1wYXJzZS5pbjogVXNlIFNFVF9FWFBSX0xPQ0FUSU9OIG1hY3JvLgoJKiBnaW1wbGUtbG93LmM6IExpa2V3aXNlLgoJKiB0cmVlLW11ZGZsYXAuYzogTGlrZXdpc2UuCgkqIGdpbXBsaWZ5LmM6IExpa2V3aXNlLiAgQWxzbyB1c2UgRVhQUl9MT0NBVElPTiBhbmQgRVhQUl9IQVNfTE9DQVRJT04uCgkqIGMtcHBvdXRwdXQuYzogVXNlIG5ldyBzb3VyY2VfbG9jYXRpb24gdHlwZWRlZiBpbnN0ZWFkIG9mIGZpbGVsaW5lLgoJKiBjLXNlbWFudGljcy5jOiBVc2UgbmV3IG1hY3Jvcy4KCSogYy10eXBlY2suYzogTGlrZXdpc2UuCgkqIGNmZ2V4cGFuZC5jOiBIYW5kbGUgVVNFX01BUFBFRF9MT0NBVElPTiBjYXNlIGZvciBmdW5jdGlvbl9lbmRfbG9jdXMuCgkqIGNmZ2xheW91dC5jIChpbnNuX2xvY2F0b3JzX2luaXRpYWxpemUpOiBDb25zdCBjbGVhbnVwLiAgTmV3IG1hY3Jvcy4KCSogY2ZncnRsLmMgKGRlbGV0ZV9pbnNuKTogVXNlIG5ldyBOT1RFX0RFTEVURURfTEFCRUxfTkFNRSBtYWNyby4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jOiBEb24ndCBjbGVhciBOT1RFX1NPVVJDRV9GSUxFIGlmIFVTRV9NQVBQRURfTE9DQVRJT04uCgkqIGNvbWJpbmUuYzogVXNlIG5ldyBTRVRfSU5TTl9ERUxFVEVEIG1hY3JvLgoJKiBmbG93LmM6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jOiBMaWtld2lzZS4KCSogaWZjdnQuYzogTGlrZXdpc2UuCgkqIHJlY29nLmM6IExpa2V3aXNlLgoJKiByZWxvYWQxLmM6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmM6IFVzZSBleHBhbmRfbG9jYXRpb24gbWFjcm8uCgkqIHByZXR0eS1wcmludC5jIChwcF9iYXNlX2Zvcm1hdF90ZXh0KTogTGlrZXdpc2UuCgkqIHByb2ZpbGUuYzogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4gIEFsc28gdXNlIGV4cGFuZF9sb2NhdGlvbiwgREVDTF9JU19CVUlMVElOLgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2RlY2w6IFVzZSBCVUlMVElOU19MT0NBVElPTi4KCSogZW1pdC1ydGwuYyAoZW1pdF9saW5lX25vdGUpOiBTaW1wbGlmeSBpZiBVU0VfTUFQUEVEX0xPQ0FUSU9OLgoJKGZvcmNlX25leHRfbGluZV9ub3RlLCBpbnNuX2VtaXQpOiBIYW5kbGUgVVNFX01BUFBFRF9MT0NBVElPTiBjYXNlLgoJKiBmaW5hbC5jIChmaW5hbCk6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmM6IExpa2V3aXNlLgoJKiBqdW1wLmM6IExpa2V3aXNlLgoJKiBydGwtZXJyb3IuYzogTGlrZXdpc2UuCgkqIHN0bXQuYyAoY2hlY2tfc2VlbmxhYmVsKTogTGlrZXdpc2UuCgkqIHRyZWUtcHJldHR5LXByaW50LmM6IExpa2V3aXNlLgoJKiBnZW5ndHlwZS1sZXgubDogVGVtcG9yYXJ5IGtsdWRnZSB0byBhdm9pZCBkdXBsaWNhdGUgdHlwZWRlZi4KCSogZ2VuZ3R5cGUuYzogVXBkYXRlIGZvciBub3cgdHlwZGVmcyBpbiBpbnB1dC5oLiAgTW9yZSBrbHVkZ2VzLgoJKiBtb2R1bG8tc2NoZWQuYyAoc21zX3NjaGVkdWxlKTogVXNlIE5PVEVfRVhQQU5ERURfTE9DQVRJT04gbWFjcm8uCgkqIHJhLWRlYnVnLmMgKHJhX3ByaW50X3J0bCk6IExpa2V3aXNlLgoJKiBzY2hlZC1yZ24uYzogTGlrZXdpc2UuCgkqIHNjaGVkLXZpcy5jOiBMaWtld2lzZS4KCSogcnRsLmggKGdlbl9ydHhfQVNNX09QRVJBTkRTKTogUmVkZWZpbmUgaWYgVVNFX01BUFBFRF9MT0NBVElPTi4KCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogQWRqdXN0IGNhbGxzIHRvIGdlbl9ydHhfQVNNX09QRVJBTkRTLgoJKiB0cmVlLWNmZy5jOiBVc2UgbmV3IG1hY3JvcyBhbmQgdHlwZWRlZnMuCgkqIHRyZWUtZmxvdy1pbmxpbmUuaDogTGlrZXdpc2UuCgoyMDA0LTA2LTMwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkgICAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy8zMDAwLm1kOiBJbXByb3ZlIGRlc2NyaXB0aW9uLgoKMjAwNC0wNi0zMCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vY2lycnVzLm1kIChjaXJydXNfYXJtX21vdmRpLCBjaXJydXNfbW92c2ZfaGFyZF9pbnNuLAoJY2lycnVzX21vdmRmX2hhcmRfaW5zbik6IFNldCBwb29sIHJhbmdlcyBmb3IgY29wcm9jZXNzb3IgbG9hZHMuCgoyMDA0LTA2LTMwICBTZWJhc3RpYW4gUG9wICA8cG9wQGNyaS5lbnNtcC5mcj4KCgkqIE1ha2VmaWxlLmluIChPQkpTLWNvbW1vbik6IEFkZCB0cmVlLWNocmVjLm8uCgkodHJlZS1jaHJlYy5vKTogTmV3IHJ1bGUuCgkoR1RGSUxFUyk6IEFkZCB0cmVlLWNocmVjLmguCgkqIGdlbmd0eXBlLmMgKG9wZW5fYmFzZV9maWxlcyk6IEFkZCB0cmVlLWNocmVjLmguCgkqIHRyZWUtY2hyZWMuYzogTmV3IGZpbGUuCgkqIHRyZWUtY2hyZWMuaDogTmV3IGZpbGUuCgkqIHRyZWUuZGVmIChTQ0VWX0tOT1dOLCBTQ0VWX05PVF9LTk9XTiwgUE9MWU5PTUlBTF9DSFJFQyk6IE5ldyBub2Rlcy4KCjIwMDQtMDYtMzAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29tYmluZS5jOiBJbmNsdWRlICJvdXRwdXQuaCIgdG8gZGVmaW5lIGR1bXBfZmlsZS4KCSh1aWRfaW5zbl9jb3N0LCBsYXN0X2luc25fY29zdCk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKGNvbWJpbmVfaW5zbl9jb3N0KTogTmV3IGZ1bmN0aW9uIHRvIGVzdGltYXRlIGNvc3Qgb2YgYW4gaW5zbi4KCShjb21iaW5lX3ZhbGlkYXRlX2Nvc3QpOiBOZXcgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYQoJdHJ5X2NvbWJpbmUgcmVwbGFjZW1lbnQgc2VxdWVuY2UgaXMgY2hlYXBlciB0aGFuIHRoZSBvcmlnaW5hbC4KCShjb21iaW5lX2luc3RydWN0aW9ucyk6IEFsbG9jYXRlIGFuZCBwb3B1bGF0ZSB1aWRfaW5zbl9jb3N0CglhcnJheSBhdCB0aGUgc3RhcnQgb2YgdGhlIGNvbWJpbmUgcGFzcywgYW5kIGRlYWxsb2NhdGUgaXQgYWZ0ZXIuCgkodHJ5X2NvbWJpbmUpOiBDaGVjayBjb21iaW5lX3ZhbGlkYXRlX2Nvc3QgdG8gZGV0ZXJtaW5lIHdoZXRoZXIKCWEgInJlY29tYmluYXRpb24iIHNob3VsZCBiZSByZWplY3RlZCBhcyBiZWluZyBtb3JlIGV4cGVuc2l2ZS4KCSogTWFrZWZpbGUuaW4gKGNvbWJpbmUubyk6IEFkZCBkZXBlbmRlbmN5IHVwb24gb3V0cHV0LmguCgoyMDA0LTA2LTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9ydHhfY29zdHMpIDxNSU5VU19FWFBSPjogSGFuZGxlCglzdWJ0cmFjdGlvbnMgaWRlbnRpY2FsbHkgdG8gYWRkaXRpb25zLCBhbHdheXMgQ09TVFNfTl9JTlNOUyAoMSkuCgoyMDA0LTA2LTMwICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGV4cG1lZC5jIChleHBhbmRfc21vZF9wb3cyKTogRml4IHNpZ24gb2YgbWFzay4KCjIwMDQtMDYtMjkgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtcHJlLmMgKHBoaV90cmFuc19hZGQpOiBVc2UgaXNfZ2ltcGxlX21pbl9pbnZhcmlhbnQKCXRvIGNoZWNrIGZvciBjb25zdGFudHMuCgkoc2V0X3JlbW92ZSk6IExpa2V3aXNlLgoJKHZhbHVlX3JlcGxhY2VfaW5fc2V0KTogTGlrZXdpc2UuCgkoZmluZF9sZWFkZXIpOiBMaWtld2lzZS4KCSogdHJlZS12bi5jIChzZXRfdmFsdWVfaGFuZGxlKTogTGlrZXdpc2UuCgkodm5fbG9va3VwKTogTGlrZXdpc2UuCgkodm5fbG9va3VwX29yX2FkZCk6IExpa2V3aXNlLgoKMjAwNC0wNi0zMCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglSVEwgcHJvbG9ndWUvZXBpbG9ndWUgZm9yIFNQQVJDCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCAoc3BhcmNfZW1pdHRpbmdfZXBpbG9ndWUpOiBEZWxldGUuCgkoc3BhcmNfc2tpcF9jYWxsZXJfdW5pbXApOiBMaWtld2lzZS4KCShsb2FkX3BpY19yZWdpc3Rlcik6IExpa2V3aXNlLgoJKGxlYWZfcmV0dXJuX3BlZXBob2xlX29rKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9mcmFtZV9zaXplKTogUmVuYW1lIGludG8gc3BhcmNfY29tcHV0ZV9mcmFtZV9zaXplLgoJKHNwYXJjX2V4cGFuZF9wcm9sb2d1ZSk6IE5ldyBwcm90b3R5cGUuCgkoc3BhcmNfZXhwYW5kX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkob3V0cHV0X3JldHVybik6IExpa2V3aXNlLgoJKGVsaWdpYmxlX2Zvcl9lcGlsb2d1ZV9kZWxheSk6IFJlbmFtZSBpbnRvIGVsaWdpYmxlX2Zvcl9yZXR1cm5fZGVsYXkuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChJTklUSUFMX0VMSU1JTkFUSU9OX09GRlNFVCk6IEFkanVzdCBjYWxsIHRvCgljb21wdXRlX2ZyYW1lX3NpemUuICBNb3ZlIGNvbW1lbnQgdXAuCgkoREVMQVlfU0xPVFNfRk9SX0VQSUxPR1VFKTogRGVsZXRlLgoJKEVMSUdJQkxFX0ZPUl9FUElMT0dVRV9ERUxBWSk6IExpa2V3aXNlLgoJKEVQSUxPR1VFX1VTRVMpOiBSZXR1cm4gdHJ1ZSBmb3IgJWcxIGlmIHRoZSBmdW5jdGlvbiB1c2VzIEVIIHJldHVybi4KCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChVTlNQRUNWX1NBVkVXKTogTmV3IGNvbnN0YW50LgoJKHR5cGUgYXR0cmlidXRlKTogQWRkICdyZXR1cm4nIGFuZCAnc2F2ZXcnLgoJKGVsaWdpYmxlX2Zvcl9yZXR1cm5fZGVsYXkpOiBOZXcgYXR0cmlidXRlLgoJKHJldHVybik6IE5ldyBkZWxheV9zbG90LgoJKHNpYmNhbGxfZXBpbG9ndWUpOiBDYWxsIHNwYXJjX2V4cGFuZF9lcGlsb2d1ZS4KCShwcm9sb2d1ZSk6IExpa2V3aXNlLiAgTW92ZSB1cC4KCShzYXZlX3JlZ2lzdGVyX3dpbmRvdyk6IE5ldyBleHBhbmRlci4KCShzYXZlX3JlZ2lzdGVyX3dpbmRvd3NpKTogTmV3IHBhdHRlcm4uCgkoc2F2ZV9yZWdpc3Rlcl93aW5kb3dkaSk6IExpa2V3aXNlLgoJKGVwaWxvZ3VlKTogTmV3IGV4cGFuZGVyLgoJKHJldHVybl9pbnRlcm5hbCk6IE5ldyBwYXR0ZXJuLgoJKFJldHVybiBwZWVwaG9sZXMpOiBEZWxldGUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChTSUJDQUxMX1NMT1RfRU1QVFlfUCk6IE5ldyBtYWNyby4KCShzcGFyY19lbWl0dGluZ19lcGlsb2d1ZSk6IERlbGV0ZS4KCShzcGFyY19za2lwX2NhbGxlcl91bmltcCk6IExpa2V3aXNlLgoJKHNwYXJjX3NyX2FsaWFzX3NldCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoZnJhbWVfYmFzZV9uYW1lKTogRGVsZXRlLgoJKGZyYW1lX2Jhc2VfcmVnKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShzcGFyY19vdmVycmlkZV9vcHRpb25zKTogR2V0IG5ldyBhbGlhcyBzZXQgZm9yIHNhdmUvcmVzdG9yZS4KCShsZWFmX3JldHVybl9wZWVwaG9sZV9vayk6IERlbGV0ZS4KCShlbGlnaWJsZV9mb3JfZXBpbG9ndWVfZGVsYXkpOiBSZW5hbWUgaW50byBlbGlnaWJsZV9mb3JfcmV0dXJuX2RlbGF5LgoJRmFjdG9yIG91dCBjb2RlIGludG8gZWxpZ2libGVfZm9yX3Jlc3RvcmVfaW5zbl9kZWxheS4KCShlbGlnaWJsZV9mb3JfcmVzdG9yZV9pbnNuX2RlbGF5KTogTmV3IGZ1bmN0aW9uIGV4dHJhY2VkIGZyb20gYWJvdmUuCglVc2UgSU5fVU5DT05EX0JSQU5DSF9ERUxBWV9UUlVFIGluc3RlYWQgb2YgSU5fQlJBTkNIX0RFTEFZX1RSVUUuCgkoZWxpZ2libGVfZm9yX3NpYmNhbGxfZGVsYXkpOiBVc2UgU0lCQ0FMTF9TTE9UX0VNUFRZX1AuCglGYWN0b3Igb3V0IGNvZGUgaW50byBlbGlnaWJsZV9mb3JfcmVzdG9yZV9pbnNuX2RlbGF5LgoJKGxvYWRfcGljX3JlZ2lzdGVyKTogTWFrZSBzdGF0aWMuICBSZW1vdmUgY2hlY2suCgkoc2F2ZV9yZWdzKTogRGVsZXRlLgoJKHJlc3RvcmVfcmVncyk6IExpa2V3aXNlLgoJKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IFJlbmFtZSBpbnRvIHNwYXJjX2NvbXB1dGVfZnJhbWVfc2l6ZS4KCVJlbmFtZSBsZWFmX2Z1bmN0aW9uIGludG8gbGVhZl9mdW5jdGlvbl9wLgoJKGJ1aWxkX2JpZ19udW1iZXIpOiBEZWxldGUuCgkoc2F2ZV9vcl9yZXN0b3JlX3JlZ3MpOiBOZXcgZnVuY3Rpb24uCgkoZW1pdF9zYXZlX3JlZ3MpOiBMaWtld2lzZS4KCShlbWl0X3Jlc3RvcmVfcmVncyk6IExpa2V3aXNlLgoJKGVtaXRfc3RhY2tfcG9pbnRlcl9pbmNyZW1lbnQgKTogTGlrZXdpc2UuCgkoZW1pdF9zdGFja19wb2ludGVyX2RlY3JlbWVudCk6IExpa2V3aXNlLgoJKHNwYXJjX2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKHNwYXJjX2Z1bmN0aW9uX3Byb2xvZ3VlKTogUmVuYW1lIGludG8gc3BhcmNfYXNtX2Z1bmN0aW9uX3Byb2xvZ3VlLgoJUmVtb3ZlIGFsbCBjb2RlIHRvIGVtaXQgaW5zdHJ1Y3Rpb25zLgoJKHNwYXJjX2V4cGFuZF9lcGlsb2d1ZSk6IE5ldyBmdW5jdGlvbi4KCShzcGFyY19mdW5jdGlvbl9lcGlsb2d1ZSk6IFJlbmFtZSBpbnRvIHNwYXJjX2FzbV9mdW5jdGlvbl9lcGlsb2d1ZS4KCVJlbW92ZSBhbGwgY29kZSB0byBlbWl0IGluc3RydWN0aW9ucy4KCShvdXRwdXRfcmVzdG9yZSk6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfcmV0dXJuKTogTGlrZXdpc2UuCgkob3V0cHV0X3NpYmNhbGwpOiBGYWN0b3Igb3V0IGNvZGUgaW50byBvdXRwdXRfcmVzdG9yZS4KCShwcmludF9vcGVyYW5kKTogQWRqdXN0IGZvciBmcmFtZV9iYXNlX3JlZy4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogTmV3IGZpZWxkICdsYXRlX3J0bF9wcm9sb2d1ZV9lcGlsb2d1ZScuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0xBVEVfUlRMX1BST0xPR1VFX0VQSUxPR1VFKTogTmV3IGRlZmluZS4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBBZGQgaXQuCgkqIHBhc3Nlcy5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogU2V0IHRoZSBjb25kaXRpb25hbCBwcmVkaWNhdGUKCSdjdXJyZW50X2Z1bmN0aW9uX3VzZXNfb25seV9sZWFmX3JlZ3MnIGJlZm9yZSBzY2hlZDIuICBJZiB0YXJnZXQKCWhhcyAnbGF0ZV9ydGxfcHJvbG9ndWVfZXBpbG9ndWUnLCBlbWl0IFJUTCBwcm9sb2d1ZS9lcGlsb2d1ZSByaWdodAoJYmVmb3JlIHNjaGVkMi4KCSogcmVvcmcuYyAocmV0dXJuX2luc25fcCk6IE5ldyBwcmVkaWNhdGUuCgkoZmluZF9lbmRfbGFiZWwpOiBVc2UgaXQuCgkocmVsYXhfZGVsYXlfc2xvdHMpOiBEbyBub3QgdGhyZWFkIGFuIHVuY29uZGl0aW9uYWwganVtcCB0aGF0IHBvaW50cwoJdG8gdGhlIGVuZCByZXR1cm4gbGFiZWwuCgkqIGRvYy90bS50ZXhpIChSZWdpc3RlcnMpIDxMZWFmIEZ1bmN0aW9ucz46IENsYXJpZnkgdGhlIHZhbGlkaXR5Cglkb21haW4gb2YgJ2N1cnJlbnRfZnVuY3Rpb25fdXNlc19vbmx5X2xlYWZfcmVncycuCgkoU3RhY2sgYW5kIENhbGxpbmcpIDxGdW5jdGlvbiBFbnRyeT46IERvY3VtZW50IG5ldyB0YXJnZXQgaG9vawoJVEFSR0VUX0xBVEVfUlRMX1BST0xPR1VFX0VQSUxPR1VFLgoKMjAwNC0wNi0zMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbik6IFNpbXBsaWZ5CgkoKEEgJiBOKSArIEIpICYgTSAtPiAoQSArIEIpICYgTSBpZiBNIGlzIHBvdzIgbWludXMgMSBjb25zdGFudCBhbmQKCU4gaGFzIGF0IGxlYXN0IGFsbCBiaXRzIGluIE0gc2V0IGFzIHdlbGwuCgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTUzMTAKCSogZXhwci5jIChleHBhbmRfYXNzaWdubWVudCk6IE9wdGltaXplICs9IG9yIC09IG9uIGEgYml0IGZpZWxkIGluCgltb3N0IHNpZ25pZmljYW50IGJpdHMuCgoyMDA0LTA2LTMwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBjb25maWcvYzR4L2M0eC5tZDogRml4IGNvbW1lbnQuCgoyMDA0LTA2LTMwICBBa29zIEtpc3MgIDxha2lzc0BpbmYudS1zemVnZWQuaHU+CgoJKiBhcm0ubWQgKGNvbmRfcmV0dXJuX2ludmVydGVkKTogQWRkICJsZW5ndGgiIGF0dHJpYnV0ZS4KCjIwMDQtMDYtMjkgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogY29uZmlnL2kzODYvd2lubnQuYyAoaTM4Nl9wZV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogU21hc2ggcnRsbmFtZSdzCglYU1RSIGluIHBsYWNlLCBzbyB3ZSBkb24ndCBsb3NlIFNZTUJPTF9SRUZfREVDTCBpbmZvLgoKMjAwNC0wNi0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2hwdXguaDogVGFyZ2V0IGRvZXMgdG9vIHN1cHBvcnQgdGhyZWFkLWxvY2FsIHN0b3JhZ2UuCgoyMDA0LTA2LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogRG9uJ3QgbG9vayBhdCBnbG9iYWxfcmVncyBmb3IKCXBzZXVkb3MuCgoyMDA0LTA2LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfbW9kaWZ5X2V4cHJfcmhzKTogTW92ZSBpbW1lZGlhdGVseSBiZWZvcmUKCWdpbXBsaWZ5X21vZGlmeV9leHByLgoJKGdpbXBsaWZ5X2luaXRfY29uc3RydWN0b3IpOiBMaWtld2lzZS4gIEdpbXBsaWZ5IHRoZSBudWxsCglDT05TVFJVQ1RPUiBhc3NpZ25tZW50LgoJKGdpbXBsaWZ5X21vZGlmeV9leHByX3RvX21lbWNweSk6IE5ldy4KCShnaW1wbGlmeV9tb2RpZnlfZXhwcl90b19tZW1zZXQpOiBOZXcuCgkoZ2ltcGxpZnlfbW9kaWZ5X2V4cHIpOiBVc2UgdGhlbS4KCjIwMDQtMDYtMjkgIFJvbWFuIFppcHBlbCA8emlwcGVsQGxpbnV4LW02OGsub3JnPgoKCSogd2ViLmMgKHVuaW9uX2RlZnMpOiB1c2UgYWxsIGRlZnMgb2YgYW4gaW5zdHJ1Y3Rpb24gdG8gY3JlYXRlIGEKCXVuaW9uIHdpdGggYSByZWFkL3dyaXRlIHVzZQoKMjAwNC0wNi0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzE2MjE2CgkqIGJ1aWx0aW5zLmMgKGdpbXBsaWZ5X3ZhX2FyZ19leHByKTogQ2hlY2sgZm9yIHZhbGlzdCBiZWluZwoJYW4gZXJyb3JfbWFya19ub2RlLgoKMjAwNC0wNi0yOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE2MTk1CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9jb25kaXRpb25hbF9yZWdpc3Rlcl91c2FnZSk6IE1ha2UKCXIzMCBmaXhlZCBpZiBUQVJHRVRfVE9DICYmIFRBUkdFVF9NSU5JTUFMX1RPQy4KCShmaXJzdF9yZWdfdG9fc2F2ZSk6IFByZXRlbmQgY2FsbF91c2VkX3JlZ3NbMzBdIGlzIDAgaWYKCVRBUkdFVF9UT0MgJiYgVEFSR0VUX01JTklNQUxfVE9DLgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlLCByczYwMDBfZW1pdF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoKMjAwNC0wNi0yOSAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJRml4IGdjYy5kZy9idWlsdGluLWFwcGx5Mi5jIGZhaWx1cmVzOgoJKiBzaC5oIChUQVJHRVRfVkFSQVJHU19QUkVURU5EX0FSR1MpOiBEZWZpbmUuCgkqIHNoLmMgKGV4dHJhX3B1c2gpOiBEZWxldGUuCgkoc2hfZXhwYW5kX3Byb2xvZ3VlKTogRG9uJ3QgZG8gZXh0cmEgc3RhY2sgYWRqdXN0bWVudCBmb3IKCWN1cnJlbnRfZnVuY3Rpb25fcHJldGVuZF9hcmdzX3NpemUgaWYgaXQgY29tZXMgZnJvbSB2YXJhcmdzIHNldHVwLgoJVXNlIFRBUkdFVF9WQVJBUkdTX1BSRVRFTkRfQVJHUy4gIERvbid0IHNldCBleHRyYV9wdXNoLgoJKHNoX2V4cGFuZF9lcGlsb2d1ZSk6IERvbid0IHVzZSBleHRyYV9wdXNoLgoJKHNoX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBTZXQgcHJldGVuZF9hcmdfc2l6ZSB3aGVuIG5lY2Vzc2FyeS4KCjIwMDQtMDYtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwbWVkLmMgKGV4cGFuZF9zbW9kX3BvdzIpOiBQcm92aWRlIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbnMKCXRoYXQgYXZvaWQgY29uZGl0aW9uYWwganVtcHMsIGFuZCBjaG9vc2UgYmV0d2VlbiB0aGVtIGJhc2VkIHVwb24KCXRoZSB0YXJnZXQncyBydHhfY29zdHMuCgoyMDA0LTA2LTI5ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiB0cmVlLXNyYS5jOiBJbmNsdWRlIGV4cHIuaCBmb3IgZGVmaW5pdGlvbiBvZiBNT1ZFX1JBVElPLgoJKiBNYWtlZmlsZS5pbiAodHJlZS1zcmEuYyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDA0LTA2LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1zcmEuYzogUmV3cml0ZSBmcm9tIHNjcmF0Y2guICBIYW5kbGUgbmVzdGVkIGFnZ3JlZ2F0ZXMuCgoyMDA0LTA2LTI5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmVjLmggKFZFQ19UX3NhZmVfcHVzaCwgVkVDX1Rfc2FmZV9pbnNlcnQpOiBUd2VhayBmb3Igd2hlbgoJc2l6ZV90IGlzIGJpZ2dlciB0aGFuIGludC4KCjIwMDQtMDYtMjkgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9DWFhfR0VUX0NPT0tJRV9TSVpFLAoJVEFSR0VUX0NYWF9DT09LSUVfSEFTX1NJWkUpOiBEZWZpbmUuCgkoVEFSR0VUX0NYWCk6IFVzZSB0aGVtLgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBBZGQgY3h4LmdldF9jb29raWVfc2l6ZSBhbmQKCWN4eC5jb29raWVfaGFzX3NpemUuCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X2N4eF9nZXRfY29va2llX3NpemUpOiBOZXcgZnVjbnRpb24uCgkqIHRhcmdob29rcy5oIChkZWZhdWx0X2N4eF9nZXRfY29va2llX3NpemUpOiBBZGQgcHJvdG90eXBlLgoJKiBjb25maWcvYXJtL2FybS5jIChUQVJHRVRfQ1hYX0dFVF9DT09LSUVfU0laRSwKCVRBUkdFVF9DWFhfQ09PS0lFX0hBU19TSVpFKTogRGVmaW5lLgoJKGFybV9nZXRfY29va2llX3NpemUsIGFybV9jb29raWVfaGFzX3NpemUpOiBOZXcgZnVuY3Rpb25zLgoJKiBNYWtlLWxhbmcuaW4gKGNwL2luaXQubyk6IEFkZCBkZXBlbmRlbmN5IG9uICQoVEFSR0VUX0gpLgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgVEFSR0VUX0NYWF9HRVRfQ09PS0lFX1NJWkUgYW5kCglUQVJHRVRfQ1hYX0NPT0tJRV9IQVNfU0laRS4KCjIwMDQtMDYtMjkgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogY2ZnbGF5b3V0LmMgKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBEb24ndCBkbyBhbnl0aGluZyBmb3IKCWVfZmFsbC0+ZGVzdCA9PSBFWElUX0JMT0NLX1BUUi4KCjIwMDQtMDYtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLWNmZy5jICh2ZXJpZnlfc3RtdCk6IEFkZCBsYXN0X2luX2Jsb2NrIHBhcmFtZXRlci4gIFZlcmlmeQoJdGhhdCBlaCBzdG10cyBjYW4gdGhyb3cuCgkodmVyaWZ5X3N0bXRzKTogVXBkYXRlIHZlcmlmeV9zdG10IGNhbGwuCgkodHJlZV9wdXJnZV9kZWFkX2VoX2VkZ2VzLCB0cmVlX3B1cmdlX2FsbF9kZWFkX2VoX2VkZ2VzKTogTmV3LgoJKiB0cmVlLWVoLmMgKHJlbW92ZV9zdG10X2Zyb21fZWhfcmVnaW9uKTogTmV3LgoJKGxvd2VyX2VoX2NvbnN0cnVjdHMpOiBGaXggdGhyb3dfc3RtdF90YWJsZSBkZWxldGUgcm91dGluZS4KCSh0cmVlX2NvdWxkX3RyYXBfcCk6IE1hdGNoIG1heV90cmFwX3AuCgkobWF5YmVfY2xlYW5fZWhfc3RtdCk6IE5ldy4KCSogdHJlZS1mbG93Lmg6IFVwZGF0ZSBkZWNscy4KCSogdHJlZS1zc2EtY2NwLmMgKHBhc3NfY2NwKTogQWRkIFRPRE9fdmVyaWZ5X3N0bXRzLgoJKHN1YnN0aXR1dGVfYW5kX2ZvbGQpOiBDbGVhbiBlaCBlZGdlcy4KCSogdHJlZS1zc2EtZGNlLmMgKG1hcmtfY29udHJvbF9kZXBlbmRlbnRfZWRnZXNfbmVjZXNzYXJ5KTogSGFuZGxlCgllbXB0eSBiYXNpYyBibG9ja3MuCgkqIHRyZWUtc3NhLWRvbS5jIChuZWVkX2VoX2NsZWFudXApOiBOZXcuCgkodHJlZV9zc2FfZG9taW5hdG9yX29wdGltaXplKTogQWxsb2NhdGUgaXQuICBDbGVhbnVwIGVoIGVkZ2VzLgoJKG9wdGltaXplX3N0bXQpOiBDbGVhbnVwIGVoIHN0bXRzOyBzZXQgbmVlZF9laF9jbGVhbnVwLgoKMjAwNC0wNi0yOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IERvbid0IGFib3J0IHdpdGggemVybyBzaXplIHN0YWNrCglwYXJtIGZhaWxpbmcgdGhlIFBBUk1fQk9VTkRBUlkgY2hlY2suCgoyMDA0LTA2LTI4ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIGNvbW1vbi5vcHQgKGZ0cmVlLWZyZSk6IE5ldyBmbGFnLgoJKiBmbGFncy5oIChmbGFnX3RyZWVfZnJlKTogRGVjbGFyZS4KCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IFNldC4KCSogdGltZXZhci5kZWYgKFRWX1RSRUVfRlJFKTogRGVmaW5lLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKG1heV9wcm9wYWdhdGVfY29weSk6IFJlLWFycmFuZ2UgZm9yCglyZWFkYWJpbGl0eS4gIEhhbmRsZSBkZXN0aW5hdGlvbnMgdGhhdCBhcmUgbm90IFNTQV9OQU1Fcy4KCSogdHJlZS1mbG93LmggKHN0cnVjdCBwdHJfaW5mb19kZWYpOiBNb3ZlIGZyb20gdHJlZS5oCgkoY3Byb3BfaW50b19zdG10LCBjcHJvcF9pbnRvX3N1Y2Nlc3Nvcl9waGlzKTogUmVtb3ZlLgoJKHZuX2NvbXB1dGUsIHZuX2xvb2t1cF9vcl9hZGQsIHZuX2FkZCwgdm5fbG9va3VwKTogQWRkCgl2dXNlX29wdHlwZSBwYXJhbWV0ZXIuCgkqIHRyZWUtcGFzcy5oIChwYXNzX2ZyZSk6IERlY2xhcmUuCgkqIHRyZWUtc3NhLWNvcHkuYyAoY3Byb3Bfb3BlcmFuZCk6IE1vdmUgdG8gdHJlZS1zc2EtZG9tLmMKCShjcHJvcF9pbnRvX3N0bXQpOiBMaWtld2lzZS4KCShjcHJvcF9pbnRvX3N1Y2Nlc3Nvcl9waGlzKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWRvbS5jIChlbGltaW5hdGVfcmVkdW5kYW50X2NvbXB1dGF0aW9ucyk6IEZpeAoJYXJndW1lbnQgb3JkZXJpbmcgaW4gY2FsbCB0byBtYXlfcHJvcGFnYXRlX2NvcHkuCgkqIHRyZWUtc3NhLXByZS5jIChpc191bmRlZmluZWRfdmFsdWUpOiBBc3N1bWUgaGFyZCByZWdpc3RlcnMKCXRvIGJlIGFsd2F5cyBkZWZpbmVkLgoJKGFkZF90b19zZXRzKTogTmV3IGxvY2FsIGZ1bmN0aW9uLgoJKGNyZWF0ZV92YWx1ZV9leHByX2Zyb20pOiBOZXcgbG9jYWwgZnVuY3Rpb24uCgkoY29tcHV0ZV9hdmFpbCk6IENhbGwgdGhlbS4KCShlbGltaW5hdGUpOiBEb24ndCBpZ25vcmUgc3RhdGVtZW50cyB3aXRoIHZpcnR1YWwgb3BlcmFuZHMuCgkoaW5pdF9wcmUpOiBOZXcgbG9jYWwgZnVuY3Rpb24uCgkoZmluaV9wcmUpOiBOZXcgbG9jYWwgZnVuY3Rpb24uCgkoZXhlY3V0ZV9wcmUpOiBDYWxsIHRoZW0uCglBZGQgYXJndW1lbnQgRE9fRlJFLiAgRG9uJ3QgZG8gaW5zZXJ0aW9uIGlmIERPX0ZSRSBpcyB0cnVlLgoJKGRvX3ByZSk6IE5ldyBmdW5jdGlvbi4KCShkb19mcmUpOiBOZXcgZnVuY3Rpb24uCgkoZ2F0ZV9mcmUpOiBOZXcgZnVuY3Rpb24uCgkocGFzc19mcmUpOiBEZWNsYXJlLgoJKiB0cmVlLXNzYS5jIChpbml0X3RyZWVfc3NhKTogRG9uJ3QgY2FsbCB2bl9pbml0LgoJKGRlbGV0ZV90cmVlX3NzYSk6IERvbid0IGNhbGwgdm5fZGVsZXRlLgoJKiB0cmVlLXZuLmMgKHZhbF9leHByX3BhaXJfZCk6IEFkZCBkb2N1bWVudGF0aW9uLgoJKHZuX2NvbXB1dGUpOiBBZGQgVlVTRVMgYXJndW1lbnQgdG8gaW5jb3Jwb3JhdGUgaW4gY29tcHV0aW5nCgloYXNoIHZhbHVlcy4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCShleHByZXNzaW9uc19lcXVhbF9wKTogQ2FsbCBvcGVyYW5kX2VxdWFsX3Agd2l0aAoJT0VQX1BVUkVfU0FNRS4KCSh2bl9hZGQpOiBBZGQgVlVTRVMgYXJndW1lbnQuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkodm5fbG9va3VwKTogTGlrZXdpc2UuCgkodm5fbG9va3VwX29yX2FkZCk6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1mdHJlZS1mcmUgYW5kIC1mZHVtcC10cmVlLWZyZS4KCjIwMDQtMDYtMjggIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAobTMycl9zY2hlZF9vZGRfd29yZF9wLCBtMzJyX2FkanVzdF9jb3N0LAoJbTMycl9zY2hlZF9pbml0LCBtMzJyX3NjaGVkX3Jlb3JkZXIsIG0zMnJfdmFyaWFibGVfaXNzdWUpOiBSZW1vdmUuCgkoVEFSR0VUX1NDSEVEX0FESlVTVF9DT1NULCBUQVJHRVRfU0NIRURfVkFSSUFCTEVfSVNTVUUsCglUQVJHRVRfU0NIRURfSU5JVCwgVEFSR0VUX1NDSEVEX1JFT1JERVIpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy9tMzJyL20zMnIubWQ6IFJld3JpdGUgdGhlIHBpcGVsaW5lIGRlc2NyaXB0aW9uIGFzIGEgREZBLgoKMjAwNC0wNi0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuZGVmIChSRUFMUEFSVF9FWFBSLCBJTUFHUEFSVF9FWFBSKTogQ2hhbmdlIGNsYXNzIHRvICdyJy4KCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3AgPGNhc2UgJ3InPik6IEFkZCBSRUFMUEFSVF9FWFBSLAoJSU1BR1BBUlRfRVhQUi4KCSogdHJlZS1kdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBIYW5kbGUgUkVBTFBBUlRfRVhQUiBhbmQKCUlNQUdQQVJUX0VYUFIgZXhwbGljaXRseS4KCSogdHJlZS1pbmxpbmUuYyAoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBEb24ndCBoYW5kbGUgUkVBTFBBUlRfRVhQUgoJYW5kIElNQUdQQVJUX0VYUFIgc3BlY2lhbGx5LgoJKiB0cmVlLmMgKGJ1aWxkMV9zdGF0KTogQ29weSBUUkVFX1RISVNfVk9MQVRJTEUgaW50byBjbGFzcyAncicuCgoyMDA0LTA2LTI4ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGNvbmZpZy5nY2MgKHNoKi0qZWxmKik6IFJlbW92ZSBkZWFkIGFzc2lnbm1lbnQgb2Ygc2hfbXVsdGlsaWJzLgoKMjAwNC0wNi0yOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBidWlsdGlucy5kZWYgKGV4ZWNsLCBleGVjbHAsIGV4ZWNsZSwgZXhlY3YsIGV4ZWN2cCwgZXhlY3ZlLAoJZm9yayk6IENoYW5nZSB0byBERUZfRVhUX0xJQl9CVUlMVElOLgoKMjAwNC0wNi0yOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHBtZWQuYyAoZXhwYW5kX3Ntb2RfcG93Mik6IE5ldyBmdW5jdGlvbiB0byBleHBhbmQgc2lnbmVkCglyZW1haW5kZXIgYnkgYSBjb25zdGFudCBwb3dlciBvZiAyLCBzdWNoIGFzICJ4ICUgMTYiLgoJKGV4cGFuZF9kaXZtb2QpOiBDYWxsIG5ldyBleHBhbmRfc21vZF9wb3cyIHdoZW4gYXBwcm9wcmlhdGUuCglNaW5vciBjb3JyZWN0aW9ucyB0byBjb21tZW50cywgZS5nLiB3cmFwcGluZyBsb25nIGxpbmVzLgoKMjAwNC0wNi0yOCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogTWFrZWZpbGUuaW4gKHZlYy5vKTogRml4IGRlcGVuZGVuY2llcy4KCjIwMDQtMDYtMjggIEFuZHJlYXMgVG9ibGVyIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogTWFrZWZpbGUuaW46IEZpeCBwYXJhbGxlbCBtYWtlIGRlcGVuZGVuY3kgcHJvYmxlbSBvbiB2ZWMuby4KCjIwMDQtMDYtMjggIERoYW5hbmpheSBEZXNocGFuZGUgIDxkaGFuYW5qYXlkQGtwaXRjdW1taW5zLmNvbT4KCglQUiB0YXJnZXQvMTQwNDEKCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKEFTTV9PVVRQVVRfQUxJR05FRF9CU1MpOiBEZWZpbmUuCgoyMDA0LTA2LTI4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oICh0cmVlX2NoZWNrX2ZhaWxlZCk6IE1ha2UgdmFyYWRpYy4KCSh0cmVlX25vdF9jaGVja19mYWlsZWQpOiBOZXcgcHJvdG90eXBlLgoJKHRyZWVfY2hlY2syX2ZhaWxlZCwgdHJlZV9jaGVjazNfZmFpbGVkLAoJdHJlZV9jaGVjazRfZmFpbGVkLCB0cmVlX2NoZWNrNV9mYWlsZWQpOiBSZW1vdmUuCgkoVFJFRV9DSEVDSywgVFJFRV9DSEVDSzIsIFRSRUVfQ0hFQ0szLCBUUkVFX0NIRUNLNCwKCVRSRUVfQ0hFQ0s1KTogQWRqdXN0LgoJKFRSRUVfTk9UX0NIRUNLLCBUUkVFX05PVF9DSEVDSzIsIFRSRUVfTk9UX0NIRUNLMywgVFJFRV9OT1RfQ0hFQ0s0LAoJVFJFRV9OT1RfQ0hFQ0s1KTogTmV3LgoJKFRSRUVfVkVDX0VMVF9DSEVDSywgUEhJX05PREVfRUxUX0NIRUNLLCBUUkVFX09QRVJBTkRfQ0hFQ0tfQ09ERSwKCVRSRUVfUlRMX09QRVJBTkRfQ0hFQ0spOiBBZGp1c3QuCgkqIHRyZWUuYyAodHJlZV9jaGVja19mYWlsZWQpOiBNYWtlIHZhcmFkaWMuCgkodHJlZV9ub3RfY2hlY2tfZmFpbGVkKTogTmV3LgoJKHRyZWVfY2hlY2syX2ZhaWxlZCwgdHJlZV9jaGVjazNfZmFpbGVkLAoJdHJlZV9jaGVjazRfZmFpbGVkLCB0cmVlX2NoZWNrNV9mYWlsZWQpOiBSZW1vdmUuCgoyMDA0LTA2LTI4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb21iaW5lLmMgKGNhbl9jb21iaW5lX3ApOiBEbyBub3QgcHJldmVudCBidWlsZGluZyBpbnNucyB0aGF0IHVzZQoJYW5kIGNsb2JiZXIgdGhlIHNhbWUgZml4ZWQgaGFyZCByZWdpc3Rlci4KCShyZWdfZGVhZF9hdF9wKTogTGlrZXdpc2UuCgoyMDA0LTA2LTI4ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS1zcmEuYyAoaXNfc3JhX2NhbmRpZGF0ZV9yZWYpOiBSZW1vdmUgc2Vjb25kIGFyZzsgYWxsIGNhbGxlcnMKCWNoYW5nZWQuCgkoaXNfc3JhX2NhbmRpZGF0ZV9jb21wbGV4X3JlZik6IE5ldyBmdW5jdGlvbi4KCShzY2FsYXJpemVfbW9kaWZ5X2V4cHIpOiBDYWxsIGl0IGFuZCBjaGVjayBmb3IgTEhTIGFsc28uCgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2Z1bmN0aW9uX2RlY2xhcmF0aW9uKTogTmV3LgoJKGR1bXBfZ2VuZXJpY19ub2RlLCBjYXNlIEZVTkNUSU9OX1RZUEUpOiBDYWxsIGl0LgoJKGR1bXBfZ2VuZXJpY19ub2RlLCBjYXNlIFJFQ09SRF9UWVBFKTogRG9uJ3Qgb3V0cHV0IGR1cCBzZW1pY29sb24uCgkoZHVtcF9nZW5lcmljX25vZGUsIGNhc2UgREVDTF9FWFBSKTogTmV3IGNhc2UuCgkoZHVtcF9nZW5lcmljX25vZGUsIGNhc2UgUExBQ0VIT0xERVJfRVhQUik6IEhhbmRsZS4KCShwcmludF9kZWNsYXJhdGlvbik6IEhhbmRsZSB0eXBlIGFuZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgoJKiB0cmVlLW5lc3RlZC5jIChjcmVhdGVfdG1wX3Zhcl9mb3IpOiBBbGxvdyBBUlJBWV9UWVBFLgoJKGNvbnZlcnRfbm9ubG9jYWxfcmVmZXJlbmNlLCBjb252ZXJ0X2xvY2FsX3JlZmVyZW5jZSk6IFByb3Blcmx5Cgljb252ZXJ0IG5lc3Qgb2YgaGFuZGxlZCBjb21wb25lbnQgcmVmZXJlbmNlcy4KCjIwMDQtMDYtMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2ZWMuaCwgdmVjLmM6IE5ldywgdHlwZSBzYWZlIHZlY3RvciBBUEkuCgkqIE1ha2VmaWxlLmluIChPQkpTLWNvbW1vbik6IEFkZCB2ZWMuby4KCSh2ZWMubyk6IE5ldyB0YXJnZXQuCgkoZ2VuZ3R5cGUtbGV4Lm8pOiBEZXBlbmQgb24gdmVjLmguCgoyMDA0LTA2LTI4ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbmRfZXhwcl93aXRoX2NvbXBhcmlzb24pOiBBZGQgQVJHMQoJcGFyYW1ldGVyLiAgVXNlIGl0IGluc3RlYWQgb2YgQVJHMDAgdG8gcHJvZHVjZSB0aGUgcmVzdWx0LgoKMjAwNC0wNi0yOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oIChsZWdpdGltYXRlX2FkZHJlc3NfcCk6IERlY2xhcmUuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBOZXcuICBUZXN0IHRoYXQKCWluZGV4IGlzIGxlZ2l0aW1hdGUsIGNvbXBhcmVkIHdpdGggY29kZSBtb3ZlZCBmcm9tLi4uCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogaGVyZS4KCShSRUdfU1RSSUNUKTogRGVmaW5lLCBhY2NvcmRpbmcgdG8gUkVHX09LX1NUUklDVC4KCShSRUdOT19JTl9SQU5HRV9QLCBSRUdOT19EQVRBX1AsIFJFR05PX0FERFJFU1NfUCwgUkVHTk9fU1BfUCwKCVJFR05PX0VYVEVOREVEX1AsIFJFR05PX0FNMzNfUCwgUkVHTk9fRlBfUCk6IEludHJvZHVjZSBzdHJpY3QKCWFyZ3VtZW50LgoJKFJFR05PX1NUUklDVF9PS19GT1JfQkFTRV9QLCBSRUdOT19TVFJJQ1RfT0tfRk9SX0JJVF9CQVNFX1AsCglSRUdOT19TVFJJQ1RfT0tfRk9SX0lOREVYX1ApOiBOZXcuCgkoUkVHTk9fT0tfRk9SX0JBU0VfUCwgUkVHX09LX0ZPUl9CQVNFX1AsIFJFR05PX09LX0ZPUl9CSVRfQkFTRV9QLAoJUkVHX09LX0ZPUl9CSVRfQkFTRV9QLCBSRUdOT19PS19GT1JfSU5ERVhfUCwgUkVHX09LX0ZPUl9JTkRFWF9QLAoJUlRYX09LX0ZPUl9CQVNFX1ApOiBVc2UgdGhlbS4KCjIwMDQtMDYtMjggIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZG9jL2NmZy50ZXhpIChCYXNpYyBCbG9ja3MpOiBEZWZpbmUgZG9taW5hdG9ycy4KCjIwMDQtMDYtMjcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMrKy8xNjIwNQoJKiBjLWNvbW1vbi5jICh3YXJuX2Zvcl9jb2xsaXNpb25zXzEpOiBXYXJuIGZvciBvbmx5IGRlY2xzIHdoaWNoCgloYXZlIGEgbmFtZS4KCglQUiBjKysvMTUxNDUKCSogYy5vcHQgKFdzZXF1ZW5jZS1wb2ludCk6IEVuYWJsZSBmb3IgQysrIGFuZCBPYmpDKysuCgoJUFIgYy8xNDk2MwoJKiBjLWRlY2wuYyAoc3RhcnRfZGVjbCk6IENoZWNrIGZvciBudWxsIHR5cGVzLgoKMjAwNC0wNi0yNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCk6CglBY2NlcHQgVE9DIGFkZHJlc3Nlcy4KCjIwMDQtMDYtMjcgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfbG9hZF9nb3QpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIG1lbWJlciBiYXNlX3JlZy4KCShzMzkwX2RlY29tcG9zZV9hZGRyZXNzKTogQWNjZXB0IFVOU1BFQ19MVFJFRi4gIFNpbXBsaWZ5IGxvZ2ljLgoJKHMzOTBfc3BsaXRfYnJhbmNoZXMpOiBBbm5vdGF0ZSBsYXRlIHBvb2wgcmVmZXJlbmNlcy4KCShhbm5vdGF0ZV9jb25zdGFudF9wb29sX3JlZnMpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9jb25zdGFudF9wb29sX3JlZik6IFdvcmsgb24gYW5ub3RhdGVkIHBvb2wgcmVmZXJlbmNlcy4KCShyZXBsYWNlX2NvbnN0YW50X3Bvb2xfcmVmKTogTGlrZXdpc2UuICBVc2UgZXhwbGljaXQgYmFzZS4KCShyZXBsYWNlX2x0cmVsX2Jhc2UpOiBVc2UgZXhwbGljaXQgYmFzZS4KCShzMzkwX21haW5wb29sX3N0YXJ0KTogUmVmbGVjdCBtYWluX3Bvb2wgcGF0dGVybiBjaGFuZ2UuCgkoczM5MF9tYWlucG9vbF9maW5pc2gpOiBVc2UgYmFzZSByZWdpc3RlciBmcm9tIG1haW5fcG9vbC4KCVVwZGF0ZSBjYWxscyB0byByZXBsYWNlX2x0cmVsX2Jhc2UgYW5kIHJlcGxhY2VfY29uc3RhbnRfcG9vbF9yZWYuCgkoczM5MF9jaHVua2lmeV9zdGFydCk6IFVzZSBiYXNlX3JlZyBmcm9tIHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uLgoJKHMzOTBfY2h1bmtpZnlfZmluaXNoKTogUmVtb3ZlIGJhc2VfcmVnIGFyZ3VtZW50LiAgVXBkYXRlIGNhbGxzCgl0byByZXBsYWNlX2x0cmVsX2Jhc2UgYW5kIHJlcGxhY2VfY29uc3RhbnRfcG9vbF9yZWYuCgkoczM5MF9yZW9yZyk6IERvbid0IGRlY2lkZSB1cG9uIGJhc2UgcmVnaXN0ZXIuICBVcGRhdGUgY2FsbHMuCgkoczM5MF9sb2FkX2dvdCk6IFJlbW92ZSBNQVlCRV9ERUFEIGhhbmRsaW5nLiAgRG8gbm90IGVtaXQgaW5zbnMKCWJ1dCByZXR1cm4gc2VxdWVuY2UgaW5zdGVhZC4KCShzMzkwX2VtaXRfcHJvbG9ndWUpOiBEZWNpZGUgdXBvbiBiYXNlIHJlZ2lzdGVyIHRvIHVzZS4gIEFubm90YXRlCglhbGwgbGl0ZXJhbCBwb29sIHJlZmVyZW5jZXMuICBBZGFwdCB0byBtYWluX3Bvb2wgcGF0dGVybiBjaGFuZ2UuCglVcGRhdGUgczM5MF9sb2FkX2dvdCBjYWxsOyBtb3ZlIE1BWUJFX0RFQUQgaGFuZGxpbmcgaGVyZS4KCShzMzkwX2VtaXRfZXBpbG9ndWUpOiBBbm5vdGF0ZSBsYXRlIGxpdGVyYWwgcG9vbCByZWZlcmVuY2VzLgoJUmVtb3ZlIGJhcnJpZXIgYmVmb3JlIHJlZ2lzdGVyIHJlc3RvcmUgaW5zdHJ1Y3Rpb24uCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKFVOU1BFQ19MVFJFRik6IE5ldyBjb25zdGFudC4KCSgiYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIiKTogVXBkYXRlIHMzOTBfbG9hZF9nb3QgY2FsbC4KCSgibWFpbl9wb29sIik6IEV4cGxpY2l0bHkgcmVmZXJlbmNlIGJhc2UgcmVnaXN0ZXIuCgoyMDA0LTA2LTI3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgPEJJVF9JT1JfRVhQUj46IE9wdGltaXplIH5YfFggYW5kIFh8flggYXMgLTEuCgk8QklUX1hPUl9FWFBSPjogT3B0aW1pemUgflh8WCBhbmQgWHx+WCBhcyAtMS4KCTxCSVRfQU5EX0VYUFI+OiBPcHRpbWl6ZSB+WCZYIGFuZCBYJn5YIGFzIDAuCgk8VFJVVEhfQU5EX0VYUFIsIFRSVVRIX0FORElGX0VYUFI+OiBPcHRpbWl6ZSAhWCYmWCBhbmQgWCYmIVggYXMgZmFsc2UuCgk8VFJVVEhfT1JfRVhQUiwgVFJVVEhfT1JJRl9FWFBSPjogT3B0aW1pemUgIVh8fFggYW5kICFYfHxYIGFzIHRydWUuCgk8VFJVVEhfWE9SX0VYUFI+OiBPcHRpbWl6ZSAhWF5YIGFuZCBYXlghIGFzIHRydWUuICBOb3cgdGhhdAoJVFJVVEhfWE9SX0VYUFIgaXMgYSBjb21tdXRhdGl2ZSB0cmVlIGNvZGUsIGRvbid0IHRlc3Qgd2hldGhlciBhcmcwCglpcyBhIGNvbnN0YW50LgoKMjAwNC0wNi0yNiAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGMtY29tbW9uLmMgKGNfc2FmZV9mcm9tX3AsIGNfd2Fsa19zdWJ0cmVlcyk6IERlbGV0ZWQuCgkqIGMtY29tbW9uLmRlZiAoREVDTF9TVE1UKTogUmVtb3ZlLgoJKiBjLWNvbW1vbi5oIChERUNMX1NUTVRfREVDTCk6IERlbGV0ZWQuCgkoQ09NUE9VTlRfTElURVJBTF9FWFBSX0RFQ0wpOiBVc2UgREVDTF9FWFBSX0RFQ0wuCgkoY19zYWZlX2Zyb21fcCwgY193YWxrX3N1YnRyZWVzKTogRGVsZXRlZC4KCSogYy1kZWNsLmMsIGMtcGFyc2UuaW4sIGMtcHJldHR5LXByaW50LmM6IERFQ0xfU1RNVCBub3cgREVDTF9FWFBSLgoJKiBjLWR1bXAuYyAoY19kdW1wX3RyZWUsIGNhc2UgREVDTF9TVE1UKTogRGVsZXRlZC4KCSogYy1naW1wbGlmeS5jIChnaW1wbGlmeV9kZWNsX3N0bXQpOiBEZWxldGVkLgoJKGdpbXBsaWZ5X2NvbXBvdW5kX2xpdGVyYWxfZXhwcik6IFVzZSBERUNMX0VYUFJfREVDTAoJYW5kIGdpbXBsaWZ5X2FuZF9hZGQuCgkoY19naW1wbGlmeV9leHByLCBjYXNlIERFQ0xfRVhQUik6IE5ldyBjYXNlLgoJKGNfZ2ltcGxpZnlfZXhwciwgY2FzZSBERUNMX1NUTVQpOiBEZWxldGVkLgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19TQUZFX0ZST01fUCk6IExpa2V3aXNlLgoJKExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19XQUxLX1NVQlRSRUVTKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoc2FmZV9mcm9tX3AsIGNhc2UgJ3MnKTogTmV3IGNhc2UuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2RlY2xfZXhwcik6IE5ldyBmdW5jdGlvbi4KCShnaW1wbGlmeV9leHByLCBjYXNlIERFQ0xfRVhQUik6IE5ldyBjYXNlLgoJKiB0cmVlLWlubGluZS5jICh3YWxrX3RyZWUpOiBXYWxrIGludG8gYWxsIGZpZWxkcyBvZiBhIHR5cGUgYW5kCglkZWNsIG9ubHkgaWYgdGhleSBhcmUgaW4gYSBERUNMX0VYUFIuCgkobWFya19sb2NhbF9mb3JfcmVtYXBfcik6IE1pbm9yIGNvZGUgY2xlYW51cC4KCSogdHJlZS1vdXRvZi1zc2EuYyAoZGlzY292ZXJfbm9uY29uc3RhbnRfYXJyYXlfcmVmc19yKTogQWRkIGVsc2UuCgkqIHRyZWUuYyAoaGFzX2NsZWFudXBzLCBjYXNlIERFQ0xfRVhQUik6IE5ldyBjYXNlLgoJKiB0cmVlLmRlZiAoREVDTF9FWFBSKTogTmV3IGNvZGUuCgkqIHRyZWUuaCAoREVDTF9FWFBSX0RFQ0wpOiBOZXcgbWFjcm8uCgoJKiBvYmpjL29iamMtbGFuZy5jIChMQU5HX0hPT0tTX1NBRkVfRlJPTV9QKTogRGVsZXRlZC4KCjIwMDQtMDYtMjYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIDEzMzM0CgkqIGRvYy9pbnN0YWxsLnRleGk6IERvY3VtZW50IG5vbi1zdGFuZGFyZCBDRkxBR1MgYW5kIGJvb3RzdHJhcAoJZmFpbHVyZXMgYW5kIHdhcm5pbmdzLgoKMjAwNC0wNi0yNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBlbWl0LXJ0bC5jIChzZXRfbWVtX2F0dHJpYnV0ZXNfbWludXNfYml0cG9zKTogQ2hlY2sKCVRSRUVfVEhJU19OT1RSQVAgd2hlbiBzZXR0aW5nIE1FTV9OT1RSQVBfUC4KCSogdHJlZS1laC5jICh0cmVlX2NvdWxkX3RyYXBfcCk6IENoZWNrIFRSRUVfVEhJU19OT1RSQVAuCgkqIHRyZWUuaCAoVFJFRV9USElTX05PVFJBUCk6IE5ldy4KCjIwMDQtMDYtMjYgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogZ2VuYXR0cnRhYi5jICh3cml0ZV90ZXN0X2V4cHIpOiBQdXQgYSB1bnNpZ25lZCBjYXN0IGJlZm9yZQoJdGhlIGZpcnN0IG9wZXJhbmQgZm9yIEdFVSwgR1RVLCBMRVUgYW5kIExUVS4KCjIwMDQtMDYtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLXR5cGVjay5jLCBjZmdleHBhbmQuYywgZGRnLmMsIGRkZy5oLCBkZi5jLCBmb2xkLWNvbnN0LmMsCglnY292LmMsIGdpbXBsaWZ5LmMsIG1vZHVsby1zY2hlZC5jLCBwYXNzZXMuYywgdHJlZS1jZmcuYywKCXRyZWUtbXVkZmxhcC5jLCB0cmVlLW5ydi5jLCB0cmVlLW91dG9mLXNzYS5jLCB0cmVlLXNzYS1kb20uYywKCXRyZWUtc3NhLWRzZS5jLCB0cmVlLXNzYS1vcGVyYW5kcy5jLCB0cmVlLXNzYS1wcmUuYywKCXRyZWUtdGFpbGNhbGwuYzogRml4IGNvbW1lbnQgdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcKCWNvbnZlbnRpb25zLgoKMjAwNC0wNi0yNSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBBZGQgYmFjayBzY2hlZHVsaW5nIGV4Y2x1c2lvbiBpbmZvLgoKMjAwNC0wNi0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBpZmN2dC5jIChzZXFfY29udGFpbnNfanVtcCk6IERlbGV0ZSBmdW5jdGlvbi4KCShlbmRfaWZjdnRfc2VxdWVuY2UpOiBSZXBsYWNlIGNhbGwgdG8gc2VxX2NvbnRhaW5zX2p1bXAgd2l0aCBhbgoJaW5saW5lIHRlc3QgZm9yIGEganVtcCBpbnN0cnVjdGlvbiBpbiB0aGUgZXhpc3RpbmcgImluc24iIGxvb3AuCgkoYmxvY2tfZmFsbHRocnUpOiBEb2N1bWVudCBmdW5jdGlvbi4KCjIwMDQtMDYtMjUgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJUFIgd3JvbmctY29kZS8xNTA4OQoJKiBsb29wLmMgKHNjYW5fbG9vcCk6IERvIG5vdCBtb3ZlIHVzZXItc3BlY2lmaWVkIHJlZ2lzdGVyCglhc3NpZ25tZW50cy4KCjIwMDQtMDYtMjUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogYy1jb21tb24uaCAod2Fybl9jYXN0X3F1YWwsIHdhcm5fbWlzc2luZ19mb3JtYXRfYXR0cmlidXRlLAoJd2Fybl9wb2ludGVyX2FyaXRoLCB3YXJuX21pc3NpbmdfcHJvdG90eXBlcywgd2Fybl9wYXJlbnRoZXNlcywKCXdhcm5fbWlzc2luZ19icmFjZXMsIHdhcm5fc2lnbl9jb21wYXJlLCB3YXJuX2xvbmdfbG9uZywKCXdhcm5fcmVkdW5kYW50X2RlY2xzLCB3YXJuX2Zsb2F0X2VxdWFsLCB3YXJuX2NoYXJfc3Vic2NyaXB0cywKCXdhcm5fY29udmVyc2lvbiwgd2Fybl9mb3JtYXRfeTJrLCB3YXJuX2Zvcm1hdF9leHRyYV9hcmdzLAoJd2Fybl9mb3JtYXRfemVyb19sZW5ndGgsIHdhcm5fZm9ybWF0X25vbmxpdGVyYWwsCgl3YXJuX2Zvcm1hdF9zZWN1cml0eSwgbWVzZ19pbXBsaWNpdF9mdW5jdGlvbl9kZWNsYXJhdGlvbiwKCXdhcm5fYmFkX2Z1bmN0aW9uX2Nhc3QsIHdhcm5fdHJhZGl0aW9uYWwsCgl3YXJuX2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudCwgd2Fybl9zdHJpY3RfcHJvdG90eXBlcywKCXdhcm5fbWlzc2luZ19kZWNsYXJhdGlvbnMsIHdhcm5fbmVzdGVkX2V4dGVybnMsCgl3YXJuX3NlcXVlbmNlX3BvaW50LCB3YXJuX2luaXRfc2VsZiwgd2Fybl9kaXZfYnlfemVybywKCXdhcm5faW1wbGljaXRfaW50LCB3YXJuX25vbm51bGwsIHdhcm5fb2xkX3N0eWxlX2RlZmluaXRpb24sCgl3YXJuX3NlbGVjdG9yLCB3YXJuX3VuZGVjbGFyZWRfc2VsZWN0b3IsIHdhcm5fcHJvdG9jb2wsCgl3YXJuX2FiaSwgd2Fybl9pbnZhbGlkX29mZnNldG9mLCB3YXJuX2N0b3JfZHRvcl9wcml2YWN5LAoJd2Fybl9vdmVybG9hZGVkX3ZpcnR1YWwsIHdhcm5fbm9udmR0b3IsIHdhcm5fcmVvcmRlciwKCXdhcm5fc3ludGgsIHdhcm5fcG1mMnB0ciwgd2Fybl9lY3BwLCB3YXJuX3NpZ25fcHJvbW8sCgl3YXJuX29sZF9zdHlsZV9jYXN0LCB3YXJuX25vbnRlbXBsYXRlX2ZyaWVuZCwKCXdhcm5fZGVwcmVjYXRlZCk6IFJlbW92ZSBleHBsaWNpdCBkZWNsYXJhdGlvbnMuCgkqIGMtY29tbW9uLmM6IExpa2V3aXNlLCByZW1vdmUgZXhwbGljaXQgZGVmaW5pdGlvbnMuCgkqIGMtb3B0cy5jOiBMaWtld2lzZSwgcmVtb3ZlIGV4cGxpY2l0IGFzc2lnbm1lbnRzLgoJKiBjLm9wdHM6IExpa2V3aXNlLCBhZGQgaW1wbGljaXQgZGVjbGFyZS9kZWZpbmUvYXNzaWduLgoKMjAwNC0wNi0yNSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGdpbXBsaWZ5LmMgKGxvb2t1cF90bXBfdmFyKTogU2V0IFRSRUVfUkVBRE9OTFkgaW4gaXNfZm9ybWFsIGNhc2UuCgkoYnVpbGRfYWRkcl9leHByX3dpdGhfdHlwZSk6IERlbGV0ZWQuCgkoYnVpbGRfYWRkcl9leHByKTogRGVsZXRlZDsgY2FsbGVycyBjaGFuZ2VkIHRvIGJ1aWxkX2ZvbGRfYWRkcl9leHByLgoJKGdpbXBsaWZ5X2NvbXBvdW5kX2x2YWwpOiBNYWtlIHR3byBwYXNzZXMgb3ZlciByZWZlcmVuY2UgbmVzdC4KCgkqIHRyZWUtbmVzdGVkLmMgKGJ1aWxkX2FkZHIpOiBNZXJnZSByZWFsL2ltYWdwYXJ0IHdpdGgKCWhhbmRsZWRfY29tcG9uZW50X3AuCgkoY29udmVydF9ub25sb2NhbF9yZWZlcmVuY2UsIGNvbnZlcnRfbG9jYWxfcmVmZXJlbmNlKTogUHJvY2VzcyBleHRyYQoJYXJncyB0byBDT01QT05FTlRfUkVGIGFuZCBBUlJBWV9SRUYuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKGRpc2NvdmVyX25vbmNvbnN0YW50X2FycmF5X3JlZnNfcik6IENoZWNrIGZvcgoJbG93ZXIgYm91bmQgYW5kIGZpZWxkIG9mZnNldCBiZWluZyBjb25zdGFudC4KCjIwMDQtMDYtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgd3JvbmctY29kZS8xNjEyOQoJKiBhbGlhcy5jIChnZXRfYWxpYXNfc2V0KTogQWRqdXN0IHNldHRpbmcgb2YKCURFQ0xfUE9JTlRFUl9BTElBU19TRVQgZm9yIHBvaW50ZXJzIHRvIGFnZ3JlZ2F0ZXMuCgoyMDA0LTA2LTI0ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS1pbmxpbmUuYyAocmVtYXBfdHlwZSk6IEFycmFuZ2UgdG8gaGF2ZSBqdXN0IG9uZSBwb2ludGVyIHR5cGUKCWZvciBlYWNoIHR5cGUsIG1vZGUsIGFuZCAnY2FuIGFsaWFzJyB2YWx1ZS4KCShzZXR1cF9vbmVfcGFyYW1ldGVyKTogUmVtYXAgdHlwZSB3aGVuIG1ha2luZyBWQVJfREVDTCBmb3IgUEFSTV9ERUNMLgoJKGVzdGltYXRlX251bV9pbnNuc18xKTogTWlub3IgY29kZSByZWZvcm1hdHRpbmcuCgkoaW5saW5lX2ZvcmJpZGRlbl9wXzEpOiBMaWtld2lzZTsgYWRkOyBtaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQuCgoyMDA0LTA2LTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzE1ODI1CgkqIGlmY3Z0LmMgKHVuc2hhcmVfaWZjdnRfc2VxdWVuY2UpOiBSZW5hbWUgdG8gZW5kX2lmY3Z0X3NlcXVlbmNlLgoJVXNlIGdldF9pc25zIGFuZCBlbmRfc2VxdWVuY2UgaW5zdGVhZCBvZiBhY2NlcHRpbmcgYSBzZXEgYXJndW1lbnQuCglTY2FuIHRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSBmb3IgdW5yZWNvZ25pemFibGUgb3IganVtcCBpbnNucy4KCShub2NlX3RyeV9tb3ZlLCBub2NlX3RyeV9zdG9yZV9mbGFnLCBub2NlX3RyeV9zdG9yZV9mbGFnX2NvbnN0YW50cywKCW5vY2VfdHJ5X2FkZGNjLCBub2NlX3RyeV9zdG9yZV9mbGFnX21hc2ssIG5vY2VfdHJ5X2Ntb3ZlLAoJbm9jZV90cnlfY21vdmVfYXJpdGgsIG5vY2VfdHJ5X21pbm1heCwgbm9jZV90cnlfYWJzLAoJbm9jZV90cnlfc2lnbl9tYXNrKTogVXNlIGVuZF9pZmN2dF9zZXF1ZW5jZSB0byBmYWN0b3IgY29tbW9uIGNvZGUuCgoyMDA0LTA2LTI0ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfY29tcG91bmRfbHZhbCk6IFJlc2V0IFRSRUVfU0lERV9FRkZFQ1RTCglhZnRlciBnaW1wbGlmeWluZyB0aGUgaW5uZXJtb3N0IGNvbXBvbmVudC4KCjIwMDQtMDYtMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTYxNzYKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2V4cGFuZF91bmFsaWduZWRfbG9hZCk6IFVzZSBhIHRlbXBvcmFyeQoJcmVnaXN0ZXIgZm9yIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgbHdsIG9yIGxkbC4KCjIwMDQtMDYtMjUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLWRmYS5jIChnZXRfdmlydHVhbF92YXIpOiBNZXJnZSByZWFsL2ltYWdpbmFyeSBwYXJ0cyB3aXRoCgloYW5kbGVkX2NvbXBvbmVudF9wIGhhbmRsaW5nLgoJKiB0cmVlLWdpbXBsZS5jIChnZXRfYmFzZV9hZGRyZXNzKTogTGlrZXdpc2UgYW5kIGZpeCB0eXBvIHRoYXQKCWNhdXNlZCBib3RoIHJlY3Vyc2lvbiBhbmQgbG9vcGluZy4KCgkqIHRyZWUtY2ZnLmMgKHZlcmlmeV9leHByKTogQWRkIG1hY3JvIENIRUNLX09LLgoJUHJvcGVybHkgdGVzdCBmb3IgbmVzdCBvZiBoYW5kbGVkX2NvbXBvbmVudHMgaW4gTEhTIGNvbnRleHQuCgoyMDA0LTA2LTI1ICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogZG9jL3RyZWUtc3NhLnRleGk6IERvY3VtZW50IGluZm8gYWJvdXQgTU9ESUZZX0VYUFIncyB0eXBlCgoyMDA0LTA2LTI1ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfQ1hYX0dVQVJEX1RZUEUsIFRBUkdFVF9DWFhfR1VBUkRfTUFTS19CSVQsCglUQVJHRVRfQ1hYKTogRGVmaW5lLgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IFVzZSBUQVJHRVRfQ1hYLgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBBZGQgc3RydWN0IGN4eC4KCSogdGFyZ2hvb2tzLmggKGRlZmF1bHRfY3h4X2d1YXJkX3R5cGUpOiBBZGQgcHJvdG90eXBlLgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9jeHhfZ3VhcmRfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2FybS9hcm0uYyAoVEFSR0VUX0NYWF9HVUFSRF9UWVBFLCBUQVJHRVRfQ1hYX0dVQVJEX01BU0tfQklUKToKCURlZmluZS4KCShhcm1fY3h4X2d1YXJkX3R5cGUsIGFybV9jeHhfZ3VhcmRfbWFza19iaXQpOiBOZXcgZnVuY3Rpb25zLgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgVEFSR0VUX0NYWF9HVUFSRF9UWVBFIGFuZAoJVEFSR0VUX0NYWF9HVUFSRF9NQVNLX0JJVC4KCjIwMDQtMDYtMjUgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChDQzFfU1BFQyk6IEhhbmRsZSAtZ3VzZWQgYW5kIC1nZnVsbC4KCSogY29uZmlnL2kzODYvZGFyd2luLmggKENDMV9TUEVDKTogU2FtZS4KCjIwMDQtMDYtMjUgIE1hcmsgRy4gQWRhbXMgIDxtYXJrLmcuYWRhbXNAc3ltcGF0aWNvLmNhPgoKCSogZGJ4b3V0Lmg6IEFkZCBpbmNsdWRlIGd1YXJkcwoKMjAwNC0wNi0yNSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9fQVJNX0VBQklfXy4KCjIwMDQtMDYtMjUgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFybV9hcmNoNHQpOiBOZXcgdmFyaWFibGUuCgkoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFsaXplIGl0LiAgSWYgY29tcGlsaW5nIGZvciBhcm12NSBvcgoJaGlnaGVyIGNsZWFyIFRBUkdFVF9JTlRFUldPUksuCgkob3V0cHV0X2NhbGwpOiBBYm9ydCBpZiBjYWxsZWQgZm9yIGFybXY1LiAgVXNlIEJYIGlmIGl0J3MgYXZhaWxhYmxlLgoJKG91dHB1dF9jYWxsX21lbSk6IFVzZSBCTFggaWYgYXZhaWxhYmxlIGFuZCBlbnN1cmUgdGhhdCBhbGwgYXJtdjUKCWNvZGUgaXMgaW50ZXJ3b3JraW5nIHNhZmUuCgkob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbik6IEFsd2F5cyB1c2UgQlggaW4gcHJlZmVyZW5jZSB0byBNT1YgaWYKCWl0J3MgYXZhaWxhYmxlLgoJKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShhcm1fZmluYWxfcHJlc2Nhbl9pbnNuKTogTmV2ZXIgY29uZGl0aW9uYWxseSBjYWxsIGEgc3Vicm91dGluZQoJb24gYXJtdjUuCgkqIGFybS5oIChhcm1fYXJjaDR0KTogRGVjbGFyZS4KCSogYXJtLm1kIChjYWxsX3JlZ19hcm12NSwgY2FsbF92YWx1ZV9yZWdfYXJtdjUpOiBOZXcuCgkoY2FsbF9yZWdfYXJtLCBjYWxsX3ZhbHVlX3JlZ19hcm0pOiBSZW5hbWVkIGZyb20gY2FsbF9yZWcgYW5kCgljYWxsX3ZhbHVlX3JlZyByZXNwZWN0aXZlbHkuCgkoY2FsbF9yZWdfdGh1bWJfdjUsIGNhbGxfdmFsdWVfcmVnX3RodW1iX3Y1KTogTmV3LgoJKGNhbGxfcmVnX3RodW1iLCBjYWxsX3ZhbHVlX3JlZ190aHVtYik6IFJlbmFtZWQgZnJvbSBjYWxsX2luZGlyZWN0CglhbmQgY2FsbF92YWx1ZV9pbmRpcmVjdCByZXNwZWN0aXZlbHkuCgoyMDA0LTA2LTI1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKHJlZ19vcl9jb25zdF9mbG9hdF8xX29wZXJhbmQpOiBSZWltcGxlbWVudAoJaW4gdGVybXMgb2YgY29uc3RfZmxvYXRfMV9vcGVyYW5kLgoKMjAwNC0wNi0yNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNjE0NAoJKiBjb25maWcvbWlwcy9taXBzLm1kIChkaXZzZiwgZGl2ZGYpOiBEb24ndCBGQUlMIGlmIHRoZSBmaXJzdCBvcGVyYW5kCglpcyAxLjA7IGZvcmNlIGl0IGludG8gYSByZWdpc3RlciBpbnN0ZWFkLgoKMjAwNC0wNi0yNSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oOiBSZXN0b3JlIHZhbGlkIGNvbW1lbnQgcmVtb3ZlZCBieSBtaXN0YWtlIHdpdGgKCXRoZSByZWNlbnQgbTY4ayBjb21tZW50cyBjbGVhbnVwLgoKMjAwNC0wNi0yNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGMtZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfZm9yX3N0bXQpOiBVc2UgZ2ltcGxpZnlfYW5kX2FkZC4KCSogZ2ltcGxpZnkuYyAoaW50ZXJuYWxfZ2V0X3RtcF92YXIsIGdpbXBsaWZ5X3JldHVybl9leHByKTogTGlrZXdpc2UuCgkoZ2ltcGxpZnlfbG9vcF9leHByLCBnaW1wbGlmeV9pbml0X2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkoZ2ltcGxpZnlfc2VsZl9tb2RfZXhwciwgZ2ltcGxpZnlfY29uZF9leHByKTogTGlrZXdpc2UuCgoJUFIvMTYxMzEKCSogZ2ltcGxpZnkuYyAodm9pZGlmeV93cmFwcGVyX2V4cHIpOiBBbGxvdyBUQVJHRVRfRVhQUi4KCgkqIGdpbXBsaWZ5LmM6IFJlbW92ZSB1bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KCgkqIGdpbXBsaWZ5LmMgKGFwcGVuZF90b19jb21wb3VuZF9leHByKTogRGVsZXRlZC4KCSogdHJlZS1naW1wbGUuaCAoYXBwZW5kX3RvX2NvbXBvdW5kX2V4cHIpOiBEZWxldGVkLgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2FkZHJfZXhwcl93aXRoX3R5cGUpOiBMb29rIHRocm91Z2ggYWxsCgl2YWxpZCBMSFMgbW9kaWZpZXJzIHRvIGZpbmQgYSBiYXNlIHRvIG1hcmsgYWRkcmVzc2FibGUuCgoJKiB0cmVlLmggKGRlYnVnX2ZpbmRfdHJlZSk6IEFkZCBkZWNsYXJhdGlvbi4KCSogdHJlZS1pbmxpbmUuYyAoZGVidWdfZmluZF90cmVlKTogUmVtb3ZlIGV4dGVybiBkZWNsYXJhdGlvbi4KCjIwMDQtMDYtMjQgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IEFwcGx5IGNoYW5nZSBtaXN0YWtlbmx5CglkZWxldGVkIHdpdGggMjAwNC0wNi0yMiBwYXRjaC4KCjIwMDQtMDYtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoY19pbl9pdGVyYXRpb25fc3RtdCwgY19pbl9jYXNlX3N0bXQpOiBSZW1vdmUuCgkoY19icmVha19sYWJlbCwgY19jb250X2xhYmVsKTogTmV3LgoJKHN0YXJ0X2Z1bmN0aW9uKTogVXBkYXRlIGluaXRpYWxpemF0aW9ucy4KCShjX3B1c2hfZnVuY3Rpb25fY29udGV4dCk6IFVwZGF0ZSBzYXZlcy4KCShjX3BvcF9mdW5jdGlvbl9jb250ZXh0KTogVXBkYXRlIHJlc3RvcmVzLgoJKiBjLXBhcnNlLmluOiBVcGRhdGUgZXhwZWN0ZWQgY29uZmxpY3RzLgoJKHN0bXRfY291bnQsIGNvbXBzdG10X2NvdW50KTogUmVtb3ZlLiAgUmVtb3ZlIGFsbCB1cGRhdGVzLgoJKGlmX3ByZWZpeCwgc2ltcGxlX2lmLCBkb19zdG10X3N0YXJ0KTogUmVtb3ZlLgoJKGxpbmVub19sYWJlbGVkX3N0bXQpOiBSZW1vdmUuCgkobGluZW5vX2xhYmVscyk6IE5ldy4KCShjOTlfYmxvY2tfbGluZW5vX2xhYmVsZWRfc3RtdCk6IFVzZSBpdC4KCShsaW5lbm9fc3RtdCwgbGluZW5vX2xhYmVsKTogRG9uJ3QgY2xlYXIgRVhQUl9MT0NVUyBiZWZvcmUgY2FsbGluZwoJYW5ub3RhdGVfd2l0aF9sb2N1cy4KCShzZWxlY3Rfb3JfaXRlcl9zdG10KTogUmVwbGFjZSBieSAuLi4KCShjb25kaXRpb24sIGlmX3N0YXRlbWVudF8xLCBpZl9zdGF0ZW1lbnRfMiwgaWZfc3RhdGVtZW50LAoJc3RhcnRfYnJlYWssIHN0YXJ0X2NvbnRpbnVlLCB3aGlsZV9zdGF0ZW1lbnQsIGRvX3N0YXRlbWVudCwKCWZvcl9jb25kX2V4cHIsIGZvcl9pbmNyX2V4cHIsIGZvcl9zdGF0ZW1lbnQsIHN3aXRjaF9zdGF0ZW1lbnQpOiBOZXcuCgkoc3RtdCk6IFNwbGl0IG91dCAuLi4KCShzdG10X25vY29tcCk6IC4uLiB0aGlzLiAgVXNlIGNfZmluaXNoX2JjX3N0bXQsIGNfZmluaXNoX2dvdG9fbGFiZWwsCgljX2ZpbmlzaF9nb3RvX3B0ci4KCSogYy1zZW1hbnRpY3MuYyAoYWRkX3N0bXQpOiBEb24ndCBhZGQgbGluZSBudW1iZXJzIHRvIGxhYmVscy4KCSogYy10cmVlLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IFJlbW92ZSB4X2luX2l0ZXJhdGlvbl9zdG10LCB4X2luX2Nhc2Vfc3RtdDsKCWFkZCB4X2JyZWFrX2xhYmVsLCB4X2NvbnRfbGFiZWwsIHhfc3dpdGNoX3N0YWNrLgoJKGNfc3dpdGNoX3N0YWNrKTogRGVjbGFyZS4KCSogYy10eXBlY2suYyAoY19maW5pc2hfZ290b19sYWJlbCwgY19maW5pc2hfZ290b19wdHIpOiBOZXcuCgkoY19maW5pc2hfcmV0dXJuKTogUmV0dXJuIHRoZSBzdGF0ZW1lbnQuCgkoY19zd2l0Y2hfc3RhY2spOiBSZW5hbWUgZnJvbSBzd2l0Y2hfc3RhY2s7IGV4cG9ydC4KCShpZl9lbHQsIGlmX3N0YWNrLCBpZl9zdGFja19zcGFjZSwgaWZfc3RhY2tfcG9pbnRlcik6IFJlbW92ZS4KCShjX2JlZ2luX2lmX3N0bXQsIGNfZmluaXNoX2lmX2NvbmQsIGNfZmluaXNoX3RoZW4sIGNfYmVnaW5fZWxzZSwKCWNfZmluaXNoX2Vsc2UpOiBSZW1vdmUuCgkoY19maW5pc2hfaWZfc3RtdCk6IFJld3JpdGUgdG8gcGVyZm9ybSB0aGUgZW50aXJlIG9wZXJhdGlvbi4KCShjX2JlZ2luX3doaWxlX3N0bXQsIGNfZmluaXNoX3doaWxlX3N0bXRfY29uZCwgY19maW5pc2hfd2hpbGVfc3RtdCwKCWNfYmVnaW5fZm9yX3N0bXQsIGNfZmluaXNoX2Zvcl9zdG10X2luaXQsIGNfZmluaXNoX2Zvcl9zdG10X2NvbmQsCgljX2ZpbmlzaF9mb3Jfc3RtdF9pbmNyLCBjX2ZpbmlzaF9mb3Jfc3RtdCk6IFJlbW92ZS4KCShjX2ZpbmlzaF9sb29wKTogTmV3LgoJKGNfZmluaXNoX2JjX3N0bXQpOiBOZXcuCgkoY19maW5pc2hfZXhwcl9zdG10KTogUmV0dXJuIHRoZSBzdGF0ZW1lbnQuICBTcGxpdCBvdXQuLi4KCShjX3Byb2Nlc3NfZXhwcl9zdG10KTogLi4uIHRoaXMuICBEb24ndCBhZGQgbG9jdXMgdG8gZXJyb3IgbWFya3MuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2NvbmRfZXhwcik6IEFjY2VwdCBOVUxMIHR5cGUgc3RhdGVtZW50cy4KCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX3N0bXQpOiBMaWtld2lzZS4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUgPENPTkRfRVhQUj4pOiBMaWtld2lzZS4KCShwcmludF9zdHJ1Y3RfZGVjbCk6IERlbGV0ZSBlbXB0eSBjb21wb3VuZCBzdGF0ZW1lbnQuCgkqIG9iamMvb2JqYy1hY3QuYyAob2JqY19idWlsZF90aHJvd19zdG10KTogUmV0dXJuIHRoZSBzdGF0ZW1lbnQuCgkqIG9iamMvb2JqYy1hY3QuaDogVXBkYXRlIGRlY2wuCgoyMDA0LTA2LTI0ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUsIGNhc2UgVFlQRV9ERUNMKToKCURvbid0IGxvb2sgYXQgVFlQRV9NRVRIT0RTIHVubGVzcyBSRUNPUkRfVFlQRSBvciBVTklPTl9UWVBFLgoKMjAwNC0wNi0yNCAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogb2JqYy1hY3QuYyAoYnVpbGRfb2JqY19tZXRob2RfY2FsbCk6IFNhdmUgdGhlIGxvb2t1cF9vYmplY3QKCXNvIHdlIGRvIG5vdCBjYWxsIGl0IHR3aWNlLgoKMjAwNC0wNi0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWRvbS5jIChyZWFsX2F2YWlsX2V4cHJfaGFzaCk6IE5ldy4KCSh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBVc2UgaXQgaW4gdGhlIGh0YWIuCgoyMDA0LTA2LTI0ICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUByZWRoYXQuY29tPgoKCSogdHJlZS1tdWRmbGFwLmMgKG14X3JlZ2lzdGVyX2RlY2xzKTogQWRkIHRoaXJkICh0eXBlKSBhcmd1bWVudAoJdG8gc3ludGhlc2l6ZWQgX19tZl91bnJlZ2lzdGVyIGNhbGwuCgoyMDA0LTA2LTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzE1MjM5CgkqIGV4cG1lZC5jIChleHBhbmRfbXVsdCk6IFJlbW92ZSBhcnRpZmljaWFsIHJlc3RyaWN0aW9uIG9uIHRoZQoJbWF4aW11bSBjb3N0IG9mIGEgc3ludGhldGljIG11bHRpcGxpY2F0aW9uIHNlcXVlbmNlLgoKMjAwNC0wNi0yNCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBEb24ndCBkZWxldGUgc2V0cyB0bwoJZ2xvYmFsIHJlZ2lzdGVyIHZhcmlhYmxlcy4KCjIwMDQtMDYtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZmZzZGkyLCBjbHpkaTIpOiBOZXcgZXhwYW5kZXJzLgoJKGZmc19yZXg2NCk6IE5ldyBzcGxpdHRlci4KCShmZnNkaV8xLCBjdHpkaTIsIGJzcl9yZXg2NCk6IE5ldyBpbnN0cnVjdGlvbnMuCgoyMDA0LTA2LTI0ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luNy5oIChNQVRIX0xJQlJBUlkpOiBSZW1vdmUuCgkoTElCX1NQRUMpOiBEZWZpbmUuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoTUFUSF9MSUJSQVJZKTogRGVmaW5lIGFsd2F5cyB0byBlbXB0eS4KCShMSUJfU1BFQyk6IE9ubHkgZGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgoyMDA0LTA2LTI0ICBSZXZpdGFsIEVyZXMgIDxlcmVzQGlsLmlibS5jb20+CgoJKiBsb29wLWl2LmMgKGl2X2FuYWx5emUsIHNpbXBsZV9zZXRfcCk6IFN1cHBvcnQgZm9yIGlkZW50aWZ5aW5nCglzaGlmdHMgb2YgaW5kdWN0aW9uIHZhcmlhYmxlLgoJKGl2X3NoaWZ0KTogTmV3IGZ1bmN0aW9uLgoKMjAwNC0wNi0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2JvZHkpOiBXYXRjaCBmb3IgYm9keSB2YW5pc2hpbmcuCgoyMDA0LTA2LTI0ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtZG9tLmMgKHJlY29yZF9kb21pbmF0aW5nX2NvbmRpdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkoZG9tX29wdF9maW5hbGl6ZV9ibG9jaywgZ2V0X2VxX2V4cHJfdmFsdWUpOiBVc2UgaXQuCgoyMDA0LTA2LTI0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChzaGlmdF9yZXR1cm5lZF92YWx1ZSk6IEZpeCBoYW5kbGluZyBvZiBub24taW50ZWdlcgoJVFlQRV9NT0RFcy4KCjIwMDQtMDYtMjQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGMtZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBEbyBub3QgY2hlY2sgZm9yIERFRkFVTFRfTUFJTl9SRVRVUk4uCgkqIHN5c3RlbS5oIChERUZBVUxUX01BSU5fUkVUVVJOKTogUG9pc29uLgoJKiBkb2MvdG0udGV4aSAoREVGQVVMVF9NQUlOX1JFVFVSTik6IFJlbW92ZSBkb2N1bWVudGF0aW9uLgoKMjAwNC0wNi0yNCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBkb2MvY2ZnLnRleGkgKEVkZ2VzKTogRml4IHR5cG8uCgoyMDA0LTA2LTI0ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX291dHB1dF9lcGlsb2d1ZSk6IFJlbW92ZSBleGNlc3MgY2hlY2tzLgoKMjAwNC0wNi0yMyAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTU5ODgKCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbnZlcnQpOiBUeXBlcyB3aGljaCBhcmUgY29tcGF0aWJsZQoJY2FuIGJlIGNvbnZlcnRlZCB3aXRoIG9ubHkgYSBOT1BfRVhQUi4KCjIwMDQtMDYtMjQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IENhbGwgSU5JVF9DVU1VTEFUSVZFX0FSR1MgZWFybGllciwgYW5kCglwYXNzIHJhdyBuX25hbWVkX2FyZ3MgdG8gaXQuCgkqIHRhcmdob29rcy5jOiBGb3JtYXR0aW5nLgoJKGhvb2tfYm9vbF9DVU1VTEFUSVZFX0FSR1NfZmFsc2UpOiBDb3JyZWN0IGNvbW1lbnQuCgoyMDA0LTA2LTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1naW1wbGlmeS5jIChnaW1wbGlmeV9kZWNsX3N0bXQpOiBQdXNoIGdpbXBsaWZ5X29uZV9zaXplcG9zIGluc2lkZQoJbm9uLWNvbnN0YW50IHNpemUgY2hlY2suICBHaW1wbGlmeSB0aGUgdHlwZSB0b28uICBUaWR5IGJ1aWxkaW5nCglCVUlMVF9JTl9TVEFDS19BTExPQyBjYWxsLgoKMjAwNC0wNi0yMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjLWNvbW1vbi5jIChleHBhbmRfdW5vcmRlcmVkX2NtcCk6IERlbGV0ZS4KCShleHBhbmRfdHJlZV9idWlsdGluKTogRGVsZXRlLgoJKiBjLWNvbW1vbi5oIChleHBhbmRfdHJlZV9idWlsdGluKTogRGVsZXRlIGZ1bmN0aW9uIHByb3RvdHlwZS4KCSogYy10eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbCk6IERvbid0IGNhbGwgZXhwYW5kX3RyZWVfYnVpbHRpbi4KCjIwMDQtMDYtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9jb21wb3VuZF9sdmFsKTogRG9uJ3Qgc2V0IEFSUkFZX1JFRiBvcgoJQ09NUE9ORU5UX1JFRiB2YXJpYWJsZSBmaWVsZHMgdW5sZXNzIHRoZXkncmUgbm9uLWNvbnN0YW50LgoKMjAwNC0wNi0yMyAgUm9iZXJ0IE1pbGxhbiAgPHJvYmVydG1oQGdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBNZXJnZSBrZnJlZWJzZCotZ251IHdpdGggbGludXgqIGFuZCBhZGQga25ldGJzZCotZ251LgoJKiBjb25maWcvaTM4Ni9saW51eC5oOiBBbGxvdyBvdmVycmlkaW5nIG9mIExJTktfRU1VTEFUSU9OLAoJICBEWU5BTUlDX0xJTktFUiBhbmQgcmVnaXN0ZXIgbmFtZXMgaW4gc2NfIHN0cnVjdHVyZS4KCSogY29uZmlnL2tmcmVlYnNkLWdudS5oOiBOZXcuIGtmcmVlYnNkLWdudSBmb2xsb3d1cCBmb3IgbGludXguaC4KCSogY29uZmlnL2kzODYva2ZyZWVic2QtZ251Lmg6IE5ldy4gRGl0dG8gZm9yIGkzODYta2ZyZWVic2QtZ251LgoJKiBjb25maWcva25ldGJzZC1nbnUuaDogTmV3LiBEaXR0byBmb3Iga25ldGJzZC1nbnUuCgkqIGNvbmZpZy9pMzg2L2tuZXRic2QtZ251Lmg6IE5ldy4gRGl0dG8gZm9yIGkzODYta25ldGJzZC1nbnUuCgoJKiBjb25maWcva2ZyZWVic2RnbnUuaDogUmVtb3ZlLgoJKiBjb25maWcvdC1rZnJlZWJzZC1nbnU6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9rZnJlZWJzZGdudS5oOiBMaWtld2lzZS4KCjIwMDQtMDYtMjMgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jIChtYWtlX3JhbmdlKTogQ2xlYW51cCB0eXBlIGNoZWNraW5nIHRocm91Z2ggZnVuY3Rpb24uCglSZW1vdmUgb3JpZ190eXBlLiBSZXBsYWNlIHdpdGggY2hlY2tzIHRvIGV4cF90eXBlIGFuZCBhcmcwX3R5cGUuCglDbGFyaWZ5IGNvbW1lbnQgd2hlbiBjb252ZXJ0aW5nIGZyb20gdW5zaWduZWQgdG8gc2lnbmVkLgoKMjAwNC0wNi0yMyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UpOiBBZGQgUjMwMDAuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IFJlbW92ZSBSMzAwMCBzY2hlZHVsaW5nIGRlc2NyaXB0aW9uLgoJKiBjb25maWcvbWlwcy8zMDAwLm1kOiBOZXcgZmlsZS4KCjIwMDQtMDYtMjMgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfZW1pdF9jb21wYXJlKTogQWRkIHByb3RvdHlwZS4KCShzMzkwX2VtaXRfanVtcCk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZW1pdF9jb21wYXJlKTogTmV3IGZ1bmN0aW9uLgoJKHMzOTBfZW1pdF9qdW1wKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJiZXEiLCAiYm5lIiwgImJndCIsICJiZ3R1IiwgImJsdCIsICJibHR1IiwKCSJiZ2UiLCAiYmdldSIsICJibGUiLCAiYmxldSIsICJidW5vcmRlcmVkIiwgImJvcmRlcmVkIiwgImJ1bmVxIiwKCSJidW5ndCIsICJidW5sdCIsICJidW5nZSIsICJidW5sZSIsICJibHRndCIpOiBVc2UgczM5MF9lbWl0X2NvbXBhcmUKCWFuZCBzMzkwX2VtaXRfanVtcC4KCSgiY2p1bXAiKTogUmVtb3ZlLCByZXBsYWNlIGJ5IC4uLgoJKCIqY2p1bXBfNjQiLCAiKmNqdW1wXzMxIik6IC4uLiB0aGVzZSBpbnNucy4gIEltcHJvdmUgbGVuZ3RoIGRlZmF1bHQuCgkoImljanVtcCIsICIqaWNqdW1wXzY0IiwgIippY2p1bXBfMzEiKTogTGlrZXdpc2UuCgkoInRyYXAiKTogRml4IHR5cGUgYXR0cmlidXRlLgoJKCJjb25kaXRpb25hbF90cmFwIik6IFVzZSBzMzkwX2VtaXRfY29tcGFyZS4KCSgiZG9sb29wX3NpIik6IFJlbW92ZSwgcmVwbGFjZSBieSAuLi4KCSgiZG9sb29wX3NpNjQiLCAiZG9sb29wX3NpMzEiKTogLi4uIHRoZXNlIG5ldyBpbnNuX2FuZF9zcGxpdC4KCU1lcmdlIGV4aXN0aW5nIHNwbGl0dGVyIGludG8gaW5zbl9hbmRfc3BsaXQuICBJbXByb3ZlIGxlbmd0aCBkZWZhdWx0LgoJKCJkb2xvb3BfZGkiKTogTWVyZ2Ugd2l0aCBleGlzdGluZyBzcGxpdHRlciBpbnRvIGluc25fYW5kX3NwbGl0LgoJKCJkb2xvb3AiKTogQWRhcHQuCgkoImp1bXAiKTogQ29udmVydCB0byBleHBhbmRlci4gIFVzZSBzMzkwX2VtaXRfanVtcC4KCSgiKmp1bXBfNjQiLCAiKmp1bXBfMzEiKTogTmV3IGluc25zLiAgSW1wcm92ZSBsZW5ndGggZGVmYXVsdC4KCjIwMDQtMDYtMjMgIFd1IFlvbmd3ZWkgIDxhZGFoQHNoMTYzLm5ldD4KCgkqIGd0aHItd2luMzIuaCAoX19HVEhSRUFEX01VVEVYX0lOSVRfREVGQVVMVCk6IEFkanVzdC4KCShfX2d0aHJfaTQ4Nl9sb2NrX2NtcF94Y2hnKTogTmV3IGlubGluZSBhc3NlbWJseSBmdW5jdGlvbi4KCShfX0dUSFJfVzMyX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKTogTmV3IG1hY3JvIHRvIGNob29zZSBhCglzdWl0YWJsZSBmdW5jdGlvbiBmb3IgaW50ZXJsb2NrZWQgY29tcGFyZS1hbmQtZXhjaGFuZ2UuCgkoX19ndGhyZWFkX211dGV4X3RyeWxvY2spOiBVc2UKCV9fR1RIUl9XMzJfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UuCgkoX19ndGhyZWFkX211dGV4X2luaXRfZnVuY3Rpb24sIF9fZ3RocmVhZF9tdXRleF9sb2NrLAoJX19ndGhyZWFkX211dGV4X3RyeWxvY2ssIF9fZ3RocmVhZF9tdXRleF91bmxvY2spOiBBZGp1c3QgdGhlCglpbml0aWFsIGNvdW50ZXIgdmFsdWUgdG8gd29yayBjb3JyZWN0bHkgdW5kZXIgV2luZG93cyA5NS4KCSogY29uZmlnL2kzODYvZ3Roci13aW4zMi5jOiBBZGp1c3QgaW5jbHVkZSBvcmRlci4KCURlZmluZSBfX0dUSFJFQURfSTQ4Nl9JTkxJTkVfTE9DS19QUklNSVRJVkVTIGJlZm9yZSBpbmNsdWRpbmcKCWd0aHItd2luMzIuaC4KCShfX2d0aHJfd2luMzJfbXV0ZXhfaW5pdF9mdW5jdGlvbiwgX19ndGhyX3dpbjMyX211dGV4X2xvY2ssCglfX2d0aHJfd2luMzJfbXV0ZXhfdHJ5bG9jaywgX19ndGhyX3dpbjMyX211dGV4X3VubG9jayk6IEFkanVzdAoJdG8gbWF0Y2ggaW5saW5lIHZlcnNpb25zIGluIGd0aHItd2luMzIuaC4KCjIwMDQtMDYtMjMgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF91c2VfZGZhX3BpcGVsaW5lX2ludGVyZmFjZSk6IERlbGV0ZS4KCShUQVJHRVRfU0NIRURfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBSZWRlZmluZSBhIGhvb2tfaW50X3ZvaWRfMS4KCShpbnN2ZGlfcnNoaWZ0X3Jsd2ltaV9wKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoaW5zdmRpX2ludGVybmFsMi8zKTogTmV3IHBhdHRlcm5zLgoJKGV4dGVuZHNmZGYyKTogQ29udmVydCB0byBkZWZpbmVfaW5zbl9hbmRfc3BsaXQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChpbnN2ZGlfcnNoaWZ0X3Jsd2ltaV9wKTogUHJvdG90eXBlLgoKMjAwNC0wNi0yMyAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogYy10eXBlY2suYyAoY29tcG9zaXRlX3R5cGUsIDxjYXNlIEFSUkFZX1RZUEU+KTogQWJvcnQgaWYgd2UgaGF2ZQoJdHlwZSBxdWFsaWZpZXJzIGF0IGFsbC4KCUlmIGJvdGggb2YgdGhlIHR5cGUgZG9tYWlucyBhcmUgbnVsbCBhbmQgdGhlIG5ldyBlbGVtZW50IHR5cGUgaXMKCXRoZSBzYW1lIGFzIG9uZSBvZiB0aGUsIHJldHVybiB0aGUgb25lIHdoaWNoIHRoZSBlbGVtZW50IHR5cGUuCgltYXRjaGVzLgoJRG8gbm90IGNhbGwgcXVhbGlmeV90eXBlIG9uIHRoZSBuZXcgdHlwZS4KCjIwMDQtMDYtMjMgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoREVGQVVMVF9NQUlOX1JFVFVSTik6IFJlbW92ZS4KCjIwMDQtMDYtMjMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29udmVydC5jIChzdHJpcF9mbG9hdF9leHRlbnNpb24pOiBTa2lwIGJvdGggTk9QX0VYUFIgYW5kCglDT05WRVJUX0VYUFIgZmxvYXRpbmcgcG9pbnQgZXh0ZW5zaW9ucy4KCjIwMDQtMDYtMjMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKHRyZWUtdm4ubyk6IE5ldy4KCSh0cmVlLXNzYS1wcmUubyk6IERvbid0IGRlcGVuZCBvbiBSVExfSC4KCSogdHJlZS1kZmEuYyAoZmluZF9yZWZlcmVuY2VkX3ZhcnMpOiBEb24ndCBjYWxsIGluaXRfdHJlZV9zc2EuCgkqIHRyZWUtZmxvdy5oIChzdHJ1Y3QgdmFyX2Fubl9kKTogUmVtb3ZlIGZpZWxkIGV4cHJfc2V0LgoJKGFkZF90b192YWx1ZSwgZXhwcmVzc2lvbnNfZXF1YWxfcCwgZ2V0X3ZhbHVlX2hhbmRsZSwgdm5fY29tcHV0ZSwKCXZuX2xvb2t1cF9vcl9hZGQsIHZuX2FkZCwgdm5fbG9va3VwLCB2bl9pbml0LCB2bl9kZWxldGUpOiBEZWNsYXJlLgoJKiB0cmVlLW9wdGltaXplLmMgKGV4ZWN1dGVfaW5pdF9kYXRhc3RydWN0dXJlcyk6IE5ldyBsb2NhbCBmdW5jdGlvbi4KCShwYXNzX2luaXRfZGF0YXN0cnVjdHVyZXMpOiBOZXcgbG9jYWwgdmFyaWFibGUuCgkoaW5pdF90cmVlX29wdGltaXphdGlvbl9wYXNzZXMpOiBTZXF1ZW5jZSBwYXNzX2luaXRfZGF0YXN0cnVjdHVyZXMuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKE1BU0tfUE9JTlRFUik6IFJlbW92ZS4KCShkdW1wX2dlbmVyaWNfbm9kZSk6IEhhbmRsZSBWQUxVRV9IQU5ETEUuCgkqIHRyZWUtc3NhLXByZS5jOiBNb3ZlIGFsbCB2YWx1ZSBudW1iZXJpbmcgcm91dGluZXMgdG8gdHJlZS12bi5jLgoJVXBkYXRlIGNhbGxlcnMgdG8gdXNlIG5ldyBmdW5jdGlvbiBuYW1lcy4KCVVzZSBWQUxVRV9IQU5ETEVfSUQgYW5kIFZBTFVFX0hBTkRMRV9FWFBSX1NFVCBpbnN0ZWFkIG9mCgl2YXJpYWJsZSBhbm5vdGF0aW9ucy4KCSogdHJlZS1zc2EuYyAoaW5pdF90cmVlX3NzYSk6IENhbGwgdm5faW5pdC4KCShkZWxldGVfdHJlZV9zc2EpOiBDYWxsIHZuX2RlbGV0ZS4KCSogdHJlZS12bi5jOiBOZXcgZmlsZS4KCSogdHJlZS5jICh0cmVlX3NpemUpOiBIYW5kbGUgVkFMVUVfSEFORExFLgoJKHRyZWVfbm9kZV9zdHJ1Y3R1cmUpOiBMaWtld2lzZS4KCShpdGVyYXRpdmVfaGFzaF9leHByKTogTGlrZXdpc2UuCgkqIHRyZWUuZGVmIChWQUxVRV9IQU5ETEUpOiBOZXcgY29kZS4KCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV92YWx1ZV9oYW5kbGUpOiBOZXcuCgkoVkFMVUVfSEFORExFX0lEKTogRGVmaW5lLgoJKFZBTFVFX0hBTkRMRV9FWFBSX1NFVCk6IERlZmluZS4KCShlbnVtIHRyZWVfbm9kZV9zdHJ1Y3R1cmVfZW51bSk6IEFkZCBUU19WQUxVRV9IQU5ETEUuCgkodW5pb24gdHJlZV9ub2RlKTogQWRkIHN0cnVjdCB0cmVlX3ZhbHVlX2hhbmRsZS4KCjIwMDQtMDYtMjMgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGMtdHlwZWNrLmMgKGNvbXBvc2l0ZV90eXBlKToKCTxjYXNlIFBPSU5URVJfVFlQRT46IEJ1aWxkIGEgcXVhbGlmaWVkIHR5cGUgb2YKCXRoZSBuZXcgdHlwZS4KCTxjYXNlIEFSUkFZX1RZUEU+OiBMaWtld2lzZS4KCTxjYXNlIEZVTkNUSU9OX1RZUEU+OiBMaWtld2lzZS4KCjIwMDQtMDYtMjMgIFBhdCBIYXVnZW4gIDxwdGhhdWdlbkB1cy5pYm0uY29tPgoKCVBSIG9wdGltaXphdGlvbi8xNTYzMwoJKiB2YWx1ZS1wcm9mLmMgKGRpdm1vZF9maXhlZF92YWx1ZV90cmFuc2Zvcm0pOiBDb21wdXRlIHByb2JhYmlsaXR5CglvZiB0YWtpbmcgb3B0aW1hbCBwYXRoIGFuZCBwYXNzIGFsb25nIHRvIGdlbl8gcm91dGluZS4KCShtb2RfcG93Ml92YWx1ZV90cmFuc2Zvcm0pOiBTYW1lLgoJKG1vZF9zdWJ0cmFjdF90cmFuc2Zvcm0pOiBTYW1lLgoJKGdlbl9kaXZtb2RfZml4ZWRfdmFsdWUpOiBBZGQgbmV3IHByb2JhYmlsaXR5IHBhcmFtZXRlci4KCUFkZCBwcm9iYWJpbGl0eSB0byBuZXdseSBjcmVhdGVkIGp1bXAuCgkoZ2VuX21vZF9wb3cyKTogU2FtZS4KCShnZW5fbW9kX3N1YnRyYWN0KTogU2FtZS4KCjIwMDQtMDYtMjMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogUFIgdGFyZ2V0LzE1OTQ4CgkqIGFybS5tZCAoYmljc2kzX2NicmFuY2gpOiBBZGQgYWx0ZXJuYXRpdmUgdG8gaGFuZGxlIHR5aW5nIG9wZXJhbmRzCglvbmUgYW5kIHR3by4KCjIwMDQtMDYtMjMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCVBSIHRhcmdldC8xNTkyNwoJKiBhcm0uaCAoVEhVTUJfU0VDT05EQVJZX09VVFBVVF9SRUxPQURfQ0xBU1MpOiBEb24ndCBuZWVkIGEgc2Vjb25kYXJ5CglyZWxvYWQgaWYgQ0xBU1MgaXMgQkFTRV9SRUdTLgoKMjAwNC0wNi0yMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogZ2VuZ3R5cGUteWFjYy55IChvcHRpb24pOiBBdm9pZCB1c2Ugb2Ygbm9uLWNvbnN0YW50IHN0cnVjdAoJaW5pdGlhbGl6ZXIuCgoyMDA0LTA2LTIzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogQWxwaGFiZXRpemUuCgoyMDA0LTA2LTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1naW1wbGlmeS5jIChnaW1wbGlmeV9kZWNsX3N0bXQpOiBVcGRhdGUgZ2ltcGxpZnlfdHlwZV9zaXplcyBjYWxsLgoJVXNlIGdpbXBsaWZ5X2FuZF9hZGQuCgkqIGMtdHlwZWNrLmMgKGNfZmluaXNoX2lmX3N0bXQpOiBVc2UgTlVMTCBpbnN0ZWFkIG9mIGVtcHR5IHN0bXQuCgkqIGdpbXBsaWZ5LmMgKGJ1aWxkX2FuZF9qdW1wLCBnaW1wbGlmeV9leGl0X2V4cHIsCglnaW1wbGlmeV9pbml0X2NvbnN0cnVjdG9yLCBnaW1wbGlmeV9zYXZlX2V4cHIsIGdpbXBsZV9wdXNoX2NsZWFudXAsCglnaW1wbGlmeV9zdG10LCBnaW1wbGlmeV9leHByKTogTGlrZXdpc2UuCgkoc2hvcnRjdXRfY29uZF9leHByKTogSGFuZGxlIE5VTEwgYXJtcyBvZiBDT05EX0VYUFIuCgkoZ2ltcGxpZnlfc3RhdGVtZW50X2xpc3QpOiBSZW1vdmUgTlVMTCBlbnRyaWVzLgoJKGdpbXBsaWZ5X3RvX3N0bXRfbGlzdCk6IEhhbmRsZSBOVUxMIHJlc3VsdHMuCgkoZ2ltcGxpZnlfdHlwZV9zaXplcyk6IEFkZCBsaXN0X3AgYXJndW1lbnQuCgkoZ2ltcGxpZnlfb25lX3NpemVwb3MpOiBEb24ndCB1c2UgaW50ZXJuYWwgcHJlL3Bvc3QgcXVldWUuCgkqIHRyZWUtZ2ltcGxlLmggKGdpbXBsaWZ5X3R5cGVfc2l6ZXMpOiBVcGRhdGUuCgoyMDA0LTA2LTIyICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICgqaW5zdnNpX2ludGVybmFsNS82KTogTmV3IHBhdHRlcm5zLgoKMjAwNC0wNi0yMiAgUGF0IEhhdWdlbiAgPHB0aGF1Z2VuQHVzLmlibS5jb20+CgoJKiBjZmdob29rcy5jIChtYWtlX2ZvcndhcmRlcl9ibG9jayk6IERlY3JlbWVudCBjb3VudCBvbiBmYWxsdGhydSBlZGdlCgl3aGVuIHJlZGlyZWN0aW5nIGJhY2sgZWRnZXMuCgoJKiBjZmdob29rcy5jIChzcGxpdF9ibG9jayk6IENhbGwgbWFrZV9zaW5nbGVfc3VjY19lZGdlIHNvIHRoYXQgZWRnZQoJY291bnQvcHJvYmFiaWxpdHkgYXJlIHNldCBjb3JyZWN0bHkuCgoyMDA0LTA2LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy10eXBlY2suYyAoZW1pdF9zaWRlX2VmZmVjdF93YXJuaW5ncyk6IElnbm9yZSBlcnJvciBtYXJrcy4KCShjX2ZpbmlzaF9zdG10X2V4cHIpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBOZXcuCgkoaXg4Nl9yZXR1cm5faW5fbWVtb3J5KTogTW92ZSBTU0UgdmVjdG9yIHJldHVybiB3YXJuaW5nIC4uLgoJKGl4ODZfc3RydWN0X3ZhbHVlX3J0eCk6IC4uLiBoZXJlLiAgTmV3LgoKMjAwNC0wNi0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuZGVmIChWVEFCTEVfUkVGKTogUmVtb3ZlLgoJKE9CSl9UWVBFX1JFRik6IE5ldy4KCShUUllfQ0FUQ0hfRVhQUiwgVFJZX0ZJTkFMTFlfRVhQUik6IFNldCB0eXBlICdzJy4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBSZXBsYWNlIFZUQUJMRV9SRUYgd2l0aCBPQkpfVFlQRV9SRUYuCgkqIGZvbGQtY29uc3QuYyAobm9uX2x2YWx1ZSk6IExpa2V3aXNlLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9leHByKTogTGlrZXdpc2UuCgkoZ2ltcGxpZnlfY2FsbF9leHByKTogVXNlIGlzX2dpbXBsZV9jYWxsX2FkZHIuCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19GT0xEX09CSl9UWVBFX1JFRik6IE5ldy4KCSogbGFuZ2hvb2tzLmggKGZvbGRfb2JqX3R5cGVfcmVmKTogTmV3LgoJKiB0cmVlLWdpbXBsZS5jIChpc19naW1wbGVfY2FsbF9hZGRyKTogTmV3LgoJKiB0cmVlLWdpbXBsZS5oIChpc19naW1wbGVfY2FsbF9hZGRyKTogRGVjbGFyZS4KCSogdHJlZS1pbmxpbmUuYyAoaW5saW5hYmxlX2Z1bmN0aW9uX3ApOiBGaXggbWVyZ2UgZXJyb3IuCgkoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBSZXBsYWNlIFZUQUJMRV9SRUYgd2l0aCBPQkpfVFlQRV9SRUYuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogTGlrZXdpc2UuCgkocHJpbnRfY2FsbF9uYW1lKTogSGFuZGxlIE9CSl9UWVBFX1JFRi4KCSogdHJlZS1zc2EtY2NwLmMgKGZvbGRfc3RtdCk6IEZvbGQgT0JKX1RZUEVfUkVGLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IEhhbmRsZSBPQkpfVFlQRV9SRUYuCgkqIHRyZWUuaCAoT0JKX1RZUEVfUkVGX0VYUFIpOiBOZXcuCgkoT0JKX1RZUEVfUkVGX09CSkVDVCwgT0JKX1RZUEVfUkVGX1RPS0VOKTogTmV3LgoJKiBkb2MvYy10cmVlLnRleGkgKFZUQUJMRV9SRUYpOiBSZW1vdmUuCgkqIG9iamMvb2JqYy1hY3QuYyAoYnVpbGRfb2JqY19tZXRob2RfY2FsbCk6IEJ1aWxkIGFuIE9CSl9UWVBFX1JFRi4KCjIwMDQtMDYtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNjAyNgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBEb24ndCBhYm9ydCBmb3Igb3ZlcmFsaWduZWQgUEFSQUxMRUwuCgoyMDA0LTA2LTIyICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIE1ha2VmaWxlLmluIChkaXN0Y2xlYW4pOiBEb24ndCB0cnkgdG8gcmVtb3ZlIGVtcHR5IGRpcmVjdG9yaWVzLgoKMjAwNC0wNi0yMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNTg2OQoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfYXZvaWRfaGF6YXJkcyk6IENhbGwgc3BsaXRfYWxsX2luc25zX25vZmxvdy4KCjIwMDQtMDYtMjIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92ZGksIG1vdmRmKTogVXNlIGhpZ2gvbG93IGZvciBtb3Z1CglvcGVyYW5kcy4KCjIwMDQtMDYtMjIgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGxlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCk6IE1ha2UKCWdsb2JhbCwgcmVuYW1lIHJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3AuCgkocnM2MDAwX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogQWRqdXN0IGNhbGxzIHRvIGl0LgoJKGxtd19vcGVyYXRpb24pOiBEaXR0by4KCShzdG13X29wZXJhdGlvbik6IERpdHRvLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogRGVjbGFyZSBpdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKCptb3ZkZl9oYXJkZmxvYXQzMik6IFVzZSBpdAoJaW5zdGVhZCBvZiBvZmZzZXR0YWJsZV9tZW1yZWZfcC4KCjIwMDQtMDYtMjIgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3MpOiBEaXNhbGxvdwoJW3JlZytyZWddIG1vZGUgZm9yIFRGbW9kZSBtZW1vcnkgYWNjZXNzZXMuCgkocnM2MDAwX2VsaW1pbmF0ZV9pbmRleGVkX21lbXJlZnMpOiBOZXcuCgkocnM2MDAwX2VtaXRfbW92ZSk6IENhbGwgcHJlY2VkaW5nIGZvciBUSW1vZGUgYW5kIFRGbW9kZS4KCjIwMDQtMDYtMjIgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiB0cmVlLWNmZy5jIChwYXNzX3dhcm5fZnVuY3Rpb25fcmV0dXJuKTogSXQgbmVlZHMKCUNGRywgbm90IFNTQS4KCjIwMDQtMDYtMjIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKE1hY2hpbmUgRGVwZW5kZW50IE9wdGlvbnMpOiBBbHBoYWJldGl6ZS4KCShTdWJtb2RlbCBPcHRpb25zKTogTGlrZXdpc2UuCgoyMDA0LTA2LTIxICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJUmFkYXIgIzogMzcwMTg3NAoJKiBjLWRlY2wuYyAocHVzaF9maWxlX3Njb3BlKTogUmV0dXJuIGVhcmx5IGlmIHdlIGFscmVhZHkKCWhhdmUgYSBmaWxlIHNjb3BlLgoKMjAwNC0wNi0yMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSAtZnBjaC1wcmVwcm9jZXNzLgoJKiBjLWNvbW1vbi5oIChmbGFnX3BjaF9wcmVwcm9jZXNzKTogRGVjbGFyZS4KCShjX2NvbW1vbl9wY2hfcHJhZ21hKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmMgKGZsYWdfcGNoX3ByZXByb2Nlc3MpOiBOZXcuCgkqIGMtcGNoLmMgKGNfY29tbW9uX3JlYWRfcGNoKTogU3VwcG9ydCAtZnByZXByb2Nlc3Mtb25seS4KCShjX2NvbW1vbl9wY2hfcHJhZ21hKTogTmV3LgoJKiBjLXBwb3V0cHV0LmMgKGNiX3JlYWRfcGNoKTogTmV3LgoJKGluaXRfcHBfb3V0cHV0KTogU3VwcG9ydCAtZnBjaC1wcmVwcm9jZXNzLgoJKiBjLXByYWdtYS5jIChpbml0X3ByYWdtYSk6IFN1cHBvcnQgI3ByYWdtYSBHTlVDIHBjaF9wcmVwcm9jZXNzLgoJKiBjLm9wdCAoZnBjaC1wcmVwcm9jZXNzKTogTmV3LgoJKiBnY2MuYyAoY3BwX29wdGlvbnMpOiBXaGVuIHNhdmUtdGVtcHMsIHBhc3MgLWZwY2gtcHJlcHJvY2Vzcy4KCSogZG9jL2NwcG9wdHMudGV4aTogRG9jdW1lbnQgLWZwY2gtcHJlcHJvY2Vzcy4KCSogZG9jL2ludm9rZS50ZXhpIChQcmVjb21waWxlZCBIZWFkZXJzKTogTWVudGlvbiB0aGF0CgktZnByZXByb2Nlc3NlZCBpcyBzYWZlIGZvciBQQ0guICBNZW50aW9uIHRoYXQgaWYgYW4gb3B0aW9uIGlzCglsaXN0ZWQgYXMgc2FmZSB0aGF0IGRvZXNuJ3QgbWVhbiBpdCBkb2VzIHdoYXQgeW91IGV4cGVjdC4KCjIwMDQtMDYtMjIgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogdHJlZS1zc2EuYyAoc3NhX3JlZGlyZWN0X2VkZ2UpOiBDb3JyZWN0IGxlYWRpbmcgY29tbWVudC4KCjIwMDQtMDYtMjEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZ2ltcGxpZnkubyk6IEFkZCBjZ3JhcGguaC4KCSogYWxpYXMuYyAoYWRqdXN0X29mZnNldF9mb3JfY29tcG9uZW50X3JlZik6IFVzZQoJY29tcG9uZW50X3JlZl9maWVsZF9vZmZzZXQuCgkqIGMtZGVjbC5jIChidWlsZF9hcnJheV9kZWNsYXJhdG9yKTogQWRkIG5ld3MgYXJncyBmb3IgQVJSQVlfUkVGLgoJKiBjLWdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2V4cHJfc3RtdCk6IFVzZSBhbGxvY19zdG10X2xpc3QuCgkoZ2ltcGxpZnlfZGVjbF9zdG10KTogQ2FsbCBnaW1wbGlmeV90eXBlX3NpemVzIGZvciB0eXBlLgoJRm9yIGRlY2wsIGNhbGwgZ2ltcGxpZnlfb25lX3NpemVwb3MgYW5kIHVzZSBzdGF0ZW1lbnQgbGlzdC4KCShnaW1wbGlmeV9jb21wb3VuZF9saXRlcmFsX2V4cHIpOiBOZXcgYXJnIFBSRV9QLgoJQWRkIHN0YXRlbWVudCB0byBQUkVfUCBsaXN0IGFuZCByZXR1cm4gREVDTC4KCShjX2dpbXBsaWZ5X2V4cHIsIGNhc2UgQ09NUE9VTkRfTElURVJBTF9FWFBSKTogQWRkIGFyZyB0bwoJZ2ltcGxpZnlfY29tcG91bmRfbGl0ZXJhbF9leHByLgoJKiBjLXRyZWUuaCAoZ2V0ZGVjbHMpOiBEZWxldGVkLgoJKiBjLXR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogQWRkIG9wZXJhbmQgZm9yIENPTVBPTkVOVF9SRUYuCgkoYnVpbGRfYXJyYXlfcmVmKTogQWRkIHR3byBvcGVyYW5kcyBmb3IgQVJSQVlfUkVGLgoJKGJ1aWxkX3VuYXJ5X29wKTogU2V0IFRSRUVfSU5WQVJJQU5UIGFuZCBUUkVFX0NPTlNUQU5UIGZvcgoJQ09NUE9VTkRfTElURVJBTF9FWFBSLgoJKiBjb3ZlcmFnZS5jICh0cmVlX2NvdmVyYWdlX2NvdW50ZXJfcmVmKTogQWRkIG5ldyBvcGVyYW5kcwoJZm9yIEFSUkFZX1JFRi4KCSogZW1pdC1ydGwuYyAoY29tcG9uZW50X3JlZl9mb3JfbWVtX2V4cHIpOiBBZGQgbmV3IG9wZXJhbmQKCWZvciBDT01QT05FTlRfUkVGLgoJKHNldF9tZW1fYXR0cmlidXRlc19taW51c19iaXRwb3MpOiBVc2UgYXJyYXlfcmVmX2xvd19ib3VuZAoJYW5kIGFycmF5X3JlZl9lbGVtZW50X3NpemUuCgkod2lkZW5fbWVtb3J5X2FjY2Vzcyk6VXNlIGNvbXBvbmVudF9yZWZfZmllbGRfb2Zmc2V0LgoJKiBleHBsb3cuYyAodXBkYXRlX25vbmxvY2FsX2dvdG9fc2F2ZV9hcmVhKTogQWRkIHR3byBvcGVyYW5kcwoJZm9yIEFSUkFZX1JFRi4KCSogZXhwci5jIChhcnJheV9yZWZfZWxlbWVudF9zaXplLCBhcnJheV9yZWZfbG93X2JvdW5kKTogTmV3IGZ1bmN0aW9ucy4KCShjb21wb25lbnRfcmVmX2ZpZWxkX29mZnNldCk6IExpa2V3aXNlLgoJKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBVc2UgdGhlbS4KCShleHBhbmRfZXhwcl9yZWFsXzEsIGNhc2UgQVJSQVlfUkVGKTogVXNlIGFycmF5X3JlZl9sb3dfYm91bmQuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCwgY2FzZSBFUV9FWFBSKTogUHJvcGVybHkgaGFuZGxlIERFQ0xfU0laRS4KCShmb2xkX3JlYWRfZnJvbV9jb25zdGFudF9zdHJpbmcpOiBVc2UgYXJyYXlfcmVmX2xvd19ib3VuZC4KCVZlcmlmeSB0aGF0IHJlc3VsdCBpcyBhIGNoYXJhY3RlciB0eXBlLgoJKGJ1aWxkX2ZvbGRfaW5kaXJlY3RfcmVmKTogQWRkIHR3byBvcGVyYW5kcyBmb3IgQVJSQVlfUkVGLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fc3RhcnQpOiBMaWtld2lzZS4KCSogZ2ltcGxlLWxvdy5jIChleHBhbmRfdmFyX3ApOiBEZWxldGUgZHVwbGljYXRlZCBsaW5lLgoJKiBnaW1wbGlmeS5jOiBBZGQgc3RhdGljIGRlY2xzIGZvciBsb2NhbCBmdW5jdGlvbnMuCgkoY2dyYXBoLmgpOiBOb3cgaW5jbHVkZWQuCgkoY3JlYXRlX3RtcF92YXIpOiBSZW1vdmUgY2hlY2sgZm9yIEFSUkFZX1RZUEUuCgkoY29weV9pZl9zaGFyZWRfcik6IExvb2sgYXQgYm91bmRzIGFuZCBzaXplcyBvZiB0eXBlcy4KCShidWlsZF9hbmRfanVtcCk6IFJldHVybiBhbGxvY19zdG10X2xpc3QgaW5zdGVhZCBvZiBidWlsZF9lbXB0eV9zdG10LgoJKGdpbXBsaWZ5X2V4aXRfZXhwciwgc2hvcnRjdXRfY29uZF9leHByKTogTGlrZXdpc2UuCgkoZ2ltcGxpZnlfc2F2ZV9leHByLCBnaW1wbGVfcHVzaF9jbGVhbnVwKTogTGlrZXdpc2UuCgkoZ2ltcGxpZnlfaW5pdF9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJV0FOVF9WQUxVRSBub3cgYm9vbC4KCUlmIGVtcHR5IGxpc3Qgd2l0aCBubyByZXN1bHQgd2FudGVkLCByZXR1cm4gR1NfVU5IQU5ETEVELgoJQWRkIGFkZGl0aW9uYWwgb3BlcmFuZHMgZm9yIEFSUkFZX1JFRiBhbmQgQ09NUE9ORU5UX1JFRi4KCShjYW5vbmljYWxpemVfY29tcG9uZW50X3JlZik6IENvbnZlcnQgdG8gJmFycmF5W0xdLgoJKGdpbXBsaWZ5X2FycmF5X3JlZl90b19wbHVzKTogVXNlIGFycmF5X3JlZl9lbGVtZW50X3NpemUgYW5kCglhcnJheV9yZWZfbG93ZXJfYm91bmQuCgkoYnVpbGRfYWRkcl9leHByX3dpdGhfdHlwZSwgYnVpbGRfYWRkcl9leHByKTogTmV3IGZ1bmN0aW9ucy4KCShnaW1wbGlmeV9jb21wb3VuZF9sdmFsKTogV0FOVF9MVkFMVUUgbm93IGJvb2wuCglNYWpvciByZXdvcmsgdG8gYWxsb3cgaGFuZGxlX2NvbXBvbmVudF9wIGFuZCBpbml0aWFsaXplIGFuZAoJZ2ltcGxpZnkgbmV3IG9wZXJhbmRzIGZvciBBUlJBWV9SRUYsIEFSUkFZX1JBTkdFX1JFRiwgYW5kCglDT01QT05FTlRfUkVGLgoJKGdpbXBsaWZ5X2FycmF5X3JlZik6IERlbGV0ZWQuCgkoZ2ltcGxpZnlfc2VsZl9tb2RfZXhwcik6IFdBTlRfVkFMVUUgbm93IGJvb2wuCgkoZ2ltcGxpZnlfbW9kaWZ5X2V4cHIpOiBHaW1wbGlmeSB0b19wIGFuZCBmcm9tX3AgbGF0ZXIuCglGYWN0b3Igb3V0IGNvZGUgaW50byBnaW1wbGlmeV9tb2RpZnlfZXhwcl9yaHMgYW5kIGNhbGwgdHdpY2UuCglNb3ZlIHZhcmlhYmxlLXNpemUgY29kZSBlYXJsaWVyIGFuZCBoYW5kbGUgUExBQ0VIT0xERVJfRVhQUi4KCShnaW1wbGlmeV9tb2RpZnlfZXhwcl9yaHMsIGdpbXBsaWZ5X3ZhcmlhYmxlX3NpemVkX2NvbXBhcmUpOiBOZXcgZm5zLgoJKGdpbXBsaWZ5X2FkZHJfZXhwciwgY2FzZSBWSUVXX0NPTlZFUlRfRVhQUik6IE5ldyBjYXNlLgoJKGdpbXBsaWZ5X2V4cHIsIGNhc2UgQVJSQVlfUkVGKTogRGVsZXRlIHNwZWNpYWwgY2FzZS4KCUluc3RlYWQgaGFuZGxlIGxpa2UgQ09NUE9ORU5UX1JFRjsgYWxzbyBkbyBBUlJBWV9SQU5HRV9SRUYsCglJTUFHUEFSVCwgYW5kIFJFQUxQQVJUIHRoZSBzYW1lIHdheS4KCShnaW1wbGlmeV9leHByLCBjYXNlIFZJRVdfQ09OVkVSVF9FWFBSKTogTmV3IGNhc2UuCgkoZ2ltcGxpZnlfZXhwcik6IENhbGwgZ2ltcGxpZnlfdmFyaWFibGVfc2l6ZWRfY29tcGFyZSBpZiBhcHBsaWNhYmxlLgoJQ2FsbCBhbGxvY19zdG10X2xpc3QgaW5zdGVhZCBvZiBidWlsZF9lbXB0eV9zdG10LgoJRGVhbCB3aXRoIF9SRUYgdGhhdCdzIHZvbGF0aWxlLgoJKGdpbXBsaWZ5X3R5cGVfc2l6ZXMsIGdpbXBsaWZ5X29uZV9zaXplcG9zKTogTmV3IGZ1bmN0aW9ucy4KCSh1bnNoYXJlX2JvZHksIHVudmlzaXRfYm9keSk6IE5ldyBmdW5jdGlvbnMuCgkoZ2ltcGxpZnlfYm9keSk6IENhbGwgdGhlbS4KCSogc3RtdC5jIChleHBhbmRfc3RhY2tfYWxsb2MpOiBEb24ndCBleHBhbmQgVFlQRV9NQVhfVkFMVUUuCgkqIHN0b3ItbGF5b3V0LmMgKGdldF9wZW5kaW5nX3NpemVzKTogRG9uJ3QgY2hhbmdlIFNBVkVfRVhQUl9DT05URVhULgoJKiB0cmVlLWFsaWFzLWNvbW1vbi5jIChnZXRfYWxpYXNfdmFyKTogQWxzbyBza2lwIEFSUkFZX1JBTkdFX1JFRi4KCSogdHJlZS1jZmcuYyAodHJlZV9ub2RlX2Nhbl9iZV9zaGFyZWQpOiBUcmVhdCBBUlJBWV9SQU5HRV9SRUYKCWxpa2UgQVJSQVlfUkVGLgoJKHZlcmlmeV9leHByLCBjYXNlIEFERFJfRVhQUik6IFVzZSBoYW5kbGVkX2NvbXBvbmVudF9wLgoJKiB0cmVlLWRmYS5jIChnZXRfdmlydHVhbF92YXIpOiBMaWtld2lzZS4KCSogdHJlZS1kdW1wLmMgKGRlcXVldWVfYW5kX2R1bXAsIGNhc2UgQ09NUE9ORU5UX1JFRiwgQVJSQVlfUkVGKToKCU5ldyBjYXNlcyB0byBkdW1wIG5ldyBvcGVyYW5kczsgbGlrZXdpc2UgZm9yIEFSUkFZX1JBTkdFX1JFRi4KCSogdHJlZS1laC5jICh0cmVlX2NvdWxkX3RyYXAsIGNhc2UgQVJSQVlfUkFOR0VfUkVGKTogTGlrZSBBUlJBWV9SRUYuCgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9hZGRyX2V4cHJfYXJnKTogQWRkIEFSUkFZX1JBTkdFX1JFRgoJYW5kIElORElSRUNUX1JFRi4KCShnZXRfYmFzZV9hZGRyZXNzKTogVXNlIGhhbmRsZWRfY29tcG9uZW50X3AuCgkqIHRyZWUtZ2ltcGxlLmggKGdpbXBsaWZ5X3R5cGVfc2l6ZXMsIGdpbXBsaWZ5X29uZV9zaXplcG9zKTogTmV3LgoJKiB0cmVlLWlubGluZS5jICh3YWxrX3RyZWUpOiBXYWxrIG1vcmUgdGhpbmdzIGZvciB0eXBlcyBhbmQgZGVjbHMuCgkqIHRyZWUtbXVkZmxhcC5jIChtZl9idWlsZF9jaGVja19zdGF0ZW1lbnRfZm9yKTogQWRkIG5ldyBvcGVyYW5kcwoJZm9yIEFSUkFZX1JFRiBhbmQgQ09NUE9ORU5UX1JFRi4KCShteF94Zm9ybV9kZXJlZnNfMSk6IENsZWFuIHVwIHVzYWdlIG9mIGRlY2wgc2l6ZXMuCgkqIHRyZWUtbmVzdGVkLmMgKGJ1aWxkX2FkZHIpOiBVc2UgaGFuZGxlZF9jb21wb25lbnRfcC4KCSh3YWxrX3N0bXRzLCBjYXNlIENBVENIX0VYUFIpOiBBZGQgbWlzc2luZyAiYnJlYWsiLgoJKGdldF9zdGF0aWNfY2hhaW4sIGdldF9mcmFtZV9maWVsZCk6IEFkZCBuZXcgb3BlcmFuZCBmb3IgQ09NUE9ORU5UX1JFRi4KCShmaW5hbGl6ZV9uZXN0aW5nX3RyZWVfMSk6IExpa2V3aXNlLgoJKGNvbnZlcnRfbm9ubG9jYWxfcmVmZXJlbmNlLCBjYXNlIEFSUkFZX1JBTkdFX1JFRik6IExpa2UgQVJSQVlfUkVGCglhbmQgcHJvY2VzcyBhZGRpdGlvbmFsIG9wZXJhbmRzLgoJKGNvbnZlcnRfbG9jYWxfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKGRpc2NvdmVyX25vbmNvbnN0YW50X2FycmF5X3JlZnNfcik6IFRyZWF0CglBUlJBWV9SQU5HRV9SRUYgc2ltaWxhcmx5IHRvIEFSUkFZX1JFRi4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUsIGNhc2UgUVVBTF9VTklPTl9UWVBFKTogSGFuZGxlCglsaWtlIFJFQ09SRF9UWVBFLgoJKGR1bXBfZ2VuZXJpY19ub2RlLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBQcmludCBvZmZzZXQgb3BlcmFuZC4KCShkdW1wX2dlbmVyaWNfbm9kZSwgY2FzZSBBUlJBWV9SQU5HRV9SRUYpOiBUcmVhdCBsaWtlIEFSUkFZX1JFRgoJYW5kIHByaW50IGxvd2VyIGJvdW5kIGFuZCBlbGVtZW50IHNpemUgZm9yIGJvdGguCgkob3BfcHJpbywgY2FzZSBBUlJBWV9SQU5HRV9SRUYpOiBMaWtlIEFSUkFZX1JFRi4KCSogdHJlZS1zcmEuYyAoY3NjX2J1aWxkX2NvbXBvbmVudF9yZWYpOiBBZGQgbmV3IG9wZXJhbmQuCgkoc2NhbGFyaXplX2NhbGxfZXhwcik6IFVzZSBnZXRfYmFzZV9hZGRyZXNzLgoJKiB0cmVlLXNzYS1jY3AuYyAod2lkZW5fYml0ZmllbGQpOiBDbGVhbiB1cCBzaXplIGhhbmRsaW5nLgoJKG1heWJlX2ZvbGRfb2Zmc2V0X3RvX2FycmF5X3JlZik6IFJld29yayB0byBoYW5kbGUgaW5wdXQgaGF2aW5nIGFuCglBUlJBWV9SRUYsIHJlZmluZSBoYW5kbGluZyBvZiBsb3dlciBib3VuZCwgYW5kIGFkZCBuZXcgb3BlcmFuZHMKCWZvciBBUlJBWV9SRUYuCgkobWF5YmVfZm9sZF90b19jb21wb25lbnRfcmVmKTogQWRkIG5ldyBvcGVyYW5kIGZvciBDT01QT05FTlRfUkVGLgoJKG1heWJlX2ZvbGRfc3RtdF9pbmRpcmVjdCk6IE9ubHkgZm9sZCAqJkIgdG8gQiBpZiB0eXBlcyBtYXRjaC4KCShtYXliZV9mb2xkX3N0bXRfYWRkaXRpb24pOiBPbmx5IGhhbmRsZSBjb25zdGFudCBsb3dlciBib3VuZC4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMpOiBNaW5vciByZWFycmFuZ2VtZW50cy4KCVRyZWF0IEFSUkFZX1JFRiBhbmQgQVJSQVlfUkFOR0VfUkVGIHRoZSBzYW1lOyBsb29rIGF0IGV4dHJhIG9wZXJhbmRzLgoJTG9vayBhdCBuZXcgb2Zmc2V0IG9wZXJhbmQgb2YgQ09NUE9ORU5UX1JFRi4KCSogdHJlZS1zc2EuYyAoc2V0X2lzX3VzZWQpOiBVc2UgaGFuZGxlZF9jb21wb25lbnRfcC4KCSogdHJlZS5jIChzdWJzdGl0dXRlX2luX2V4cHIsIGNhc2UgQ09NUE9ORU5UX1JFRik6IEFkZCBuZXcgb3BlcmFuZC4KCShzdGFiaWxpemVfcmVmZXJlbmNlLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBMaWtld2lzZS4KCShzdGFiaWxpemVfcmVmZXJlbmNlLCBjYXNlIEFSUkFZX1JBTkdFX1JFRiwgQVJSQVlfUkVGKTogU2ltaWxhcmx5LgoJKHJlY29tcHV0ZV90cmVlX2ludmFyaWFudF9mb3JfYWRkcl9leHByKTogQ29tcGxldGVseSByZXdvcmsgdG8KCWJlIG1vcmUgcHJlY2lzZS4gIEFsc28gc2V0IFRSRUVfU0lERV9FRkZFQ1RTLgoJKGJ1aWxkMV9zdGF0LCBjYXNlIEFSUkFZX0VYUFIpOiBEb24ndCBoYW5kbGUgVFJFRV9TSURFX0VGRkVDVFMgaGVyZS4KCShidWlsZDJfc3RhdCwgYnVpbGQzX3N0YXQsIGJ1aWxkNF9zdGF0KTogRm9yIHJlZmVyZW5jZXMsCglwcm9wYWdhdGUgVFJFRV9USElTX1ZPTEFUSUxFLgoJKGdldF91bndpZGVuZWQpOiBBZGQgbmV3IG9wZXJhbmQgZm9yIENPTVBPTkVOVF9SRUYuCgkoZ2V0X25hcnJvd2VyKTogTGlrZXdpc2U7IHVzZSBob3N0X2ludGVnZXJwIGZvciBERUNMX1NJWkUuCgkqIHRyZWUuZGVmIChDT01QT05FTlRfUkVGKTogQWRkIG5ldyBvcGVyYW5kLgoJKEFSUkFZX1JFRiwgQVJSQVlfUkFOR0VfUkVGKTogQWRkIHR3byBuZXcgb3BlcmFuZHMuCgkqIHRyZWUuaCAoYXJyYXlfcmVmX2VsZW1lbnRfc2l6ZSwgYXJyYXlfcmVmX2xvd19ib3VuZCk6IE5ldyBkZWNscy4KCShjb21wb25lbnRfcmVmX2ZpZWxkX29mZnNldCk6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfdmFfc3RhcnQpOiBBZGQgbmV3IG9wIGZvciBDT01QT05FTlRfUkVGLgoJKGFscGhhX2dpbXBsaWZ5X3ZhX2FyZyk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfdmFfc3RhcnQsIGl4ODZfZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pODYwL2k4NjAuYyAoaTg2MF92YV9zdGFydCwgaTg2MF92YV9hcmcpOiBMaWtld2lzZS4KCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuYyAoaXEyMDAwX3ZhX2FyZyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfdmFfc3RhcnQsIG1pcHNfdmFfYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF92YV9zdGFydCwgcnM2MDAwX2dpbXBsaWZ5X3ZhX2FyZyk6CglMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX3ZhX3N0YXJ0LCBzMzkwX2dpbXBsaWZ5X3ZhX2FyZyk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYyAoc2hfdmFfc3RhcnQsIHNoX3ZhX2FyZyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTFfZXhwYW5kX2J1aWxpbl92YV9zdGFydCk6CglMaWtld2lzZS4KCSh4c3Rvcm15MTZfZXhwYW5kX2J1aWx0aW5fdmFfYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV92YV9zdGFydCwgeHRlbnNhX3ZhX2FyZyk6IExpa2V3aXNlLgoJKiBvYmpjL29iamMtYWN0LmMgKGdlbmVyYXRlX3N0YXRpY19yZWZlcmVuY2VzKTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVfc3RyaW5ncywgYnVpbGRfbWV0aG9kX3Byb3RvdHlwZV9saXN0X3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVfcHJvdG9jb2xfbGlzdCk6IExpa2V3aXNlLgoKMjAwNC0wNi0yMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE0NzgyCgkqIHBhLmMgKGVtaXRfbW92ZV9zZXF1ZW5jZSk6IFVzZSBTRm1vZGUgZm9yIDQtYnl0ZSBtb2RlcyB3aGVuIGRvaW5nCgl0aGUgYWRkcmVzcyBjaGVja3MgZm9yIHNlY29uZGFyeSByZWxvYWRzIGZvciBsb2FkcyBmcm9tIGFuZCBzdG9yZXMKCXRvIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4KCSogcGEuaCAoRVhUUkFfQ09OU1RSQUlOVCwgY2FzZSBUKTogVXNlIFNGbW9kZSBmb3IgNC1ieXRlIG1vZGVzCglpbiB0aGUgYWRkcmVzcyBjaGVjay4gIE1vdmUgd29yayBhcm91bmQgZm9yIEVMRjMyIHRhcmdldHMgdG8KCUdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUy4KCShHT19JRl9MRUdJVElNQVRFX0FERFJFU1MpOiBSZXF1aXJlIGNvbnN0YW50IG9mZnNldHMgdG8gYmUKCWNvcnJlY3RseSBhbGlnbmVkIGZvciBESW1vZGUgbG9hZHMgYW5kIHN0b3Jlcy4gIERvbid0IGFsbG93IGxvbmcKCVNGbW9kZSBkaXNwbGFjZW1lbnRzIG9uIEVMRjMyLgoKMjAwNC0wNi0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBydGwtb3B0LzE2MTE0CgkqIGNzZS5jIChtZXJnZV9lcXVpdl9jbGFzc2VzKTogQWxzbyByZWhhc2ggaW4gcmVzcG9uc2UgdG8KCWRlbGV0ZV9yZWdfZXF1aXYgY2hhbmdlcy4KCShyZWhhc2hfdXNpbmdfcmVnKTogRG9uJ3QgZXhjbHVkZSBSRUdzIGZyb20gcmVoYXNoaW5nLgoKMjAwNC0wNi0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmRlZiAoUkVUVVJOX1NUTVQpOiBSZW1vdmUuCgkqIGMtY29tbW9uLmggKFJFVFVSTl9TVE1UX0VYUFIpOiBSZW1vdmUuCgkoY19leHBhbmRfcmV0dXJuLCBidWlsZF9yZXR1cm5fc3RtdCk6IFJlbW92ZS4KCShjX2NvbW1vbl9zdG10X2NvZGVzKTogUmVtb3ZlIFJFVFVSTl9TVE1ULgoJKiBjLWR1bXAuYyAoZHVtcF9uZXh0X3N0bXQpOiBSZW1vdmUuCgkoY19kdW1wX3RyZWUpOiBSZW1vdmUgUkVUVVJOX1NUTVQuCgkqIGMtZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBVc2UgY19maW5pc2hfcmV0dXJuLgoJKiBjLXBhcnNlLmluIChzdG10KTogTGlrZXdpc2UuCgkqIGMtZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfcmV0dXJuX3N0bXQpOiBSZW1vdmUuCgkoY19naW1wbGlmeV9leHByKTogUmVtb3ZlIFJFVFVSTl9TVE1ULgoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKiBjLXNlbWFudGljcy5jIChidWlsZF9yZXR1cm5fc3RtdCk6IFJlbW92ZS4KCSogYy10cmVlLmggKGNfZmluaXNoX3JldHVybik6IERlY2xhcmUuCgkqIGMtdHlwZWNrLmMgKGNfZmluaXNoX3JldHVybik6IFJlbmFtZSBmcm9tIGNfZXhwYW5kX3JldHVybi4KCVJldHVybiB2b2lkLiAgQnVpbGQgUkVUVVJOX0VYUFIgZGlyZWN0bHkuCgkqIHRyZWUtZHVtcC5oIChkdW1wX25leHRfc3RtdCk6IFJlbW92ZS4KCjIwMDQtMDYtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBjYWxsIG1ha2VfZGVjbF9ydGwuICBEb24ndAoJbG9vayBhdCBUUkVFX0FERFJFU1NBQkxFIG9mIHN5bWJvbCBuYW1lLgoKMjAwNC0wNi0yMSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCglQUiB0YXJnZXQvMTU1NTEKCSogY29uZmlnL2kzODYvaTM4Ni5tZDogQ2hhbmdlIFVOU1BFQ19TVEFDS19QUk9CRSB0byBVTlNQRUNWX1NUQUNLX1BST0JFLgoJKGFsbG9jYXRlX3N0YWNrX3dvcmtlcik6IE1ha2UgdW5zcGVjX3ZvbGF0aWxlLgoJKGFsbG9jYXRlX3N0YWNrX3dvcmtlcl9yZXg2NCk6IExpa2V3aXNlLgoJKGFsbG9jYXRlX3N0YWNrX3dvcmtlcl9wb3N0cmVsb2FkKTogTGlrZXdpc2UuCgkoYWxsb2NhdGVfc3RhY2tfd29ya2VyX3JleDY0X3Bvc3RyZWxvYWQpOiBMaWtld2lzZS4KCjIwMDQtMDYtMjEgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiBvcHRpbWl6YXRpb24vMTU5ODIKCSogdHJlZS1zc2EtcHJlLmM6IFVwZGF0ZSBhIGZldyBjb21tZW50cyBhbmQgdG9kb3MgdG8KCXJlZmxlY3QgY29uc3RhbnRzIGNoYW5nZS4KCShnZXRfdmFsdWVfaGFuZGxlKTogQ29uc3RhbnRzIG5vdyB2YWx1ZSBudW1iZXIgdG8gdGhlbXNlbHZlcy4KCShsb29rdXApOiBDb25zdGFudHMgbG9va3VwIHRvIHRoZW1zZWx2ZXMuCgkoYWRkX3RvX3ZhbHVlKTogQWRqdXN0IHRvIGFsd2F5cyBiZSBvbi4KCShzZXRfY29udGFpbnNfdmFsdWUpOiBBZGp1c3QgZm9yIGNvbnN0YW50cyBjaGFuZ2UuCgkoZmluZF9sZWFkZXIpOiBEaXR0by4KCShwaGlfdHJhbnNsYXRlKTogJ3InIG5vZGVzIGFyZSBuZXZlciBBTlRJQyByaWdodCBub3cuCgkodmFsaWRfaW5fc2V0KTogRGl0dG8uCgkoZ2V0X2V4cHJfc2V0KTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfb3JfZ2VuZXJhdGVfZXhwcmVzc2lvbik6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBmcm9tCglpbnNlcnRfYXV4LgoJKGNyZWF0ZV9leHByZXNzaW9uX2J5X3BpZWNlcyk6IERpdHRvLCBwbHVzIGFkZGl0aW9uYWwKCW1hY2hpbmVyeSB0byBoYW5kbGUgY29tcGxleCB2YWx1ZXMuCgkoY29tcHV0ZV9hdmFpbCk6IFJlbW92ZSBkZWFkIFJFVFVSTl9FWFBSIGhhbmRsaW5nLgoKMjAwNC0wNi0yMSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jOiBJbmNsdWRlIGluc24tY29kZXMuaAoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEZMQUdTX1JFRywgRlBTUl9SRUcsIERJUkZMQUdfUkVHKTogRG9uJ3QKCWRlZmluZSBoZXJlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChCUF9SRUcsIFNQX1JFRywgRkxBR1NfUkVHLCBGUFNSX1JFRywKCURJUkZMQUdfUkVHKTogTmV3IGRlZmluZV9jb25zdGFudHMuICBVc2UgdGhlbSBldmVyeXdoZXJlLgoKMjAwNC0wNi0yMSAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvdC1saW51eCAoTVVMVElMSUJfT1BUSU9OUyk6IFJlbW92ZS4KCjIwMDQtMDYtMjEgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guaCAoU1VQUE9SVF9TSDEsIFNVUFBPUlRfU0gyRSwgU1VQUE9SVF9TSDQpOiBDb25kaXRpb25hbGx5IGRlZmluZS4KCShTVVBQT1JUX1NINF9TSU5HTEUpOiBMaWtld2lzZS4KCShUQVJHRVRfU1dJVENIRVMpOiBCcmVhayBvdXQgc3dpdGNoZXMgZm9yIGNwdSBzdWJ0YXJnZXRzOgoJKFRBUkdFVF9TV0lUQ0hfU0gxLCBUQVJHRVRfU1dJVENIX1NIMiwgVEFSR0VUX1NXSVRDSF9TSDJFKTogRGVmaW5lLgoJKFRBUkdFVF9TV0lUQ0hfU0gzLCBUQVJHRVRfU1dJVENIX1NIM0UpOiBMaWtld2lzZS4KCShUQVJHRVRfU1dJVENIX1NINF9TSU5HTEVfT05MWSwgVEFSR0VUX1NXSVRDSF9TSDRfU0lOR0xFKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NXSVRDSF9TSDRfTk9GUFUsIFRBUkdFVF9TV0lUQ0hfU0g0KTogTGlrZXdpc2UuCgkoVEFSR0VUX1NXSVRDSF9TSDVfNjRNRURJQSwgVEFSR0VUX1NXSVRDSF9TSDVfNjRNRURJQV9OT0ZQVSk6IExpa2V3aXNlLgoJKFRBUkdFVF9TV0lUQ0hFU19TSDVfMzJNRURJQSk6IExpa2V3aXNlLgoJKFRBUkdFVF9TV0lUQ0hFU19TSDVfMzJNRURJQV9OT0ZQVSk6IExpa2V3aXNlLgoJKFNFTEVDVF9TSDVfNjQsIFNFTEVDVF9TSDVfNjRfTk9GUFUpOiBSZW5hbWUgdG86CgkoU0VMRUNUX1NINV82NE1FRElBLCBTRUxFQ1RfU0g1XzY0TUVESUFfTk9GUFUpCgkoU0VMRUNUX1NINV8zMiwgU0VMRUNUX1NINV8zMl9OT0ZQVSk6IFJlbmFtZSB0bzoKCShTRUxFQ1RfU0g1XzMyTUVESUEsIFNFTEVDVF9TSDVfMzJNRURJQV9OT0ZQVSkuCgkoU0hfTVVMVElMSUJfQ1BVX0RFRkFVTFQsIE1VTFRJTElCX0RFRkFVTFRTKTogRGVmaW5lLgoJKEFTTV9JU0FfU1BFQ19ERUZBVUxULCBBU01fSVNBX0RFRkFVTFRfU1BFQyk6IExpa2V3aXNlLgoJKiBzaDY0LmggKEFTTV9TUEVDLCBMSU5LX0RFRkFVTFRfQ1BVX0VNVUwpOiBEb24ndCByZWRlZmluZS4KCShUQVJHRVRfREVGQVVMVCk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvdC1lbGY6IEFtZW5kIGNvbW1lbnQuCgkqIGNvbmZpZy9zaC90LTFlLCBjb25maWcvc2gvdC1tbGliLXNoMTogTmV3IGZpbGVzLgoJKiBjb25maWcvc2gvdC1tbGliLXNoMiwgY29uZmlnL3NoL3QtbWxpYi1zaDJlOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3QtbWxpYi1zaDMsIGNvbmZpZy9zaC90LW1saWItc2gzZTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC90LW1saWItc2g0LCBjb25maWcvc2gvdC1tbGliLXNoNC1ub2ZwdTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC90LW1saWItc2g0LXNpbmdsZTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC90LW1saWItc2g0LXNpbmdsZS1vbmx5OiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3QtbWxpYi1zaDUtMzJtZWRpYTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC90LW1saWItc2g1LTMybWVkaWEtbm9mcHU6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvdC1tbGliLXNoNS02NG1lZGlhOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3QtbWxpYi1zaDUtNjRtZWRpYS1ub2ZwdTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC90LW1saWItc2g1LWNvbXBhY3Q6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvdC1tbGliLXNoNS1jb21wYWN0LW5vZnB1OiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3Qtc2g6IChNVUxUSUxJQl9FTkRJQU4pOiBBZGQgbWIuCgkoTVVMVElMSUJfQ1BVUyk6IERlZmluZS4KCShNVUxUSUxJQl9PUFRJT05TKTogVXNlIE1VTFRJTElCX0NQVVMuCgkoTVVMVElMSUJfTUFUQ0hFUyk6IFVzZSBzb21lIHNoZWxsIGNvZGUgdG8gY2FsY3VsYXRlIGl0LgoJKE1VTFRJTElCX0VYQ0VQVElPTlMpOiBDaGFuZ2UgdG8gbWwvbTEuCgkqIGNvbmZpZy9zaC9lbGYuaCAoU1VCVEFSR0VUX0FTTV9JU0FfU1BFQyk6IFVzZSBBU01fSVNBX0RFRkFVTFRfU1BFQy4KCSogY29uZmlnL3NoL25ldGJzZC1lbGYuaDogVXBkYXRlIGNvZGUgd2hpY2ggc2V0cyBUQVJHRVRfVkVSU0lPTl9DUFUuCgkoTElOS19ERUZBVUxUX0NQVV9FTVVMKTogRG9uJ3QgcmVkZWZpbmUuCgkoTk9fUFJPRklMRV9DT1VOVEVSUyk6IERlZmluZSB0byAxLgoJKiBjb25maWcvc2gvdC1uZXRic2QgKE1VTFRJTElCX09QVElPTlMpOiBEb24ndCBhcHBlbmQgdG8uCgkoTVVMVElMSUJfRElSTkFNRVMsIE1VTFRJTElCX01BVENIRVMsIE1VTFRJTElCX0VYQ0VQVElPTlMpOiBEb24ndCB6YXAuCgkqIGNvbmZpZy9zaC90LW5ldGJzZC1zaDUtNjQgKE1VTFRJTElCX09QVElPTlMpOiBEb24ndCByZWRlZmluZS4KCShNVUxUSUxJQl9NQVRDSEVTKTogRG9uJ3QgemFwLgoJKE1VTFRJTElCX0RJUk5BTUVTKTogVXNlIE1VTFRJTElCX1JBV19ESVJOQU1FUy4KCSogY29uZmlnL3NoL3Qtc2g2NCAoTVVMVElMSUJfT1BUSU9OUyk6IERvbid0IHJlZGVmaW5lLgoJKE1VTFRJTElCX01BVENIRVMsIE1VTFRJTElCX0VYQ0VQVElPTlMpOiBEb24ndCB6YXAuCgkoTVVMVElMSUJfUkFXX0RJUk5BTUVTKTogRGVmaW5lLgoJKE1VTFRJTElCX0RJUk5BTUVTKTogVXNlIGl0LgoJKiBjb25maWcuZ2NjOiBBbHNvIHNldCBjcHVfdHlwZSAvIG5lZWRfNjRiaXRfaHdpbnQgZm9yIHNoW2JlXSotKi0qLgoJKHNoKmxpbnV4IGNvbmZpZ3VyYXRpb25zKTogTWVyZ2UgaW50bzoKCShzaCplbGYgLyBzaCprYW9zIGNvbmZpZ3VyYXRpb25zKS4gIFN1cHBvcnQgLS13aXRoLWVuZGlhbiwgLS13aXRoLWNwdSwKCS0td2l0aC1tdWx0aWxpYi1saXN0IG9wdGlvbnMuICBTdXBwb3J0IHNoLXN1cGVyaC1lbGYgY29uZmlndXJhdGlvbi4KCShzaCotbmV0YnNkKik6IFVzZSBTRUxFQ1RfU0gqIG1hY3Jvcy4KCShzdXBwb3J0ZWRfZGVmYXVsdHMpOiBzaFsxMjM0NTZibGVdLSotKiB8IHNoLSotKiBzdXBwb3J0ICJjcHUiLgoJTWVyZ2Ugc2gqLSotbmV0YnNkKiBjb25maWd1cmF0aW9ucyBpbnRvIHNoLWVsZiBjb25maWd1cmF0aW9ucy4KCSogY29uZmlnL3NoL3QtbmV0YnNkLXNoNSwgY29uZmlnL3NoL3QtYmUsIGNvbmZpZy9zaC90LWxlOiBEZWxldGUuCgkqIGNvbmZpZy9zaC90LW1vbm9saWI6IExpa2V3aXNlLgoKMjAwNC0wNi0yMSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKEFSTV9MRUdJVElNSVpFX1JFTE9BRF9BRERSRVNTKTogU29mdC1mbG9hdCBuZWVkCglub3QgaW1wbHkgRlBBLgoKMjAwNC0wNi0yMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKG9wZXJhbmRfZXF1YWxfcCk6IFBhc3MgZmxhZ3MgaW4gcmVjdXJzaXZlIGNhbGxzIGZvcgoJYmluYXJ5IGFuZCByZWxhdGlvbmFsIG9wZXJhdGlvbnMuICBBZGQgc3VwcG9ydCBmb3IgVFJVVEhfQU5ESUZfRVhQUiwKCVRSVVRIX09SSUZfRVhQUiwgVFJVVEhfQU5EX0VYUFIsIFRSVVRIX09SX0VYUFIgYW5kIFRSVVRIX1hPUl9FWFBSLgoJKiB0cmVlLmMgKGNvbW11dGF0aXZlX3RyZWVfY29kZSk6IEFsc28gbGlzdCBVTk9SREVSRURfRVhQUiwKCU9SREVSRURfRVhQUiwgVU5FUV9FWFBSLCBMVEdUX0VYUFIsIFRSVVRIX0FORF9FWFBSLCBUUlVUSF9PUl9FWFBSCglhbmQgVFJVVEhfWE9SX0VYUFIuCgoyMDA0LTA2LTIxICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogcnRsYW5hbC5jIChtYXlfdHJhcF9wKTogTWFyayBMVEdUIGFzIHRyYXBwaW5nLgoKMjAwNC0wNi0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiB0cmVlLWFsaWFzLWNvbW1vbi5oIChzdHJ1Y3QgdHJlZV9hbGlhc19vcHMpOiBDaGFuZ2UgaXAgYW5kCglpcF9wYXJ0aWFsIHRvIHVuc2lnbmVkIGludC4KCjIwMDQtMDYtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jICh2ZXJpZnlfc2VxdWVuY2VfcG9pbnRzKTogRXhwb3J0LgoJKGNfZXhwYW5kX2V4cHJfc3RtdCk6IE1vdmUgdG8gYy10eXBlY2suYy4KCSogYy1jb21tb24uaCAoY19leHBhbmRfZXhwcl9zdG10KTogUmVtb3ZlLgoJKHZlcmlmeV9zZXF1ZW5jZV9wb2ludHMpOiBEZWNsYXJlLgoJKiBjLW11ZGZsYXAuYyAobWZsYW5nX2ZsdXNoX2NhbGxzKTogVXNlIGNfZmluaXNoX2V4cHJfc3RtdC4KCSogYy1wYXJzZS5pbiAoZm9yX2luaXRfc3RtdCwgc3RtdCk6IExpa2V3aXNlLgoJKiBjLXRyZWUuaCAoY19maW5pc2hfZXhwcl9zdG10KTogRGVjbGFyZS4KCShjX3RyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogUmVtb3ZlLgoJKiBjLXR5cGVjay5jIChjX3RyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogUmVtb3ZlLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIsIGJ1aWxkX2JpbmFyeV9vcCk6IFVzZSB0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcC4KCShlbWl0X3NpZGVfZWZmZWN0X3dhcm5pbmdzKTogTmV3LgoJKGNfZmluaXNoX2V4cHJfc3RtdCk6IFJlbmFtZSBmcm9tIGNfZXhwYW5kX2V4cHJfc3RtdC4gIFVzZSBpdC4KCShjX2ZpbmlzaF9zdG10X2V4cHIpOiBXb3JrIHdpdGhvdXQgRVhQUl9TVE1ULiAgSGFuZGxlIGVoIHJlZ2lvbnMuCglVc2UgZW1pdF9zaWRlX2VmZmVjdF93YXJuaW5ncy4KCShwdXNoX2NsZWFudXApOiBDb3B5IFNUQVRFTUVOVF9MSVNUX1NUTVRfRVhQUi4KCSogZm9sZC1jb25zdC5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IEhhbmRsZSBUQVJHRVRfRVhQUi4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfbW9kaWZ5X2V4cHIpOiBEb24ndCBkaXNjYXJkIFRBUkdFVF9FWFBSCgl3aXRoIHZvaWQgaW5pdGlhbGl6ZXIuCgkoZ2ltcGxpZnlfdGFyZ2V0X2V4cHIpOiBIYW5kbGUgdm9pZCBCSU5EX0VYUFIgaW5pdGlhbGl6ZXIuCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKTogRml4IHR5cGUgbG9va3VwIGZvcgoJSU5JVF9FWFBSIGFuZCBNT0RJRllfRVhQUi4KCSogb2JqYy9vYmpjLWFjdC5jIChidWlsZF9tb2R1bGVfZGVzY3JpcHRvcik6IFVzZSBhZGRfc3RtdAoJaW5zdGVhZCBvZiBjX2V4cGFuZF9leHByX3N0bXQuCgoyMDA0LTA2LTIxICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbmRfZXhwcl93aXRoX2NvbXBhcmlzb24pOgoJTmV3IGZ1bmN0aW9uLCBleHRyYWN0ZWQgZnJvbSBmb2xkLgoJKGZvbGQpOiBFeHRyYWN0IGNvZGUgdG8gZm9sZCBBIG9wIEIgPyBBIDogQywgdXNlCglpdCB0byBmb2xkIEEgb3AgQiA/IEMgOiBBLiAgUmVhbGx5IG9wdGltaXplCglBICYgTiA/IE4gOiAwIHdoZXJlIE4gaXMgYSBwb3dlciBvZiB0d28uICBBdm9pZAoJcmVseWluZyBvbiBjYW5vbmljYWxpemF0aW9uIGFuZCByZWN1cnNpb24gZm9yCglmb2xkaW5ncyBvZiBDT05EX0VYUFIgdG8gaGFwcGVuLgoKMjAwNC0wNi0yMCAgRGF2aWQgQXllcnMgIDxkLmF5ZXJzQGlub2RlLmF0PgoKCSogb2JqYy9vYmpjLWFjdC5oIChnZXRfb2JqZWN0X3JlZmVyZW5jZSk6IFJlbmFtZSB0bwoJZ2V0X3Byb3RvY29sX3JlZmVyZW5jZS4KCShzdXBlcl90eXBlKTogUmVuYW1lIHRvIG9iamNfc3VwZXJfdHlwZS4KCShzZWxlY3Rvcl90eXBlKTogUmVuYW1lIHRvIG9iamNfc2VsZWN0b3JfdHlwZS4KCShpZF90eXBlKTogUmVuYW1lIHRvIG9iamNfaWRfdHlwZS4KCShpbnN0YW5jZV90eXBlKTogUmVuYW1lIHRvIG9iamNfaW5zdGFuY2VfdHlwZS4KCShwcm90b2NvbF90eXBlKTogUmVuYW1lIHRvIG9iamNfcHJvdG9jb2xfdHlwZS4KCShJU19JRCk6IFVwZGF0ZSByZWZlcmVuY2UgdG8gaWRfdHlwZS4KCSogb2JqYy9vYmpjLWFjdC5jIChnZXRfb2JqZWN0X3JlZmVyZW5jZSk6IFJlbmFtZSB0bwoJZ2V0X3Byb3RvY29sX3JlZmVyZW5jZTsgYWRkIGRvY3VtZW50YXRpb247IHVwZGF0ZSByZWZlcmVuY2VzIHRvCglpZF90eXBlLgoJKGxvb2t1cF9tZXRob2RfaW5fcHJvdG9jb2xfbGlzdCk6IFJlbmFtZSBjbGFzc19tZXRoIHRvCglpc19jbGFzczsgYWRkIGRvY3VtZW50YXRpb24uCgkoZmluaXNoX21lc3NhZ2VfZXhwcik6IFJlbmFtZSBpc19jbGFzcyB0byBjbGFzc190cmVlLgoJKHN5bnRoX21vZHVsZV9wcm9sb2d1ZSwgb2JqY19pc19vYmplY3RfcHRyLCBvYmpjX2J1aWxkX2V4Y19wdHIsCgluZXh0X3NqbGpfYnVpbGRfdHJ5X2NhdGNoX2ZpbmFsbHksIG9iamNfYmVnaW5fY2F0Y2hfY2xhdXNlLAoJYnVpbGRfbmV4dF9vYmpjX2V4Y2VwdGlvbl9zdHVmZiwgZ2V0X2FyZ190eXBlX2xpc3QsCglidWlsZF9vYmpjX21ldGhvZF9jYWxsKTogVXBkYXRlIHJlZmVyZW5jZXMgdG8gaWRfdHlwZS4KCShzeW50aF9tb2R1bGVfcHJvbG9ndWUsIGJ1aWxkX29iamNfc3ltdGFiX3RlbXBsYXRlLAoJYnVpbGRfc2VsZWN0b3JfcmVmZXJlbmNlX2RlY2wsIGJ1aWxkX3NlbGVjdG9yLAoJYnVpbGRfc2VsZWN0b3JfdHJhbnNsYXRpb25fdGFibGUsIGJ1aWxkX3R5cGVkX3NlbGVjdG9yX3JlZmVyZW5jZSwKCWdldF9hcmdfdHlwZV9saXN0LCBzeW50aF9zZWxmX2FuZF91Y21kX2FyZ3MsIGdldF9hcmdfdHlwZV9saXN0LAoJc3ludGhfc2VsZl9hbmRfdWNtZF9hcmdzKTogVXBkYXRlIHJlZmVyZW5jZXMgdG8gc2VsZWN0b3JfdHlwZS4KCShidWlsZF9wcml2YXRlX3RlbXBsYXRlLCBidWlsZF9pdmFyX3JlZmVyZW5jZSk6CVVwZGF0ZSByZWZlcmVuY2VzCgl0byBpbnN0YW5jZV90eXBlLgoJKHN5bnRoX21vZHVsZV9wcm9sb2d1ZSwgYnVpbGRfcHJvdG9jb2xfcmVmZXJlbmNlLAoJYnVpbGRfcHJvdG9jb2xfZXhwciwgc3RhcnRfcHJvdG9jb2wpOiBVcGRhdGUgcmVmZXJlbmNlcyB0bwoJcHJvdG9jb2xfdHlwZS4KCShzeW50aF9tb2R1bGVfcHJvbG9ndWUsIGdldF9hcmdfdHlwZV9saXN0LCBidWlsZF9vYmpjX21ldGhvZF9jYWxsKToKCVVwZGF0ZSByZWZlcmVuY2VzIHRvIHN1cGVyX3R5cGUuCgkqIGMtcGFyc2UuaW46ICh0eXBlc3BlY19ub25yZXNlcnZlZF9ub25hdHRyKTogVXBkYXRlCglyZWZlcmVuY2VzIHRvIGdldF9vYmplY3RfcmVmZXJlbmNlLgoJKiBvYmpjL29iamMtdHJlZS5kZWY6IEFkZCBDIG1vZGUgaWRlbnRpZmllciBzZXF1ZW5jZS4KCjIwMDQtMDYtMjAgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGxvb3AtaW52YXJpYW50LmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAobG9vcC1pbnZhcmlhbnQubyk6IE5ldy4KCSogY2ZnbG9vcC5oIChnbG9iYWxfY29zdF9mb3Jfc2l6ZSwgaW5pdF9zZXRfY29zdHMsCgltb3ZlX2xvb3BfaW52YXJpYW50cyk6IERlY2xhcmUuCgkqIGNmZ2xvb3BhbmFsLmMgKHNlcV9jb3N0LCBpbml0X3NldF9jb3N0cywgZ2xvYmFsX2Nvc3RfZm9yX3NpemUpOiBOZXcKCWZ1bmN0aW9ucy4KCShhdmFpbF9yZWdzLCByZXNfcmVncywgc21hbGxfY29zdCwgcHJlc19jb3N0LCBzcGlsbF9jb3N0KTogTmV3Cgl2YXJpYWJsZXMuCgkqIGNvbW1vbi5vcHQgKGZsb29wLW9wdGltaXplMiwgZm1vdmUtbG9vcC1pbnZhcmlhbnRzKTogTmV3IG9wdGlvbnMuCgkqIGxvb3AtaW5pdC5jIChsb29wX29wdGltaXplcl9pbml0KTogQ2FsbCBpbml0X3NldF9jb3N0cy4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfaGFuZGxlX2xvb3AyKTogQ2FsbCBtb3ZlX2xvb3BfaW52YXJpYW50cy4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2hlY2sgZmxhZ19sb29wX29wdGltaXplMi4KCSogdG9wbGV2LmMgKHByb2Nlc3Nfb3B0aW9ucyk6IEhhbmRsZSBmbGFnX2xvb3Bfb3B0aW1pemUyLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mbG9vcC1vcHRpbWl6ZTIsIC1mbW92ZS1sb29wLWludmFyaWFudHMpOiBEb2N1bWVudC4KCSogZG9jL3Bhc3Nlcy50ZXhpIChsb29wLWludmFyaWFudC5jKTogRG9jdW1lbnQuCgoyMDA0LTA2LTIwICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiB0cmVlLXNzYS1wcmUuYyAoY29tcHV0ZV9hbnRpYyk6IEtlZXAgQkJfVklTSVRFRCBmbGFnIHplcm9lZC4KCjIwMDQtMDYtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzdG10LmMgKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogQWRkIGxvY3VzIGFyZ3VtZW50LgoJKiB0cmVlLmggKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogVXBkYXRlIGRlY2wuCgkqIGMtdHlwZWNrLmMgKGludGVybmFsX2J1aWxkX2NvbXBvdW5kX2V4cHIpOiBVcGRhdGUgY2FsbC4KCSogYy1naW1wbGlmeS5jIChnaW1wbGlmeV9leHByX3N0bXQpOiBMaWtld2lzZS4KCjIwMDQtMDYtMjAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMTYwODkKCSogYnVpbHRpbnMuYyAoZW50cnlfb2ZfZnVuY3Rpb24pOiBNb3ZlIHRvIC4uLgoJKiBjZmdydGwuYyAoZW50cnlfb2ZfZnVuY3Rpb24pOiBIZXJlIGFuZCBtYWtlIG5vbi1zdGF0aWMuCgkqIGludGVncmF0ZS5jIChlbWl0X2luaXRpYWxfdmFsdWVfc2V0cyk6IFVzZSBlbnRyeV9vZl9mdW5jdGlvbi4KCSogcnRsLmggKGVudHJ5X29mX2Z1bmN0aW9uKTogUHJvdG90eXBlLgoKMjAwNC0wNi0yMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHBlbnRpdW00X2Nvc3QpOiBJbmNyZWFzZSAibGVhIiBjb3N0IGZyb20gMSB0byAzLgoJKGl4ODZfcnR4X2Nvc3RzKSA8QVNISUZULCBQTFVTPjogQ29uc2lkZXIgaXg4Nl9jb3N0LT5sZWEgZXZlbiB3aGVuCglUQVJHRVRfREVDT01QT1NFX0xFQS4KCjIwMDQtMDYtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5oIChhZGRfZGVjbF9zdG10KTogTW92ZSB0byBjcC10cmVlLmguCgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbCk6IERvbid0IHVzZSBhZGRfZGVjbF9zdG10LgoJKiBjLXBhcnNlLmluOiBMaWtld2lzZS4KCSogYy1naW1wbGlmeS5jIChnaW1wbGlmeV9leHByX3N0bXQpOiBEb24ndCBidWlsZCBDTEVBTlVQX1BPSU5UX0VYUFIuCgkoZ2ltcGxpZnlfY19sb29wLCBnaW1wbGlmeV9yZXR1cm5fc3RtdCwgZ2ltcGxpZnlfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkqIGMtc2VtYW50aWNzLmMgKGFkZF9kZWNsX3N0bXQpOiBNb3ZlIHRvIGNwL3NlbWFudGljcy5jLgoKMjAwNC0wNi0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmRlZiAoSUZfU1RNVCwgQ0xFQU5VUF9TVE1UKTogTW92ZSB0byBjcC10cmVlLmRlZi4KCSogYy1jb21tb24uaCAoSUZfQ09ORCwgVEhFTl9DTEFVU0UsIEVMU0VfQ0xBVVNFLCBDTEVBTlVQX0JPRFksCglDTEVBTlVQX0VYUFIsIENMRUFOVVBfREVDTCk6IE1vdmUgdG8gY3AtdHJlZS5oLgoJKGNfY29tbW9uX3N0bXRfY29kZXMpOiBSZW1vdmUgSUZfU1RNVCwgQ0xFQU5VUF9TVE1ULgoJKiBjLWR1bXAuYyAoY19kdW1wX3RyZWUpOiBNb3ZlIElGX1NUTVQsIENMRUFOVVBfU1RNVCB0byBjcF9kdW1wX3RyZWUuCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2Nfc3RhdGVtZW50KTogU2ltaWxhcmx5LgoJKiBjLWdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2NsZWFudXBfc3RtdCwgZ2ltcGxpZnlfY2xlYW51cF9zdG10cywKCWdpbXBsaWZ5X2lmX3N0bXQpOiBNb3ZlIHRvIGNwLWdpbXBsaWZ5LmMuCgkoY19nZW5lcmljaXplLCBjX2dpbXBsaWZ5X2V4cHIpOiBEb24ndCBjYWxsIHRoZW0uCgkqIGMtc2VtYW50aWNzLmMgKHB1c2hfY2xlYW51cCk6IE1vdmUgdG8gY3Avc2VtYW50aWNzLmMuCgkqIGMtdHlwZWNrLmMgKHB1c2hfY2xlYW51cCk6IE5ldy4KCShjX2JlZ2luX2lmX3N0bXQsIGNfZmluaXNoX2lmX2NvbmQsIGNfZmluaXNoX3RoZW4sIGNfZmluaXNoX2Vsc2UsCgljX2ZpbmlzaF9pZl9zdG10KTogVXNlIENPTkRfRVhQUi4KCSogdHJlZS5oIChDTEVBTlVQX0VIX09OTFkpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCjIwMDQtMDYtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChoYXNfY19saW5rYWdlKTogTmV3IGludGVyZmFjZS4KCSogYy1jcHBidWlsdGluLmM6IEluY2x1ZGUgdGFyZ2V0LmguCgkoY19jcHBfYnVpbHRpbnMpOiBEZWZpbmUgX19QUkFHTUFfUkVERUZJTkVfRVhUTkFNRSBhbmQKCV9fUFJBR01BX0VYVEVSTl9QUkVGSVggd2hlbiBhcHByb3ByaWF0ZS4KCSogYy1wcmFnbWEuYzogSW5jbHVkZSB0YXJnZXQuaC4KCURvY3VtZW50IGNsYXJpZmllZCBzZW1hbnRpY3Mgb2Ygc3ltYm9sLXJlbmFtaW5nICNwcmFnbWFzLgoJKGhhbmRsZV9wcmFnbWFfcmVkZWZpbmVfZXh0bmFtZSwgaGFuZGxlX3ByYWdtYV9leHRlcm5fcHJlZml4KQoJKG1heWJlX2FwcGx5X3JlbmFtaW5nX3ByYWdtYSk6IFJld3JpdGUgYWNjb3JkaW5nIHRvIGNsYXJpZmllZAoJc2VtYW50aWNzLiAgQWx3YXlzIHJlY29nbml6ZSwgYnV0IGRvIG5vdCBuZWNlc3NhcmlseSBleGVjdXRlLgoJKGluaXRfcHJhZ21hKTogVW5jb25kaXRpb25hbGx5IHJlZ2lzdGVyIHN5bWJvbC1yZW5hbWluZyBwcmFnbWFzLgoJKiBzeXN0ZW0uaDogUG9pc29uIEhBTkRMRV9QUkFHTUFfUkVERUZJTkVfRVhUTkFNRQoJYW5kIEhBTkRMRV9QUkFHTUFfRVhURVJOX1BSRUZJWC4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIGhhbmRsZV9wcmFnbWFfcmVkZWZpbmVfZXh0bmFtZQoJYW5kIGhhbmRsZV9wcmFnbWFfZXh0ZXJuX3ByZWZpeCBmbGFncy4KCSogdGFyZ2V0LWRlZi5oOiBBZGQgZGVmYXVsdHMgZm9yIFRBUkdFVF9IQU5ETEVfUFJBR01BX1JFREVGSU5FX0VYVE5BTUUKCWFuZCBUQVJHRVRfSEFORExFX1BSQUdNQV9FWFRFUk5fUFJFRklYLgoJKiBNYWtlZmlsZS5pbiAoYy1wcmFnbWEubywgYy1jcHBidWlsdGluLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBjb25maWcvc29sMi5oOiBEZWZpbmUgVEFSR0VUX0hBTkRMRV9QUkFHTUFfUkVERUZJTkVfRVhUTkFNRSwKCW5vdCBIQU5ETEVfUFJBR01BX1JFREVGSU5FX0VYVE5BTUUuCgkoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IE5vIG5lZWQgdG8gZGVmaW5lIF9fUFJBR01BX1JFREVGSU5FX0VYVE5BTUUuCgkoVFJBTlNGRVJfRlJPTV9UUkFNUE9MSU5FKTogUHJvdG90eXBlIG1wcm90ZWN0LgoJKiBjb25maWcvYWxwaGEvb3NmLmg6IERlZmluZSBUQVJHRVRfSEFORExFX1BSQUdNQV9FWFRFUk5fUFJFRklYLAoJbm90IEhBTkRMRV9QUkFHTUFfRVhURVJOX1BSRUZJWC4KCShUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogTm8gbmVlZCB0byBkZWZpbmUgX19QUkFHTUFfRVhURVJOX1BSRUZJWC4KCSogZG9jL2V4dGVuZC50ZXhpIChTb2xhcmlzIFByYWdtYXMsIFRydTY0IFByYWdtYXMpOiBDb21iaW5lCglpbnRvIG9uZSBzZWN0aW9uICJTeW1ib2wtUmVuYW1pbmcgUHJhZ21hcyI7IGNsYXJpZnk7IGRvY3VtZW50CglhZGp1c3RlZCBzZW1hbnRpY3MuCgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbik6IERvIG5vdCBpc3N1ZSBlcnJvciBmb3IgYSBidWlsdGluCgl3aXRoIG5vIHNwZWNpYWwgY2FzZSBjb2RlIGFuZCBubyBERUNMX0FTU0VNQkxFUl9OQU1FOyBqdXN0IGRvIHRoZQoJbGlicmFyeSBjYWxsLgoJKiBjLWRlY2wuYyAoYnVpbHRpbl9mdW5jdGlvbik6IERvbid0IGNhbGwgbWFrZV9kZWNsX3J0bC4KCSogYy1vYmpjLWNvbW1vbi5jIChoYXNfY19saW5rYWdlKTogU3R1YiBpbXBsZW1lbnRhdGlvbi4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uKQoJKGNncmFwaF9yZW1vdmVfdW5yZWFjaGFibGVfbm9kZXMpOiBEb24ndCBjbGVhciBERUNMX0FSR1VNRU5UUy4KCjIwMDQtMDYtMTkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX3Vub3JkZXJlZF9jbXApOiBUYWtlIGFuIEVYUCBhcmd1bWVudAoJaW5zdGVhZCBvZiBib3RoIGFuIEFSR0xJU1QgYW5kIGEgcmVzdWx0IFRZUEUuICBIYW5kbGUgdGhlc2UgQzk5Cgljb21wYXJpc29uIGZ1bmN0aW9ucyBhcyAicG9seW1vcnBoaWMiIGJ1aWx0aW5zLiAgQWxzbyBoYW5kbGUKCWxvd2VyaW5nIG9mIEJVSUxUX0lOX0lTVU5PUkRFUkVEIHRvIGFuIFVOT1JERVJFRF9FWFBSIHRyZWUgbm9kZS4KCShmb2xkX2J1aWx0aW5fMSk6IFVwZGF0ZSBjYWxscyB0byBmb2xkX2J1aWx0aW5fdW5vcmRlcmVkX2NtcC4KCU1vdmUgaGFuZGxpbmcgb2YgQlVJTFRfSU5fSVNVTk9SREVSRUQgZnJvbSBoZXJlIHRvIHRoZXJlLgoKMjAwNC0wNi0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMsIGMtY29tbW9uLmggKGxhbmdfZ2ltcGxpZnlfc3RtdCk6IFJlbW92ZS4KCSogYy1naW1wbGlmeS5jOiBSZW1vdmUgdW5uZWNlc3NhcnkgcHJvdG90eXBlcy4KCShjX2dpbXBsaWZ5X3N0bXQpOiBNZXJnZSBpbnRvIC4uLgoJKGNfZ2ltcGxpZnlfZXhwcik6IC4uLiBoZXJlLiAgRG9uJ3QgcGxheSB3aXRoIHByZXBfc3RtdC4KCSogYy1zZW1hbnRpY3MuYyAocHJlcF9zdG10KTogUmVtb3ZlLgoJKiBnaW1wbGlmeS5jIChhbm5vdGF0ZV9vbmVfd2l0aF9sb2N1cyk6IEJyZWFrIG91dCBmcm9tIC4uLgoJKGFubm90YXRlX2FsbF93aXRoX2xvY3VzKTogLi4uIGhlcmUuCgkoZ2ltcGxpZnlfZXhwcik6IEFkZCBsb2N1cyB0byBleHByZXNzaW9ucyBldmVuIGlmIHByZS9wb3N0IHF1ZXVlcwoJYXJlIG5vdCBwcmVzZW50LgoKMjAwNC0wNi0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTU5NDEKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogSWYgbm90IHBhZGRpbmcgdXB3YXJkIG9yIGludGVudGlvbmFsbHkKCWZvcmNpbmcgdXB3YXJkIHBhZGRpbmcsIHRha2Ugb2Zmc2V0X3J0eCBpbnRvIGFjY291bnQgd2hlbiBkZXRlcm1pbmluZwoJdGhlIGFsaWdubWVudCBmb3Igc3RhY2tfcGFybS4KCjIwMDQtMDYtMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE1NTUwCgkqIGlmY3Z0LmMgKG5vY2VfdHJ5X21vdmUpOiBSZWNvZ25pemUgYWxsIGdlbmVyYXRlZCBpbnN0cnVjdGlvbnMuCgoyMDA0LTA2LTE5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmdW5jdGlvbi5jIChmcmVlX2FmdGVyX2NvbXBpbGF0aW9uKTogRG8gbm90IGZyZWUgY29tcHV0ZWRfZ290b19jb21tb24qLgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBLaWxsIGNvbXB1dGVkX2dvdG9fY29tbW9uKi4KCSogc3RtdC5jIChleHBhbmRfY29tcHV0ZWRfZ290byk6IERvIG5vdCBjb21tb25pemUgdGhlIGNvbXB1dGVkIGdvdG9zLgoJKiB0cmVlLWNmZy5jIChkaXNiYW5kX2ltcGxpY2l0X2VkZ2VzKTogRG8gbm90IGZvcndhcmQgYWNyb3NzIHRoZQoJY29tbW9uaXplZCBjb21wdXRlZCBnb3RvLgoKMjAwNC0wNi0xOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIG9ic29sZXRlIGNvbW1lbnQgcmVnYXJkaW5nIFBBIDIuMCBzdXBwb3J0CglpbiBiaW51dGlscy4KCjIwMDQtMDYtMTkgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCglQUiBjKysvMTU3MjEKCSogdG9wbGV2LmMgKHdyYXB1cF9nbG9iYWxfZGVjbGFyYXRpb25zKTogRG8gbm90IGNoZWNrCglUUkVFX1NZTUJPTF9SRUZFUkVOQ0VEIG9mIHRoZSBERUNMX0FTU0VNQkxFUl9OQU1FIGJ1dCBjaGVjawoJY2dyYXBoX3ZhcnBvb2xfbm9kZSdzIG5lZWRlZCBmaWVsZC4KCjIwMDQtMDYtMTkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCSAgICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJQ0ZHIHRyYW5zcGFyZW50IFJUTCBleHBhbnNpb246CgkqIE1ha2VmaWxlLmluIChjZmdleHBhbmQubyk6IE5ldyBvYmplY3QgZmlsZS4KCShidWlsdGlucy5vKTogQWRkIGRlcGVuZGVuY3kgb24gYmFzaWMtYmxvY2suaAoJKiBidWlsdGlucy5jOiBJbmNsdWRlIGJhc2ljLWJsb2NrLmgKCShlbnRyeV9vZl9mdW5jdGlvbik6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYnVpbHRpbl9hcHBseV9hcmdzLCBleHBhbmRfYnVpbHRpbl9zYXZlYXJncyk6IFVzZSBpdC4KCSogY2ZnZXhwYW5kLmM6IE5ldyBmaWxlLgoJKiBleHByLmMgKGV4ZWN1dGVfZXhwYW5kLCBwYXNzX2V4cGFuZCk6IEtpbGwuCgkqIHBhc3MuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IERvIG5vdCBidWlsZCBDRkcgdW5sZXNzIGNhbGxlZCBmcm9tCgljb3ZlcmFnZSBjb2RlLgoJKiB0cmVlLWNmZy5jIChkZWxldGVfdHJlZV9jZmcpOiBSZW5hbWUgdG8uLgoJKGRlbGV0ZV90cmVlX2NmZ19hbm5vdGF0aW9ucyk6IC4uLiB0aGlzIG9uZTsgRG8gbm90IHJlbW92ZSB0aGUgQ0ZHIGl0c2VsZi4KCSogdHJlZS1mbG93LmggKGRlbGV0ZV90cmVlX2NmZ19hbm5vdGF0aW9ucyk6IERlY2xhcmUuCgkoZGxlZXRlX3RyZWVfY2ZnKTogS2lsbC4KCSogdHJlZS1vcHRpbWl6ZS5jIChleGVjdXRlX3JlYnVpbGRfYmluZCwgcGFzc19yZWJ1aWxkX2JpbmQpOiBLaWxsLgoJKGV4ZWN1dGVfZGVsX2NmZyk6IFJlbmFtZSB0by4uLgoJKGV4ZWN1dGVfZnJlZV9kYXRhc3RydWN0dXJlcyk6IFRoaXMgb25lLi4uCgkocGFzc19kZWxfY2ZnKTogUmVuYW1lIHRvLi4uCgkocGFzc19mcmVlX2RhdGFzdHJ1Y3R1cmVzKTogLi4uIHRoaXMgb25lOyBEbyBub3Qga2lsbCBQUk9QX2NmZy4KCShpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IE1ha2UgY2ZnIGJ1aWxkIGFuZCBwcm9maWxpbmcgdG8gaGFwcGVuCgl1bmNvbmRpdGlvbmFsbHkuCgoyMDA0LTA2LTE5ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiB0cmVlLW11ZGZsYXAuYyAobWZfZGVjbF9jYWNoZV9sb2NhbHMpOiBTa2lwIGxhYmVscyBiZWZvcmUKCWluc2VydGluZyB0aGUgY2FjaGUgdmFyaWFibGVzLgoKCSogdHJlZS1tdWRmbGFwLmM6IEluY2x1ZGUgaGVhZGVycyB0byBtYWtlIGJhc2ljX2Jsb2NrIGF2YWlsYWJsZS4KCU1vdmUgZnVuY3Rpb25zIGFyb3VuZCBzdWNoIHRoYXQgcmVsYXRlZCBmdW5jdGlvbnMgYXJlIG5lYXIgZWFjaAoJb3RoZXIuICBBZGQgcHJvdG90eXBlcyBmb3IgYWxsIHN0YXRpYyBmdW5jdGlvbnMuICBBZGQgY29tbWVudHMKCWJyaWVmbHkgZXhwbGFpbmluZyB3aGF0IElSIHRoZSBtdWRmbGFwMSBhbmQgbXVkZmxhcDIgd29yayBvbiBhbmQKCXdoYXQgdGhleSBkby4KCShtdWRmbGFwX2Z1bmN0aW9uX2RlY2xzKTogUmVuYW1lIHRvIGV4ZWN1dGVfbXVkZmxhcF9mdW5jdGlvbl9kZWNscy4KCShtdWRmbGFwX2Z1bmN0aW9uX29wcyk6IFJlbmFtZSB0byBleGVjdXRlX211ZGZsYXBfZnVuY3Rpb25fb3BzLgoJKHBhc3NfbXVkZmxhcF8xLCBwYXNzX211ZGZsYXBfMik6IFVwZGF0ZS4KCShtZl9kZWNsX2NhY2hlX2xvY2Fscyk6IE1ha2UgaXQgd29yayBvbiB0aGUgQ0ZHIGluc3RlYWQgb2YgdGhlIHNhdmVkCglmdW5jdGlvbiB0cmVlLgoJKG1mX2J1aWxkX2NoZWNrX3N0YXRlbWVudF9mb3IpOiBNYWtlIGl0IHdvcmsgb24gdGhlIENGRy4KCShtZl94Zm9ybV9kZXJlZnNfMSk6IExpa2V3aXNlLiAgQ2xlYW51cCBjb2RlIHN0eWxlLgoJKG1mX3hmb3JtX2RlcmVmcyk6IExpa2V3aXNlLgoKMjAwNC0wNi0xOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1jZmcuYyAobGFiZWxfdG9fYmxvY2spOiBJbnZlbnQgdGhlIGxhYmVsIGRlc3RpbmF0aW9uIGZvcgoJdW5kZWZpbmVkIGxhYmVscy4KCShjbGVhbnVwX2RlYWRfbGFiZWxzKTogVXBkYXRlIHRhYmxlIGluIHRoZSBjYXNlIGxhYmVsX3RvX2Jsb2NrIGFkZGVkCgluZXcgbGFiZWwuCgoyMDA0LTA2LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMrKy8xNjAzNgoJKiBnaW1wbGUtbG93LmMgKGxvd2VyX2Z1bmN0aW9uX2JvZHkpOiBHZW5lcmF0ZSByZXR1cm4gc3RhdGVtZW50IGZvcgoJZmFsbCBvZmYgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24gaGVyZSAuLi4KCSogdHJlZS1jZmcuYyAobWFrZV9lZGdlcyk6IC4uLiBpbnN0ZWFkIG9mIGhlcmUuCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X3JldHVybl9leHByKTogTWFyayByZXR1cm4gdGVtcCBUUkVFX05PX1dBUk5JTkcuCgoyMDA0LTA2LTE4ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiB0cmVlLXNzYS5jIChyYWlzZV92YWx1ZSk6IFJlbW92ZWQuCgkoZ2V0X2VxX25hbWUsIGNoZWNrX3BoaV9yZWR1bmRhbmN5KTogTmV3IGZ1bmN0aW9ucy4KCShraWxsX3JlZHVuZGFudF9waGlfbm9kZXMpOiBVc2Ugc3RhbmRhcmQgc3NhIG1pbmltYWxpemF0aW9uIGFsZ29yaXRobS4KCjIwMDQtMDYtMTggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKSA8VU5PUkRFUkVEX0VYUFIsIE9SREVSRURfRVhQUiwgVU5MVF9FWFBSLAoJVU5MRV9FWFBSLCBVTkdUX0VYUFIsIFVOR0VfRVhQUiwgVU5FUV9FWFBSLCBMVEdUX0VYUFI+OiBBZGQKCWNvbnN0YW50IGZvbGRpbmcgZm9yIHVub3JkZXJlZCBjb21wYXJpc29uIHRyZWUgbm9kZXMuICBJZiBib3RoCglvcGVyYW5kcyBhcmUgcmVhbCBjb25zdGFudHMsIGNhbGwgZm9sZF9yZWxhdGlvbmFsX2NvbnN0LiAgSWYgZWl0aGVyCglvcGVyYW5kIGlzIGEgTmFOLCBldmFsdWF0ZSB0aGUgb3RoZXIgZm9yIHNpZGUtZWZmZWN0cyBhbmQgcmV0dXJuIGEKCWNvbnN0YW50LiAgT3B0aW1pemUgKGRvdWJsZSlmbG9hdDEgQ01QIChkb3VibGUpZmxvYXQyIGludG8gdGhlCgllcXVpdmFsZW50IGZsb2F0MSBDTVAgZmxvYXQyLgoJKG5vbmRlc3RydWN0aXZlX2ZvbGRfYmluYXJ5X3RvX2NvbnN0YW50KSA8VU5PUkRFUkVEX0VYUFIsCglPUkRFUkVEX0VYUFIsIFVOTFRfRVhQUiwgVU5MRV9FWFBSLCBVTkdUX0VYUFIsIFVOR0VfRVhQUiwgVU5FUV9FWFBSLAoJTFRHVF9FWFBSPjogQ2FsbCBmb2xkX3JlbGF0aW9uYWxfY29uc3QgZm9yIGNvbnN0YW50IG9wZXJhbmRzLgoJKGZvbGRfcmVsYXRpb25hbF9jb25zdCk6IEFkZCBzdXBwb3J0IGZvciB1bm9yZGVyZWQgY29tcGFyaXNvbiB0cmVlCglub2Rlcy4gIERvbid0IGNvbnN0YW50IGZvbGQgIm9yZGVyZWQiIGZsb2F0aW5nIHBvaW50IGNvbXBhcmlzb25zCglhZ2FpbnN0IE5hTiBpZiB3aGVuIGZsYWdfdHJhcHBpbmdfbWF0aCBpcyBzZXQuCgoyMDA0LTA2LTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoYnVpbGRfcmFuZ2VfY2hlY2spOiBJZiAhaW5fcCBhbmQgcmVjdXJzaXZlIGNhbGwKCWZhaWxzLCBleGl0IGltbWVkaWF0ZWx5LiAgSWYgaGlnaCAtIGxvdyBvdmVyZmxvd3MgYW5kIGV0eXBlIGlzCglhIHNpZ25lZCB0eXBlLCByZXRyeSB3aXRoIHVuc2lnbmVkIGV0eXBlLgoJKG1lcmdlX3Jhbmdlcyk6IElmICFpbjBfcCBhbmQgIWluMV9wLCBoYW5kbGUgZXZlbiByYW5nZTIgYWRqYWNlbnQKCXRvIHJhbmdlMSBhdCBUWVBFX01BWF9WQUxVRSBhbmQgVFlQRV9NSU5fVkFMVUUuCgoyMDA0LTA2LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1naW1wbGlmeS5jIChnaW1wbGlmeV9jb25kaXRpb24pOiBSZW1vdmUuCgkoZ2ltcGxpZnlfY19sb29wLCBnaW1wbGlmeV9pZl9zdG10LCBnaW1wbGlmeV9zd2l0Y2hfc3RtdCk6IERvbid0CgljYWxsIGl0LgoKMjAwNC0wNi0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtZWguYyAoZGVjaWRlX2NvcHlfdHJ5X2ZpbmFsbHkpOiBGaXggc2NhbGluZyBvZiBjb3B5IGFuZAoJc3dpdGNoIGVzdGltYXRlcy4KCjIwMDQtMDYtMTggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL2kzODYvZGFyd2luLmggKEhPVF9URVhUX1NFQ1RJT05fTkFNRSk6IERlZmluZS4KCShOT1JNQUxfVEVYVF9TRUNUSU9OX05BTUUpOiBEZWZpbmUuCgkoVU5MSUtFTFlfRVhFQ1VURURfVEVYVF9TRUNUSU9OX05BTUUpOiBEZWZpbmUuCgkoU0VDVElPTl9GT1JNQVRfU1RSSU5HKTogRGVmaW5lLgoKMjAwNC0wNi0xOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYwoJKFRBUkdFVF9TQ0hFRF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IERlZmluZS4KCSogeHRlbnNhLm1kOiBSZXBsYWNlIHRoZSBvbGQgcGlwZWxpbmUgZGVzY3JpcHRpb24gd2l0aCBhIERGQSBtb2RlbC4KCjIwMDQtMDYtMTggIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCSAgICBVbHJpY2ggV2VpZ2FuZCA8VWxyaWNoLldlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQ6IFJlbW92ZSB0aGUgZ2VuZXJpYyBwaXBlbGluZSBkZXNjcmlwdGlvbi4KCSogY29uZmlnL3MzOTAvMjA2NC5tZDogTWFrZSBhbGwgaW5zbiByZXNlcnZhdGlvbnMgYXBwbHkgdG8KCXRoZSB6OTAwLCBnNSBhbmQgZzYuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF91c2VfZGZhX3BpcGVsaW5lX2ludGVyZmFjZSk6IFJlbW92ZS4KCShUQVJHRVRfU0NIRURfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOgoJRGVmaW5lIHRvIGhvb2tfaW50X3ZvaWRfMS4KCShzMzkwX2FkanVzdF9jb3N0KTogQ2xlYW51cC4gIERvbid0IGNoZWNrIGFkZHJlc3MgZGVwZW5kZW5jeSBoZXJlLgoJKHMzOTBfZmlyc3RfY3ljbGVfbXVsdGlwYXNzX2RmYV9sb29rYWhlYWQpOiBBbHdheXMgcmV0dXJuIDQuCgoyMDA0LTA2LTE4ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCQkJRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLWRmYS5jIChjcmVhdGVfdmFyX2Fubik6IHRyZWVfYW5uIC0+IHRyZWVfYW5uX3QuCgkoY3JlYXRlX3N0bXRfYW5uKTogRGl0dG8uCgkoY3JlYXRlX3RyZWVfYW5uKTogTmV3IGZ1bmN0aW9uLgoJKGNyZWF0ZV9jc3RfYW5uKTogUmVtb3ZlLgoJKGNyZWF0ZV9leHByX2Fubik6IERpdHRvLgoKCSogdHJlZS1mbG93LWlubGluZS5oIChjc3RfYW5uKTogUmVtb3ZlLgoJKGdldF9jc3RfYW5uKTogRGl0dG8uCgkoZ2V0X2V4cHJfYW5uKTogRGl0dG8uCgkoZXhwcl9hbm4pOiBEaXR0by4KCShnZXRfdHJlZV9hbm4pOiBOZXcgZnVuY3Rpb24uCgkodHJlZV9hbm4pOiBEaXR0by4KCShhbm5fdHlwZSk6IHRyZWVfYW5uIC0+IHRyZWVfYW5uX3QuCgkqIHRyZWUtZmxvdy5oICh0cmVlX2Fubl90eXBlKTogQ1NUX0FOTiwgRVhQUl9BTk4gcmVtb3ZlZC4KCShzdHJ1Y3QgY3N0X2Fubl9kKTogUmVtb3ZlZC4KCShzdHJ1Y3QgZXhwcl9hbm5fZCk6IERpdHRvLgoJKHVuaW9uIHRyZWVfYW5uX2QpOiBSZW1vdmVkIGNzdCBhbmQgZXhwci4KCSh0cmVlX2Fubik6IFJlbmFtZWQgdG8gdHJlZV9hbm5fdC4KCSogdHJlZS1zc2EtY2NwLmMgKHNldF9yaHMpOiB0cmVlX2FubiAtPiB0cmVlX2Fubl90LgoJKiB0cmVlLXNzYS1wcmUuYyAoZ2V0X3ZhbHVlX2hhbmRsZSk6IFJld3JpdGUgZm9yIHNpbmdsZSBjb21tb24KCWFubm90YXRpb24uCgkoc2V0X3ZhbHVlX2hhbmRsZSk6IERpdHRvLgoJKHBoaV90cmFuc2xhdGUpOiBEaXR0by4KCSogdHJlZS10YWlsY2FsbC5jIChhZGp1c3RfcmV0dXJuX3ZhbHVlKTogdHJlZV9hbm4gLT4gdHJlZV9hbm5fdC4KCjIwMDQtMDYtMTggIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3QtbGludXg2NDogTmV3IGZpbGUuCgkqIGNvbmZpZy5nY2M6IEFkZCBpdCB0byB0bWFrZV9maWxlIGZvciBzaDY0Ki0qLWxpbnV4Ki4KCjIwMDQtMDYtMTggIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBlbWl0LXJ0bC5jICh1bnNoYXJlX2FsbF9ydGxfMSk6IE5ldyBuYW1lIG9mIHVuc2hhcmVfYWxsX3J0bC4KCSh1bnNoYXJlX2FsbF9ydGxfYWdhaW4pOiBDYWxsIHVuc2hhcmVfYWxsX3J0bF8xLgoJKHVuc2hhcmVfYWxsX3J0bCk6IE5ldy4KCSogZnVuY3Rpb24uYyAoaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzKTogUmVtb3ZlIHBhcmFtZXRlcnMuCgkqIGZ1bmN0aW9uLmggKGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncyk6IEFkZCBwcm90b3R5cGUuCgkqIHJ0bC5oICh1bnNoYXJlX2FsbF9ydGwpOiBBZGQgcHJvdG90eXBlLgoJKiB0cmVlLmggKGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncywgdW5zaGFyZV9hbGxfcnRsKTogUmVtb3ZlCglwcm90b3R5cGUuCgkqIHBhc3Nlcy5jOiBSZW1vdmUgYXNzZXJ0aW9ucyBvbiB0aGUgcGFyYW1ldGVycyB0bwoJcmVzdF9vZl9oYW5kbGVfKiBmdW5jdGlvbnMuICBSZW1vdmUgdGhlIHBhcmFtZXRlcnMgdG8KCXRoZSBmdW5jdGlvbnMsIHJlcGxhY2luZyBkZWNsIHdpdGggY3VycmVudF9mdW5jdGlvbl9kZWNsCglhbmQgaW5zbnMgd2l0aCBnZXRfaW5zbnMgKCkuCgoyMDA0LTA2LTE3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoY29uc3RhbnRfYm9vbGVhbl9ub2RlKTogSGFuZGxlIGJvb2xlYW5fdHlwZV9ub2RlCglkaXJlY3RseSwgcmV0dXJuIGVpdGhlciBib29sZWFuX3RydWVfbm9kZSBvciBib29sZWFuX2ZhbHNlX25vZGUuCgoyMDA0LTA2LTE4ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogb3B0cy5zaDogRGVsZXRlLiAgQnJlYWsgb3V0IGdlbmVyYXRlZCBjb2RlIHRvIG5leHQgZm91ciBmaWxlcy4KCSogb3B0LWdhdGhlci5hd2s6IE5ldyBmaWxlLgoJKiBvcHRjLWdlbi5hd2s6IE5ldyBmaWxlLgoJKiBvcHRoLWdlbi5hd2s6IE5ldyBmaWxlLgoJKiBvcHQtZnVuY3Rpb25zLmF3azogTmV3IGNvbW1vbiBmaWxlLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGZvciBhYm92ZS4KCSogY29uZmlndXJlLmFjOiBVcGRhdGUgY29tbWVudC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wNi0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGZsYWdfb2JqY19zamxqX2V4Y2VwdGlvbnMpOiBOZXcuCgkqIGMtY29tbW9uLmggKGZsYWdfb2JqY19zamxqX2V4Y2VwdGlvbnMpOiBEZWNsYXJlLgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IFNldCBpdC4KCShjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBIYW5kbGUgaW50ZXJhdGlvbiBvZiBkaWZmZXJlbnQKCW9iamVjdGl2ZS1jIGV4Y2VwdGlvbiBhbmQgcnVudGltZSBzd2l0Y2hlcy4KCSogYy1kZWNsLmMgKGNfZWhfaW5pdGlhbGl6ZWRfcCk6IE5ldy4KCShmaW5pc2hfZGVjbCk6IFVzZSBpdCBpbnN0ZWFkIG9mIGxvY2FsIGVoX2luaXRpYWxpemVkX3AuCgkqIGMtcGFyc2UuaW4gKG5lc3RlZF9mdW5jdGlvbiwgbm90eXBlX25lc3RlZF9mdW5jdGlvbik6IFJlY29yZAoJdGhlIHJlc3VsdCBvZiBjb21wc3RtdC4KCShjb21wc3RtdF9vcl9lcnJvcik6IExpa2V3aXNlLgoJKGNvbXBzdG10KTogRG9uJ3QgYWRkX3N0bXQgdGhlIHJlc3VsdC4KCShzdG10KTogRG9uJ3QgcmV0dXJuIGFueXRoaW5nLiAgUmV3cml0ZSBvYmpjIHRyeSBhbmQgc3luYyBydWxlcy4KCShvYmpjX3RyeV9zdG10LCBvYmpjX2NhdGNoX2xpc3QpOiBSZW1vdmUuCgkob2JqY19jYXRjaF9ibG9jaywgb2JqY19maW5hbGx5X2Jsb2NrKTogUmVtb3ZlLgoJKG9iamNfY2F0Y2hfcHJlZml4LCBvYmpjX2NhdGNoX2NsYXVzZSwgb2JqY19vcHRfY2F0Y2hfbGlzdCk6IE5ldy4KCShvYmpjX3RyeV9jYXRjaF9jbGF1c2UsIG9iamNfZmluYWxseV9jbGF1c2UpOiBOZXcuCgkob2JqY190cnlfY2F0Y2hfc3RtdCk6IFJld3JpdGUuCgkqIGMtdHJlZS5oIChjX2VoX2luaXRpYWxpemVkX3ApOiBEZWNsYXJlLgoJKiBjLW9wdCAoZm9iamMtc2psai1leGNlcHRpb25zKTogTmV3LgoJKiBleGNlcHQuYyAob3V0cHV0X2Z1bmN0aW9uX2V4Y2VwdGlvbl90YWJsZSk6IERvbid0IGNhbGwgY2dyYXBoCglvbiBub24tZGVjbHMuCgkqIG9iamMvb2JqYy1hY3QuYyAoVVRBR19FWENEQVRBX1ZBUiwgVVRBR19DQVVHSFRFWENfVkFSLAoJVVRBR19SRVRIUk9XRVhDX1ZBUiwgVVRBR19FVkFMT05DRV9WQVIsIHN0cnVjdCB2YWxfc3RhY2ssCgljYXRjaF9jb3VudF9zdGFjaywgZXhjX2JpbmRpbmdfc3RhY2ssIGlmX25lc3RpbmdfY291bnQsCglibGtfbmVzdGluZ19jb3VudCwgb2JqY19lbnRlcl9ibG9jaywgb2JqY19leGl0X2Jsb2NrLAoJb2JqY19kZWNsYXJlX3ZhcmlhYmxlLCB2YWxfc3RhY2tfcHVzaCwgdmFsX3N0YWNrX3BvcCwKCW9iamNfYnVpbGRfdHJ5X2VudGVyX2ZyYWdtZW50LCBvYmpjX2J1aWxkX2V4dHJhY3RfZXhwciwKCW9iamNfYnVpbGRfdHJ5X2V4aXRfZnJhZ21lbnQsIG9iamNfYnVpbGRfZXh0cmFjdF9mcmFnbWVudCwKCW9iamNfYnVpbGRfdHJ5X3Byb2xvZ3VlLCBvYmpjX2J1aWxkX3RyeV9lcGlsb2d1ZSwKCW9iamNfYnVpbGRfY2F0Y2hfc3RtdCwgb2JqY19idWlsZF9jYXRjaF9lcGlsb2d1ZSwKCW9iamNfYnVpbGRfZmluYWxseV9wcm9sb2d1ZSwgb2JqY19idWlsZF9maW5hbGx5X2VwaWxvZ3VlLAoJb2JqY19idWlsZF90cnlfY2F0Y2hfZmluYWxseV9zdG10LCBvYmpjX2J1aWxkX3N5bmNocm9uaXplZF9wcm9sb2d1ZSwKCW9iamNfYnVpbGRfc3luY2hyb25pemVkX2VwaWxvZ3VlKTogUmVtb3ZlLgoJKG9iamNfY3JlYXRlX3RlbXBvcmFyeV92YXIsIHN0cnVjdCBvYmpjX3RyeV9jb250ZXh0LCBjdXJfdHJ5X2NvbnRleHQsCglvYmpjX2VoX3J1bnRpbWVfdHlwZSwgb2JqY19pbml0X2V4Y2VwdGlvbnMsIG9iamNfYnVpbGRfZXhjX3B0ciwKCW5leHRfc2psal9idWlsZF90cnlfZXhpdCwgbmV4dF9zamxqX2J1aWxkX2VudGVyX2FuZF9zZXRqbXAsCgluZXh0X3NqbGpfYnVpbGRfZXhjX2V4dHJhY3QsIG5leHRfc2psal9idWlsZF9jYXRjaF9saXN0LAoJbmV4dF9zamxqX2J1aWxkX3RyeV9jYXRjaF9maW5hbGx5LCBvYmpjX2JlZ2luX3RyeV9zdG10LAoJb2JqY19iZWdpbl9jYXRjaF9jbGF1c2UsIG9iamNfZmluaXNoX2NhdGNoX2NsYXVzZSwKCW9iamNfYnVpbGRfZmluYWxseV9jbGF1c2UsIG9iamNfZmluaXNoX3RyeV9zdG10LAoJb2JqY19idWlsZF9zeW5jaHJvbml6ZWQpOiBOZXcuCgkob2JqY19pc19vYmplY3RfaWQsIG9iamNfaXNfY2xhc3NfaWQpOiBOZXcuCgkob2JqY19jb21wdHlwZXMpOiBVc2UgdGhlbS4KCShidWlsZF9uZXh0X29iamNfZXhjZXB0aW9uX3N0dWZmKTogQnJlYWsgTmVYVCBzamxqIG91dCBmcm9tCglidWlsZF9vYmpjX2V4Y2VwdGlvbl9zdHVmZi4KCShzeW50aF9tb2R1bGVfcHJvbG9ndWUpOiBVcGRhdGUgdG8gbWF0Y2guCgkob2JqY19idWlsZF90aHJvd19zdG10KTogVXNlIGN1cl90cnlfY29udGV4dCB0byBkZWNpZGUgaWYKCXdlJ3JlIGluIGEgQGNhdGNoLgoJKiBvYmpjL29iamMtYWN0Lmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKE9DVElfRVhDRVBUSU9OX0JMS19TVEFDSywgb2JqY19leGNlcHRpb25fYmxvY2tfc3RhY2spOiBSZW1vdmUuCgoyMDA0LTA2LTE3ICBBbmRyZXcgUGluc2tpIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGMtdHlwZWNrLmMgKHRhZ2dlZF90eXBlc190dV9jb21wYXRpYmxlX3AgPGNhc2UgVU5JT05fVFlQRT4pOgoJVXNlIFRZUEVfRklFTERTIGluc3RlYWQgb2YgVFlQRV9WQUxVRVMuCgoyMDA0LTA2LTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMTYwMTUKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfdGFyZ2V0X2V4cHIpOiBIYW5kbGUgdm9pZCBpbml0aWFsaXplci4KCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpIFtUQVJHRVRfRVhQUl06IExpa2V3aXNlLgoJKiBkb2MvYy10cmVlLnRleGkgKEV4cHJlc3Npb24gdHJlZXMpOiBVcGRhdGUgVEFSR0VUX0VYUFIKCWFuZCBBR0dSX0lOSVRfRVhQUi4KCjIwMDQtMDYtMTcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX3JlbGF0aW9uYWxfY29uc3QpOiBVc2UgY29uc3RhbnRfYm9vbGVhbl9ub2RlLgoKMjAwNC0wNi0xNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIHRhcmdldC8xNTQzMwoJKiBpMzg2Lm1kIChTU0UgU0YgY21vdiAwIHNwbGl0dGVyKTogVGhlIGNvbmRpdGlvbmFsIGlzIFZPSURtb2RlOyBmaXgKCW9wZXJhbmQgbnVtYmVyaW5nIGluIHRoZSBvdXRwdXQgdGVtcGxhdGUuCgkoU1NFIERGIGNtb3YgMCBzcGxpdHRlcik6IFRoZSBjb25kaXRpb25hbCBpcyBWT0lEbW9kZS4KCjIwMDQtMDYtMTcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGV4Y2VwdC5jIChjYW5fdGhyb3dfaW50ZXJuYWwpOiBSZWNvZ25pemUgUkVTWCBleHByZXNpc29ucy4KCjIwMDQtMDYtMTcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNmZ2J1aWxkLmMgKG1ha2VfZWRnZXMpOiBEbyBub3QgdXNlIGxhYmVsX3ZhbHVlX2xpc3QuCgkoZmluZF9iYXNpY19ibG9ja3NfMSk6IERvIG5vdCBjb2xsZWN0IGxhYmVsX3ZhbHVlX2xpc3QuCgkoZmluZF9zdWJfYmFzaWNfYmxvY2tzKTogVXBkYXRlIGNhbGwgb2YgbWFrZV9lZGdlcy4KCjIwMDQtMDYtMTcgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAcmVkaGF0LmNvbT4KCgkqIHRyZWUtY2ZnLmMgKHRyZWVfbWFrZV9mb3J3YXJkZXJfYmxvY2spOiBVc2UgU0VUX1BISV9SRVNVTFQuCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAoZ2V0X3VzZV9vcF9wdHIpOiBSZXR1cm4gYSB1c2Vfb3BlcmFuZF9wLgoJKGdldF91c2VfZnJvbV9wdHIsIGdldF9kZWZfZnJvbV9wdHIpOiBOZXcuICBSZXR1cm4gb3BlcmFuZCBwb2ludGVycy4KCShnZXRfZGVmX29wX3B0cik6IFJldHVybiBhIGRlZl9vcGVyYW5kX3AgaW5zdGVhZCBvZiBhICd0cmVlIConLgoJKGdldF92X21heV9kZWZfcmVzdWx0X3B0cik6IFJldHVybiBhIGRlZl9vcGVyYW5kX3AuCgkoZ2V0X3ZfbWF5X2RlZl9vcF9wdHIsIGdldF92dXNlX29wX3B0cik6IFJldHVybiBhIHVzZV9vcGVyYW5kX3AuCgkoZ2V0X3ZfbXVzdF9kZWZfb3BfcHRyKTogUmV0dXJuIGEgZGVmX29wZXJhbmRfcC4KCShnZXRfcGhpX3Jlc3VsdF9wdHIpOiBOZXcuICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZXN1bHQgb2YgYSBQSEkuCgkoZ2V0X3BoaV9hcmdfZGVmX3B0cik6IE5ldy4gIFJldHVybiBhIHBvaW50ZXIgdG8gYW4gYXJndW1lbnQgb2YgYSBQSEkuCgkocGhpX2VsZW1lbnRfZm9yX2VkZ2UpOiBSZW1vdmUuCgkqIHRyZWUtZmxvdy5oIChwcm9wYWdhdGVfdmFsdWUsIHJlcGxhY2VfZXhwKTogQ2hhbmdlIHByb3RvdHlwZS4KCShwcm9wYWdhdGVfdHJlZV92YWx1ZSk6IEFkZCBuZXcgcHJvdG90eXBlLgoJKHBoaV9lbGVtZW50X2Zvcl9lZGdlKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogdHJlZS1pbnRvLXNzYS5jIChtYXJrX2RlZl9zaXRlcyk6IFVzZSBuZXcgb3BlcmFuZCB0eXBlcy4KCShwcmVwYXJlX29wZXJhbmRfZm9yX3JlbmFtZSk6IFNwbGl0IGludG8gdHdvIGZ1bmN0aW9ucy4KCShwcmVwYXJlX3VzZV9vcGVyYW5kX2Zvcl9yZW5hbWUpOiBQcmVwYXJlIHVzZSBvcGVyYW5kcy4KCShwcmVwYXJlX2RlZl9vcGVyYW5kX2Zvcl9yZW5hbWUpOiBQcmVwYXJlIGRlZiBvcGVyYW5kcy4KCShyZXdyaXRlX3N0bXQpOiBVc2UgbmV3IG9wZXJhbmQgdHlwZXMuCgkocmV3cml0ZV9vcGVyYW5kKTogVXNlIG5ldyBvcGVyYW5kIHR5cGVzLCBjaGFuZ2UgcGFyYW1ldGVyIHR5cGUuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKHJlcGxhY2VfdmFyaWFibGUpOiBTcGxpdCBpbnRvIHR3byBmdW5jdGlvbnMuCgkocmVwbGFjZV91c2VfdmFyaWFibGUpOiBSZXdyaXRlIHVzZXMuCgkocmVwbGFjZV9kZWZfdmFyaWFibGUpOiBSZXdyaXRlIGRlZnMuCgkocmV3cml0ZV90cmVlcywgcmV3cml0ZV92YXJzX291dF9vZl9zc2EpOiBVc2UgbmV3IG9wZXJhbmQgdHlwZXMuCgkqIHRyZWUtcGhpbm9kZXMuYyAobWFrZV9waGlfbm9kZSwgcmVzaXplX3BoaV9ub2RlKTogVXNlIG5ldyB0eXBlcy4KCShhZGRfcGhpX2FyZywgcmVtb3ZlX3BoaV9hcmdfbnVtKTogVXNlIG5ldyBvcGVyYW5kIHR5cGVzLgoJKiB0cmVlLXNzYS1jY3AuYyAoc3Vic3RpdHV0ZV9hbmRfZm9sZCk6IFVzZSBuZXcgb3BlcmFuZCB0eXBlcy4KCShjY3BfZm9sZCwgcmVwbGFjZV91c2VzX2luKTogVXNlIG5ldyBvcGVyYW5kIHR5cGVzLgoJKiB0cmVlLXNzYS1jb3B5LmMgKHJlcGxhY2Vfc3NhX25hbWVzKTogUmVuYW1lIHRvIHJlcGxhY2Vfc3NhX25hbWVzX2FubgoJYW5kIG5vIGxvbmdlciBzZXQgdGhlIHZhbHVlLCBjaGFuZ2UgcGFyYW1ldGVyIHR5cGUuCgkocmVwbGFjZV9leHBfMSk6IFVzZSBuZXcgb3BlcmFuZCB0eXBlcy4KCShwcm9wYWdhdGVfdmFsdWUpOiBDaGFuZ2UgcGFyYW1ldGVyIHR5cGUsIHVzZSBuZXcgb3BlcmFuZCB0eXBlcy4KCShwcm9wYWdhdGVfdHJlZV92YWx1ZSk6IFByb3BhZ2F0ZV92YWx1ZSB3aXRob3V0IFNTQSBvcGVyYW5kcy4KCShyZXBsYWNlX2V4cCwgY3Byb3Bfb3BlcmFuZCwgY3Byb3BfaW50b19zdG10KTogVXNlIG5ldyBvcGVyYW5kIHR5cGVzLgoJKGNwcm9wX2ludG9fc3VjY2Vzc29yX3BoaXMpOiBVc2UgbmV3IG9wZXJhbmQgdHlwZXMuCgkqIHRyZWUtc3NhLWRvbS5jICh0aHJlYWRfYWNyb3NzX2VkZ2UpOiBVc2UgbmV3IG9wZXJhbmQgdHlwZXMuCgkoZWxpbWluYXRlX3JlZHVuZGFudF9jb21wdXRhdGlvbnMpOiBVc2UgbmV3IG9wZXJhbmQgdHlwZXMuCgkqIHRyZWUtc3NhLWRzZS5jIChmaXhfcGhpX3VzZXMpOiBVc2UgbmV3IG9wZXJhbmRfdHlwZXMuCgkoZml4X3N0bXRfdl9tYXlfZGVmcyk6IFVzZSBuZXcgb3BlcmFuZF90eXBlcy4KCSogdHJlZS1zc2EtbGl2ZS5jIChjcmVhdGVfc3NhX3Zhcl9tYXApOiBVc2UgbmV3IG9wZXJhbmRfdHlwZXMuCgkoYnVpbGRfdHJlZV9jb25mbGljdF9ncmFwaCk6IFVzZSBuZXcgb3BlcmFuZF90eXBlcy4KCSogdHJlZS1zc2EtbG9vcC5jIChkdXBsaWNhdGVfYmxvY2tzKTogVXNlIFBISV9BUkdfREVGX0ZST01fRURHRS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoc3RydWN0IGZyZWVsaXN0X2QpOiBSZW1vdmUuCgkoY2hlY2tfb3B0eXBlX2ZyZWVsaXN0LCBhZGRfb3B0eXBlX2ZyZWVsaXN0KTogUmVtb3ZlLgoJKGFsbG9jYXRlX2RlZl9vcHR5cGUsIGFsbG9jYXRlX3VzZV9vcHR5cGUsIGFsbG9jYXRlX3ZfbWF5X2RlZl9vcHR5cGUsCglhbGxvY2F0ZV92dXNlX29wdHlwZSwgYWxsb2NhdGVfdl9tdXN0X2RlZl9vcHR5cGUpOiBDYWxsIGdnY19hbGxvYy4KCShmcmVlX3VzZXMsIGZyZWVfZGVmcywgZnJlZV92dXNlcywgZnJlZV92X21heV9kZWZzLCBmcmVlX3ZfbXVzdF9kZWZzKToKCUNhbGwgZ2djX2ZyZWUgaW5zdGVhZCBvZiBhZGRfb3B0eXBlX2ZyZWVsaXN0LgoJKGluaXRfc3NhX29wZXJhbmRzLCBmaW5pX3NzYV9vcGVyYW5kcyk6IFJlbW92ZSBmcmVlIGxpc3QgY29kZS4KCShmaW5hbGl6ZV9zc2FfZGVmcywgZmluYWxpemVfc3NhX3VzZXMpOiBTZXQgbmV3IHVzZS9kZWYgb3BlcmFuZHMuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmggKHN0cnVjdCBkZWZfb3B0eXBlX2QpOiBDaGFuZ2UgdW5kZXJseWluZyB0eXBlLgoJKHN0cnVjdCB1c2Vfb3B0eXBlX2QpOiBDaGFuZ2UgdW5kZXJseWluZyB0eXBlLgoJKGRlZl9vcGVyYW5kX3AsIHVzZV9vcGVyYW5kX3ApOiBOZXcgdHlwZXMgZm9yIHBvaW50ZXJzIHRvIG9wZXJhbmRzLgoJKFVTRV9PUCwgREVGX09QLCBWX01BWV9ERUZfUkVTVUxULCBWX01BWV9ERUZfT1AsIFZVU0VfT1AsCglWX01VU1RfREVGX09QKTogVXNlIG5ldyBwb2ludGVyIHR5cGUgaW5zdGVhZCBvZiBkZXJlZmVyZW5jaW5nIGRpcmVjdGx5LgoJKFVTRV9GUk9NX1BUUiwgREVGX0ZST01fUFRSKTogTmV3IG1hY3JvcyB0byAiZGVyZWZlcmVuY2UiIG9wZXJhbmQKCXBvaW50ZXIgdHlwZXMuCgkoU0VUX1VTRSwgU0VUX0RFRik6IE5ldyBtYWNyb3MgdG8gc2V0IG9wZXJhbmRzIGZyb20gdGhlaXIgcG9pbnRlci4KCShTRVRfVVNFX09QLCBTRVRfREVGX09QLCBTRVRfVl9NQVlfREVGX1JFU1VMVCwgU0VUX1ZfTUFZX0RFRl9PUCwKCVNFVF9WVVNFX09QLCBTRVRfVl9NVVNUX0RFRl9PUCk6IE5ldyBTRVQgcm91dGluZXMgZm9yIG9wZXJhbmRzLgoJKFBISV9SRVNVTFRfUFRSLCBQSElfUkVTVUxULCBTRVRfUEhJX1JFU1VMVCk6IE1hY3JvcyB0byBtYW5hZ2UgdGhlCglQSEkgcmVzdWx0IGFzIGFuIG9wZXJhbmQuCgkoUEhJX0FSR19ERUZfUFRSLCBQSElfQVJHX0RFRiwgU0VUX1BISV9BUkdfREVGLCBQSElfQVJHX0RFRl9GUk9NX0VER0UsCglQSElfQVJHX0RFRl9QVFJfRlJPTV9FREdFKTogTWFjcm9zIHRvIG1hbmFnZSB0aGUgUEhJIGFyZ3VtZW50cy4KCSogdHJlZS1zc2EtcHJlLmMgKGVsaW1pbmF0ZSk6IENhbGwgcHJvcGFnYXRlX3RyZWVfdmFsdWUuCgkqIHRyZWUtdGFpbGNhbGwuYyAoaW5kZXBlbmRlbnRfb2Zfc3RtdF9wLCBwcm9wYWdhdGVfdGhyb3VnaF9waGlzKTogVXNlCglQSElfQVJHX0RFRl9GUk9NX0VER0UuCgkqIHRyZWUuaCAoUEhJX1JFU1VMVCk6IFJlbmFtZWQgdG8gUEhJX1JFU1VMVF9UUkVFLgoJKFBISV9BUkdfREVGKTogUmVuYW1lZCB0byBQSElfQVJHX0RFRl9UUkVFLgoKMjAwNC0wNi0xNyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE1OTkxCgkqIHRyZWUtY2ZnLmMgKHRyZWVfYmxvY2tfbGFiZWwpOiBFeHBvcnQuCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAoYnNpX2FmdGVyX2xhYmVscyk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS1mbG93LmggKGJzaV9hZnRlcl9sYWJlbHMsIHRyZWVfYmxvY2tfbGFiZWwpOiBEZWNsYXJlLgoJKiB0cmVlLXNzYS5jIChwcm9wYWdhdGVfaW50b19hZGRyKTogTmV3IGZ1bmN0aW9uLgoJKHJlcGxhY2VfaW1tZWRpYXRlX3VzZXMpOiBIYW5kbGUgcHJvcGFnYXRpb24gb2YgcG9pbnRlciBjb25zdGFudHMuCgkocmFpc2VfdmFsdWUpOiBEbyBub3QgcmVzdHJpY3QgcHJvcGFnYXRpb24gb2YgcG9pbnRlciBjb25zdGFudHMuCgkqIHRyZWUtc3NhbmFtZXMuYyAoZHVwbGljYXRlX3NzYV9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmggKGR1cGxpY2F0ZV9zc2FfbmFtZSk6IERlY2xhcmUuCgoyMDA0LTA2LTE3ICBEYXZpZCBBeWVycyAgPGQuYXllcnNAaW5vZGUuYXQ+CgoJKiBjLXBhcnNlLmluOiBVbmlmeSBPYmplY3RpdmUtQyB0b2tlbiBuYW1lcy4KCjIwMDQtMDYtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJQnVnIDE0NjEwCgkqIE1ha2VmaWxlLmluIChtaW4taW5zbi1tb2Rlcy5vKTogQ29ycmVjdCBkZXBlbmRlbmNpZXMuCgkqIHJlYWwuYyAoZW5jb2RlX2llZWVfZXh0ZW5kZWQsIGRlY29kZV9pZWVlX2V4dGVuZGVkKTogQWx3YXlzCglwcm9kdWNlL2NvbnN1bWUgMTItYnl0ZSBsaXR0bGUtZW5kaWFuIEludGVsIGZvcm1hdC4KCShlbmNvZGVfaWVlZV9leHRlbmRlZF8xMjgsIGRlY29kZV9pZWVlX2V4dGVuZGVkXzEyOCk6IERlbGV0ZS4KCShlbmNvZGVfaWVlZV9leHRlbmRlZF9tb3Rvcm9sYSwgZGVjb2RlX2llZWVfZXh0ZW5kZWRfbW90b3JvbGEpCgkoZW5jb2RlX2llZWVfZXh0ZW5kZWRfaW50ZWxfOTYsIGRlY29kZV9pZWVlX2V4dGVuZGVkX2ludGVsXzk2KQoJKGVuY29kZV9pZWVlX2V4dGVuZGVkX2ludGVsXzEyOCwgZGVjb2RlX2llZWVfZXh0ZW5kZWRfaW50ZWxfMTI4KToKCU5ldyBmdW5jdGlvbnMgd2hpY2ggY29udmVydCBiZXR3ZWVuIDEyLWJ5dGUgbGl0dGxlLWVuZGlhbiBJbnRlbAoJZm9ybWF0IGFuZCB0aGUgZGVzaXJlZCBmb3JtYXQuCgkoaWVlZV9leHRlbmRlZF9tb3Rvcm9sYV9mb3JtYXQsIGllZWVfZXh0ZW5kZWRfaW50ZWxfOTZfcm91bmRfNTNfZm9ybWF0KQoJKGllZWVfZXh0ZW5kZWRfaW50ZWxfOTZfZm9ybWF0LCBpZWVlX2V4dGVuZGVkX2ludGVsXzEyOF9mb3JtYXQpOgoJVXBkYXRlLgoKMjAwNC0wNi0xNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4cG1lZC5jIChleHBhbmRfbXVsdF9jb25zdCk6IEluIHNhbml0eSBjaGVjaywgY29tcGFyZSBvbmx5Cgl0aGUgYml0cyBvZiB2YWwgYW5kIHZhbF9zb19mYXIgdGhhdCBhcmUgc2lnbmlmaWNhbnQgaW4gdGhlCglyZXN1bHQgbW9kZS4KCjIwMDQtMDYtMTcgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EtcHJlLmM6IFVwZGF0ZSBjb21tZW50cy4KCSh2YWxfZXhwcl9wYWlyX2VxKTogRmFjdG9yIGNvZGUgZnJvbSBoZXJlLgoJKGV4cHJfcHJlZF90cmFuc19lcSk6IGFuZCBoZXJlLgoJKGV4cHJlc3Npb25zX2VxdWFsX3ApOiBUbyBoZXJlLgoJKHByaW50X3ZhbHVlX3NldCk6IFByaW50IHZhbHVlIGZvciBleHByZXNzaW9uLgoJKHBoaV90cmFuc19sb29rdXApOiBSZW5hbWUgc29tZSB2YXJpYWJsZXMuCgkobG9va3VwKTogRGl0dG8uCgkodmFsdWVfZXhpc3RzX2luX3NldF9iaXRtYXApOiBEaXR0by4KCSh2YWx1ZV9yZW1vdmVfZnJvbV9zZXRfYml0bWFwKTogRGl0dG8uCgkodmFsdWVfaW5zZXJ0X2ludG9fc2V0X2JpdG1hcCk6IERpdHRvLgoKMjAwNC0wNi0xNyAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC1tb2Rlcy5kZWYgKENDTDNtb2RlKTogTmV3IG1hY2hpbmUgbW9kZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX21hdGNoX2NjbW9kZV9zZXQpOiBTdXBwb3J0IENDTDNtb2RlLgoJKHMzOTBfYWxjX2NvbXBhcmlzb24sIHMzOTBfc2xiX2NvbXBhcmlzb24pOiBMaWtld2lzZS4KCShzMzkwX2JyYW5jaF9jb25kaXRpb25fbWFzayk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKnN1YmRpM19jYzIiLCAiKnN1YmRpM19jY29ubHkyIik6IE5ldy4KCSgiKnN1YnNpM19jYzIiLCAiKnN1YnNpM19jY29ubHkyIik6IE5ldy4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoUFJFRElDQVRFX0NPREUpOiBBY2NlcHQgU0lHTl9FWFRFTkQgYW5kCglaRVJPX0VYVEVORCBmb3IgczM5MF9hbGNfY29tcGFyaXNvbiBhbmQgczM5MF9zbGJfY29tcGFyaXNvbi4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2FsY19jb21wYXJpc29uLCBzMzkwX3NsYl9jb21wYXJpc29uKToKCUhhbmRsZSBTSUdOX0VYVEVORCBhbmQgWkVST19FWFRFTkQuCgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX2V4cGFuZF9hZGRjYyk6IE5ldyBwcm90b3R5cGUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9leHBhbmRfYWRkY2MpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJhZGRkaWNjIiwgImFkZHNpY2MiKTogTmV3IGV4cGFuZGVycy4KCSgiKnNjb25kZGkiLCAiKnNjb25kc2kiLCAiKnNjb25kZGlfbmVnIiwgIipzY29uZHNpX25lZyIpOiBOZXcgaW5zbnMuCgkoInNsdHUiLCAic2d0dSIsICJzbGV1IiwgInNnZXUiKTogTmV3IGV4cGFuZGVycy4KCjIwMDQtMDYtMTcgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogdHJlZS1hbGlhcy1jb21tb24uYzogQWRkIHdoaXRlc3BhY2UuCgkqIHRyZWUtaW5saW5lLmM6IENvcnJlY3QgY29tbWVudCBhYm91dCB0aGlzIGZpbGUncyBwdXJwb3NlLgoJKiB0cmVlLW9wdGltaXplLmM6IExpa2V3aXNlLgoJKiB0cmVlLXRhaWxjYWxsLmM6IExpa2V3aXNlLgoKCSogdHJlZS1hbGlhcy1hbmRlci5oOiBBZGQgc3RhbmRhcmQgdG9wLW9mLWZpbGUgY29tbWVudC4KCSogdHJlZS1hbGlhcy1jb21tb24uaDogTGlrZXdpc2UuCgkqIHRyZWUtYWxpYXMtdHlwZS5oOiBMaWtld2lzZS4KCjIwMDQtMDYtMTYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EtcHJlLmMgKGNvbXB1dGVfYXZhaWwpOiBWYWx1ZSBudW1iZXIgdXNlcyBhcyB3ZWxsLgoJU3RyaXAgdXNlbGVzcyB0eXBlIGNvbnZlcnNpb25zLgoJQ2FzdHMgaGF2ZSB0byBiZSB0cmVhdGVkIHNsaWdodGx5IGRpZmZlcmVudCB0aGFuIG5vcm1hbCB1bmFyaWVzLgoKMjAwNC0wNi0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmRlZiAoQ09NUE9VTkRfU1RNVCk6IFJlbW92ZS4KCSogYy1jb21tb24uYyAoZmluaXNoX2ZuYW1lX2RlY2xzKTogRG9uJ3QgbG9vayB0aHJvdWdoIGl0LgoJKiBjLXR5cGVjay5jIChjX3RyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmggKENPTVBPVU5EX0JPRFkpOiBSZW1vdmUuCgkoY19jb21tb25fc3RtdF9jb2Rlcyk6IFJlbW92ZSBDT01QT1VORF9TVE1ULgoJKiBjLWR1bXAuYyAoY19kdW1wX3RyZWUpOiBMaWtld2lzZS4KCSogYy1naW1wbGlmeS5jIChjX2dpbXBsaWZ5X3N0bXQpOiBMaWtld2lzZS4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCSogdHJlZS5oIChERUNMX1NBVkVEX1RSRUUpOiBVcGRhdGUgY29tbWVudGFyeS4KCSogZG9jL2MtdHJlZS50ZXhpIChBU01fRVhQUik6IFJlbmFtZSBmcm9tIEFTTV9TVE1ULgoJKENBU0VfTEFCRUxfRVhQUik6IFJlbmFtZSBmcm9tIENBU0VfTEFCRUwuCgkoR09UT19FWFBSKTogUmVuYW1lIGZyb20gR09UT19TVE1ULgoJKEdPVE9fRkFLRV9QKTogUmVtb3ZlLgoJKENPTVBPVU5EX1NUTVQpOiBSZW1vdmUuCgkoSEFORExFUik6IFVwZGF0ZSB3cnQgQ09NUE9VTkRfU1RNVC4KCShTVE1UX0VYUFIpOiBMaWtld2lzZS4KCShMQUJFTF9FWFBSKTogUmVuYW1lIGZyb20gTEFCRUxfU1RNVC4KCShTQ09QRV9TVE1UKTogUmVtb3ZlLgoJKiBvYmpjL29iamMtYWN0LmMgKG9iamNfYnVpbGRfdHJ5X2NhdGNoX2ZpbmFsbHlfc3RtdCk6IERvbid0IGxvb2sKCXRocm91Z2ggQ09NUE9VTkRfU1RNVC4KCjIwMDQtMDYtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5oIChjX2JlZ2luX2lmX3N0bXQsIGNfYmVnaW5fd2hpbGVfc3RtdCwKCWNfZmluaXNoX3doaWxlX3N0bXRfY29uZCk6IFJlbW92ZSBkZWNscy4KCSogYy1wYXJzZS5pbiAoaWZfcHJlZml4KTogRG9uJ3Qgc2F2ZSBjX2JlZ2luX2lmX3N0bXQgcmVzdWx0LgoJKiBjLXR5cGVjay5jIChjX2JlZ2luX2lmX3N0bXQpOiBSZXR1cm4gdm9pZC4KCShjX2JlZ2luX2Vsc2UpOiBUaWR5LiAgU2F2ZSBzdG10X2NvdW50LgoJKiBjLXRyZWUuaCAoY19iZWdpbl9pZl9zdG10KTogVXBkYXRlIGRlY2wuCgoJKiBvYmpjL29iamMtYWN0LmMgKG9iamNfYnVpbGRfdHJ5X2VudGVyX2ZyYWdtZW50LAoJb2JqY19idWlsZF9leHRyYWN0X2ZyYWdtZW50LCBvYmpjX2J1aWxkX3RyeV9lcGlsb2d1ZSwKCW9iamNfYnVpbGRfY2F0Y2hfc3RtdCwgb2JqY19idWlsZF9jYXRjaF9lcGlsb2d1ZSwKCW9iamNfYnVpbGRfZmluYWxseV9wcm9sb2d1ZSwgb2JqY19idWlsZF9maW5hbGx5X2VwaWxvZ3VlKTogVXBkYXRlCglmb3IgaWYgYnVpbGRlciBmdW5jdGlvbiBjaGFuZ2VzLgoKMjAwNC0wNi0xNiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IE5ldyBtZW1iZXIKCWxhc3RfcmVzdG9yZV9ncHIuCgkoczM5MF9mcmFtZV9pbmZvKTogQWRkIEJBU0VfVVNFRCBhbmQgUkVUVVJOX0FERFJfVVNFRCBwYXJhbWV0ZXJzLgoJRG8gbm90IG1vZGlmeSBtYWNoaW5lLT5zYXZlX3JldHVybl9hZGRyX3Agb3IgcmVnc19ldmVyX2xpdmUuCglGaWxsIGluIG1hY2hpbmUtPmxhc3RfcmVzdG9yZV9ncHIuCgkoczM5MF9vcHRpbWl6ZV9wcm9sb2cpOiBVc2UgczM5MF9mcmFtZV9pbmZvIHRvIGNvbXB1dGUgcmVnaXN0ZXJzCgl0byBzYXZlL3Jlc3RvcmUsIHJlbW92ZSBkdXBsaWNhdGVkIGNvZGUuCgkoczM5MF9hcmdfZnJhbWVfb2Zmc2V0KTogVXNlIHMzOTBfZnJhbWVfaW5mbyB0byBjb21wdXRlIGZyYW1lCglzaXplLCByZW1vdmUgZHVwbGljYXRlZCBjb2RlLgoJKHMzOTBfZW1pdF9wcm9sb2d1ZSk6IEFkYXB0IHMzOTBfZnJhbWVfaW5mbyBjYWxsLiAgVXBkYXRlCgltYWNoaW5lLT5zYXZlX3JldHVybl9hZGRyX3AgYW5kIHJlZ3NfZXZlcl9saXZlLgoJKHMzOTBfZW1pdF9lcGlsb2d1ZSk6IFVzZSBtYWNoaW5lLT5sYXN0X3Jlc3RvcmVfZ3ByIGluc3RlYWQgb2YKCW1hY2hpbmUtPmxhc3Rfc2F2ZV9ncHIuCgoyMDA0LTA2LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1wYXJzZS5pbiAoaWZfc3RtdF9sb2N1cyk6IFJlbW92ZS4KCShpZl9wcmVmaXgpOiBJbmNyZW1lbnQgc3RtdF9jb3VudDsgcGFzcyBpdCB0byBjX2ZpbmlzaF9pZl9jb25kLgoJKHNlbGVjdF9vcl9pdGVyX3N0bXQpOiBNb3ZlIGVtcHR5IGlmIHdhcm5pbmdzIHRvIGMtdHlwZWNrLmMuCgkqIGMtdHlwZWNrLmMgKGlmX2VsdCk6IFNvcnQgYnkgZXhwZWN0ZWQgc2l6ZS4gIFJlbmFtZSBsb2N1cyB0bwoJZW1wdHlfbG9jdXMuICBBZGQgc3RtdF9jb3VudCwgc2F3X2Vsc2UuCgkoY19iZWdpbl9pZl9zdG10KTogUHVzaCBpZl9zdGFjayBoZXJlLgoJKGNfZmluaXNoX2lmX2NvbmQpOiBSZW5hbWUgZnJvbSBjX2V4cGFuZF9lbmRfY29uZC4gIFJlY29yZCBzdG10X2NvdW50LgoJKGNfZmluaXNoX3RoZW4sIGNfZmluaXNoX2Vsc2UpOiBSZWNvcmQgZW1wdHlfbG9jdXMuCgkoY19iZWdpbl9lbHNlKTogUmVuYW1lIGZyb20gY19leHBhbmRfc3RhcnRfZWxzZS4gIFJlY29yZCBzdG10X2NvdW50LgoJKGNfZmluaXNoX2lmX3N0bXQpOiBSZW5hbWUgZnJvbSBjX2V4cGFuZF9lbmRfY29uZC4gIFdhcm4gZm9yIGVtcHR5CglpZiBvciBlbHNlIGJvZHkuCgkqIGMtdHJlZS5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCjIwMDQtMDYtMTYgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHRyZWUuaCAoUEhJX0NIQUlOKTogTmV3LgoJKiAodHJlZS1jZmcuYywgdHJlZS1kZmEuYywgdHJlZS1mbG93LWlubGluZS5oLCB0cmVlLWludG8tc3NhLmMsCgl0cmVlLW91dG9mLXNzYS5jLCB0cmVlLXBoaW5vZGVzLmMsIHRyZWUtcHJldHR5LXByaW50LmMsCgl0cmVlLXNzYS1hbGlhcy5jLCB0cmVlLXNzYS1jY3AuYywgdHJlZS1zc2EtZG9tLmMsIHRyZWUtc3NhLWRzZS5jLAoJdHJlZS1zc2EtbGl2ZS5jLCB0cmVlLXNzYS1sb29wLmMsIHRyZWUtc3NhLXBoaW9wdC5jLCB0cmVlLXNzYS1wcmUuYywKCXRyZWUtc3NhLmMsIHRyZWUtdGFpbGNhbGwuYyk6IFVzZSBQSElfQ0hBSU4gaW5zdGVhZCBvZiBUUkVFX0NIQUlOCgl3aGVuIHRyYXZlcnNpbmcgYSBsaXN0IG9mIFBISV9OT0RFcy4KCjIwMDQtMDYtMTYgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCglQUiB0YXJnZXQvMTMyOTIKCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfU1dJVENIRVMpOiBEb24ndCByZW1vdmUgTUFTS182ODA0MF9PTkxZCglvbiAtbXNvZnQtZmxvYXQuCgkoVEFSR0VUX0ZMVF9FVkFMX01FVEhPRCk6IERvbid0IGFkdmVydGlzZSBleHRlbmRlZCBwcmVjaXNpb24gZm9yCgk2ODA0MCBhbmQgc29mdC1mbG9hdC4KCSogY29uZmlnL202OGsvbTY4ay5tZCAodHJ1bmNkZnNmMik6IEV4cGxpY2l0bHkgcmVxdWlyZSBUQVJHRVRfNjg4ODEKCWluIHRoZSBUQVJHRVRfNjgwNDBfT05MWSBjYXNlLgoKMjAwNC0wNi0xNiBQZXRlciBCYXJhZGEgIDxwZXRlckB0aGUtYmFyYWRhcy5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChtb3ZzaV9jZnY0KTogTmV3IHBhdHRlcm4gdG8gYWxsb3cgbW92M3EuCgkobW92c2lfY2YpOiBNYWtlIG5hbWVkLCBkb24ndCBtYXRjaCBUQVJHRVRfQ0ZWNC4KCShwdXNoZXh0aGlzaV9jb25zdCk6IFVzZSBtb3YzcSBpZiBwb3NzaWJsZS4KCShleHRlbmRoaXNpMiwgY3ZmNF9leHRlbmRoaXNpMik6IFNwbGl0IGV4dGVuZGhpc2kyIHBhdHRlcm4KCXRvIHNwZWNpYWwgY2FzZSBtdnoudyBmb3IgQ29sZEZpcmUgVjQuCgkoZXh0ZW5kcWlzaTIsIGN2ZjRfZXh0ZW5kcWlzaTIpOiBTcGxpdCBleHRlbmRoaXNpMiBwYXR0ZXJuCgl0byBzcGVjaWFsIGNhc2UgbXZ6LmIgZm9yIENvbGRGaXJlIFY0LgoJKHVkaXZtb2RoaTQsIGRpdm1vZGhpNCk6IFVzZSBtdnogdG8gemVybyBleHRlbmQgYXJnIGZvcgoJZGl2aWRlLgoJKGlvcnNpMywgeG9yc2kzLCBhbmRzaTMpOiBVc2UgYml0ZmllbGQgaW5zdHJ1Y3Rpb25zIGlmIHBvc3NpYmxlLgoJKiBjb25maWcvbTY4ay9tNjhrLmModmFsaWRfbW92M3FfY29uc3QpOiBOZXcgZnVuY3Rpb24uCgkoY29uc3RfbWV0aG9kKTogU1dBUCBpcyB2YWxpZCBmb3IgQ29sZEZpcmUuCgkoTVVMTF9DT1NULCBNVUxXX0NPU1QpOiBGaXggY29zdHMgZm9yIENvbGRGaXJlIFYzL1Y0LgoJKiBjb25maWcvbTY4ay9tNjhrLXByb3Rvcy5oICh2YWxpZF9tb3YzcV9jb25zdCk6IFByb3RvdHlwZSBoZXJlLgoKMjAwNC0wNi0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmRlZiAoQ0FTRV9MQUJFTCk6IFJlbW92ZS4KCSogYy1jb21tb24uYyAoY19hZGRfY2FzZV9sYWJlbCk6IFVzZSBDQVNFX0xBQkVMLCBub3QgQ0FTRV9MQUJFTF9ERUNMLgoJKG1hdGNoX2Nhc2VfdG9fZW51bV8xKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmggKGNfY29tbW9uX3N0bXRfY29kZXMpOiBSZW1vdmUgQ0FTRV9MQUJFTC4KCSogYy1kdW1wLmMgKGNfZHVtcF90cmVlKTogTGlrZXdpc2UuCgkqIGMtZ2ltcGxpZnkuYyAoY19naW1wbGlmeV9zdG10KTogTGlrZXdpc2UuCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2Nfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkqIGMtc2VtYW50aWNzLmMgKGJ1aWxkX2Nhc2VfbGFiZWwpOiBVc2UgQ0FTRV9MQUJFTF9FWFBSLgoJKiB0cmVlLmggKENBU0VfTE9XKTogVXBkYXRlIGNvbW1lbnRhcnkuCgoyMDA0LTA2LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1jb21tb24uZGVmIChBU01fU1RNVCk6IFJlbW92ZS4KCSogYy1jb21tb24uaCAoY19jb21tb25fc3RtdF9jb2Rlcyk6IFJlbW92ZSBBU01fU1RNVC4KCSogYy1kdW1wLmMgKGNfZHVtcF90cmVlKTogTGlrZXdpc2UuCgkqIGMtZ2ltcGxpZnkuYyAoY19naW1wbGlmeV9zdG10KTogTGlrZXdpc2UuCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2Nfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2FzbV9leHByKTogVXNlIEFTTV9FWFBSLgoJKiB0cmVlLmg6IEZpeCBjb21tZW50YXJ5LgoKMjAwNC0wNi0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmRlZiAoR09UT19TVE1ULCBMQUJFTF9TVE1UKTogUmVtb3ZlLgoJKiBjLWNvbW1vbi5jIChjX2FkZF9jYXNlX2xhYmVsKTogVXNlIExBQkVMX0VYUFIuCgkqIGMtY29tbW9uLmggKEdPVE9fRkFLRV9QLCBMQUJFTF9TVE1UX0xBQkVMKTogUmVtb3ZlLgoJKGNfY29tbW9uX3N0bXRfY29kZXMpOiBSZW1vdmUgR09UT19TVE1ULCBMQUJFTF9TVE1ULgoJKiBjLWR1bXAuYyAoY19kdW1wX3RyZWUpOiBMaWtld2lzZS4KCSogYy1naW1wbGlmeS5jIChjX2dpbXBsaWZ5X3N0bXQpOiBMaWtld2lzZS4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCSogYy1wYXJzZS5pbiAoc3RtdCk6IFVzZSBHT1RPX0VYUFIuCgkobGFiZWwpOiBVc2UgTEFCRUxfRVhQUi4KCSogYy1zZW1hbnRpY3MuYyAoYnVpbGRfc3RtdCk6IFNldCBUUkVFX1RZUEUgdG8gdm9pZC4KCSogdHJlZS1pbmxpbmUuYyAoY29weV9ib2R5X3IpOiBEb24ndCBidWlsZCBlbXB0eSBCTE9DS3MuCgoyMDA0LTA2LTE2ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGNmZ2NsZWFudXAuYyAodHJ5X3NpbXBsaWZ5X2NvbmRqdW1wKTogVXBkYXRlIHRlc3QgdG8gbWFrZQoJc3VyZSB3ZSBoYXZlIGEgY29uZGl0aW9uYWwgYnJhbmNoIGFyb3VuZCBhbSB1bmNvbmRpdGlvbmFsIGJyYW5jaC4KCjIwMDQtMDYtMTYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1jZmcuYyAocGFzc19zcGxpdF9jcml0X2VkZ2UpOiBHaXZlIGl0IGEgbmFtZSBhbmQgYSBkdW1wIGZpbGUuCgoyMDA0LTA2LTE2ICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBsb29wLmMgKGxvb3BfZ2l2c19yZWR1Y2UpOiBBdm9pZCBtaXNjb21waWxhdGlvbiBvZgoJbG9vcHMgZW50ZXJlZCBhdCBib3R0b20uCgoyMDA0LTA2LTE2ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGNmZ2xheW91dC5jIChmaXh1cF9yZW9yZGVyX2NoYWluKTogSGFuZGxlIGNhc2Ugd2hlcmUgdGhlCglkZXN0aW5hdGlvbiBvZiBFX0ZBTEwgaXMgRVhJVF9CTE9DS19QVFIuCgoyMDA0LTA2LTE2ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTU2NTMKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2RmYV9uZXdfY3ljbGUpOiBEbyBub3QgaW5zZXJ0IG5vcHMKCWFmdGVyIHNoaWZ0cyBiZWZvcmUgYXNtLgoKMjAwNC0wNi0xNiAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE1OTkzCgkqIHRyZWUtc3NhLWRvbS5jICh0aHJlYWRfYWNyb3NzX2VkZ2UpOiBEbyBub3QgdGhyZWFkIGVkZ2UgaWYgaXRzCglkZXN0aW5hdGlvbiBpcyB1bmNoYW5nZWQuCgoyMDA0LTA2LTE2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9uKTogVXBkYXRlIGRlc2NyaXB0aW9uIGZvcgoJLS1lbmFibGUtdmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMuCgoyMDA0LTA2LTE2ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogYm9laG0tZ2Mgbm93IHVzZXMgYXV0b21ha2UgMS44LjUuCgoyMDA0LTA2LTE2ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogdG9wbGV2LmggKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBBZGp1c3QgcHJvdG90eXBlLgoKMjAwNC0wNi0xNiAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvdmVyYWdlLmM6IFJlbW92ZSBhcmd1bWVudCB0byByZXN0X29mX2NvbXBpbGF0aW9uLgoJKiBleHByLmMgKGV4ZWN1dGVfZXhwYW5kLCBzZXRfc2F2ZV9leHByX2NvbnRleHQsIHBhc3NfZXhwYW5kKTogTmV3LgoJKiBwYXNzZXMuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJlbW92ZSBhcmd1bWVudC4KCShwYXNzX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBOZXcuCgkocmVzdF9vZl9oYW5kbGVfZmluYWwsIHJlc3Rfb2ZfaGFuZGxlX2RlbGF5X3Nsb3RzLAoJcmVzdF9vZl9oYW5kbGVfc3RhY2tfcmVncywgcmVzdF9vZl9oYW5kbGVfdmFyaWFibGVfdHJhY2tpbmcKCXJlc3Rfb2ZfaGFuZGxlX21hY2hpbmVfcmVvcmcsIHJlc3Rfb2ZfaGFuZGxlX3JlZ3JlbmFtZQoJcmVzdF9vZl9oYW5kbGVfc2NoZWQsIHJlc3Rfb2ZfaGFuZGxlX3NjaGVkMiwgcmVzdF9vZl9oYW5kbGVfZ2NzZTIKCXJlc3Rfb2ZfaGFuZGxlX3JlZ21vdmUsIHJlc3Rfb2ZfaGFuZGxlX3RyYWNlcgoJcmVzdF9vZl9oYW5kbGVfaWZfY29udmVyc2lvbiwgcmVzdF9vZl9oYW5kbGVfaWZfYWZ0ZXJfY29tYmluZQoJcmVzdF9vZl9oYW5kbGVfd2ViLCByZXN0X29mX2hhbmRsZV9icmFuY2hfcHJvYgoJcmVzdF9vZl9oYW5kbGVfdmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMsIHJlc3Rfb2ZfaGFuZGxlX2NmZwoJcmVzdF9vZl9oYW5kbGVfYWRkcmVzc29mLCByZXN0X29mX2hhbmRsZV9qdW1wX2J5cGFzcwoJcmVzdF9vZl9oYW5kbGVfbGlmZSwgcmVzdF9vZl9oYW5kbGVfY3NlLCByZXN0X29mX2hhbmRsZV9jc2UyKToKCUNoZWNrIHRoYXQgdGhlIHR3byBhcmd1bWVudHMgYXJlIGFjdHVhbGx5IHN1cGVyZmx1b3VzLgoJKiB0cmVlLW9wdGltaXplLmMgKHJlZ2lzdGVyX2R1bXBfZmlsZXMpOiBBZGQgcHJvcGVydGllcyBhcmd1bWVudC4KCVRyYWNrIHZhbGlkaXR5IG9mIHBhc3Nlcy4gIE9ubHkgaW5pdGlhbGl6ZSBkdW1wIGZpbGVzIGZvcgoJdHJlZS1iYXNlZCBwYXNzZXMuICBTdG9yZSB0aGUgZnVsbCBzZXQgb2YgcHJvdmlkZWQgcGFzc2VzIGluCgl0aGUgcGFzcy4KCShpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IFJlZ2lzdGVyIHBhc3NfZXhwYW5kIGFuZAoJcGFzc19yZXN0X29mX2NvbXBpbGF0aW9uLgoJKGV4ZWN1dGVfb25lX3Bhc3MpOiBEbyBub3QgdHJhY2sgdGhlIHByZXNlbmNlIG9mIHJlcXVpcmVkIHByb3BlcnRpZXMKCWhlcmUuICBTZXQgaW5fZ2ltcGxlX2Zvcm0uICBEbyBub3QgdXBkYXRlIGN1cnJlbnRfcHJvcGVydGllcy4KCShjdXJyZW50X3Byb3BlcnRpZXMpOiBSZW1vdmUuCgkoc2V0X3NhdmVfZXhwcl9jb250ZXh0KTogUmVtb3ZlLgoJKHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbik6IERvIG5vdCBzZXQgaW5fZ2ltcGxlX2Zvcm0uICBEbyBub3QKCWV4cGFuZCB0byBSVEwgaGVyZSwgYW5kIGRvIG5vdCBjYWxsIHJlc3Rfb2ZfY29tcGlsYXRpb24uICBQdXNoCglHR0MgY29udGV4dCBldmVuIGJlZm9yZSBnaW1wbGlmaWNhdGlvbi4KCSogdHJlZS1wYXNzLmggKFBST1BfcnRsLCBQUk9QX3RyZWVzKTogTmV3IGZsYWdzLgoJKHBhc3NfZXhwYW5kLCBwYXNzX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBEZWNsYXJlLgoKMjAwNC0wNi0xNSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoc3dhcF90cmVlX2NvbXBhcmlzb24pOiBObyBsb25nZXIgc3RhdGljLgoJKHRyZWVfc3dhcF9vcGVyYW5kc19wKTogU2ltaWxhcmx5LiAgUmV0dXJuIHRydWUgaWYgYm90aCBvcGVyYW5kcwoJYXJlIFNTQV9OQU1FcyBhbmQgdGhlIGZpcnN0IG9wZXJhbmQgaGFzIGEgaGlnaGVyIHZlcnNpb24gbnVtYmVyIHRoYW4KCXRoZSBzZWNvbmQgb3BlcmFuZC4KCSogdHJlZS5oIChzd2FwX3RyZWVfY29tcGFyaXNvbik6IFByb3RvdHlwZS4KCSh0cmVlX3N3YXBfb3BlcmFuZHNfcCk6IFByb3RvdHlwZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMpOiBGb3IgY29tbXV0YXRpdmUKCW9wZXJhdG9ycyBhbmQgcmVsYXRpb25hbCBjb21wYXJpc29ucywgY2Fub25pY2FsaXplIHRoZQoJb3JkZXIgb2YgdGhlIG9wZXJhbmRzLgoKMjAwNC0wNi0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGxhbmdfZ2ltcGxpZnlfc3RtdCk6IFJlbW92ZSBuZXh0X3AgYXJndW1lbnQuCgkoaWZfZWx0LCBpZl9zdGFjaywgaWZfc3RhY2tfc3BhY2UsIGNfZXhwYW5kX3N0YXJ0X2NvbmQsIGNfZmluaXNoX3RoZW4sCgljX2V4cGFuZF9lbmRfY29uZCwgY19leHBhbmRfc3RhcnRfZWxzZSwgY19maW5pc2hfZWxzZSwgY19iZWdpbl9pZl9zdG10LAoJY19iZWdpbl93aGlsZV9zdG10LCBjX2ZpbmlzaF93aGlsZV9zdG10X2NvbmQpOiBNb3ZlIHRvIGMtdHlwZWNrLmMuCgkoZmluaXNoX2ZuYW1lX2RlY2xzLCBmbmFtZV9kZWNsKTogVXNlIHN0YXRlbWVudF9saXN0cy4KCShjX2V4cGFuZF9leHByX3N0bXQpOiBEb24ndCBzZXQgbGFzdF9leHByX3R5cGUuCgkoY190eXBlX2hhc2gpOiBGaXggaW5kZW50YXRpb24uCgkoY19zYWZlX2Zyb21fcCk6IERvbid0IGZvbGxvdyBUUkVFX0NIQUlOLgoJKGNfdHJlZV9jaGFpbl9tYXR0ZXJzX3ApOiBSZW1vdmUuCgkqIGMtY29tbW9uLmRlZiAoU0NPUEVfU1RNVCk6IFJlbW92ZS4KCShDTEVBTlVQX1NUTVQpOiBSZWRlZmluZSB0byBjb250YWluIGl0cyBvd24gYm9keS4KCSogYy1jb21tb24uaCAoc3RydWN0IHN0bXRfdHJlZV9zKTogUmVtb3ZlIHhfbGFzdF9zdG10LAoJeF9sYXN0X2V4cHJfdHlwZSwgeF9sYXN0X2V4cHJfZmlsZW5hbWUsIHhfc2NvcGVfc3RtdF9zdGFjay4KCUFkZCB4X2N1cl9zdG10X2xpc3QuCgkobGFzdF90cmVlLCBsYXN0X2V4cHJfdHlwZSwgbGFzdF9leHByX2ZpbGVuYW1lLCBSRUNIQUlOX1NUTVRTKTogUmVtb3ZlLgoJKGN1cl9zdG10X2xpc3QpOiBOZXcuCgkoU1RBVEVNRU5UX0xJU1RfU1RNVF9FWFBSKTogTmV3LgoJKFNDT1BFX0JFR0lOX1AsIFNDT1BFX0VORF9QLCBTQ09QRV9TVE1UX0JMT0NLLCBTQ09QRV9OVUxMSUZJRURfUCwKCVNDT1BFX05PX0NMRUFOVVBTX1AsIFNDT1BFX1BBUlRJQUxfUCwgTkVXX0ZPUl9TQ09QRV9QKTogUmVtb3ZlLgoJKENMRUFOVVBfQk9EWSk6IE5ldy4KCShDTEVBTlVQX0RFQ0wpOiBNb3ZlIHRvIG9wZXJhbmQgMi4KCShjX2NvbW1vbl9zdG10X2NvZGVzKTogUmVtb3ZlIFNDT1BFX1NUTVQuCgkoQ09NUE9VTkRfU1RNVF9OT19TQ09QRSwgQ09NUE9VTkRfU1RNVF9CT0RZX0JMT0NLKTogUmVtb3ZlLgoJKiBjLWRlY2wuYyAoY19zY29wZV9zdG10X3N0YWNrLCBjdXJyZW50X3Njb3BlX3N0bXRfc3RhY2spOiBSZW1vdmUuCgkoY19wdXNoX2Z1bmN0aW9uX2NvbnRleHQsIGNfcG9wX2Z1bmN0aW9uX2NvbnRleHQpOiBEb24ndCBzYXZlIGl0LgoJKGZpbmlzaF9kZWNsKTogU2V0IFRSRUVfVVNFRCBvbiB0aGUgZGVjbCBmb3IgYSBjbGVhbnVwLgoJVXNlIHB1c2hfY2xlYW51cC4KCShzdG9yZV9wYXJtX2RlY2xzKTogVXNlIHN0YXRlbWVudCBsaXN0cy4KCShmaW5pc2hfZnVuY3Rpb24pOiBSZW1vdmUgY29tcHN0bXQgcnVsZSB3b3JrYXJvdW5kLiAgVXNlIHN0YXRlbWVudAoJbGlzdHMuICBDYWxsIGZpbmlzaF9mbmFtZV9kZWNscyBhZnRlciBmaW5hbGl6aW5nIHRoZSBib2R5LgoJKGNfYmVnaW5fY29tcG91bmRfc3RtdCk6IE1vdmUgdG8gYy10eXBlY2suYy4KCSogYy1kdW1wLmMgKGNfZHVtcF90cmVlKTogUmVtb3ZlIFNDT1BFX1NUTVQuCgkqIGMtZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfY2xlYW51cF9zdG10LCBnaW1wbGlmeV9jbGVhbnVwX3N0bXRzKTogTmV3LgoJKGNfZ2VuZXJpY2l6ZSk6IEludm9rZSB0aGVtLgoJKGNfZ2ltcGxpZnlfc3RtdCk6IERvbid0IGxvb2sgdGhyb3VnaCBUUkVFX0NIQUlOLiAgS2lsbCBTQ09QRV9TVE1ULgoJKGNfYnVpbGRfYmluZF9leHByKTogRXhwb3J0LgoJKGdpbXBsaWZ5X2Jsb2NrLCBnaW1wbGlmeV9jbGVhbnVwKTogUmVtb3ZlLgoJKGdpbXBsaWZ5X2NvbmRpdGlvbik6IFVzZSBnaW1wbGlmeV9zdG10LgoJKGdpbXBsaWZ5X2Zvcl9zdG10KTogUmVtb3ZlIEZPUl9JTklUX1NUTVQgY2hhaW5pbmcgaGFjay4KCShnaW1wbGlmeV9pZl9zdG10KTogUmVtb3ZlIHJlY3Vyc2lvbiBoYWNrLgoJKGNfZ2ltcGxpZnlfZXhwcik6IFJlbW92ZSBTVE1UX0VYUFIgaGFuZGxpbmcuCgkoc3RtdF9leHByX2xhc3Rfc3RtdCwgZ2ltcGxpZnlfc3RtdF9leHByKTogUmVtb3ZlLgoJKGlzX2xhc3Rfc3RtdF9vZl9zY29wZSk6IFJlbW92ZS4KCSogYy1sYW5nLmMgKExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19UUkVFX0NIQUlOX01BVFRFUlNfUCk6IFJlbW92ZS4KCSogYy1tdWRmbGFwLmMgKG1mbGFuZ19mbHVzaF9jYWxscyk6IFVzZSBjX2JlZ2luX2NvbXBvdW5kX3N0bXQsCgljX2VuZF9jb21wb3VuZF9zdG10LgoJKiBjLW9iamMtY29tbW9uLmMgKGJ1aWxkX2NkdG9yKTogTGlrZXdpc2UuCgkqIGMtcGFyc2UuaW4gKHByaW1hcnkpOiBVc2UgY19maW5pc2hfc3RtdF9leHByLgoJKHB1c2hfc2NvcGUsIHBvcF9zY29wZSk6IFJlbW92ZS4KCShjOTlfYmxvY2tfc3RhcnQsIGNvbXBzdG10X3N0YXJ0KTogVXNlIGNfYmVnaW5fY29tcG91bmRfc3RtdC4KCShjOTlfYmxvY2tfZW5kLCBjb21wc3RtdCk6IFVzZSBjX2VuZF9jb21wb3VuZF9zdG10LgoJKGM5OV9ibG9ja19saW5lbm9fbGFiZWxlZF9zdG10KTogTGlrZXdpc2UuCgkoY29tcHN0bXRfcHJpbWFyeV9zdGFydCk6IFVzZSBjX2JlZ2luX3N0bXRfZXhwci4KCShzaW1wbGVfaWYsIHNlbGVjdF9vcl9pdGVyX3N0bXQpOiBVcGRhdGUgY2FsbHMgdG8gc3RtdCBidWlsZGVycy4KCShkb19zdG10X3N0YXJ0KTogRmlsbCBpbiBib2R5IGRpcmVjdGx5LgoJKGxpbmVub19zdG10KTogQXZvaWQgc2V0dGluZyBsaW5lbm8gb24gY29uc3RhbnRzLgoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX3N0YXRlbWVudCk6IEhhbmRsZSBTVEFURU1FTlRfTElTVC4KCVJlbW92ZSBTQ09QRV9TVE1ULgoJKiBjLXNlbWFudGljcy5jIChiZWdpbl9zdG10X3RyZWUpOiBSZW1vdmUuCgkocHVzaF9zdG10X2xpc3QsIHJlX3B1c2hfc3RtdF9saXN0LCBwb3Bfc3RtdF9saXN0KTogTmV3LgoJKGFkZF9zdG10KTogVXNlIHN0YXRlbWVudCBsaXN0cy4KCShhZGRfc2NvcGVfc3RtdCwgZmluaXNoX3N0bXRfdHJlZSk6IFJlbW92ZS4KCShwdXNoX2NsZWFudXApOiBOZXcuCgkqIGMtdHJlZS5oOiBNb3ZlIHNvbWUgZGVjbHMgZnJvbSBjLWNvbW1vbi5oLgoJKiBjLXR5cGVjay5jIChjX3RyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogU2ltcGxpZnkgZm9yIHN0YXRlbWVudCBsaXN0cy4KCShkb19jYXNlLCBjX2ZpbmlzaF9jYXNlKTogTGlrZXdpc2UuCgkoY19maW5pc2hfdGhlbik6IFRha2UgYm9keSBmb3IgdGhlbiBhcyBhcmd1bWVudC4KCShjX2ZpbmlzaF9lbHNlKTogU2ltaWxhcmx5LgoJKGNfYmVnaW5fZm9yX3N0bXQsIGNfZmluaXNoX2Zvcl9zdG10X2luaXQsIGNfZmluaXNoX2Zvcl9zdG10X2NvbmQsCgljX2ZpbmlzaF9mb3Jfc3RtdF9pbmNyLCBjX2ZpbmlzaF9mb3Jfc3RtdCk6IE5ldy4KCShjX2JlZ2luX3N0bXRfZXhwciwgY19maW5pc2hfc3RtdF9leHByKTogTmV3LgoJKGNfYmVnaW5fY29tcG91bmRfc3RtdCk6IERvIHNjb3BlIG1hbmFnZW1lbnQuCgkoY19lbmRfY29tcG91bmRfc3RtdCk6IE5ldy4KCSogZm9sZC1jb25zdC5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IEZpeCBCSU5EX0VYUFIuCgkqIGdpbXBsaWZ5LmMgKHZvaWRpZnlfd3JhcHBlcl9leHByKTogQWNjZXB0IHRlbXBvcmFyeSBhcmd1bWVudC4KCUxvb2sgdGhyb3VnaCBleGNlcHRpb24gaGFuZGxpbmcgY29uc3RydWN0cy4KCShnaW1wbGlmeV9iaW5kX2V4cHIpOiBBY2NlcHQgdGVtcG9yYXJ5IGFyZ3VtZW50LgoJKGdpbXBsaWZ5X3RhcmdldF9leHByKTogU3BlY2lhbCBjYXNlIEJJTkRfRVhQUiBib2RpZXMuCgkoZ2ltcGxpZnlfZXhwcik6IEhhbmRsZSBmYWxsYmFjayA9PSBmYl9ub25lIGxpa2UgYSBzdGF0ZW1lbnQuCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX1RSRUVfQ0hBSU5fTUFUVEVSU19QKTogS2lsbC4KCSogbGFuZ2hvb2tzLmMgKGxoZF90cmVlX2lubGluaW5nX3RyZWVfY2hhaW5fbWF0dGVyc19wKTogUmVtb3ZlLgoJKiBsYW5naG9va3MuaCAodHJlZV9jaGFpbl9tYXR0ZXJzX3ApOiBSZW1vdmUuCgkqIHN0dWItb2JqYy5jIChvYmpjX2NsZWFyX3N1cGVyX3JlY2VpdmVyKTogTmV3LgoJKiB0cmVlLWdpbXBsZS5oICh2b2lkaWZ5X3dyYXBwZXJfZXhwcik6IFVwZGF0ZSBkZWNsLgoJKGFwcGVuZF90b19zdGF0ZW1lbnRfbGlzdCwgYXBwZW5kX3RvX3N0YXRlbWVudF9saXN0X2ZvcmNlKTogTW92ZQoJdG8gdHJlZS1pdGVyYXRvci5oLgoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBVcGRhdGUgY2FsbC4KCShjbG9uZV9ib2R5KTogVXNlIHN0YXRlbWVudCBsaXN0cy4KCSh3YWxrX3RyZWUpOiBEb24ndCBjaGVjayB0cmVlX2NoYWluX21hdHRlcnNfcC4KCShjb3B5X3RyZWVfcik6IExpa2V3aXNlLgoJKiB0cmVlLWl0ZXJhdG9yLmMgKGFsbG9jX3N0bXRfbGlzdCk6IENsZWFyIGxhbmcgYml0cy4KCSh0c2lfbGlua19iZWZvcmUsIHRzaV9saW5rX2FmdGVyKTogU2V0IFRSRUVfU0lERV9FRkZFQ1RTIHByb3Blcmx5LgoJKiB0cmVlLWl0ZXJhdG9yLmggKGFwcGVuZF90b19zdGF0ZW1lbnRfbGlzdCwKCWFwcGVuZF90b19zdGF0ZW1lbnRfbGlzdF9mb3JjZSk6IE1vdmVkIGZyb20gdHJlZS1naW1wbGUuaC4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBDbGVhbiB1cCBUQVJHRVRfRVhQUiBkdW1wLgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX21vZHVsZV9kZXNjcmlwdG9yKTogVXNlIGNfYmVnaW5fY29tcG91bmRfc3RtdC4KCShvYmpjX2VudGVyX2Jsb2NrKTogTGlrZXdpc2UuCgkob2JqY19leGl0X2Jsb2NrKTogVXNlIGNfZW5kX2NvbXBvdW5kX3N0bXQuCgkob2JqY19idWlsZF90cnlfZW50ZXJfZnJhZ21lbnQpOiBBZGQgI2Vycm9yIGFuZCBjb21tZW50IGZvcgoJcmV3cml0aW5nIGZvciBPQkpDUExVUy4KCShvYmpjX2J1aWxkX2V4dHJhY3RfZnJhZ21lbnQsIG9iamNfYnVpbGRfdHJ5X2VwaWxvZ3VlLAoJb2JqY19idWlsZF9jYXRjaF9zdG10LCBvYmpjX2J1aWxkX2ZpbmFsbHlfcHJvbG9ndWUsCglvYmpjX2J1aWxkX2ZpbmFsbHlfZXBpbG9ndWUpOiBVcGRhdGUgZm9yIEMgc3RhdGVtZW50IGJ1aWxkZXJzLgoJKiBvYmpjL29iamMtbGFuZy5jIChMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfVFJFRV9DSEFJTl9NQVRURVJTX1ApOgoJUmVtb3ZlLgoKMjAwNC0wNi0xNSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZGYuYyAoZGZfcmVnX2Nsb2JiZXJfZ2VuKTogUmVtb3ZlZC4KCShkZl9iYl9yZF9sb2NhbF9jb21wdXRlLCBkZl9pbnNuX3JlZnNfcmVjb3JkLCBkZl9yZF9sb2NhbF9jb21wdXRlKToKCU1ha2UgbW9yZSBlZmZlY3RpdmUgZm9yIGhhcmQgcmVncy4KCSogcmEtYnVpbGQuYyAobGl2ZXRocm91Z2hfY29uZmxpY3RzX2JiKTogQ2hlY2sgY29udGFpbnNfY2FsbC4KCjIwMDQtMDYtMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYy1wcmFnbWEuaCAoY19sZXhfc3RyaW5nX3RyYW5zbGF0ZSk6IENoYW5nZSB0eXBlIHRvIGludC4KCSogYy1wYXJzZS5pbjogQ2hhbmdlIGFsbCBhc3NpZ25tZW50cyBvZiBjX2xleF9zdHJpbmdfdHJhbnNsYXRlCgl0byB0cnVlIGFuZCBmYWxzZSB0byAxIGFuZCAwLgoJKiBjLWxleC5jIChjX2xleF9zdHJpbmdfdHJhbnNsYXRlKTogTGlrZXdpc2UuCgkobGV4X3N0cmluZyk6IENvbnZlcnQgc3RyaW5nIHdpdGhvdXQgdHJhbnNsYXRpb24gaW4gdGhlIC0xCgljYXNlLgoKMjAwNC0wNi0xNSAgTWFyayBHLiBBZGFtcyAgPG1hcmsuZy5hZGFtc0BzeW1wYXRpY28uY2E+CgoJKiBjb252ZXJ0Lmg6IEFkZCBpbmNsdWRlIGd1YXJkcwoKMjAwNC0wNi0xNSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLWZsb3ctaW5saW5lLmg6IERvY3VtZW50IGFsbCBmdW5jdGlvbnMuCgoyMDA0LTA2LTE1ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAoc3RtdF9hbm4pOiBSZW1vdmUgdXNlIG9mIGlzX2Vzc2Ffbm9kZS4KCSogdHJlZS1kZmEuYyAoY3JlYXRlX3N0bXRfYW5uKTogRGl0dG8uCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogUmVtb3ZlIEUqIG5vZGUgaGFuZGxpbmcuCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKTogRGl0dG8uCgkqIHRyZWUuYyAodHJlZV9zaXplKTogRGl0dG8uCgkobWFrZV9ub2RlX3N0YXQpOiBEaXR0by4KCSh0cmVlX25vZGVfc3RydWN0dXJlKTogRGl0dG8uCgkoZXBoaV9ub2RlX2VsdF9jaGVja19mYWlsZWQpOiBSZW1vdmUuCgkoaXNfZXNzYV9ub2RlKTogRGl0dG8uCgkqIHRyZWUuZGVmIChFUEhJX05PREUpOiBEaXR0by4KCShFRVhJVF9OT0RFKTogRGl0dG8uCgkoRVVTRV9OT0RFKTogRGl0dG8uCgkoRUtJTExfTk9ERSk6IERpdHRvLgoJKiB0cmVlLmggKEVSRUZfTk9ERV9DSEVDSyk6IFJlbW92ZS4KCShFUEhJX05PREVfRUxUX0NIRUNLKTogRGl0dG8uCgkoc3RydWN0IHRyZWVfZXJlZl9jb21tb24pOiBEaXR0by4KCShzdHJ1Y3QgdHJlZV9ldXNlX25vZGUpOiBEaXR0by4KCShzdHJ1Y3QgZXBoaV9hcmdfZCk6IERpdHRvLgoJKHN0cnVjdCB0cmVlX2VwaGlfbm9kZSk6IERpdHRvLgoJKGVwaGlfbm9kZV9lbHRfY2hlY2tfZmFpbGVkKTogUmVtb3ZlIHByb3RvdHlwZS4KCShpc19lc3NhX25vZGUpOiBEaXR0by4KCShlbnVtIHRyZWVfbm9kZV9zdHJ1Y3R1cmVfZW51bSk6IFJlbW92ZSBUU19FKl9OT0RFLgoJKHVuaW9uIHRyZWVfbm9kZSk6IFJlbW92ZSBFKl9OT0RFIHVzZXMuCgoyMDA0LTA2LTE1ICBKZXJyeSBRdWlubiAgPGpscXVpbm5Ab3B0b25saW5lLm5ldD4KCgkqIGFsaWFzLmMgKHJlY29yZF9zZXQsIHJlY29yZF9iYXNlX3ZhbHVlLCBjYW5vbl9ydHgsIGdldF9hZGRyLAoJbm9ubG9jYWxfbWVudGlvbmVkX3BfMSwgaW5pdF9hbGlhc19hbmFseXNpcyk6IFVzZSBSRUdfUC4KCSogYnQtbG9hZC5jIChmaW5kX2J0cl9yZWZlcmVuY2UsIGluc25fc2V0c19idHJfcCwgbm90ZV9idHJfc2V0KToKCUxpa2V3aXNlLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zZXRqbXAsIGV4cGFuZF9idWlsdGluX2FwcGx5LAoJZXhwYW5kX2J1aWx0aW5fbWF0aGZuLCBleHBhbmRfYnVpbHRpbl9zdHJsZW4sIGV4cGFuZF9idWlsdGluX21lbWNtcCwKCWV4cGFuZF9idWlsdGluX3N0cmNtcCwgZXhwYW5kX2J1aWx0aW5fc3RybmNtcCwKCWV4cGFuZF9idWlsdGluX2ZyYW1lX2FkZHJlc3MpOiBMaWtld2lzZS4KCSogY2FsbGVyLXNhdmUuYyAobWFya19zZXRfcmVncywgYWRkX3N0b3JlZF9yZWdzLCBtYXJrX3JlZmVyZW5jZWRfcmVncywKCWluc2VydF9vbmVfaW5zbik6IExpa2V3aXNlLgoJKiBjYWxscy5jIChwcmVwYXJlX2NhbGxfYWRkcmVzcywgcHJlY29tcHV0ZV9yZWdpc3Rlcl9wYXJhbWV0ZXJzLAoJcHJlY29tcHV0ZV9hcmd1bWVudHMsIGV4cGFuZF9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogTGlrZXdpc2UuCgkqIGNmZ2FuYWwuYyAoZmxvd19hY3RpdmVfaW5zbl9wKTogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYyAoc2V0X25vbnplcm9fYml0c19hbmRfc2lnbl9jb3BpZXMsIGNhbl9jb21iaW5lX3AsCgljb21iaW5hYmxlX2kzcGF0LCB0cnlfY29tYmluZSwgZmluZF9zcGxpdF9wb2ludCwgQ09NQklORV9SVFhfRVFVQUxfUCwKCXN1YnN0LCBjb21iaW5lX3NpbXBsaWZ5X3J0eCwgc2ltcGxpZnlfaWZfdGhlbl9lbHNlLCBzaW1wbGlmeV9zZXQsCgltYWtlX2V4dHJhY3Rpb24sIHJlY29nX2Zvcl9jb21iaW5lLCBnZW5fbG93cGFydF9mb3JfY29tYmluZSwKCXNpbXBsaWZ5X2NvbXBhcmlzb24sIHJlY29yZF9kZWFkX2FuZF9zZXRfcmVnc18xLAoJcmVjb3JkX2RlYWRfYW5kX3NldF9yZWdzLCByZWNvcmRfcHJvbW90ZWRfdmFsdWUsCgljaGVja19wcm9tb3RlZF9zdWJyZWcsIGdldF9sYXN0X3ZhbHVlX3ZhbGlkYXRlLCBnZXRfbGFzdF92YWx1ZSwKCXJlZ19kZWFkX2F0X3BfMSwgcmVnX2JpdGZpZWxkX3RhcmdldF9wLCBkaXN0cmlidXRlX25vdGVzLAoJdW5tZW50aW9uZWRfcmVnX3BfMSk6IExpa2V3aXNlLgoJKiBjb25mbGljdC5jIChtYXJrX3JlZyk6IExpa2V3aXNlLgoJKiBjc2UuYyAoSEFTSCwgQ09TVCwgQ09TVF9JTiwgYXBwcm94X3JlZ19jb3N0XzEsIG5vdHJlZ19jb3N0LAoJbWVudGlvbl9yZWdzLCBpbnNlcnRfcmVncywgbG9va3VwLCBsb29rdXBfZm9yX3JlbW92ZSwgaW5zZXJ0LAoJbWVyZ2VfZXF1aXZfY2xhc3NlcywgZmx1c2hfaGFzaF90YWJsZSwgaW52YWxpZGF0ZSwKCXJlbW92ZV9pbnZhbGlkX3JlZnMsIHJlbW92ZV9pbnZhbGlkX3N1YnJlZ19yZWZzLCByZWhhc2hfdXNpbmdfcmVnLAoJaW52YWxpZGF0ZV9mb3JfY2FsbCwgdXNlX3JlbGF0ZWRfdmFsdWUsIGNhbm9uX2hhc2gsIGV4cF9lcXVpdl9wLAoJY3NlX3J0eF92YXJpZXNfcCwgY2Fub25fcmVnLCBmaW5kX2Jlc3RfYWRkciwgZm9sZF9ydHgsIGVxdWl2X2NvbnN0YW50LAoJcmVjb3JkX2p1bXBfY29uZCwgY3NlX2luc24sIGFkZHJfYWZmZWN0c19zcF9wLAoJaW52YWxpZGF0ZV9mcm9tX2Nsb2JiZXJzLCBjc2VfcHJvY2Vzc19ub3RlcywgY3NlX2Fyb3VuZF9sb29wLAoJY3NlX3NldF9hcm91bmRfbG9vcCwgY291bnRfcmVnX3VzYWdlLCBzZXRfbGl2ZV9wLCBjc2VfY2hhbmdlX2NjX21vZGUsCgljc2VfY2Nfc3VjY3MsIGNzZV9jb25kaXRpb25fY29kZV9yZWcpOiBMaWtld2lzZS4KCSogY3NlbGliLmMgKGNzZWxpYl9yZWdfc2V0X21vZGUsIHJ0eF9lcXVhbF9mb3JfY3NlbGliX3AsCgljc2VsaWJfbG9va3VwLCBjc2VsaWJfaW52YWxpZGF0ZV9yZWdubywgY3NlbGliX2ludmFsaWRhdGVfcnR4LAoJY3NlbGliX3JlY29yZF9zZXQsIGNzZWxpYl9yZWNvcmRfc2V0cyk6IExpa2V3aXNlLgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3N5bWJvbF9sb2NhdGlvbiwgZGJ4b3V0X3Bhcm1zLCBkYnhvdXRfcmVnX3Bhcm1zLAoJZGJ4b3V0X2Jsb2NrKTogTGlrZXdpc2UuCgkqIGRmLmMgKGRmX3JlZl9yZWNvcmQsIGRmX2RlZl9yZWNvcmRfMSwgZGZfdXNlc19yZWNvcmQpOiBMaWtld2lzZS4KCSogZG9qdW1wLmMgKGRvX2p1bXApOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByLCBpc19wc2V1ZG9fcmVnLAoJaXNfYmFzZWRfbG9jLCBydGxfZm9yX2RlY2xfbG9jYXRpb24pOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoc2V0X3JlZ19hdHRyc19mb3JfcGFybSwgc2V0X2RlY2xfcnRsLAoJc2V0X2RlY2xfaW5jb21pbmdfcnRsLCBtYXJrX3VzZXJfcmVnKTogTGlrZXdpc2UuCgkqIGV4cGxvdy5jIChjb3B5X2FsbF9yZWdzLCBjb3B5X2FsbF9yZWdzLCBtZW1vcnlfYWRkcmVzcywgZm9yY2VfcmVnLAoJY29weV90b19zdWdnZXN0ZWRfcmVnLCBhbGxvY2F0ZV9keW5hbWljX3N0YWNrX3NwYWNlLAoJcHJvYmVfc3RhY2tfcmFuZ2UsIGhhcmRfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCwgc3RvcmVfZml4ZWRfYml0X2ZpZWxkLAoJc3RvcmVfc3BsaXRfYml0X2ZpZWxkLCBleHRyYWN0X2JpdF9maWVsZCwgZXh0cmFjdF9maXhlZF9iaXRfZmllbGQsCglleHRyYWN0X3NwbGl0X2JpdF9maWVsZCwgZXhwYW5kX2Rpdm1vZCwgZW1pdF9zdG9yZV9mbGFnX2ZvcmNlKToKCUxpa2V3aXNlLgoJKiBleHByLmMgKGNvbnZlcnRfbW92ZSwgY29udmVydF9tb2RlcywKCWJsb2NrX21vdmVfbGliY2FsbF9zYWZlX2Zvcl9jYWxsX3Bhcm0sIGVtaXRfZ3JvdXBfbG9hZCwgdXNlX3JlZywKCXVzZV9ncm91cF9yZWdzLCBlbWl0X21vdmVfaW5zbiwgZW1pdF9tb3ZlX2luc25fMSwKCWNvbXByZXNzX2Zsb2F0X2NvbnN0YW50LCBwdXNoX2Jsb2NrLCBlbWl0X3NpbmdsZV9wdXNoX2luc24sCgllbWl0X3B1c2hfaW5zbiwgZ2V0X3N1YnRhcmdldCwgZXhwYW5kX2Fzc2lnbm1lbnQsIHN0b3JlX2V4cHIsCglzdG9yZV9jb25zdHJ1Y3Rvciwgc3RvcmVfZmllbGQsIGZvcmNlX29wZXJhbmQsIHNhZmVfZnJvbV9wLAoJZXhwYW5kX2V4cHJfcmVhbF8xLCBleHBhbmRfaW5jcmVtZW50LCBkb19zdG9yZV9mbGFnLCBkb190YWJsZWp1bXApOgoJTGlrZXdpc2UuCgkqIGZpbmFsLmMgKHByb2ZpbGVfZnVuY3Rpb24sIGZpbmFsX3NjYW5faW5zbiwgYWx0ZXJfc3VicmVnLAoJZ2V0X21lbV9leHByX2Zyb21fb3AsIG91dHB1dF9hc21fb3BlcmFuZF9uYW1lcywgb3V0cHV0X29wZXJhbmQsCglvbmx5X2xlYWZfcmVnc191c2VkLCBsZWFmX3JlbnVtYmVyX3JlZ3NfaW5zbik6IExpa2V3aXNlLgoJKiBmbG93LmMgKHZlcmlmeV93aWRlX3JlZ18xLCBtYXJrX3JlZ3NfbGl2ZV9hdF9lbmQsCglmaW5kX3JlZ25vX3BhcnRpYWwsIHByb3BhZ2F0ZV9vbmVfaW5zbiwgaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbywKCWluc25fZGVhZF9wLCBsaWJjYWxsX2RlYWRfcCwgbWFya19zZXRfMSwgbm90X3JlZ19jb25kLAoJYXR0ZW1wdF9hdXRvX2luYywgZmluZF9hdXRvX2luYywgbWFya191c2VkX3JlZ3MsCgljb3VudF9vcl9yZW1vdmVfZGVhdGhfbm90ZXNfYmIpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoZmluZF90ZW1wX3Nsb3RfZnJvbV9hZGRyZXNzLCB1cGRhdGVfdGVtcF9zbG90X2FkZHJlc3MsCglwcmVzZXJ2ZV90ZW1wX3Nsb3RzLCBwdXRfdmFyX2ludG9fc3RhY2ssIGZpeHVwX3Zhcl9yZWZzX2luc24sCglmaXh1cF92YXJfcmVmc18xLCBmaXh1cF9zdGFja18xLCBvcHRpbWl6ZV9iaXRfZmllbGQsIGZsdXNoX2FkZHJlc3NvZiwKCXB1dF9hZGRyZXNzb2ZfaW50b19zdGFjaywgcHVyZ2VfYWRkcmVzc29mXzEsIGluc25zX2Zvcl9tZW1fd2FsaywKCXB1cmdlX3NpbmdsZV9oYXJkX3N1YnJlZ19zZXQsIGluc3RhbnRpYXRlX2RlY2wsCglpbnN0YW50aWF0ZV92aXJ0dWFsX3JlZ3NfMSwgYWdncmVnYXRlX3ZhbHVlX3AsIGFzc2lnbl9wYXJtcywKCXByb21vdGVkX2lucHV0X2FyZywgc2V0am1wX3ZhcnNfd2FybmluZywgc2V0am1wX2FyZ3Nfd2FybmluZywKCXNldGptcF9wcm90ZWN0LCBzZXRqbXBfcHJvdGVjdF9hcmdzLCBmaXhfbGV4aWNhbF9hZGRyLAoJZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0LCBkaWRkbGVfcmV0dXJuX3ZhbHVlLCBjbG9iYmVyX3JldHVybl9yZWdpc3RlciwKCWV4cGFuZF9mdW5jdGlvbl9lbmQsIGtlZXBfc3RhY2tfZGVwcmVzc2VkLCBoYW5kbGVfZXBpbG9ndWVfc2V0LAoJdXBkYXRlX2VwaWxvZ3VlX2NvbnN0cyk6IExpa2V3aXNlLgoJKiBnZW5lbWl0LmMgKGdlbl9leHAsIGdlbl9pbnNuKTogTGlrZXdpc2UuCgkqIGdlbnJlY29nLmMgKG1ha2VfaW5zbl9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2NvbmZsaWN0cywgZXhwYW5kX3ByZWZlcmVuY2VzLCBtYXJrX3JlZ19zdG9yZSwKCW1hcmtfcmVnX2NvbmZsaWN0cywgc2V0X3ByZWZlcmVuY2UsIHJlZ19iZWNvbWVzX2xpdmUsCglidWlsZF9pbnNuX2NoYWluLCBtYXJrX3JlZ19jaGFuZ2UpOiBMaWtld2lzZS4KCSogaGFpZmFfc2NoZWQuYyAoQ09OU1RfQkFTRURfQUREUkVTU19QLCBmaW5kX3NldF9yZWdfd2VpZ2h0KToKCUxpa2V3aXNlLgoJKiBpZmN2dC5jIChub2NlX3RyeV9hYnMsIG5vY2VfZ2V0X2NvbmRpdGlvbiwgbm9jZV9wcm9jZXNzX2lmX2Jsb2NrKToKCUxpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUsIHRyeV9jb25zdGFudHMsCglzdWJzdF9jb25zdGFudHMsIG1hcmtfc3RvcmVzLCBhbGxvY2F0ZV9pbml0aWFsX3ZhbHVlcyk6IExpa2V3aXNlLgoJKiBqdW1wLmMgKHJldmVyc2VkX2NvbXBhcmlzb25fY29kZV9wYXJ0cywgZGVsZXRlX3ByaW9yX2NvbXB1dGF0aW9uLAoJZGVsZXRlX2NvbXB1dGF0aW9uLCBydHhfcmVudW1iZXJlZF9lcXVhbF9wLCB0cnVlX3JlZ251bSwKCXJlZ19vcl9zdWJyZWdubyk6IExpa2V3aXNlLgoJKiBsY20uYyAocmVnX2RpZXMsIHJlZ19iZWNvbWVzX2xpdmUpOiBMaWtld2lzZS4KCSogbG9jYWwtYWxsb2MuYyAodmFsaWRhdGVfZXF1aXZfbWVtX2Zyb21fc3RvcmUsIHZhbGlkYXRlX2VxdWl2X21lbSwKCXVwZGF0ZV9lcXVpdl9yZWdzLCBub19lcXVpdiwgYmxvY2tfYWxsb2MsIGNvbWJpbmVfcmVncywgcmVnX2lzX3NldCwKCXdpcGVfZGVhZF9yZWcsIG5vX2NvbmZsaWN0X3ApOiBMaWtld2lzZS4KCSogbG9vcC1pdi5jIChzaW1wbGVfcmVnX3AsIHNpbXBsZV9zZXRfcCwga2lsbF9zZXRzLAoJaXZfZ2V0X3JlYWNoaW5nX2RlZiwgaXZfYW5hbHl6ZV9iaXYsIGFsdGVyZWRfcmVnX3VzZWQsIG1hcmtfYWx0ZXJlZCwKCXNpbXBsZV9yaHNfcCwgc2ltcGxpZnlfdXNpbmdfYXNzaWdubWVudCwgaW1wbGllc19wKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAoc2Nhbl9sb29wLCBjb21iaW5lX21vdmFibGVzLCBydHhfZXF1YWxfZm9yX2xvb3BfcCwKCW1vdmVfbW92YWJsZXMsIG5vdGVfc2V0X3BzZXVkb19tdWx0aXBsZV91c2VzLCBjb25zZWNfc2V0c19pbnZhcmlhbnRfcCwKCWZpbmRfc2luZ2xlX3VzZV9pbl9sb29wLCBjb3VudF9vbmVfc2V0LCBsb29wX2JpdnNfaW5pdF9maW5kLAoJbG9vcF9naXZzX3Jlc2NhbiwgY2hlY2tfaW5zbl9mb3JfYml2cywgY2hlY2tfaW5zbl9mb3JfZ2l2cywKCXZhbGlkX2luaXRpYWxfdmFsdWVfcCwgc2ltcGxpZnlfZ2l2X2V4cHIsIGNvbnNlY19zZXRzX2dpdiwKCWxvb3BfcmVnc191cGRhdGUsIGNoZWNrX2RicmFfbG9vcCwgbWF5YmVfZWxpbWluYXRlX2JpdiwKCW1heWJlX2VsaW1pbmF0ZV9iaXZfMSwgcmVjb3JkX2luaXRpYWwsIHVwZGF0ZV9yZWdfbGFzdF91c2UsCgljYW5vbmljYWxpemVfY29uZGl0aW9uLCBsb29wX3JlZ3Nfc2NhbiwgbG9hZF9tZW1zLCB0cnlfY29weV9wcm9wLAoJdHJ5X3N3YXBfY29weV9wcm9wKTogTGlrZXdpc2UuCgkqIG9wdGFicy5jIChleHBhbmRfYmlub3AsIGV4cGFuZF92ZWN0b3JfYmlub3AsIGV4cGFuZF92ZWN0b3JfdW5vcCwKCWV4cGFuZF9hYnMsIGVtaXRfbm9fY29uZmxpY3RfYmxvY2ssIGVtaXRfbGliY2FsbF9ibG9jaywgZXhwYW5kX2Zsb2F0KToKCUxpa2V3aXNlLgoJKiBwb3N0cmVsb2FkLmMgKHJlbG9hZF9jc2Vfc2ltcGxpZnksIHJlbG9hZF9jc2Vfc2ltcGxpZnlfc2V0LAoJcmVsb2FkX2NzZV9zaW1wbGlmeV9vcGVyYW5kcywgcmVsb2FkX2NvbWJpbmUsCglyZWxvYWRfY29tYmluZV9ub3RlX3N0b3JlLCByZWxvYWRfY29tYmluZV9ub3RlX3VzZSwKCXJlbG9hZF9jc2VfbW92ZTJhZGQsIG1vdmUyYWRkX25vdGVfc3RvcmUpOiBMaWtld2lzZS4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IExpa2V3aXNlLgoJKiByYS1idWlsZC5jIChjb3B5X2luc25fcCwgcmVtZW1iZXJfbW92ZSwgaW5pdF9vbmVfd2ViX2NvbW1vbiwKCWNvbnRhaW5zX3BzZXVkbywgaGFuZGxlX2FzbV9pbnNuKTogTGlrZXdpc2UuCgkqIHJhLWRlYnVnLmMgKHJhX3ByaW50X3J0eF9vYmplY3QsIGR1bXBfY29uc3RyYWludHMsCglkdW1wX3N0YXRpY19pbnNuX2Nvc3QpOiBMaWtld2lzZS4KCSogcmEtcmV3cml0ZS5jIChzbG90c19vdmVybGFwX3AsIGVtaXRfY29sb3JzLAoJcmVtb3ZlX3N1c3BpY2lvdXNfZGVhdGhfbm90ZXMpOiBMaWtld2lzZS4KCSogcmVjb2cuYyAodmFsaWRhdGVfcmVwbGFjZV9ydHhfMSwgZmluZF9zaW5nbGVfdXNlXzEsIGZpbmRfc2luZ2xlX3VzZSwKCXJlZ2lzdGVyX29wZXJhbmQsIHNjcmF0Y2hfb3BlcmFuZCwgbm9ubWVtb3J5X29wZXJhbmQsCgljb25zdHJhaW5fb3BlcmFuZHMpOiBMaWtld2lzZS4KCSogcmVnLXN0YWNrIChjaGVja19hc21fc3RhY2tfb3BlcmFuZHMsIHJlbW92ZV9yZWdub19ub3RlLAoJZW1pdF9zd2FwX2luc24sIHN3YXBfcnR4X2NvbmRpdGlvbiwgc3Vic3Rfc3RhY2tfcmVnc19wYXQsCglzdWJzdF9hc21fc3RhY2tfcmVncyk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChzY2FuX29uZV9pbnNuLCByZWNvcmRfcmVnX2NsYXNzZXMsIGNvcHlfY29zdCwKCXJlY29yZF9hZGRyZXNzX3JlZ3MsIHJlZ19zY2FuX21hcmtfcmVmcyk6IExpa2V3aXNlLgoJKiByZWdtb3ZlLmMgKGRpc2NvdmVyX2ZsYWdzX3JlZywgcmVwbGFjZW1lbnRfcXVhbGl0eSwKCWNvcHlfc3JjX3RvX2Rlc3QsIHJlZ19pc19yZW1vdGVfY29uc3RhbnRfcCwgcmVnbW92ZV9vcHRpbWl6ZSwKCWZpeHVwX21hdGNoXzEpOiBMaWtld2lzZS4KCSogcmVncmVuYW1lLmMgKG5vdGVfc2V0cywgY2xlYXJfZGVhZF9yZWdzLCBidWlsZF9kZWZfdXNlLCBraWxsX3ZhbHVlLAoJa2lsbF9zZXRfdmFsdWUsIGNvcHlwcm9wX2hhcmRyZWdfZm9yd2FyZF8xKTogTGlrZXdpc2UuCgkqIHJlbG9hZC5jIChNQVRDSEVTLCBwdXNoX3NlY29uZGFyeV9yZWxvYWQsIGZpbmRfcmV1c2FibGVfcmVsb2FkLAoJcmVsb2FkX2lubmVyX3JlZ19vZl9zdWJyZWcsIGNhbl9yZWxvYWRfaW50bywgcHVzaF9yZWxvYWQsCgljb21iaW5lX3JlbG9hZHMsIGZpbmRfZHVtbXlfcmVsb2FkLCBoYXJkX3JlZ19zZXRfaGVyZV9wLAoJb3BlcmFuZHNfbWF0Y2hfcCwgZGVjb21wb3NlLCBmaW5kX3JlbG9hZHMsIGZpbmRfcmVsb2Fkc190b3BsZXYsCglmaW5kX3JlbG9hZHNfYWRkcmVzcywgc3Vic3RfaW5kZXhlZF9hZGRyZXNzLCBmaW5kX3JlbG9hZHNfYWRkcmVzc18xLAoJZmluZF9yZWxvYWRzX3N1YnJlZ19hZGRyZXNzLCBmaW5kX3JlcGxhY2VtZW50LAoJcmVmZXJzX3RvX3JlZ25vX2Zvcl9yZWxvYWRfcCwgcmVnX292ZXJsYXBfbWVudGlvbmVkX2Zvcl9yZWxvYWRfcCwKCXJlZmVyc190b19tZW1fZm9yX3JlbG9hZF9wLCBmaW5kX2VxdWl2X3JlZywgcmVnbm9fY2xvYmJlcmVkX3ApOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChyZXBsYWNlX3BzZXVkb3NfaW4sIHJlbG9hZCwgY2FsY3VsYXRlX25lZWRzX2FsbF9pbnNucywKCWZpbmRfcmVnLCBkZWxldGVfZGVhZF9pbnNuLCBhbHRlcl9yZWcsIGVsaW1pbmF0ZV9yZWdzLAoJZWxpbWluYXRpb25fZWZmZWN0cywgZWxpbWluYXRlX3JlZ3NfaW5faW5zbiwgc2Nhbl9wYXJhZG94aWNhbF9zdWJyZWdzLAoJZm9yZ2V0X29sZF9yZWxvYWRzXzEsIHJlbG9hZF9yZWdfZnJlZV9mb3JfdmFsdWVfcCwgY2hvb3NlX3JlbG9hZF9yZWdzLAoJZW1pdF9pbnB1dF9yZWxvYWRfaW5zbnMsIGVtaXRfb3V0cHV0X3JlbG9hZF9pbnNucywgZG9faW5wdXRfcmVsb2FkLAoJZG9fb3V0cHV0X3JlbG9hZCwgZW1pdF9yZWxvYWRfaW5zbnMsIGdlbl9yZWxvYWQsCglkZWxldGVfYWRkcmVzc19yZWxvYWRzXzEsIGluY19mb3JfcmVsb2FkKTogTGlrZXdpc2UuCgkqIHJlb3JnLmMgKHVwZGF0ZV9yZWdfZGVhZF9ub3RlcywgZml4X3JlZ19kZWFkX25vdGUsCgl1cGRhdGVfcmVnX3VudXNlZF9ub3RlcywgZmlsbF9zbG90c19mcm9tX3RocmVhZCk6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jICh1cGRhdGVfbGl2ZV9zdGF0dXMsIG1hcmtfcmVmZXJlbmNlZF9yZXNvdXJjZXMsCgltYXJrX3NldF9yZXNvdXJjZXMsIG1hcmtfdGFyZ2V0X2xpdmVfcmVncyk6IExpa2V3aXNlLgoJKiBydGxhbmFsLmMgKG5vbnplcm9fYWRkcmVzc19wLCBnZXRfanVtcF90YWJsZV9vZmZzZXQsCglnbG9iYWxfcmVnX21lbnRpb25lZF9wXzEsIHJlZ19tZW50aW9uZWRfcCwgcmVnX3JlZmVyZW5jZWRfcCwKCXJlZ19zZXRfcCwgc2V0X25vb3BfcCwgZmluZF9sYXN0X3ZhbHVlLCByZWZlcnNfdG9fcmVnbm9fcCwKCW5vdGVfc3RvcmVzLCBkZWFkX29yX3NldF9wLCBkZWFkX29yX3NldF9yZWdub19wLCBmaW5kX3JlZ25vX25vdGUsCglmaW5kX3JlZ19mdXNhZ2UsIGZpbmRfcmVnbm9fZnVzYWdlLCByZXBsYWNlX3JlZ3MsIHJlZ25vX3VzZV9pbiwKCXBhcm1zX3NldCwgZmluZF9maXJzdF9wYXJhbWV0ZXJfbG9hZCwga2VlcF93aXRoX2NhbGxfcCwKCWhvaXN0X3Rlc3Rfc3RvcmUsIGhvaXN0X3VwZGF0ZV9zdG9yZSwgYWRkcmVzc19jb3N0LCBub256ZXJvX2JpdHMxLAoJbnVtX3NpZ25fYml0X2NvcGllczEpOiBMaWtld2lzZS4KCSogcnRsaG9va3MuYyAoZ2VuX2xvd3BhcnRfZ2VuZXJhbCk6IExpa2V3aXNlLgoJKiBzY2hlZC1kZXBzLmMgKGRlcHNfbWF5X3RyYXBfcCwgc2NoZWRfYW5hbHl6ZV8xLCBzY2hlZF9hbmFseXplX2luc24sCglzY2hlZF9hbmFseXplKTogTGlrZXdpc2UuCgkqIHNjaGVkLXJnbi5jIChjaGVja19saXZlXzEsIHVwZGF0ZV9saXZlXzEsIHNldHNfbGlrZWx5X3NwaWxsZWRfMSk6CglMaWtld2lzZS4KCSogc2Rib3V0LmMgKHNkYm91dF9zeW1ib2wsIHNkYm91dF9wYXJtcywgc2Rib3V0X3JlZ19wYXJtcyk6IExpa2V3aXNlLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVwbGFjZV9ydHgsIHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbiwKCXNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24sIHNpbXBsaWZ5X2NvbnN0X3JlbGF0aW9uYWxfb3BlcmF0aW9uLAoJc2ltcGxpZnlfc3VicmVnKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZGVjbF9jb25mbGljdHNfd2l0aF9jbG9iYmVyc19wLCBleHBhbmRfYXNtX29wZXJhbmRzLAoJZXhwYW5kX2VuZF9zdG10X2V4cHIsIGV4cGFuZF9yZXR1cm4sIGV4cGFuZF9kZWNsLAoJZXhwYW5kX2Fub25fdW5pb25fZGVjbCk6IExpa2V3aXNlLgoJKiB1bnJvbGwuYyAocHJlY29uZGl0aW9uX2xvb3BfcCwgY2FsY3VsYXRlX2dpdl9pbmMsIGNvcHlfbG9vcF9ib2R5LAoJZmluZF9zcGxpdHRhYmxlX3JlZ3MsIGZpbmRfc3BsaXR0YWJsZV9naXZzLCBmaW5kX2NvbW1vbl9yZWdfdGVybSwKCWxvb3BfaXRlcmF0aW9ucyk6IExpa2V3aXNlLgoJKiB2YXItdHJhY2tpbmcuYyAodmFyaWFibGVfdW5pb24sIHZhcmlhYmxlX3BhcnRfZGlmZmVyZW50X3AsCgl2YXJpYWJsZV9kaWZmZXJlbnRfcCwgY291bnRfdXNlcywgYWRkX3VzZXMsIGFkZF9zdG9yZXMsCgljb21wdXRlX2JiX2RhdGFmbG93LCBzZXRfdmFyaWFibGVfcGFydCwgZGVsZXRlX3ZhcmlhYmxlX3BhcnQsCgllbWl0X25vdGVzX2luX2JiLCB2dF9nZXRfZGVjbF9hbmRfb2Zmc2V0LCB2dF9hZGRfZnVuY3Rpb25fcGFyYW1ldGVycyk6CglMaWtld2lzZS4KCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlKTogTGlrZXdpc2UuCgoyMDA0LTA2LTE1ICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAYnJvYWRjb20uY29tPgoKCSogY29uZmlnL21pcHMvbGludXguaCAoQVNNX1BSRUZFUlJFRF9FSF9EQVRBX0ZPUk1BVCk6IFJlbW92ZQoJZGVmaW5pdGlvbi4KCSogY29uZmlnL21pcHMvbGludXg2NC5oIChBU01fUFJFRkVSUkVEX0VIX0RBVEFfRk9STUFUKTogUmVtb3ZlCgkjdW5kZWYgYW5kICNpZiAwJ2QgZGVmaW5pdGlvbi4KCjIwMDQtMDYtMTUgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogQ29tbWVudCB0eXBvIGZpeC4KCjIwMDQtMDYtMTUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwbWVkLmMgKHN5bnRoX211bHQpOiBNYXNrIGJpdHMgb2YgdGhlIG11bHRpcGxpZXIgdG8gdGhlCgltYWNoaW5lIG1vZGUgb2YgdGhlIG11bHRpcGxpY2F0aW9uLiAgRG9uJ3QgY29uc2lkZXIgc2hpZnRzCglieSBtb3JlIHRoYW4gKG9yIGVxdWFsIHRvKSB0aGUgd2lkdGggb2YgdGhlIG9wZXJhdGlvbidzIG1vZGUuCgoyMDA0LTA2LTE1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogWWV0IGFub3RoZXIgdXBkYXRlIGZvciBhdXRvY29uZgoJYW5kIGF1dG9tYWtlIHZlcnNpb25zLgoKMjAwNC0wNi0xNSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IFJlbW92ZSBjYW5ub3RfaW5saW5lIGZpZWxkLgoJKGN1cnJlbnRfZnVuY3Rpb25fY2Fubm90X2lubGluZSk6IFJlbW92ZS4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSZXNldCBERUNMX0RFRkVSX09VVFBVVC4KCVNpbXBsaWZ5IGNvbmRpdGlvbmFscyB0byBpZ25vcmUgd2Fybl9yZXR1cm5fdHlwZS4KCSogdHJlZS1vcHRpbWl6ZS5jICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBEbyBub3QgcmVzZXQKCURFQ0xfREVGRVJfT1VUUFVULgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX21vZHVsZV9kZXNjcmlwdG9yLCBmaW5pc2hfbWV0aG9kX2RlZik6CglEbyBub3Qgc2V0IGN1cnJlbnRfZnVuY3Rpb25fY2Fubm90X2lubGluZS4KCjIwMDQtMDYtMTUgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogY2ZnbGF5b3V0LmMgKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBIYW5kbGUgY2FzZSB3aGVyZSB0aGUKCWRlc3RpbmF0aW9uIG9mIEVfVEFLRU4gaXMgRVhJVF9CTE9DS19QVFIuCgoyMDA0LTA2LTE1ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWNvcHkuYyAoY3Byb3BfaW50b19zdWNjZXNzb3JfcGhpcyk6IEZpeCB0eXBvLgoKMjAwNC0wNi0xNSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGZvbGQtY29uc3QuYyAob3BlcmFuZF9lcXVhbF9wKTogVXBkYXRlIGNvbW1lbnQuCgoyMDA0LTA2LTE1ICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJKiBjb25maWcvbTMyci9tMzJyLmggKFJFVFVSTl9BRERSX1JUWCk6IERlZmluZS4KCShJTkNPTUlOR19SRVRVUk5fQUREUl9SVFgpOiBEZWZpbmUuCgkqIGNvbmZpZy9tMzJyL20zMnItcHJvdG9zLmggKG0zMnJfcmV0dXJuX2FkZHIpOiBBZGRlZC4KCSogY29uZmlnL20zMnIvbTMyci5jIChtMzJyX2V4cHBhbmRfcHJvbG9ndWUpOiBDaGFuZ2VkIGZvcgoJX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLgoJKG0zMnJfcmV0dXJuX2FkZHIpOiBBZGRlZCBmb3IgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLgoJKG0zMnJfcmVsb2FkX2xyKTogRGl0dG8uCgoJKiBsb25nbG9uZy5oOiBGaXggbWFjcm9zIGZvciBtMzJyIGFkZF9zc2FhYWEgYW5kIHN1Yl9kZG1tc3MuCgoyMDA0LTA2LTE1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aSAoUHJlcmVxdWlzaXRlcyk6IFVwZGF0ZSBsaWJiYW5zaGVlLAoJZmFzdGphciwgbGliY3BwLCBsaWJqYXZhL2xpYmx0ZGwgZW50cmllcyB0bwoJYXV0b21ha2UgMS44LjUuCgoyMDA0LTA2LTE1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgkgICAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogZnVuY3Rpb24uYyAoZml4dXBfdmFyX3JlZnMpOiBBbHNvIGFkanVzdCB0aGUgc3RhcnQgb2Ygc2VxdWVuY2UKCWFmdGVyIGZpeGluZyB1cCB0aGUgaW5zbnMuCgoyMDA0LTA2LTE1ICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGdjYy5nbnUub3JnPgoKCSogZ2NjYnVnLmluOiBVcGRhdGUgb3B0aW1pemF0aW9uIC0+IHRyZWUtb3B0aW1pemF0aW9uL3J0bC1vcHRpbWl6YXRpb24uCgoyMDA0LTA2LTE0ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJlZGhhdC5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChQcmVyZXF1aXNpdGVzKTogVXBkYXRlIGxpYnN0ZGMrKyBlbnRyeSB0bwoJYXV0b21ha2UgMS44LjUuCgoyMDA0LTA2LTE0ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoVEFSR0VUX1NXSVRDSEVTKTogQ2hhbmdlIC1tdHBmICgtbW5vLXRwZikKCXRvIC1tdHBmLXRyYWNlICgtbW5vLXRwZi10cmFjZSkuCgkqIGRvYy9pbnZva2UudGV4aSAoUy8zOTAgYW5kIHpTZXJpZXMgT3B0aW9ucyk6IEFkZCB0cGYgb3B0aW9uCglkb2N1bWVudGF0aW9uLgoKMjAwNC0wNi0xNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIHJlYWwuYzogRml4IGJpdCBjb3VudCBpbiBoZWFkIGNvbW1lbnQuCgoyMDA0LTA2LTE0ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EuYyAoa2lsbF9yZWR1bmRhbnRfcGhpX25vZGVzKTogTW9yZSBjb3JyZWN0bHkgaGFuZGxlCglQSElzIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBvciBhbiBhcmd1bWVudCBpcyBtYXJrZWQgd2l0aAoJU1NBX05BTUVfT0NDVVJTX0lOX0FCTk9STUFMX1BISS4KCjIwMDQtMDYtMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTU5NDUKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pOiBEb24ndCBvcHRpbWl6ZSBvdXQKCUluZiArIC1JbmYsIEluZiAtIEluZiwgSW5mIC8gSW5mIGFuZCAwICogSW5mIGlmIGZsYWdfdHJhcHBpbmdfbWF0aC4KCjIwMDQtMDYtMTQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIG9wdHMuc2ggKHZhcl9hcmdzKTogRml4IHJlZ2V4cC4KCjIwMDQtMDYtMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNTE3OAoJKiBjb25maWcvaTM4Ni9zb2wyLmggKEFTTV9PVVRQVVRfREVGX0ZST01fREVDTFMpOiBEZWZpbmUuCgoyMDA0LTA2LTE0ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9jYWxsX2ZyYW1lX2luZm8pOiBTdXBwb3J0IGR3YXJmMyBjaWUgZW50cmllcy4KCjIwMDQtMDYtMTQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIE1ha2VmaWxlLmluIChGTEFHU19IKTogTmV3LgoJKGZsYWdzLmgpOiBSZXBsYWNlIGJ5IEZMQUdTX0guCgkqIGMub3B0OiBEb2N1bWVudCBWYXIsIFZhckV4aXN0cywgSW5pdCBhbmQgUmVwb3J0IGF0dHJpYnV0ZXMuCgkqIGNvbW1vbi5vcHQ6IEZpbGwgdGhlIHZhbHVlcyBvZiB0aGUgYXR0cmlidXRlcy4KCSogZGlhZ25vc3RpYy5jIChmbGFnX2ZhdGFsX2Vycm9ycyk6IERvIG5vdCBkZWZpbmUuCgkqIGV4Y2VwdC5jIChmbGFnX25vbl9jYWxsX2V4Y2VwdGlvbnMpOiBEbyBub3QgZGVmaW5lLgoJKiBmbGFncy5oOiBJbmNsdWRlIG9wdGlvbnMuaC4gIFJlbW92ZSBkZWNsYXJhdGlvbnMgY29uZmxpY3Rpbmcgd2l0aAoJdGhlIGF1dG9tYXRpY2FsbHkgZGVmaW5lZCBvbmVzLgoJKiBvcHRzLmM6IFJlbW92ZSBhdXRvbWF0aWNhbGx5IGRlZmluZWQgdmFyaWFibGVzLgoJKGhhbmRsZV9vcHRpb24pOiBQZXJmb3JtIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24uCgkoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBEbyBub3QgaGFuZGxlIG9wdGlvbnMgY292ZXJlZCBieSB0aGUKCWRlZmF1bHQgaW5pdGlhbGl6YXRpb24uCgkqIG9wdHMuaCAoc3RydWN0IGNsX29wdGlvbik6IEFkZCBmbGFnX3ZhciwgaGFzX3NldF92YWx1ZSBhbmQgc2V0X3ZhbHVlCglmaWVsZHMuCgkoQ0xfUkVQT1JUKTogTmV3LgoJKiBvcHRzLnNoOiBHZW5lcmF0ZSB2YXJpYWJsZSBkZWNsYXJhdGlvbnMsIGhhbmRsZSBDTF9SRVBPUlQuCgkqIHRvcGxldi5jOiBSZW1vdmUgYXV0b21hdGljYWxseSBkZWZpbmVkIHZhcmlhYmxlcy4KCShmX29wdGlvbnMpOiBSZW1vdmVkLgoJKHByaW50X3N3aXRjaF92YWx1ZXMpOiBVc2UgY2xfb3B0aW9ucyBpbnN0ZWFkIG9mIGZfb3B0aW9ucy4KCSogdG9wbGV2LmggKHZlcnNpb25fZmxhZyk6IERlY2xhcmF0aW9uIHJlbW92ZWQuCgoyMDA0LTA2LTE0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmg6IENvcnJlY3QgY29tbWVudCBhYm91dCBhdmFpbGFiaWxpdHkgb2YKCWxpdHRsZSBlbmRpYW4gb3B0aW9uLgoKCSogY29uZmlnLmdjYzogUmVtb3ZlIHNwYXJjNjQtKi1hb3V0Ki4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2FvdXRfc2VsZWN0X3J0eF9zZWN0aW9uKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvc3A2NC1hb3V0Lmg6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL2FvdXQuaDogUmVtb3ZlLgoKMjAwNC0wNi0xNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jOiBJbmNsdWRlICJ0cmVlLWdpbXBsZS5oIi4KCShzMzkwX2dpbXBsaWZ5X3ZhX2FyZyk6IE5ldyBmdW5jdGlvbi4KCShUQVJHRVRfR0lNUExJRllfVkFfQVJHX0VYUFIpOiBEZWZpbmUuCgkoczM5MF92YV9hcmcpOiBSZW1vdmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfdmFfYXJnKTogUmVtb3ZlLgoJKiBjb25maWcvczM5MC9zMzkwLmggKEVYUEFORF9CVUlMVElOX1ZBX0FSRyk6IENhbGwgYWJvcnQgKCkuCgoyMDA0LTA2LTE0ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKGNvdWxkX2ZhbGxfdGhyb3VnaCk6IERlY2xhcmUuCgkqIGNmZ2FuYWwuYyAoY2FuX2ZhbGx0aHJ1KTogU3VjY2VlZCBpZiB0aGUgdGFyZ2V0IGlzIEVYSVRfQkxPQ0tfUFRSLgoJRmFpbCBpZiB0aGUgc291cmNlIGFscmVhZHkgaGFzIGEgZmFsbHRocm91Z2ggZWRnZSB0byB0aGUgZXhpdAoJYmxvY2sgcG9pbnRlci4KCShjb3VsZF9mYWxsX3Rocm91Z2gpOiBOZXcgZnVuY3Rpb24uCgkqIGNmZ2J1aWxkLmMgKG1ha2VfZWRnZXMpOiBDaGVjayBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBmYWxsdGhyb3VnaAoJZWRnZSB0byB0aGUgZXhpdCBibG9jayBwb2ludGVyLgoJKiBjZmdsYXlvdXQuYyAoZml4dXBfZmFsbHRocnVfZXhpdF9wcmVkZWNlc3Nvcik6IENoZWNrIHRoYXQgaXQgaXMKCW5vdCBjYWxsZWQgYmVmb3JlIHJlbG9hZCBoYXMgY29tcGxldGVkLgoJSGFuZGxlIHNwZWNpYWwgY2FzZSBvZiBmaXJzdCBibG9jayBoYXZpbmcgYSBmYWxsLXRocm91Z2ggZXhpdCBlZGdlLgoJKGNmZ19sYXlvdXRfZmluYWxpemUpOiBEb24ndCBjYWxsIGl0IGJlZm9yZSByZWxvYWQgb3IgaWYgd2UgaGF2ZQoJcnRsIGVwaWxvZ3Vlcy4KCShmaXh1cF9yZW9yZGVyX2NoYWluKTogQSBmYWxsIHRocm91Z2ggdG8gdGhlIGV4aXQgYmxvY2sgZG9lcyBub3QKCXJlcXVpcmUgdGhlIGJsb2NrIHRvIGNvbWUgbGFzdC4gIEFkZCBzYW5pdHkgY2hlY2tzLgoJKiBjZmdydGwuYyAocnRsX3NwbGl0X2VkZ2UpOiBBZGQgc3BlY2lhbCBoYW5kbGluZyBvZiBmYWxsIHRocm91Z2gKCWVkZ2VzIHRvIHRoZSBleGl0IGJsb2NrLgoJKiBmdW5jdGlvbi5jIChjZmdsYXlvdXQuaCk6ICNpbmNsdWRlLgoJKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBJZiB3ZSBoYXZlIG5laXRoZXIgcmV0dXJuIG5vcgoJZXBpbG9ndWUsIGJ1dCBhIGZhbGwgdGhyb3VnaCB0byB0aGUgZXhpdCBibG9jayBmcm9tIG1pZC1mdW5jdGlvbiwKCWZvcmNlIGEgbm9uLWZhbGwtdGhyb3VnaCBleGl0LgoJKiBNYWtlZmlsZS5pbiAoZnVuY3Rpb24ubyk6IERlcGVuZCBvbiBDRkdMQVlPVVRfSC4KCjIwMDQtMDYtMTQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBU01fQ1BVX1NQRUMpOiBIYW5kbGUgLW1wb3dlcnBjNjQgYW5kIC1tY3B1Cglmb3IgcG93ZXI1IGFuZCByczY0YS4gIENvcnJlY3QgY29uZGl0aW9uIGZvciBkZWZhdWx0LiAgQ29ycmVjdCBwb3dlcjMsCgk2MjAsIDYzMCwgNzQwMCwgNzQ1MCwgRzQsIDk3MCBhbmQgRzUgLW1jcHUgZW50cmllcy4gIEFkZCAtbWFueS4KCjIwMDQtMDYtMTMgIFN0ZXZlbiBCb3NzY2hlciA8c3RldmVuYkBzdXNlLmRlPgoKCSogZ2NzZS5jIChoYXNoX3NjYW5fc2V0LCBoYXNoX3NjYW5faW5zbiwgbWFya19zZXQsIG1hcmtfb3Byc19zZXQpOgoJUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZSwgZG9uJ3QgdXNlIENBTExfUC4KCjIwMDQtMDYtMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHJlZS5oOiBNb3ZlIHN0ZF9naW1wbGlmeV92YV9hcmdfZXhwciBwcm90b3lwZSBoZXJlLgoJKiB0cmVlLWdpbXBsZS5oOiBGcm9tIGhlcmUuCgoyMDA0LTA2LTEzICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMTU5NzkKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8xNTk4MQoJKiB0cmVlLXNzYS1wcmUuYyAoaW5zZXJ0X2F1eCk6IEZpeCBmYXVsdHkgbG9naWMgc28gdGhhdCB3ZSBkb24ndAoJdHJ5IHRvIGluc2VydCB2YWx1ZXMgdW5kZWZpbmVkIGFsb25nIHNvbWUgcGF0aC4KCjIwMDQtMDYtMTMgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EtcHJlLmMgKGFkZF90b192YWx1ZSk6IGlzX2dpbXBsZV9taW5faW52YXJpYW50IHRoaW5ncwoJYXJlIGF2YWlsYWJsZSBldmVyeXdoZXJlIHRvby4KCjIwMDQtMDYtMTMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2NoZWNrc3VtX3RyZWUgPGNhc2UgJ3QnPik6IE9ubHkKCWxvb2sgYXQgVFJFRV9WQUxVRVMgaWYgdGhlIEVYUFIgaXMgYW4gRU5VTUVSQUxfVFlQRS4KCU9ubHkgbG9vayBhdCBUWVBFX01JTl9WQUxVRSBhbmQgVFlQRV9NQVhfVkFMVUUgaWYKCUVYUFIgaXMgYW4gSU5URUdFUkFMX1RZUEUgb3IgYSBzY2FsYXIgZmxvYXQgdHlwZS4KCjIwMDQtMDYtMTMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zcmEuYyAodHJlZV9zcmEpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCjIwMDQtMDYtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10eXBlY2suYyAoY29tcHR5cGVzLCB0YWdnZWRfdHlwZXNfdHVfY29tcGF0aWJsZV9wLAoJZnVuY3Rpb25fdHlwZXNfY29tcGF0aWJsZV9wLCB0eXBlX2xpc3RzX2NvbXBhdGlibGVfcCk6IFJlbW92ZQoJZmxhZ3MgcGFyYW1ldGVyLgoJKiBjLXRyZWUuaCAoY29tcHR5cGVzKTogTGlrZXdpc2UuCgkoQ09NUEFSRV9TVFJJQ1QpOiBSZW1vdmUuCgkqIGMtZGVjbC5jLCBjLWxhbmcuYywgYy1wYXJzZS5pbiwgYy10eXBlY2suYywgb2JqYy9vYmpjLWFjdC5jOiBBbGwKCWNhbGxlcnMgY2hhbmdlZC4KCjIwMDQtMDYtMTMgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGRpYWdub3NlX21pc21hdGNoZWRfZGVjbHMpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UuCglSZW1vdmUgdW51c2VkIGNvZGUuCgkqIGMtdHlwZWNrLmMgKGNvbXB0eXBlcyk6IEFkZCBsb2NhdGlvbiBpbiBzdGFuZGFyZCB3ZSdyZSBjaGVja2luZy4KCjIwMDQtMDYtMTMgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL2xpYmdjYy1zdGQudmVyOiBBZGQgX191bm9yZGRmMiBhbmQgX191bm9yZHNmMiB3aXRoCgl2ZXJzaW9uIDMuMy40LgoKMjAwNC0wNi0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHBtZWQuYyAoc2hpZnRfY29zdCwgc2hpZnRhZGRfY29zdCwgc2hpZnRzdWJfY29zdCk6IEFkZGl0aW9uYWxseQoJaW5kZXggYnkgbWFjaGluZSBtb2RlLgoJKGluaXRfZXhwbWVkKTogSW5pdGlhbGl6ZSBzaGlmdF9jb3N0LCBzaGlmdGFkZF9jb3N0IGFuZCBzaGlmdHN1Yl9jb3N0Cgl0YWJsZXMgaW5zaWRlIHRoZSBsb29wIG92ZXIgbWFjaGluZSBtb2Rlcy4KCShzeW50aF9tdWx0LCBleHBhbmRfbXVsdF9oaWdocGFydF9vcHRhYiwgZXhwYW5kX211bHRfaGlnaHBhcnQsCglleHBhbmRfZGl2bW9kKTogSW5kZXggc2hpZnQqX2Nvc3QgYnkgdGhlIGFwcHJvcHJpYXRlIG1hY2hpbmUgbW9kZS4KCjIwMDQtMDYtMTIgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5oOiBSZW5hbWUgVEFSR0VUX1RQRiB0byBUQVJHRVRfVFBGX1BST0ZJTElORy4KCSogY29uZmlnL3MzOTAvczM5MC5tZDogRGl0dG8uCgkqIGNvbmZpZy9zMzkwL3MzOTAuYzogRGl0dG8uCgkoczM5MF9mcmFtZV9pbmZvKTogQ29uZGl0aW9uYWxpemUgZnJhbWUgYW5kIHNldHVwIGluZm8gb24KCVRBUkdFVF9UUEZfUFJPRklMSU5HLgoJKHMzOTBfYXJnX2ZyYW1lX29mZnNldCk6IERpdHRvLgoKMjAwNC0wNi0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKG9taXRfdHdvX29wZXJhbmRzKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmggKG9taXRfdHdvX29wZXJhbmRzKTogUHJvdG90eXBlIGhlcmUuCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl91bm9yZGVyZWRfY21wKTogTmV3IGZ1bmN0aW9uIHRvIGxvd2VyCglDOTkgdW5vcmRlcmVkIGNvbXBhcmlzb24gYnVpbHRpbnMgdG8gdGhlIGFwcHJvcHJpYXRlIHRyZWUgbm9kZXMuCgkoZm9sZF9idWlsdGluXzEpOiBVc2UgZm9sZF9idWlsdGluX3Vub3JkZXJlZF9jbXAgdG8gbG93ZXIKCUJVSUxUX0lOX0lTR1JFQVRFUiwgQlVJTFRfSU5fSVNHUkVBVEVSRVFVQUwsIEJVSUxUX0lOX0lTTEVTUywKCUJVSUxUX0lOX0lTTEVTU0VRVUFMIGFuZCBCVUlMVF9JTl9JU0xFU1NHUkVBVEVSLiAgTWFudWFsbHkgbG93ZXIKCUJVSUxUX0lOX0lTVU5PUkRFUkVEIGNvbXBhcmlzb25zIHRvIGFuIFVOT1JERVJFRF9FWFBSIHRyZWUgbm9kZS4KCShzaW1wbGlmeV9idWlsdGluX21lbWNtcCwgc2ltcGxpZnlfYnVpbHRpbl9zdHJuY21wLAoJc2ltcGxpZnlfYnVpbHRpbl9zdHJuY2F0LCBzaW1wbGlmeV9idWlsdGluX3N0cnNwbik6IFVzZSB0aGUgbmV3CglvbWl0X3R3b19vcGVyYW5kcyBmdW5jdGlvbiB0byBidWlsZCB0aGUgcmVxdWlyZWQgQ09NUE9VTkRfRVhQUnMuCgoyMDA0LTA2LTEyICBTdGV2ZW4gQm9zc2NoZXIgPHN0ZXZlbmJAc3VzZS5kZT4sCgkgICAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZ2NzZS5jIChyZWNvcmRfc2V0X2luZm8pOiBVc2UgcHJlZGljYXRlcyBsaWtlIFJFR19QLgoJKG1lbXNfY29uZmxpY3RfZm9yX2djc2VfcCk6IExpa2V3aXNlLgoJKGxvYWRfa2lsbGVkX2luX2Jsb2NrX3ApOiBMaWtld2lzZS4KCShoYXNoX2V4cHJfMSk6IExpa2V3aXNlLgoJKGluc2VydF9zZXRfaW5fdGFibGUpOiBMaWtld2lzZS4KCShnY3NlX2NvbnN0YW50X3ApOiBMaWtld2lzZS4KCShoYXNoX3NjYW5fc2V0KTogTGlrZXdpc2UuCgkoaGFzaF9zY2FuX2luc24pOiBMaWtld2lzZS4KCShjYW5vbl9saXN0X2luc2VydCk6IExpa2V3aXNlLgoJKHJlY29yZF9sYXN0X21lbV9zZXRfaW5mbyk6IExpa2V3aXNlLgoJKHJlY29yZF9sYXN0X3NldF9pbmZvKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9oYXNoX3RhYmxlX3dvcmspOiBMaWtld2lzZS4KCShtYXJrX3NldCk6IExpa2V3aXNlLgoJKG1hcmtfY2xvYmJlcik6IExpa2V3aXNlLgoJKG1hcmtfb3Byc19zZXQpOiBMaWtld2lzZS4KCShjb21wdXRlX3RyYW5zcCk6IExpa2V3aXNlLgoJKGZpbmRfYXZhaWxfc2V0KTogTGlrZXdpc2UuCgkoY3Byb3BfaW5zbik6IExpa2V3aXNlLgoJKGRvX2xvY2FsX2Nwcm9wKTogTGlrZXdpc2UuCgkoY3Byb3ApOiBMaWtld2lzZS4KCShmaW5kX2ltcGxpY2l0X3NldHMpOiBMaWtld2lzZS4KCShmaW5kX2J5cGFzc19zZXQpOiBMaWtld2lzZS4KCShieXBhc3NfY29uZGl0aW9uYWxfanVtcHMpOiBMaWtld2lzZS4KCShpbnNlcnRfaW5zbl9lbmRfYmIpOiBMaWtld2lzZS4KCShwcmVfaW5zZXJ0X2NvcHlfaW5zbik6IExpa2V3aXNlLgoJKGNvbXB1dGVfdHJhbnNwb3V0KTogTGlrZXdpc2UuCgkobmV4dF9sc19leHByKTogTGlrZXdpc2UuCgkoaW52YWxpZGF0ZV9hbnlfYnVyaWVkX3JlZnMpOiBMaWtld2lzZS4KCShjb21wdXRlX2xkX21vdGlvbl9tZW1zKTogTGlrZXdpc2UuCgkocmVnX3NldF9pbmZvKTogTGlrZXdpc2UuCgkocmVnX2NsZWFyX2xhc3Rfc2V0KTogTGlrZXdpc2UuCgkoZmluZF9tb3ZlYWJsZV9zdG9yZSk6IExpa2V3aXNlLgoJKGNvbXB1dGVfc3RvcmVfdGFibGUpOiBMaWtld2lzZS4KCShmaW5kX2xvYWRzKTogTGlrZXdpc2UuCgkoc3RvcmVfa2lsbGVkX2luX2luc24pOiBMaWtld2lzZS4KCShpbnNlcnRfaW5zbl9zdGFydF9iYik6IExpa2V3aXNlLgoJKHJlZ19zZXRfYmV0d2Vlbl9hZnRlcl9yZWxvYWRfcCk6IExpa2V3aXNlLgoJKHJlZ191c2VkX2JldHdlZW5fYWZ0ZXJfcmVsb2FkX3ApOiBMaWtld2lzZS4KCShpc19qdW1wX3RhYmxlX2Jhc2ljX2Jsb2NrKTogTGlrZXdpc2UuCgkoZ2NzZV9hZnRlcl9yZWxvYWQpOiBMaWtld2lzZS4KCShoYXNoX3NjYW5fc2V0X2FmdGVyX3JlbG9hZCk6IExpa2V3aXNlLgoJKGNvbXB1dGVfaGFzaF90YWJsZV9hZnRlcl9yZWxvYWQpOiBMaWtld2lzZS4KCjIwMDQtMDYtMTIgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHJ0bC5oIChNRU1fUCwgTk9OSlVNUF9JTlNOX1AsIENBTExfSU5TTl9QKTogTmV3IHByZWRpY2F0ZXMuCgkoSU5TTl9QKTogRG9uJ3QgbG9vayBhdCB0aGUgcnR4IGNvZGUgY2xhc3MsIGp1c3QgZXhwbGljaXRseQoJY2hlY2sgZm9yIG9uZSBvZiB0aGUgdHJlZSBSVFhfSU5TTiBjb2Rlcy4KCjIwMDQtMDYtMTEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXR5cGVjay5jIChkZWZhdWx0X2Z1bmN0aW9uX2FycmF5X2NvbnZlcnNpb24pOiBVc2UKCWJ1aWxkX3BvaW50ZXJfdHlwZSBub3QgVFlQRV9QT0lOVEVSX1RPLgoKMjAwNC0wNi0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogRG9uJ3QgaW52b2tlIEFDWF9IRUFERVJfU1REQk9PTC4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIHN5c3RlbS5oOiBVbmNvbmRpdGlvbmFsbHkgZGVmaW5lIGJvb2wgYXMgdW5zaWduZWQgY2hhciwKCUJPT0xfQklURklFTEQgYXMgdW5zaWduZWQgaW50LgoJKiBkb213YWxrLmg6IFVzZSBCT09MX0JJVEZJRUxELgoKMjAwNC0wNi0xMiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogbGliZ2NjLXN0ZC52ZXI6IEFkZCBfX3Vub3JkZGYyIGFuZCBfX3Vub3Jkc2YyIHdpdGggdmVyc2lvbiAzLjMuNC4KCSogbGliZ2NjLWRhcndpbi52ZXI6IExpa2V3aXNlLgoKMjAwNC0wNi0xMiAgUGV0ZXIgSmFrdWJlayAgPHBldGVyQGxhc2VyYW5pbWF0aW9uLmNvbT4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMpOiBGb3JjZSByZWxvYWQgZm9yIHBzZXVkbyByZWdpc3RlcnMgb24gYmlnCgllbmRpYW4gbWFjaGluZXMuCgoyMDA0LTA2LTExICBTdGV2ZW4gQm9zc2NoZXIgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLWRjZS5jIChtYXJrX2NvbnRyb2xfZGVwZW5kZW50X2VkZ2VzX25lY2Vzc2FyeSk6CglEb24ndCB0cnkgdG8gbWFyayBhbnl0aGluZyBjb250cm9sIGRlcGVuZGVudCBvbiB0aGUgZW50cnkgb3IKCWV4aXQgYmxvY2tzLgoKMjAwNC0wNi0xMSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJRml4IEJ1ZyAxNTg5OQoJRml4IEJ1ZyAxNTQ2MAoJKiB0cmVlLmggKFNTQV9OQU1FX1ZBTFVFKTogTmV3IG1hY3JvLgoJKHN0cnVjdCB0cmVlX3NzYV9uYW1lKTogQWRkIHZhbHVlX2hhbmRsZSBtZW1iZXIuCgkqIHRyZWUtc3NhLXByZS5jOiBSZXBsYWNlZC4KCSogdHJlZS1mbG93LmggKHRyZWVfYW5uX3R5cGUpOiBBZGQgQ1NUX0FOTiwgRVhQUl9BTk4uCgkoc3RydWN0IGNzdF9hbm5fZCk6IE5ldy4KCShzdHJ1Y3QgZXhwcl9hbm5fZCk6IE5ldy4KCSh1bmlvbiB0cmVlX2Fubl9kKTogQWRkIGNzdF9hbm4sIGV4cHJfYW5uLgoJKiB0cmVlLWRmYS5jIChjcmVhdGVfY3N0X2Fubik6IE5ldyBmdW5jdGlvbi4KCShjcmVhdGVfZXhwcl9hbm4pOiBEaXR0by4KCSogdHJlZS1mbG93LWlubGluZS5oIChjc3RfYW5uKTogTmV3IGZ1bmN0aW9uLgoJKGV4cHJfYW5uKTogRGl0dG8uCgkoZ2V0X2NzdF9hbm4pOiBEaXR0by4KCShnZXRfZXhwcl9hbm4pOiBEaXR0by4uCgoyMDA0LTA2LTExICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuYyAocGFfaHB1eF9pbml0X2xpYmZ1bmMpOiBBZGQgc3VwcG9ydCBmb3IgdW5vcmRfb3B0YWIuCgkqIHBhL3F1YWRsaWIuYyAoZW51bSBxZmNtcF9tYWdpYyk6IERlZmluZSBtYWdpYyB2YWx1ZXMgZm9yIGNhbGwgdG8KCV9VX1FmY21wIGxpYnJhcnkgZnVuY3Rpb24uCgkoX1VfUWZsdGd0LCBfVV9RZnVubGUsIF9VX1FmdW5sdCwgX1VfUWZ1bmdlLCBfVV9RZnVuZ3QsIF9VX1FmdW5lcSwKCV9VX1FmdW5vcmQsIF9VX1Fmb3JkKTogQWRkIG1vcmUgVEZtb2RlIGJ1aWx0aW4gY29tcGFyZSBmdW5jdGlvbnMuCgoJKiBwYS5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogVXNlIFVOU1BFQ19ETFRJTkQxNFIgdG8gaWRlbnRpZnkKCXVuc3BlYyB1c2VkIGZvciBsb2FkaW5nIGFkZHJlc3MgZnJvbSBETFQuCgkqIHBhLm1kOiBEZWZpbmUgY29uc3RhbnRzIGZvciB0aGUgdXNlcyBvZiBVTlNQRUMgYW5kIFVOU1BFQ19WT0xBVElMRS4KCUNoYW5nZSBhbGwgdXNlcnMgb2YgVU5TUEVDIGFuZCBVTlNQRUNfVk9MQVRJTEUgdG8gdXNlIG5ldyBjb25zdGFudHMuCglEb24ndCB1c2Ugc2hvcnQgY29kZSBzZXF1ZW5jZSB3aGVuIGxvYWRpbmcgdGhlIGFkZHJlc3Mgb2YgYSBub25sb2NhbAoJbGFiZWwuCgkobm9ubG9jYWxfZ290byk6IE5ldyBleHBhbmRlci4KCShpbmRpcmVjdF9nb3RvKTogTmV3IGp1bXAgcGF0dGVybiBmb3Igbm9ubG9jYWwgZ290b3MuCgkoc2hvcnRfanVtcCk6IFJlbW92ZSBleHRyYSB3aGl0ZXNwYWNlLgoJKGJ1aWx0aW5fbG9uZ2ptcCk6IENsb2JiZXIgbWVtb3J5IGFuZCBoYXJkIGZyYW1lIHBvaW50ZXIuICBSZXN0b3JlCglmcmFtZSBwb2ludGVyIHZpYSB2aXJ0dWFsX3N0YWNrX3ZhcnNfcnR4IHdoZW4gd2UgaGF2ZSBhIG5vbmxvY2FsIGdvdG8KCXBhdHRlcm4uCgoyMDA0LTA2LTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cG1lZC5jIChzeW50aF9tdWx0KTogQWRkIGFuIGFkZGl0aW9uYWwgTU9ERSBhcmd1bWVudCBmb3IgdGhlCgltYWNoaW5lIG1vZGUgb2YgdGhlIG11bHRpcGxpY2F0aW9uLiAgVXBkYXRlIHJlY3Vyc2l2ZSBjYWxscy4gIFVzZQoJbW9kZSBpbnN0ZWFkIG9mIHdvcmRfbW9kZSBmb3IgZGV0ZXJtaW5pbmcgb3BlcmF0aW9uIGNvc3RzLgoJKGNob29zZV9tdWx0X3ZhcmlhbnQpOiBVcGRhdGUgY2FsbHMgdG8gc3ludGhfbXVsdCB3aXRoICJtb2RlIi4KCjIwMDQtMDYtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfc3RtdF9vcGVyYW5kcyk6IENsZWFyIG1ha2VzX2FsaWFzZWRfbG9hZHMKCWFuZCBtYWtlc19hbGlhc2VkX3N0b3Jlcy4KCjIwMDQtMDYtMTEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogZG9jL2luc3RhbGwudGV4dCAoLS1lbmFibGUtc2hhcmVkKTogRml4IHR5cG8uCgoyMDA0LTA2LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2dpbXBsaWZ5X3ZhX2FyZ18xKTogUmVtb3ZlIHBvc3RfcAoJYXJndW1lbnQuICBVc2UgaW50ZXJuYWwgcG9zdCBmb3IgY2FsbCB0byBnaW1wbGlmeV9leHByLiAgVGlkeQoJcm91bmRlZCB0eXBlIHNpemUgY29tcHV0YXRpb24uCgkoYWxwaGFfZ2ltcGxpZnlfdmFfYXJnKTogVXNlIGdldF9mb3JtYWxfdG1wX3ZhciBhbmQKCWdldF9pbml0aWFsaXplZF90bXBfdmFyLgoKMjAwNC0wNi0xMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpICgtLWVuYWJsZS1zaGFyZWQpOiBVcGRhdGUgbGlib2JqYydzIHNoYXJlZCBsaWJyYXJ5CglzdGF0dXMuICBSZW1vdmUgcmVmZXJlbmNlIHRvIGxpYmYyYy4KCjIwMDQtMDYtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBKdXN0IGFib3J0LgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfdmFfYXJnKTogUmVtb3ZlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChFWFBBTkRfQlVJTFRJTl9WQV9BUkcpOiBKdXN0IGFib3J0LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdmFfYXJnKTogUmVtb3ZlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoRVhQQU5EX0JVSUxUSU5fVkFfQVJHKTogSnVzdCBhYm9ydC4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEVYUEFORF9CVUlMVElOX1ZBX0FSRyk6IEp1c3QgYWJvcnQuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY192YV9hcmcpOiBSZW1vdmUuCgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfc3RtdF9vcGVyYW5kcyk6IFVzZSBhIFZfTUFZX0RFRiBpZiB0aGUKCWFzc2lnbm1lbnQgbWlnaHQgdGhyb3cuCgkqIHRyZWUtZWguYyAodHJlZV9jb3VsZF90aHJvd19wKTogU3VwcG9ydCBub24tY2FsbCBleGNlcHRpb25zIGluCglleHByZXNzaW9ucy4KCjIwMDQtMDYtMTEgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCVBSIDE1ODg2OgoJKiBzaC5oIChBTExPQ0FURV9JTklUSUFMX1ZBTFVFKTogVXNlIHJldHVybl9hZGRyZXNzX3BvaW50ZXJfcnR4LgoKMjAwNC0wNi0xMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChQcmVyZXF1aXNpdGVzKTogVXBkYXRlIGRvY3VtZW50YXRpb24gb2YKCXJlcXVpcmVkIHZlcnNpb25zIG9mIGF1dG9jb25mIGFuZCBhdXRvbWFrZS4gIFJlbW92ZSBtZW50aW9uIG9mCglsaWJmMmMuCgoyMDA0LTA2LTExICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19naW1wbGlmeV92YV9hcmcpOiBOZXcgZm4uCgkoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogRGVmaW5lLgoKMjAwNC0wNi0xMSAgSmVycnkgUXVpbm4gIDxqbHF1aW5uQG9wdG9ubGluZS5uZXQ+CgoJKiB0eXBlY2xhc3MuaDogQWRkIEdQTCBwbHVzIGV4Y2VwdGlvbiBsaWNlbnNlLiAgQWRkIGluY2x1ZGUKCWd1YXJkLgoKMjAwNC0wNi0xMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9tb2RpZnlfZXhwcik6IERvbid0IGZvcmNlIGEgdGVtcG9yYXJ5CglvZiBhbiBhZ2dyZWdhdGVfdmFsdWVfcCB0eXBlLgoKMjAwNC0wNi0xMCAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9pbmZfY29tcGFyZSk6IEF2b2lkIGNyZWF0aW5nIG5vbi1naW1wbGUKCWNvZGUgd2hlbiB3ZSBhcmUgaW4gZ2ltcGxlIGZvcm0uCgoyMDA0LTA2LTEwICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluICh0cmVlLXNzYW5hbWVzLm8pOiBEZXBlbmQgb24gVFJFRV9GTE9XX0guCgkqIHRyZWUtZmxvdy5oIChzc2FfbmFtZXMsIG51bV9zc2FfbmFtZXMsIHNzYV9uYW1lKTogRGVjbGFyZS4KCShoaWdoZXN0X3NzYV92ZXJzaW9uKTogUmVtb3ZlLgoJKiB0cmVlLW91dG9mLXNzYS5jIChuZXdfdGVtcF9leHByX3RhYmxlKTogUmVwbGFjZQoJaGlnaGVzdF9zc2FfdmVyc2lvbiB3aXRoIG51bV9zc2FfbmFtZXMuCgkoZHVtcF9yZXBsYWNlYWJsZV9leHBycyk6IExpa2V3aXNlLgoJKHJld3JpdGVfdmFyc19vdXRfb2Zfc3NhKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWNjcC5jIChpbml0aWFsaXplKTogTGlrZXdpc2UKCSogdHJlZS1zc2EtY29weXJlbmFtZS5jIChyZW5hbWVfc3NhX2NvcGllcyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kY2UuYyAodHJlZV9kY2VfaW5pdCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kb20uYyAodHJlZV9zc2FfZG9taW5hdG9yX29wdGltaXplKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxpdmUuYyAoY3JlYXRlX3NzYV92YXJfbWFwKTogTGlrZXdpc2UuCgkoZHVtcF92YXJfbWFwKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLmMgKHZlcmlmeV9zc2EpOiBMaWtld2lzZS4KCShraWxsX3JlZHVuZGFudF9waGlfbm9kZXMpOiBMaWtld2lzZS4KCURvIG5vdCBidWlsZCBhIGxvY2FsIGFycmF5IG9mIFNTQV9OQU1Fcy4gIFVzZSB0aGUgc3NhX25hbWVzIHRhYmxlLgoJKiB0cmVlLXNzYW5hbWVzLmM6IEluY2x1ZGUgdHJlZS1mbG93LmgKCShzc2FfbmFtZXMpOiBOZXcgdmFycmF5LgoJKGluaXRfc3NhX25hbWVzKTogSW5pdGlhbGl6ZSBzc2FfbmFtZXMuCglSZXNlcnZlIHRoZSBmaXJzdCBzbG90IG9mIHRoZSBzc2FfbmFtZXMgdGFibGUuCgkobWFrZV9zc2FfbmFtZSk6IFB1c2ggdGhlIG5ld2x5IGNyZWF0ZWQgU1NBX05BTUUgaW50byBzc2FfbmFtZXMuCglBc3NpZ24gdmVyc2lvbiBudW1iZXJzIHVzaW5nIG51bV9zc2FfbmFtZXMuCgoyMDA0LTA2LTEwICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpIChGcm9udCBFbmQpOiBBZGQgZGV0YWlscyBvZiBtb3JlCglpbnN0YWxsYXRpb24gZG9jdW1lbnRhdGlvbiByZXF1aXJlZC4KCjIwMDQtMDYtMTAgIEJyaWFuIEJvb3RoICA8YmJvb3RoQHJlZGhhdC5jb20+CgoJKiBkb2MvdHJlZS1zc2EudGV4aTogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gVkRFRiBhbmQgYWRkIGRlc2NyaXB0aW9ucwoJb2YgVl9NQVlfREVGIGFuZCBWX01VU1RfREVGLgoJKiB0cmVlLWRmYS5jIChkZmFfc3RhdHNfZCk6IEFkZCBudW1fdl9tdXN0X2RlZnMgYW5kIHJlbmFtZQoJbnVtX3ZkZWZzIHRvIG51bV92X21heV9kZWZzLgoJKGNvbXB1dGVfaW1tZWRpYXRlX3VzZXNfZm9yX3N0bXQpOiBSZW5hbWUgb2NjdXJlbmNlcyBvZiB2ZGVmCgl0byB2X21heV9kZWYuCgkocmVkaXJlY3RfaW1tZWRpYXRlX3VzZXMpOiBEaXR0by4KCShkdW1wX2RmYV9zdGF0cyk6IERpdHRvLiBBbHNvIGFkZGVkIGNvZGUgdG8gZHVtcCBudW1fdl9tdXN0X2RlZnMuCgkoY29sbGVjdF9kZmFfc3RhdHNfcik6IFJlbmFtZSBvY2N1cmVuY2VzIG9mIHZkZWYgdG8gdl9tYXlfZGVmLgoJQWxzbyBhZGQgY29kZSB0byBzdW0gdXAgdGhlIG51bWJlciBvZiB2X211c3RfZGVmcy4KCSh2ZGVmc19kaXNhcHBlYXJlZF9wKTogUmVwbGFjZSB3aXRoLi4uCgkodl9tYXlfZGVmc19kaXNhcHBlYXJlZF9wKTogVGhpcy4KCSh2X211c3RfZGVmc19kaXNhcHBlYXJlZF9wKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfbmV3X3ZhcnNfdG9fcmVuYW1lKTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZiB0byB2X21heV9kZWYuCglBbHNvIGFkZCBjb2RlIHRvIG1hcmsgbmV3IHZhcmlhYmxlcyBmb3VuZCBpbiBWX01VU1RfREVGcyBmb3IKCXJlbmFtZWluZy4KCSogdHJlZS1mbG93LmggKHN0bXRfYW5uX2QpOiBBZGQgdl9tdXN0X2RlZl9vcHMgYW5kIHJlcGxhY2UKCXZkZWZfb3BzIHRvIHZfbWF5X2RlZl9vcHMuCgkoZ2V0X3ZkZWZfb3BzKTogUmVwbGFjZSB3aXRoLi4uCgkoZ2V0X3ZfbWF5X2RlZl9vcHMpOiBUaGlzLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKGdldF92ZGVmX29wcyk6IFJlcGxhY2Ugd2l0aC4uLgoJKGdldF92X21heV9kZWZfb3BzKTogVGhpcy4KCShnZXRfdl9tdXN0X2RlZl9vcHMpOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X3ZkZWZfcmVzdWx0X3B0cik6IFJlcGxhY2Ugd2l0aC4uLgoJKGdldF92X21heV9kZWZfcmVzdWx0X3B0cik6IFRoaXMuCgkoZ2V0X3ZkZWZfb3BfcHRyKTogRGl0dG8gd2l0aC4uLgoJKGdldF92X21heV9kZWZfb3BfcHRyKTsgVGhpcy4KCShnZXRfdl9tdXN0X2RlZl9vcF9wdHIpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUtaW50by1zc2EuYyAobWFya19kZWZfc2l0ZXMpOiBSZW5hbWUgb2NjdXJlbmNlcyBvZiB2ZGVmCgl0byB2X21heV9kZWYuIEFsc28gYWRkIGNvZGUgdG8gbWFyayBzdGF0ZW1lbnRzIHdpdGgKCVZfTVVTVF9ERUZzIGFzIGRlZmluaXRpb24gc2l0ZXMuCgkocmV3cml0ZV9zdG10KTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZiB0byB2X21heV9kZWYuIEFsc28KCWFkZCBjb2RlIHRvIHJlZ2lzdGVyIG5ldyBWX01VU1RfREVGcyBtYWRlIGJ5IHRoZSBzdGF0ZW1lbnQuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKFZJUlRVQUxfUEFSVElUSU9OKTogVXBkYXRlIGNvbW1lbnRzLgoJKGNoZWNrX3JlcGxhY2VhYmxlKTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZiB0byB2X21heV9kZWYuIEFsc28KCWFkZCBjaGVjayBmb3IgVl9NVVNUX0RFRnMuCgkoZmluZF9yZXBsYWNlYWJsZV9pbl9iYik6IERpdHRvLgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX3ZvcHMpOiBSZW5hbWUgb2NjdXJlbmNlcyBvZiB2ZGVmCgl0byB2X21heV9kZWYuIEFsc28gYWRkIGNvZGUgdG8gZHVtcCBWX01VU1RfREVGcy4KCSogdHJlZS1zcmEuYyAobWFya19hbGxfdmRlZnMpOiBSZXBsYWNlIHdpdGguLi4KCShtYXJrX2FsbF92X21heV9kZWZzKTogVGhpcy4KCShtYXJrX2FsbF92X211c3RfZGVmcyk6IE5ldyBmdW5jdGlvbi4KCShjcmVhdGVfc2NhbGFyX2NvcGllcyk6IFJlcGxhY2UgY2FsbCB0byBtYXJrX2FsbF92ZGVmcyB3aXRoCgljYWxscyB0byBtYXJrX2FsbF92X21heV9kZWZzIGFuZCBtYXJrX2FsbF92X211c3RfZGVmcy4KCShzY2FsYXJpemVfc3RydWN0dXJlcyk6IFJlbmFtZSBvY2N1cmVuY2VzIG9mIHZkZWYgdG8gdl9tYXlfZGVmLgoJQWxzbyBhZGQgYSBjaGVjayBmb3IgVl9NVVNUX0RFRnMuCgkoc2NhbGFyaXplX21vZGlmeV9leHByKTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZiB0byB2X21heV9kZWYuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGdsb2JhbF92YXIpOiBVcGRhdGUgY29tbWVudC4KCShjb21wdXRlX21heV9hbGlhc2VzKTogRGl0dG8uCgkoY29tcHV0ZV9wb2ludHNfdG9fYW5kX2FkZHJfZXNjYXBlKTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZgoJdG8gdl9tYXlfZGVmLiBBbHNvIGFkZCBjb2RlIHRvIG1hcmsgdmFyaWFibGVzIGluIFZfTVVTVF9ERUYKCW9wZXJhbmRzIGFzIGJlaW5nIHdyaXR0ZW4gdG8uCgkoZ3JvdXBfYWxpYXNlcyk6IFVwZGF0ZSBjb21tZW50LgoJKG1heWJlX2NyZWF0ZV9nbG9iYWxfdmFyKTogRGl0dG8uCgkqIHRyZWUtc3NhLmMgKHZlcmlmeV9zc2EpOiBSZW5hbWUgb2NjdXJlbmNlcyBvZiB2ZGVmIHRvIHZfbWF5X2RlZi4KCUFsc28gYWRkIGEgY2hlY2sgZm9yIFZfTVVTVF9ERUZzIG9uIEdJTVBMRSByZWdpc3RlcnMuCgkocmVwbGFjZV9pbW1lZGlhdGVfdXNlcyk6IFJlbmFtZSBvY2N1cmVuY2VzIG9mIHZkZWYgdG8gdl9tYXlfZGVmLgoJKiB0cmVlLXNzYS1jY3AuYyAodmlzaXRfc3RtdCk6IFJlbmFtZSBvY2N1cmVuY2VzIG9mIHZkZWYKCXRvIHZfbWF5X2RlZi4gQWxzbyBhZGQgY29kZSB0byBtYXJrIGFsbCBWX01VU1RfREVGIG9wZXJhbmRzCglWQVJZSU5HLgoJKGluaXRpYWxpemUpOiBEaXR0by4KCShzZXRfcmhzKTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZiB0byB2X21heV9kZWYuIEFsc28gYWRkCgljb2RlIHRvIHVwZGF0ZSBTU0FfTkFNRXMgaW4gVl9NVVNUX0RFRnMuCgkqIHRyZWUtc3NhLWNvcHkuYyAoY3Byb3BfaW50b19zdG10KTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZgoJdG8gdl9tYXlfZGVmLgoJKiB0cmVlLXNzYS1kY2UuYyAobWFya19zdG10X2lmX29idmlvdXNseV9uZWNlc3NhcnkpOiBSZW5hbWUKCW9jY3VyZW5jZXMgb2YgdmRlZiB0byB2X21heV9kZWYuIEFsc28gYWRkIGNvZGUgdG8gbWFyayBzdGF0ZW1lbnRzCgl3aXRoIFZfTVVTVF9ERUZzIGFzIG5lY2Vzc2FyeS4KCShwcm9wYWdhdGVfbmVjZXNzaXR5KTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZiB0byB2X21heV9kZWYuCgkqIHRyZWUtc3NhLWRvbS5jIChyZWRpcmVjdF9lZGdlc19hbmRfdXBkYXRlX3NzYV9ncmFwaCk6IFJlbmFtZQoJb2NjdXJlbmNlcyBvZiB2ZGVmIHRvIHZfbWF5X2RlZi4gQWxzbyBhZGQgY29kZSB0byBtYXJrIG9wZXJhbmRzCglpbiBWX01VU1RfREVGcyBmb3IgcmVuYW1pbmcuCgkoZWxpbWluYXRlX3JlZHVuZGFudF9jb21wdXRhdGlvbnMpOiBSZW5hbWUgb2NjdXJlbmNlcyBvZiB2ZGVmCgl0byB2X21heV9kZWYuCgkocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX3N0bXQpOiBSZW5hbWUgb2NjdXJlbmNlcyBvZiB2ZGVmCgl0byB2X21heV9kZWYuIEFsc28gYWRkIGNvZGUgdG8gcmVjb3JkIFZVU0VzIGZvciBWX01VU1RfREVGcy4KCShvcHRpbWl6ZV9zdG10KTogUmVtb3ZlIHVubmVzZXNzYXJ5IHZhcmlhYmxlIHZkZWZzLiBVcGRhdGUKCWNvbW1lbnQuCgkocmVnaXN0ZXJfZGVmaW5pdGlvbnNfZm9yX3N0bXQpOiBSZW5hbWUgb2NjdXJlbmNlcyBvZiB2ZGVmCgl0byB2X21heV9kZWYuIEFsc28gYWRkIGNvZGUgdG8gcmVnaXN0ZXIgZGVmaW5pdGlvbnMgbWFkZSB3aXRoCglWX01VU1RfREVGcy4KCSogdHJlZS1zc2EtZHNlLmMgKGZpeF9zdG10X3ZkZWZzKTogUmVwbGFjZSB3aXRoLi4uCgkoZml4X3N0bXRfdl9tYXlfZGVmcyk6IFRoaXMuCgkoZml4X3BoaV91c2VzKTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZiB0byB2X21heV9kZWYuCgkoZHNlX29wdGltaXplX3N0bXQpOiBEaXR0by4KCSogdHJlZS1zc2EtbGl2ZS5jIChjcmVhdGVfc3NhX3Zhcl9tYXApOiBSZW5hbWUgb2NjdXJlbmNlcyBvZiB2ZGVmCgl0byB2X21heV9kZWYuIEFsc28gYWRkIGNvZGUgdG8gbWFyayBWX01VU1RfREVGIG9wZXJhbmRzIGFzIGJlaW5nCgl1c2VkIGluIHZpcnR1YWwgb3BlcmF0b3JzLgoJKiB0cmVlLXNzYS1sb29wLmMgKG1hcmtfZGVmc19mb3JfcmV3cml0ZSk6IFJlbmFtZSBvY2N1cmVuY2VzIG9mCgl2ZGVmIHRvIHZfbWF5X2RlZi4gQWxzbyBhZGQgY29kZSB0byBtYXJrIFZfTVVTVF9ERUYgb3BlcmFuZHMgZm9yCglyZW5hbWluZy4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAob3BmX2tpbGxfZGVmKTogTmV3IGZsYWcgZm9yIGtpbGxpbmcKCWRlZmluaXRpb25zLgoJKGJ1aWxkX3ZkZWZzKTogUmVuYW1lZCB0by4uLgoJKGJ1aWxkX3ZfbWF5X2RlZnMpOiBUaGlzLgoJKGJ1aWxkX3ZfbXVzdF9kZWZzKTogTmV3IHZhcmlhYmxlLgoJKHZvcGVyYW5kc19kKTogQWRkIHZfbXVzdF9kZWZfb3BzIGFuZCByZXBsYWNlIHZkZWZfb3BzIHdpdGgKCXZfbWF5X2RlZl9vcHMuCgkoYXBwZW5kX3ZkZWYpOiBSZXBsYWNlIHdpdGguLi4KCShhcHBlbmRfdl9tYXlfZGVmKTogVGhpcy4KCShhcHBlbmRfdl9tdXN0X2RlZik6IE5ldyBmdW5jdGlvbi4KCShOVU1fRlJFRSk6IEluY3JlbWVudCBmb3IgVl9NVVNUX0RFRgoJKG9wdHlwZV9mcmVlbGlzdCk6IEluY3JlbWVudCBpdHMgc2l6ZSBmb3IgVl9NVVNUX0RFRgoJKGFsbG9jYXRlX3ZkZWZfb3B0eXBlKTogUmVwbGFjZSB3aXRoLi4uCgkoYWxsb2NhdGVfdl9tYXlfZGVmX29wdHlwZSk6IFRoaXMuCgkoYWxsb2NhdGVfdl9tdXN0X2RlZl9vcHR5cGUpOiBOZXcgZnVuY3Rpb24uCgkoZnJlZV92ZGVmcyk6IFJlcGxhY2Ugd2l0aC4uLgoJKGZyZWVfdl9tYXlfZGVmcyk6IFRoaXMuCgkoZnJlZV92X211c3RfZGVmcyk6IE5ldyBmdW5jdGlvbi4KCShyZW1vdmVfdmRlZnMpOiBSZXBsYWNlIHdpdGguLi4KCShyZW1vdmVfdl9tYXlfZGVmcyk6IFRoaXMuCgkocmVtb3ZlX3ZfbXVzdF9kZWZzKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfc3NhX29wZXJhbmRzKTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZiB0byB2X21heV9kZWYuIEFsc28KCWFkZCBjb2RlIHRvIGluaXRpYWxpemUgYnVpbGRfdl9tdXN0X2RlZnMuCgkoZmluYWxpemVfc3NhX3ZkZWZzKTogUmVwbGFjZSB3aXRoLi4uCgkoZmluYWxpemVfc3NhX3ZfbWF5X2RlZnMpOiBUaGlzLgoJKGZpbmFsaXplX3NzYV92dXNlcyk6IFJlbmFtZSBvY2N1cmVuY2VzIG9mIHZkZWYgdG8gdl9tYXlfZGVmLgoJKGZpbmFsaXplX3NzYV92X211c3RfZGVmcyk6IE5ldyBmdW5jdGlvbi4KCShmaW5hbGl6ZV9zc2Ffc3RtdF9vcGVyYW5kcyk6IFJlcGxhY2UgY2FsbCB0byBmaW5hbGl6ZV9zc2FfdmRlZnMKCXdpdGggY2FsbHMgdG8gZmluYWxpemVfc3NhX3ZfbWF5X2RlZnMgYW5kIGZpbmFsaXplX3NzYV92X211c3RfZGVmcy4KCSh2ZXJpZnlfc3RhcnRfb3BlcmFuZHMpOiBSZW5hbWUgb2NjdXJlbmNlcyBvZiB2ZGVmIHRvIHZfbWF5X2RlZi4KCUFsc28gYWRkIGNoZWNrIGZvciBidWlsZF92X211c3RfZGVmcy4KCShnZXRfc3RtdF9vcGVyYW5kcyk6IFJlbmFtZSBvY2N1cmVuY2VzIG9mIHZkZWYgdG8gdl9tYXlfZGVmLgoJQWxzbyBhZGQgY29kZSB0byBoYW5kbGUgVl9NVVNUX0RFRnMgYW5kIHRvIHVzZSBvcGZfa2lsbF9kZWYgZm9yCglraWxsaW5nIGRlZmluaXRpb25zLgoJKGdldF9leHByX29wZXJhbmRzKTogVXBkYXRlIGNvbW1lbnQgYW5kIHVzZSBvcGZfa2lsbF9kZWYgZm9yCglraWxsaW5nIGRlZmluaXRpb25zLgoJKGFkZF9zdG10X29wZXJhbmQpOiBSZXBsYWNlIGNvZGUgdGhhdCBhcHBlbmRzIFZERUZzIHdpdGggY29kZQoJdGhhdCBhcHBlbmRzIFZfTVVTVF9ERUZzIHdoZW4gb3BmX2tpbGxfZGVmIGlzIHNldCBhbmQgVl9NQVlfREVGcwoJb3RoZXJ3aXNlLgoJKGFkZF9jYWxsX2Nsb2JiZXJfb3BzKTogVXBkYXRlIGNvbW1lbnRzLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5oICh2ZGVmX29wdHlwZV9kKTogUmVwbGFjZSB3aXRoLi4uCgkodl9tYXlfZGVmX29wdHlwZV9kKTogVGhpcy4KCSh2X211c3RfZGVmX29wdHlwZV9kKTogTmV3IHN0cnVjdHVyZS4KCShWREVGX09QUyk6IFJlcGxhY2Ugd2l0aC4uLgoJKFZfTUFZX0RFRl9PUFMpOiBUaGlzLgoJKFNUTVRfVkRFRl9PUFMpOiBTYW1lIHdpdGguLi4KCShTVE1UX1ZfTUFZX0RFRl9PUFMpOiBUaGlzLgoJKE5VTV9WREVGUyk6IEFuZC4uLgoJKE5VTV9WX01BWV9ERUZTKTogVGhpcy4KCShWREVGX1JFU1VMVF9QVFIpOiBBcyB3ZWxsIGFzLi4uCgkoVl9NQVlfREVGX1JFU1VMVF9QVFIpOiBUaGlzLgoJKFZERUZfUkVTVUxUKTogU2FtZSBnb2VzIGZvci4uLgoJKFZfTUFZX0RFRl9SRVNVTFQpOiBUaGlzLgoJKFZERUZfT1BfUFRSKTogQW5kLi4uCgkoVl9NQVlfREVGX09QX1BUUik6IFRoaXMuCgkoVkRFRl9PUCk6IEFuZC4uLgoJKFZfTUFZX0RFRl9PUCk6IFRoaXMuCgkoVl9NVVNUX0RFRl9PUFMpOiBOZXcgbWFjcm8uCgkoU1RNVF9WX01VU1RfREVGX09QUyk6IERpdHRvLgoJKE5VTV9WX01VU1RfREVGUyk6IERpdHRvLgoJKFZfTVVTVF9ERUZfT1BfUFRSKTogRGl0dG8uCgkoVl9NVVNUX0RFRl9PUCk6IERpdHRvLgoJKHJlbW92ZV92ZGVmcyk6IFJlcGxhY2Ugc2lnbmF0dXJlIHdpdGguLi4KCShyZW1vdmVfdl9tYXlfZGVmcyk6IFRoaXMuCgkocmVtb3ZlX3ZfbXVzdF9kZWZzKTogTmV3IGZ1bmN0aW9uIHNpZ25hdHVyZS4KCSogdHJlZS1zc2EtcHJlLmMgKHN1YnN0X3BoaXMpOiBSZXBsYWNlIGNhbGwgdG8gcmVtb3ZlX3ZkZWZzCgl3aXRoIGNhbGxzIHRvIHJlbW92ZV92X21heV9kZWZzIGFuZCByZW1vdmVfdl9tdXN0X2RlZnMuCgkocHJvY2Vzc19sZWZ0X29jY3NfYW5kX2tpbGxzKTogUmVuYW1lIG9jY3VyZW5jZXMgb2YgdmRlZiB0byB2X21heV9kZWYuCglBbHNvIGFkZCBjb2RlIHRoYXQgbWFya3MgbGVmdCBvY2N1cmVuY2VzIG9mIG9wZXJhbmRzIGluIFZfTVVTVF9ERUZzLgoJKiB0cmVlLXRhaWxjYWxsLmMgKGZpbmRfdGFpbF9jYWxscyk6IFJlbmFtZSBvY2N1cmVuY2VzIG9mIHZkZWYKCXRvIHZfbWF5X2RlZi4gQWxzbyBhZGQgY2hlY2sgZm9yIFZfTVVTVF9ERUZzLgoJKGVsaW1pbmF0ZV90YWlsX2NhbGwpOlJlbmFtZSBvY2N1cmVuY2VzIG9mIHZkZWYgdG8gdl9tYXlfZGVmLgoKMjAwNC0wNi0xMCAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE1NjUzCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2Jsb2NrKTogRmluaXNoIGN5Y2xlIGFmdGVyIGlzc3VpbmcgYXNtCglpbnNuLgoKMjAwNC0wNi0xMCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiB3ZWIvMTUyNjMKCSogZG9jL2luc3RhbGwudGV4aTogUmVtb3ZlIHN1cGVyZmx1b3VzIGxpbmVicmVhay4KCjIwMDQtMDYtMTAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiBGYWxsIGJhY2sgdG8gbGlicmFyeSBmdW5jdGlvbiBjYWxsIGZvcgoJY29uaiwgY29uamYsIGNvbmpsLCBjcmVhbCwgY3JlYWxmLCBjcmVhbGwsIGNpbWFnLCBjaW1hZ2YgYW5kIGNpbWFnbC4KCShmb2xkX2J1aWx0aW5fMSk6IExvd2VyIGJ1aWx0LWlucyBCVUlMVF9JTl9DT05KeyxGLEx9IHRvIENPTkpfRVhQUiwKCUJVSUxUX0lOX0NSRUFMeyxGLEx9IHRvIFJFQUxQQVJUX0VYUFIsIGFuZCBCVUlMVF9JTl9DSU1BR3ssRixMfSB0bwoJSU1BR1BBUlRfRVhQUiByZXNwZWN0aXZlbHkuCgoyMDA0LTA2LTEwICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLmMgKGR1bXBfdGFibGUpOiBOZXcgYXJndW1lbnQgc3RhcnQuICBDaGFuZ2VkIGNhbGxlci4KCShmaXh1cF9tb3ZhKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfYmFycmllcik6IFVzZSBpdC4KCShzaF9yZW9yZyk6IExpa2V3aXNlLiAgQ2hlY2sgZm9yIENPREVfRk9SX2Nhc2VzaV93b3JrZXJfMi4KCUlmIHRoZSBsYWJlbCBhIG1vdmEgcmVmZXJzIHRvIGlzIGFib3ZlIHRoZSBtb3ZhIGl0c2VsZiwgY2hhbmdlCgl0aGUgbW92YSBpbnRvIGEgbG9hZC4KCSogc2gubWQgKCpjYXNlc2lfd29ya2VyKTogUmVuYW1lIHRvOgoJKGNhc2VzaV93b3JrZXJfMSkuCgkoY2FzZXNpX3dvcmtlcl8yKTogTmV3IGluc24uCgoyMDA0LTA2LTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IENoYW5nZSBnaW1wbGlmeV92YV9hcmdfZXhwcgoJaG9vayBzaWduYXR1cmUuCgkqIHRyZWUtZ2ltcGxlLmg6IEFkanVzdC4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2dpbXBsaWZ5X3ZhX2FyZyk6IEFkanVzdC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2dpbXBsaWZ5X3ZhX2FyZyk6IEFkanVzdC4KCVVzZSBmb2xkX2NvbnZlcnQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9naW1wbGlmeV92YV9hcmcpOiBBZGp1c3QuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9naW1wbGlmeV92YV9hcmcpOiBBZGp1c3QuCglVc2UgQ09NUExFWF9FWFBSIGZvciBjb21wbGV4IG51bWJlcnMuICBVc2UgZm9sZF9jb252ZXJ0LgoJKiBidWlsdGlucy5jIChzdGRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBBZGp1c3QuICBVc2UgZm9sZF9jb252ZXJ0LgoJKGdpbXBsaWZ5X3ZhX2FyZ19leHByKTogUmV0dXJuIEdTX0VSUk9SIGluIGVycm9yIGNhc2UuCglHaW1wbGlmeSB2YWxpc3QgcmF0aGVyIHRoYW4gY2FsbGluZyBzdGFiaWxpemVfdmFfbGlzdC4KCjIwMDQtMDYtMTAgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIE1ha2VmaWxlLmluIChkZi5vKTogUmVtb3ZlIGZpYmhlYXAgZGVwZW5kZW5jeS4KCSogZGYuaDogRG8gbm90IGluY2x1ZGUgc2JpdG1hcC5oLgoJKHN0cnVjdCByZWYpOiBOZXcgZmllbGQgImRhdGEiLgoJKERGX1JFRl9EQVRBKTogTmV3IGFjY2Vzc29yIG1hY3JvLgoJKHN0cnVjdCBkZik6IEZpZWxkICJkb20iIHJlbW92ZWQuCgkoZGZfYW5hbHl6ZV9zdWJjZmcpOiBOZXcgZnVuY3Rpb24uCgkodHJhbnNmZXJfZnVuY3Rpb25fc2JpdG1hcCwgdHJhbnNmZXJfZnVuY3Rpb25fYml0bWFwKTogUmVwbGFjZWQgYnkgLi4uCgkodHJhbnNmZXJfZnVuY3Rpb24pOiAuLi4gbmV3IHR5cGUuCgkoaXRlcmF0aXZlX2RhdGFmbG93X3NiaXRtYXAsIGl0ZXJhdGl2ZV9kYXRhZmxvd19iaXRtYXApOiBSZXBsYWNlZCBieSAuLi4KCShpdGVyYXRpdmVfZGF0YWZsb3cpOiAuLi4gbmV3IGZ1bmN0aW9uLgoJKGVudW0gc2V0X3JlcHJlc2VudGF0aW9uLCBzdHJ1Y3QgZGF0YWZsb3cpOiBOZXcuCgkqIGRmLmM6IERvIG5vdCBpbmNsdWRlIGZpYmhlYXAuaC4KCgkoZGZfcmVnX2RlZl9jaGFpbl9jbGVhbiwgZGZfcmVnX3VzZV9jaGFpbl9jbGVhbiwKCShkZl9iYl90YWJsZV9yZWFsbG9jLCBkZl9hbmFseXNlX3N1YmNmZywgZnJlZV9yZWdfcmVmX2NoYWluLAoJcHJ1bmVfdG9fc3ViY2ZnLCBkZl9iYl9tb2RpZnkpOiBOZXcgZnVuY3Rpb25zLgoJKGRmX2JpdG1hcHNfYWxsb2MsIGRmX3JlZ19kZWZfY2hhaW5fY3JlYXRlLCBkZl9yZWdfdXNlX2NoYWluX2NyZWF0ZSwKCWRmX3JlZnNfdXBkYXRlLCBkZl9yZWdfdGFibGVfcmVhbGxvYywgZGZfcmVmX2NyZWF0ZSwKCWRmX2JiX3JlZ19kZWZfY2hhaW5fY3JlYXRlLCBkZl9iYl9yZWdfdXNlX2NoYWluX2NyZWF0ZSwKCWRmX2JiX3JkX2xvY2FsX2NvbXB1dGUsIGRmX2JiX3J1X2xvY2FsX2NvbXB1dGUsIGRmX2JiX2xyX2xvY2FsX2NvbXB1dGUsCglkZl9hbmFseXNlXzEsIGRmX2luc25fbW9kaWZ5KTogU3VwcG9ydCBhbmFseXNpbmcgb25seSBhIHBhcnQgb2YgdGhlIGNmZy4KCgkoZGF0YWZsb3dfc2V0X2Ffb3BfYiwgZGF0YWZsb3dfc2V0X2NvcHkpOiBOZXcgZnVuY3Rpb25zLgoJKGRmX3JkX3RyYW5zZmVyX2Z1bmN0aW9uLCBkZl9ydV90cmFuc2Zlcl9mdW5jdGlvbiwKCWRmX2xyX3RyYW5zZmVyX2Z1bmN0aW9uKTogVHlwZSBvZiBiaXRtYXBzIGNoYW5nZWQgdG8gdm9pZCAqLgoJKGh5YnJpZF9zZWFyY2hfYml0bWFwLCBoeWJyaWRfc2VhcmNoX3NiaXRtYXApOiBNZXJnZSBpbnRvIC4uLgoJKGh5YnJpZF9zZWFyY2gpOiAuLi4gbmV3IGZ1bmN0aW9uLgoJKGl0ZXJhdGl2ZV9kYXRhZmxvd19iaXRtYXAsIGl0ZXJhdGl2ZV9kYXRhZmxvd19zYml0bWFwKTogTWVyZ2UgaW50byAuLi4KCShpdGVyYXRpdmVfZGF0YWZsb3cpOiAuLi4gbmV3IGZ1bmN0aW9uLiBBdm9pZCB1c2Ugb2YgZmliaGVhcHMgZm9yCglhIHdvcmtsaXN0LiAgRG8gbm90IHByb2Nlc3MgYmFzaWMgYmxvY2tzIHVubmVjZXNzYXJpbHkuCgoyMDA0LTA2LTEwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9hYnNfY29uc3QpOiBNYWtlIGV4dGVybi4KCSogdHJlZS5oIChmb2xkX2Fic19jb25zdCk6IFByb3RvdHlwZSBoZXJlLgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fZmFicyk6IE5ldyBmdW5jdGlvbiB0byB0cmFuc2Zvcm0KCWZhYnMsIGZhYnNmIGFuZCBmYWJzbCBidWlsdGlucyBpbnRvIEFCU19FWFBSIHRyZWUgbm9kZXMuCgkoZm9sZF9idWlsdGluX2Ficyk6IE5ldyBmdW5jdGlvbiB0byB0cmFuc2Zvcm0gYWJzLCBsYWJzLCBsbGFicwoJYW5kIGltYXhhYnMgYnVpbHRpbnMgaW50byBBQlNfRVhQUiB0cmVlIG5vZGVzLgoJKGV4cGFuZF9idWlsdGluKTogRmFsbCBiYWNrIHRvIGEgZnVuY3Rpb24gY2FsbCBmb3IgYWJzLCBsYWJzLAoJbGxhYnMgYW5kIGltYXhhYnMgYnVpbHRpbnMgdGhhdCBzdXJ2aXZlIGNvbnN0YW50IGZvbGRpbmcuCgkoZm9sZF9idWlsdGluXzEpOiBDYWxsIGZvbGRfYnVpbHRpbl9mYWJzIGZvciBGQUJTLCBGQUJTRiBhbmQKCUZBQlNMLCBhbmQgZm9sZF9idWlsdGluX2FicyBmb3IgQUJTLCBMQUJTLCBMTEFCUyBhbmQgSU1BWEFCUy4KCjIwMDQtMDYtMTAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYyAodXdfZnJhbWVfc3RhdGVfZm9yKTogRG9uJ3QgYXNzdW1lIGEKCWxlYWYgZnVuY3Rpb24gd2l0aG91dCB1bndpbmQgaW5mbyBhdCBSUCAwLgoKMjAwNC0wNi0xMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzE0NzkxCgkqIHRyZWUuaCAoZW51bSB0cmVlX2luZGV4KTogQWRkIFRJX0ZJTEVQVFJfVFlQRS4KCShmaWxlcHRyX3R5cGVfbm9kZSk6IERlZmluZS4KCSogdHJlZS5jIChidWlsZF9jb21tb25fdHJlZV9ub2Rlc18yKTogSW5pdGlhbGl6ZQoJZmlsZXB0cl90eXBlX25vZGUgdG8gcHRyX3R5cGVfbm9kZS4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRm9yIEMrKywgbWFrZQoJZmlsZXB0cl90eXBlX25vZGUgYSBkaXN0aW5jdCB0eXBlIGNvcHkuCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChCVF9GSUxFUFRSLCBCVF9GTl9JTlRfQ09OU1RfU1RSSU5HX0ZJTEVQVFIsCglCVF9GTl9JTlRfSU5UX0ZJTEVQVFIsIEJUX0ZOX0lOVF9GSUxFUFRSX0NPTlNUX1NUUklOR19WQUxJU1RfQVJHLAoJQlRfRk5fU0laRV9DT05TVF9QVFJfU0laRV9TSVpFX0ZJTEVQVFIsCglCVF9GTl9JTlRfRklMRVBUUl9DT05TVF9TVFJJTkdfVkFSKTogQWRkLgoJKEJUX0ZOX0lOVF9DT05TVF9TVFJJTkdfUFRSLCBCVF9GTl9JTlRfSU5UX1BUUiwKCUJUX0ZOX1NJWkVfQ09OU1RfUFRSX1NJWkVfU0laRV9QVFIsIEJUX0ZOX0lOVF9QVFJfQ09OU1RfU1RSSU5HX1ZBUiwKCUJUX0ZOX0lOVF9QVFJfQ09OU1RfU1RSSU5HX1ZBTElTVF9BUkcpOiBSZW1vdmUuCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fRlBSSU5URiwgQlVJTFRfSU5fRlBSSU5URl9VTkxPQ0tFRCwKCUJVSUxUX0lOX0ZQVVRDLCBCVUlMVF9JTl9GUFVUQ19VTkxPQ0tFRCwgQlVJTFRfSU5fRlBVVFMsCglCVUlMVF9JTl9GUFVUU19VTkxPQ0tFRCwgQlVJTFRfSU5fRlNDQU5GLCBCVUlMVF9JTl9GV1JJVEUsCglCVUlMVF9JTl9GV1JJVEVfVU5MT0NLRUQsIEJVSUxUX0lOX1ZGUFJJTlRGLCBCVUlMVF9JTl9WRlNDQU5GKTogVXNlCgl0aGUgYWJvdmUgKkZJTEVQVFIqIHR5cGVzIGluc3RlYWQgb2YgKlBUUiouCgoyMDA0LTA2LTA5ICBEYW5pZWwgQmVybGluIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EuYyAodmVyaWZ5X3NzYSk6IFZlcmlmeSB0aGF0IHZkZWZzL21ha2VzX2FsaWFzZWRfc3RvcmVzCgltYXRjaC4KCjIwMDQtMDYtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX25vdF9jb25zdCk6IE5ldyBmdW5jdGlvbi4KCShmb2xkKSA8QUJTX0VYUFI+OiBEb24ndCBib3RoZXIgdGVzdGluZyB3aW5zLgoJKGZvbGQpIDxCSVRfTk9UX0VYUFI+OiBDYWxsIGZvbGRfbm90X2NvbnN0LgoJKG5vbmRlc3RydWN0aXZlX2ZvbGRfdW5hcnlfdG9fY29uc3RhbnQpIDxCSVRfTk9UX0VYUFI+OiBMaWtld2lzZS4KCjIwMDQtMDYtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNTIyOAoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBBbHdheXMgc2V0X21lbV9hbGlnbiB3aXRoIHRoZSBjb21wdXRlZAoJRlVOQ1RJT05fQVJHX0JPVU5EQVJZLiAgRG9uJ3QgY2xlYXIgc3RhY2tfcGFybSBpZiAhU1RSSUNUX0FMSUdOTUVOVC4KCjIwMDQtMDYtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgb3B0LzE1MTA4CgkqIHRyZWUtdGFpbGNhbGwuYyAoZmluZF90YWlsX2NhbGxzKTogRG9uJ3QgY2hlY2sgZWFybHkgZm9yCgl0YWlsX3JlY3Vyc2lvbiBmYWlsdXJlLgoKMjAwNC0wNi0wOSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJTW92ZSBTU0FfTkFNRSBhbm5vdGF0aW9ucyBpbnRvIHRyZWVfc3NhX25hbWUuCgoJKiB0cmVlLWRmYS5jIChjcmVhdGVfc3NhX25hbWVfYW5uKTogUmVtb3ZlLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKHNzYV9uYW1lX2FubiwgZ2V0X3NzYV9uYW1lX2Fubik6IFJlbW92ZS4KCSogdHJlZS1mbG93LmggKGVudW0gdHJlZV9hbm5fdHlwZSk6IFJlbW92ZSBTU0FfTkFNRV9BTk4uCgkoc3RydWN0IHNzYV9uYW1lX2Fubl9kKTogUmVtb3ZlLgoJKHVuaW9uIHRyZWVfYW5uX2QpOiBVcGRhdGUuCgkoc3NhX25hbWVfYW5uX3QpOiBSZW1vdmUuCgkqIHRyZWUtc3NhLWFsaWFzLmM6IChnZXRfcHRyX2luZm8pOiBOZXcgbG9jYWwgZnVuY3Rpb24uCglSZXBsYWNlIHJlZmVyZW5jZXMgdG8gc3NhX25hbWVfYW5uX3Qgd2l0aCBzdHJ1Y3QgcHRyX2luZm9fZGVmLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiB0cmVlLmggKFNTQV9OQU1FX1BUUl9JTkZPKTogRGVmaW5lLgoJKHN0cnVjdCBwdHJfaW5mb19kZWYpOiBEZWNsYXJlLgoJKHN0cnVjdCB0cmVlX3NzYV9uYW1lKTogQWRkIGZpZWxkICdwdHJfaW5mbycuCgoyMDA0LTA2LTA5ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvd2lubnQuYyAoaTM4Nl9wZV9vdXRwdXRfbGFiZWxyZWYpOiBDb3JyZWN0CgltaXNwbGFjZWQgJyknLgoKMjAwNC0wNi0wOSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY29uZmlnL2kzODYvazYubWQ6IFJld3JpdGUgdXNpbmcgdGhlIERGQSBtb2RlbC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2FkanVzdF9jb3N0KTogRG9uJ3QgaW5jcmVhc2UgdGhlCgljb3N0IG9mIGxvYWQtb3BlcmF0aW9uIGluc25zIGZvciB0aGUgSzYuCgkoaWEzMl91c2VfZGZhX3BpcGVsaW5lX2ludGVyZmFjZSk6IEFkZCBUQVJHRVRfSzYuCgkoaWEzMl9tdWx0aXBhc3NfZGZhX2xvb2thaGVhZCk6IExpa2V3aXNlLgoKMjAwNC0wNi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9naW1wbGlmeV92YV9hcmdfMSwKCWFscGhhX2dpbXBsaWZ5X3ZhX2FyZywgVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogTmV3LgoKMjAwNC0wNi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGV4cG1lZC5jIChlbWl0X3N0b3JlX2ZsYWcpOiBDb3BlIHdpdGggRkxPQVRfU1RPUkVfRkxBR19WQUxVRS4KCjIwMDQtMDYtMDkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogTWFrZWZpbGUuaW4gKENQUExJQl9IKTogUHV0IGZpbGVzIGluIG9yZGVyIG9mIGluY2x1c2lvbi4KCShDUFBfSURfREFUQV9IKTogTmV3LgoJKGd0eXBlLWRlc2Mubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkoR1RGSUxFUyk6IFVzZSBDUFBfSURfREFUQV9ILgoKMjAwNC0wNi0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglSZXZlcnQ6CglQUiBjKysvMTU4MTUKCTIwMDQtMDYtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgkqIGRvYy9leHRlbmQudGV4aTogRGVwcmVjYXRlICNwcmFnbWEgaW50ZXJmYWNlIGFuZCAjcHJhZ21hCglpbXBsZW1lbnRhdGlvbi4KCjIwMDQtMDYtMDkgIERhdmlkIFMuIE1pbGxlciAgPGRhdmVtQG51dHMuZGF2ZW1sb2Z0Lm5ldD4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChNT1ZFX1JBVElPKTogTmV3IGRlZmluaXRpb24uCgoyMDA0LTA2LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGVkZ2VfZGVmKTogQWRkIGdvdG9fbG9jdXMuCgkqIHRyZWUtY2ZnLmMgKG1ha2VfZ290b19leHByX2VkZ2VzKTogU2V0IGl0LgoJKGRpc2JhbmRfaW1wbGljaXRfZWRnZXMpOiBVc2UgaXQuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfaW1wbGljaXRfZWRnZXMpOiBQcmludCBpdC4KCjIwMDQtMDYtMDggIEFuaWwgUGFyYW5qcGUgPGFuaWxwMUBrcGl0Y3VtbWlucy5jb20+CgoJKiBoODMwMC5tZCAobGRtX2g4MzAwc180KTogRml4IGNvbmRpdGlvbiBmb3IgZXhwYW5kZXIuCgoyMDA0LTA2LTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglHaW1wbGlmeSBWQV9BUkdfRVhQUiBpbnRvIHNpbXBsZXIgZm9ybXMuCgkqIHRhcmdldC5oOiBBZGQgZ2ltcGxpZnlfdmFfYXJnX2V4cHIgaG9vay4KCSogdGFyZ2V0LWRlZi5oOiBBZGQgVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSLgoJKiBmb2xkLWNvbnN0LmMgKGJ1aWxkX2ZvbGRfYWRkcl9leHByKQoJKGJ1aWxkX2ZvbGRfYWRkcl9leHByX3dpdGhfdHlwZSk6IE1vdmUgZnJvbSBnaW1wbGlmeS5jLgoJKiB0cmVlLmg6IERlY2xhcmUgdGhlbS4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfYW5kX2FkZCk6IE5ldyBmbi4KCShidWlsZF9hZGRyX2V4cHIsIGJ1aWxkX2FkZHJfZXhwcl93aXRoX3R5cGUpOiBNb3ZlIHRvIGZvbGQtY29uc3QuYy4KCShnaW1wbGlmeV9hcnJheV9yZWZfdG9fcGx1cywgZ2ltcGxpZnlfbW9kaWZ5X2V4cHIpCgkoZ2ltcGxpZnlfZXhwcik6IFVzZSBidWlsZF9mb2xkXyouCgkoY29weV9pZl9zaGFyZWRfcik6IE9ubHkgbWFyayBWQV9BUkdfRVhQUiB2b2xhdGlsZSBpZiB3ZQoJZG9uJ3Qga25vdyBob3cgdG8gZ2ltcGxpZnkgaXQuCgkqIGJ1aWx0aW5zLmMgKHN0ZF9naW1wbGlmeV92YV9hcmdfZXhwcik6IE5ldyBmbi4KCShkdW1teV9vYmplY3QpOiBOZXcgc3RhdGljIGZuLgoJKGdpbXBsaWZ5X3ZhX2FyZ19leHByKTogTmV3IGZuLgoJKHN0YWJpbGl6ZV92YV9saXN0KTogVXNlIGJ1aWxkX2ZvbGRfKi4KCSogdHJlZS1naW1wbGUuaDogRGVjbGFyZSBuZXcgZm5zLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKFRBUkdFVF9HSU1QTElGWV9WQV9BUkdfRVhQUik6IERlZmluZS4KCShpeDg2X2dpbXBsaWZ5X3ZhX2FyZyk6IE5ldyBmbi4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChUQVJHRVRfR0lNUExJRllfVkFfQVJHX0VYUFIpOiBEZWZpbmUuCgkoaWE2NF9naW1wbGlmeV92YV9hcmcpOiBOZXcgZm4uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9naW1wbGlmeV92YV9hcmcpOiBOZXcgZm4uCgkoVEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSKTogRGVmaW5lLgoJKiBhbGlhcy5jIChnZXRfdmFyYXJnc19hbGlhc19zZXQpOiBKdXN0IHJldHVybiAwIGZvciBub3cuCgoJKiBjLW9iamMtY29tbW9uLmMgKGNfdHJlZV9wcmludGVyKTogSW1wcm92ZSBoYW5kbGluZyBvZiAlVC4KCjIwMDQtMDYtMDkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogdHJlZS1jb21wbGV4LmMgKGV4cGFuZF9jb21wbGV4X2NvbXBhcmlzb24pOiBVc2UgZm9sZF9jb252ZXJ0IGluc3RlYWQKCW9mIGNvbnZlcnQuCgkqIHRyZWUtaW5saW5lLmMgKHNldHVwX29uZV9wYXJhbWV0ZXIpOiBMaWtld2lzZS4KCSogdHJlZS1zcmEuYyAoY3NjX2J1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY2NwLmMgKGNjcF9mb2xkKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWNvcHkuYyAoY3Byb3Bfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kb20uYyAoc2ltcGxpZnlfcmhzX2FuZF9sb29rdXBfYXZhaWxfZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLXRhaWxjYWxsLmMgKHRyZWVfb3B0aW1pemVfdGFpbF9jYWxsc18xKTogTGlrZXdpc2UuCgoyMDA0LTA2LTA5ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE1NTIxOgoJKiBzY2hlZC1pbnQuaCAoaW5fcG9zdF9jYWxsX2dyb3VwX3ApOiBDaGFuZ2UgdHlwZSB0byBlbnVtLgoJKiBzY2hlZC1kZXBzLmMgKHNjaGVkX2FuYWx5emVfaW5zbik6Cgkoc2NoZWRfYW5hbHl6ZSk6IFdoZW4gaW5fcG9zdF9jYWxsX2dyb3VwX3AgaXMgcG9zdF9jYWxsX2luaXRpYWwsCglkb24ndCBhZGQgYSBkZXBlbmRlbmN5LCBidXQgc3RpbGwgc2V0IFNDSEVEX0dST1VQX1AgYW5kIENBTlRfTU9WRSwKCWFuZCBhbHNvIHJlc2V0IGluX3Bvc3RfY2FsbF9ncm91cF9wIHRvIHBvc3RfY2FsbC4KCShzY2hlZF9hbmFseXplKTogV2hlbiB0aGUgcHJldmlvdXMgYmFzaWMgYmxvY2sgZW5kZWQgaW4gYSBDQUxMX0lOU04sCglpbml0aWFsaXplIGluX3Bvc3RfY2FsbF9ncm91cF9wIGFzIHBvc3RfY2FsbF9pbml0aWFsLgoJKGluaXRfZGVwcyk6IGluaXRpYWxpemUgaW5fcG9zdF9jYWxsX2dyb3VwX3AgdG8gbm90X3Bvc3RfY2FsbC4KCjIwMDQtMDYtMDkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS82NjM3CgkqIGRvYy9pbnN0YWxsLnRleGk6IExpc3QgYWRhLCBsaWJhZGEgYXMgb3B0aW9ucyB0byAtLWVuYWJsZS1zaGFyZWQKCjIwMDQtMDYtMDkgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBhY2xvY2FsLm00IChnY2NfQUNfUFJPR19MTik6IFJlbW92ZS4KCShnY2NfQUNfQ0hFQ0tfREVDTFMpOiBVc2UgQUhfVEVNUExBVEUgdG8gZ2VuZXJhdGUKCWNvbmZpZy5pbiBlbnRyaWVzLgoJKiBjb25maWd1cmUuYWM6IENhbGwgQUNYX1BST0dfTE4sIGZhbGxpbmcgYmFjayB0byAkTE5fUwoJaWYgaGFyZCBsaW5rcyBhcmUgbm90IGF2YWlsYWJsZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoyMDA0LTA2LTA4ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogTmV3IC0tZW5hYmxlLW1hcHBlZC1sb2NhdGlvbiBzZXRzIFVTRV9NQVBQRURfTE9DQVRJT04uCgoyMDA0LTA2LTA4ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdG9wbGV2LmMgKGZsb29yX2xvZzJfd2lkZSk6IENvcnJlY3QgY2FzdHMgZm9yIDY0LWJpdCBob3N0cy4KCUNvcnJlY3QgZm9ybWF0dGluZy4KCjIwMDQtMDYtMDggIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCglQUiB0YXJnZXQvMTU3OTAKCSogY29uZmlnL2kzODYvaTM4Ni1jb2ZmLmggKEFTTV9PVVRQVVRfQUxJR04pOiBEZWZpbmUuCgoyMDA0LTA2LTA4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jb252ZXJ0KTogVHJlYXQgT0ZGU0VUX1RZUEUgbGlrZQoJUE9JTlRFUl9UWVBFIGFuZCBJTlRFR0VSX1RZUEUuCgoyMDA0LTA2LTA4ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBtb2R1bG8tc2NoZWQuYzogQ29tcGlsZSBvbmx5IHdoZW4gSU5TTl9TQ0hFRFVMSU5HIGlzCglkZWZpbmVkLgoKMjAwNC0wNi0wOCAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGRvYy9jb250cmliLnRleGk6IEFkZCBlbnRyaWVzIGZvciBTdGVmYW4gT2xzc29uIGFuZAoJT2xhIFJvbm5lcnVwLgoKMjAwNC0wNi0wOCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiB0b3BsZXYuYyAoZmxvb3JfbG9nMl93aWRlKTogUmVwbGFjZSBsb29wIHdpdGggZmFzdGVyIGJpdAoJb3BlcmF0aW9ucy4KCShleGFjdF9sb2cyX3dpZGUpOiBEZWZpbmUgaW4gdGVybXMgb2YgdGhlIGFib3ZlLgoJKiB0b3BsZXYuaCAoZmxvb3JfbG9nMik6IFVzZSBfYnVpbHRpbl9jbHogZmFtaWx5IG9mIGJ1aWx0aW5zIGlmCglhdmFpbGFibGUuCgoyMDA0LTA2LTA4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHByaW50X29wZXJhbmQsIDxjYXNlICd6Jz4pOgoJTWFrZSBzdXJlIHRoYXQgd2UgYXJlIGluIElORElSRUNUIG1vZGUgd2hlbiBnZXR0aW5nIHRoZQoJc3R1YiBuYW1lLgoKMjAwNC0wNi0wOCAgQW5pbCBQYXJhbmpwZSA8YW5pbHAxQGtwaXRjdW1taW5zLmNvbT4KCgkqIGg4MzAwLm1kIChleHRlbmRxaXNpMl9oODMwMCk6IEFkZCBjb25zdHJhaW50cy4KCShsZG1faDgzMDBzXzRfbm9ybWFsKTogRml4IHR5cG8uCgoyMDA0LTA2LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZ2ltcGxlLWxvdy5jIChzdHJ1Y3QgbG93ZXJfZGF0YSk6IFJlcGxhY2UgdGhlX3JldHVybl9sYWJlbCBhbmQKCW9uZV9yZXR1cm5fc3RtdCB3aXRoIHJldHVybl9zdGF0ZW1lbnRzLgoJKGxvd2VyX2Z1bmN0aW9uX2JvZHkpOiBQcm9jZXNzIHRoZSBlbnRpcmUgbGlzdCBvZiByZXR1cm5fc3RhdGVtZW50cy4KCShsb3dlcl9yZXR1cm5fZXhwcik6IENoZWNrIHNvdXJjZSB2YWx1ZSBiZWZvcmUgdW5pZnlpbmcgcmV0dXJuX2V4cHJzLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9yZXR1cm5fZXhwcik6IEZvcmNlIHRoZSB1c2Ugb2YgYSB0ZW1wb3JhcnkKCWZvciAhYWdncmVnYXRlX3ZhbHVlX3AuCgkqIHRyZWUtZ2ltcGxlLmM6IFVwZGF0ZSBSRVRVUk5fRVhQUiBncmFtbWVyLgoKMjAwNC0wNi0wOCAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE1NTk4CgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoYnVuZGxpbmcpOiBBZGQgbWlzc2VkIFRZUEVfQS4KCjIwMDQtMDYtMDggIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE1NzE3CgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobGVnaXRpbWF0ZV9jb25zdGFudF9wKTogRG8gbm90IGFsbG93Cgl4IC0gc3ltYm9sX3JlZi4KCjIwMDQtMDYtMDggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZ2ltcGxpZnkuYyAoY29weV9pZl9zaGFyZWRfcik6IFJldmVydDoKCTIwMDQtMDUtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgkqIGdpbXBsaWZ5LmMgWy4uLl0gRG9uJ3QgbWFyayBWQV9BUkdfRVhQUnMgdm9sYXRpbGUgaGVyZS4KCjIwMDQtMDYtMDcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwbWVkLmMgKGFkZF9jb3N0LCBuZWdfY29zdCwgc2Rpdl9wb3cyX2NoZWFwLCBzbW9kX3BvdzJfY2hlYXApOgoJTWFrZSBhcnJheXMgaW5kZXhlZCBieSBtYWNoaW5lIG1vZGUuICBSZW5hbWUgbmVnYXRlX2Nvc3QgdG8gbmVnX2Nvc3QuCgkoaW5pdF9leHBtZWQpOiBJbml0aWFsaXplIHRoZXNlIGNvc3QgYXJyYXlzIGFzIGFwcHJvcHJpYXRlLgoJKHN0b3JlX2JpdF9maWVsZCwgZXh0cmFjdF9iaXRfZmllbGQpOiBDb3JyZWN0IHdoaXRlc3BhY2UuCgkoc3ludGhfbXVsdCwgY2hvb3NlX211bHRfdmFyaWFudCwgZXhwYW5kX211bHQsIGV4cGFuZF9tdWx0X2hpZ2hwYXJ0LAoJZXhwYW5kX211bHRfaGlnaHBhcnRfb3B0YWIsIGV4cGFuZF9kaXZtb2QpOiBVcGRhdGUgdXNlcyBvZiBhZGRfY29zdCwKCW5lZ19jb3N0LCBzZGl2X3BvdzJfY2hlYXAsIHNtb2RfcG93Ml9jaGVhcCB0byBpbmRleCB3aXRoIG1vZGUsCgl3b3JkX21vZGUgb3IgY29tcHV0ZV9tb2RlIGFzIGFwcHJvcHJpYXRlLgoKMjAwNC0wNi0wNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTU3ODMKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGZ1bmN0aW9uX2FyZ191bmlvbl92YWx1ZSk6IEFkZCAnbW9kZScKCXBhcmFtZXRlci4gIEVudW1lcmF0ZSB0aGUgcmVnaXN0ZXJzIGluc2lkZSB0aGUgUEFSQUxMRUwuCgkoZnVuY3Rpb25fYXJnKTogQWRqdXN0IGNhbGwgdG8gZnVuY3Rpb25fYXJnX3VuaW9uX3ZhbHVlLgoJKGZ1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuCgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfZnVuY3Rpb25fZXBpbG9ndWUpOiBQcm9wZXJseSBmb3JtYXQuCgoyMDA0LTA2LTA3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHJlYWwuYyAocmVhbF9jb3B5c2lnbik6IE5ldyBmdW5jdGlvbiB0byBpbXBsZW1lbnQgbGlibSdzIGNvcHlzaWduLgoJKiByZWFsLmggKHJlYWxfY29weXNpZ24pOiBQcm90b3R5cGUgaGVyZS4KCSogZm9sZC1jb25zdC5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IFRoZSByZXN1bHQgb2Ygc3FydCwgc3FydGYKCWFuZCBzcXJ0bCBjYW4gYmUgbmVnYXRpdmUsIGFzIHNxcnQoLTAuMCkgPSAtMC4wLiAgQ29ycmVjdCB3aGl0ZXNwYWNlLgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5faXNhc2NpaSwgZm9sZF9idWlsdGluX3RvYXNjaWksCglmb2xkX2J1aWx0aW5faXNkaWdpdCk6IEFkZCBmdW5jdGlvbiBwcm90b3R5cGVzLgoJKGZvbGRfYnVpbHRpbl9jb3B5c2lnbik6IE5ldyBmdW5jdGlvbiB0byBmb2xkIGNvcHlzaWduLCBjb3B5c2lnbmYKCWFuZCBjb3B5c2lnbmwuICBPcHRpbWl6ZSBjb3B5c2lnbih4LHgpIGFzIHguICBFdmFsdWF0ZSBjb3B5c2lnbiBvZgoJY29uc3RhbnQgYXJndW1lbnRzIGF0IGNvbXBpbGUtdGltZSB1c2luZyByZWFsX2NvcHlzaWduLiAgRm9sZAoJY29weXNpZ24oWCxZKSBhcyBmYWJzKFgpIGlmIFkgaXMgYWx3YXlzIG5vbi1uZWdhdGl2ZS4KCShmb2xkX2J1aWx0aW5fMSk6IENvcnJlY3QgbWlub3Igd2hpdGVzcGFjZS9zdHlsZSBpc3N1ZXMuICBDYWxsCglmb2xkX2J1aWx0aW5fY29weXNpZ24gZm9yIEJVSUxUX0lOX0NPUFlTSUdOeyxGLEx9LgoKMjAwNC0wNi0wNyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiB0cmVlLmMgKGl0ZXJhdGl2ZV9oYXNoX2V4cHIpOiBVc2UgcmVhbF9oYXNoLgoKMjAwNC0wNi0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xNDc2NQoJKiBjLXBhcnNlLmluIChjb21wc3RtdF9wcmltYXJ5X3N0YXJ0KTogU2V0IGxhc3RfZXhwcl90eXBlIHRvCglOVUxMX1RSRUUuCgoyMDA0LTA2LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xNTgxNQoJKiBkb2MvZXh0ZW5kLnRleGk6IERlcHJlY2F0ZSAjcHJhZ21hIGludGVyZmFjZSBhbmQgI3ByYWdtYQoJaW1wbGVtZW50YXRpb24uCgoyMDA0LTA2LTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzE1NjY2CgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbCk6IFVzZSBjaGFuZ2VfZGVjbF9hc3NlbWJsZXJfbmFtZSBmb3IgdGhlCglidWlsdGluIGRlY2wgYXMgd2VsbC4KCjIwMDQtMDYtMDcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGMvMTQ2NDkKCSogYy10eXBlY2suYyAocmVxdWlyZV9jb25zdGFudF92YWx1ZSwgcmVxdWlyZV9jb25zdGFudF9lbGVtZW50cyk6CglNb3ZlIGRlY2xhcmF0aW9ucyB0byB0aGUgdG9wIG9mIHRoZSBmaWxlLgoJKGJ1aWxkX2Z1bmN0aW9uX2NhbGwpOiBJZiB3ZSByZXF1aXJlIGEgY29uc3RhbnQgdmFsdWUsIGZvbGQgd2l0aAoJZm9sZF9pbml0aWFsaXplci4gIElmIHRoZSByZXN1bHQgaXMgYSBjb25zdGFudCwgYW5kIHRoZSBmdW5jdGlvbgoJd2Fzbid0IGNhbGxlZCB1c2luZyBfX2J1aWx0aW5fZm9vLCBpc3N1ZSBhIHBlZGFudGljIHdhcm5pbmcuCgkoYnVpbGRfdW5hcnlfb3ApOiBJZiB3ZSByZXF1aXJlIGEgY29uc3RhbnQgdmFsdWUsIGZvbGQgdHJlZSB3aXRoCglmb2xkX2luaXRpYWxpemVyLgoJKGJ1aWxkX2JpbmFyeV9vcCk6IFVzZSByZXF1aXJlX2NvbnN0YW50X3ZhbHVlIHRvIGRldGVybWluZSB3aGV0aGVyCgl0byBjYWxsIGZvbGQgb3IgZm9sZF9pbml0aWFsaXplci4KCjIwMDQtMDYtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnaW1wbGUtbG93LmMgKHN0cnVjdCBsb3dlcl9kYXRhKTogQWRkIHRoZV9yZXR1cm5fbGFiZWwgYW5kCglvbmVfcmV0dXJuX3N0bXQuCgkobG93ZXJfZnVuY3Rpb25fYm9keSk6IEluaXRpYWxpemUgYW5kIHVzZSB0aGVtLgoJKGxvd2VyX3JldHVybl9leHByKTogTmV3LgoJKGxvd2VyX3N0bXQpOiBDYWxsIGl0LgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9yZXR1cm5fZXhwcik6IEZvcmNlIHRoZSBhcmd1bWVudCB0byBiZSBlaXRoZXIKCW51bGwgb3IgYSByZXN1bHRfZGVjbC4KCSogdHJlZS1naW1wbGUuYzogVXBkYXRlIGdpbXBsZSBncmFtbWVyIHRvIG1hdGNoLgoJKiB0cmVlLXNzYS1jb3B5cmVuYW1lLmMgKGNvcHlfcmVuYW1lX3BhcnRpdGlvbl9jb2FsZXNjZSk6IERlbnkKCWNvYWxlc2Npbmcgb2YgcmVzdWx0X2RlY2xzLgoKMjAwNC0wNi0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBydGwtb3B0LzE1MTkzCgkqIGV4cG1lZC5jIChleHRyYWN0X2JpdF9maWVsZCk6IEZpeCB2ZWN0b3JfZXh0cmFjdCByZXR1cm4uCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChuZWd2NHNmMik6IE5ldyBwYXR0ZXJuLgoKMjAwNC0wNi0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTUzMzcKCSogYy1jb21tb24uYyAoY19zaXplb2Zfb3JfYWxpZ25vZl90eXBlKTogVXNlIG1vcmUgZGV0YWlsZWQgZXJyb3IKCW1lc3NhZ2UuCgoyMDA0LTA2LTA2ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwNC0wNi0wNiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogdHJlZS1jZmcuYyAodHJlZV92ZXJpZnlfZmxvd19pbmZvKTogTWFrZSBzdXJlIHRoYXQgbGFiZWxzIGluCglTV0lUQ0hfTEFCRUxTIGFyZSBhbHdheXMgc29ydGVkLgoKMjAwNC0wNi0wNiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogaG9va3MuYyAoaG9va19pbnRfdm9pZF8xKTogTmV3IGdlbmVyaWMgaG9vay4KCSogaG9va3MuaCAoaG9va19pbnRfdm9pZF8xKTogQWRkIHByb3RvdHlwZS4KCSogY29uZmlnL2M0eC9jNHguYyAoVEFSR0VUX1NDSEVEX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKToKCURlZmluZSB0byBob29rX2ludF92b2lkXzEuCgkqIGNvbmZpZy9jNHgvYzR4Lm1kOiBSZXBsYWNlIGR1bW1pZXMgZm9yIHRoZSBvbGQgcGlwZWxpbmUgbW9kZWwKCXdpdGggZHVtbWllcyBmb3IgdGhlIG5ldyBvbmUuCgoyMDA0LTA2LTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHRyZWUuaCAobHZhbHVlX29yX2Vsc2UpOiBEZWxldGUgZnVuY3Rpb24gcHJvdG90eXBlLgoJKiBjLXR5cGVjay5jIChsdmFsdWVfb3JfZWxzZSk6IE1ha2Ugc3RhdGljLiAgQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoyMDA0LTA2LTA2ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCglQUiB0YXJnZXQvMTQ1NDIKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5tZCAobW92ZSBwZWVwaG9sZTIpOiBFbWl0IGEgdXNlIG5vdGUgdG8gYXZvaWQKCWEgbGl2ZSBjaGFuZ2Ugb2YgYSByZWdpc3RlciBhZnRlciBwZWVwaG9sZSByZXBsYWNlbWVudC4KCjIwMDQtMDYtMDYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvMTM1MTkKCSogYy10eXBlY2suYyAoY29tcG9zaXRlX3R5cGUsIGNvbW1vbl9wb2ludGVyX3R5cGUpOiBOZXcgZnVuY3Rpb25zLgoJKGNvbW1vbl90eXBlKTogU3BsaXQgcGFydHMgaW50byBjb21wb3NpdGVfdHlwZSBhbmQKCWNvbW1vbl9wb2ludGVyX3R5cGUuICBFbnN1cmUgdGhhdCBhcml0aG1ldGljIG9wZXJhdGlvbnMgcmV0dXJuCgl1bnF1YWxpZmllZCB0eXBlcyB3aXRob3V0IGF0dHJpYnV0ZXMuICBEb24ndCBtYWtlIGNvbXBvc2l0ZSB0eXBlCglvZiBzaWduZWQgZW51bSBhbmQgY29tcGF0aWJsZSBpbnRlZ2VyIGJlIHVuc2lnbmVkLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIsIGJ1aWxkX2JpbmFyeV9vcCk6IFVzZQoJY29tbW9uX3BvaW50ZXJfdHlwZS4KCSogYy1kZWNsLmMgKG1lcmdlX2RlY2xzKTogVXNlIGNvbXBvc2l0ZV90eXBlLgoJKiBjLXRyZWUuaCAoY29tcG9zaXRlX3R5cGUpOiBEZWNsYXJlLgoKMjAwNC0wNi0wNiAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJUFIgdGFyZ2V0LzE0NDU3CgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAoc3BsaXRhYmxlX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLXByb3Rvcy5oIChzcGxpdGFibGVfb3BlcmFuZCk6IERlY2xhcmUuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaCAoUFJFRElDQVRFX0NPREVTKTogUmVnaXN0ZXIgaXQuCgkoaW5oaWJpdF9saWJjKTogTXVzdCBkZWZpbmUuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEubWQgKCJtb3ZoaV9jb25zdDAiKTogVXNlIHNwbGl0YWJsZV9vcGVyYW5kLgoJKCIqYW5kaGkzX2dlbiIsICJpb3JoaTMiLCAiKmlvcmhpM19nZW4iKTogTGlrZXdpc2UuCgkoInhvcmhpMyIpOiBMaWtld2lzZS4KCjIwMDQtMDYtMDYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9kZWNpZGVfaW5saW5pbmcpOiBBZGp1c3QgZHVtcCBsaW5lcyBpbgoJYWx3YXlzX2lubGluZSBwYXNzLgoKMjAwNC0wNi0wNSAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AbnV0cy5kYXZlbWxvZnQubmV0PgoKCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogU2V0LgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChUQVJHRVRfQzk5X0ZVTkNUSU9OUyk6IExpa2V3aXNlLgoKMjAwNC0wNi0wNSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogcmVnY2xhc3MuYyAoaW5pdF9yZWdfc2V0cyk6IENoZWNrIGZvciBtaXNzaW5nIHJlZ2lzdGVycyBpbiB0YXJnZXQKCWluaXRpYWxpemVyIG1hY3JvcyBGSVhFRF9SRUdJU1RFUlMgYW5kIENBTExfVVNFRF9SRUdJU1RFUlMuCgoyMDA0LTA2LTA1ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKE1LREVQU19IKTogTmV3IHNob3J0aGFuZC4KCShjLW9wdHMubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIGMtb3B0cy5jOiBJbmNsdWRlIG1rZGVwcy5oLgoJKGhhbmRsZV9kZWZlcnJlZF9vcHRzKTogVXNlIGNwcF9nZXRfZGVwcyBhbmQgZGVwc19hZGRfdGFyZ2V0LAoJbm90IGNwcF9hZGRfZGVwZW5kZW5jeV90YXJnZXQuCgoyMDA0LTA2LTA1ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBjb25maWcvdjg1MC92ODUwLmMgKHY4NTBfdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UpOiBOZXcuCgkqIGNvbmZpZy92ODUwL3Y4NTAubWQ6IENvbnZlcnQgdG8gREZBIHNjaGVkdWxlciBkZXNjcmlwdGlvbi4KCjIwMDQtMDYtMDUgIFRvYmlhcyBTY2hsdWV0ZXIgIDx0b2JpYXMuc2NobHVldGVyQHBoeXNpay51bmktbXVlbmNoZW4uZGU+CgoJUFIgZm9ydHJhbi8xNTQ3OAoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCBHTVAgYXMgcHJlcmVxdWlzaXRlLiBEb2N1bWVudAoJLS13aXRoLWdtcCBhbmQgLS13aXRoLWdtcC1kaXIgY29uZmlndXJlIG9wdGlvbnMuCgkqIGZvcnRyYW4vZ2ZvcnRyYW4udGV4aTogUmVtb3ZlIHNlY3Rpb24gIkNvbXBpbGluZyBhbmQgdGVzdGluZyIsCglyZW1vdmUgVE9DIHJlZmVyZW5jZSB0byBpdC4KCjIwMDQtMDYtMDUgIEdyYWhhbSBTdG90dCAgPGdyYWhhbS5zdG90dEBidGludGVybmV0LmNvbT4KCgkqIGNvbWJpbmUuYyhzaW1wbGlmeV9zaGlmdF9jb25zdCk6IENoZWNrIHNoaWZ0IGFtb3VudCBpcyBhCglDT05TVF9JTlQuCgoyMDA0LTA2LTA1ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogdG9wbGV2LmMgKGluaXRfYXNtX291dHB1dCk6IEFkZCBleHBsaWNpdCAnYicgdG8gbW9kZSB3aGVuCglvcGVuaW5nIGFzbV9vdXRfZmlsZS4KCSogYy1wY2guYyAoY19jb21tb25fd3JpdGVfcGNoKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGZmbHVzaCBiZWZvcmUKCXJlYWRpbmcgYXNtX291dF9maWxlLiBSZXBsYWNlIGZmbHVzaCBhZnRlciByZWFkaW5nIGFzbV9vdXRfZmlsZQoJd2l0aCBmc2Vlay4KCSogaG9zdGhvb2tzLWRlZi5oIChIT1NUX0hPT0tTX0dUX1BDSF9BTExPQ19HUkFOVUxBUklUWSk6IERlZmluZQoJZGVmYXVsdCBhbmQgYWRkIHRvIEhPU1RfSE9PS1NfSU5JVElBTElaRVIuCgkqIGhvc3Rob29rcy5oIChndF9wY2hfYWxsb2NfZ3JhbnVsYXJpdHkpOiBEZWNsYXJlIGhvb2sgZnVuY3Rpb24uCgkqIGdnYy1jb21tb24uYyAoZGVmYXVsdF9ndF9wY2hfYWxsb2NfZ3JhbnVsYXJpdHkpOiBOZXcgZnVuY3Rpb24uCgkoZ3RfcGNoX3NhdmUpOiBVc2UgaG9zdF9ob29rcy5ndF9wY2hfYWxsb2NfZ3JhbnVsYXJpdHkKCXRvIHNldCBtbWkub2Zmc2V0IHBhZGRpbmcuCgkgKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotbWluZ3czMiopOiBTZXQgdGFyZ2V0X2d0ZmlsZXMgdG8KCSQoc3JjZGlyKS9jb25maWcvaTM4Ni93aW5udC5jLgoJKGlbMzQ1NjddODYtKi1wZSB8IGlbMzQ1NjddODYtKi1jeWd3aW4qKTogTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXV3aW4qKTogTGlrZXdpc2UuCgkqaVszNDU2N104Ni0qLWludGVyaXgzKik6IExpa2V3aXNlLgoJKiBjb25maWcuaG9zdCAoaVszNDU2N104Ni0qLW1pbmd3MzIqKTogU2V0IG91dF9ob3N0X2hvb2tfb2JqLgoJKiBjb25maWcvaTM4Ni9ob3N0LW1pbmd3MzIuYzogTmV3IGZpbGUuCgkqIGNvbmZpZy9pMzg2L3gtbWluZ3czMjogQWRkIHJ1bGUgZm9yIGhvc3QtbWluZ3czMi5vLgoJKiBjb25maWcvaTM4Ni93aW5udC5jOiAoc3RydWN0IGV4dGVybl9saXN0KSBUYWcgYXMgR1RZLgoJKGV4dGVybl9oZWFkKTogTGlrZXdpc2UuCgkoc3RydWN0IGV4cG9ydF9saXN0KSBMaWtld2lzZS4KCShleHBvcnRfaGVhZCk6IExpa2V3aXNlLgoJKGkzODZfcGVfcmVjb3JkX2V4dGVybmFsX2Z1bmN0aW9uKTogVXNlIGdnY19hbGxvYy4KCShpMzg2X3BlX3JlY29yZF9leHBvcnRlZF9zeW1ib2wpOiBMaWtld2lzZS4KCUluY2x1ZGUgImd0LXdpbm50LmgiIGF0IGVuZC4KCSogZG9jL2hvc3Rjb25maWcudGV4aTogRG9jdW1lbnQKCUhPU1RfSE9PS1NfR1RfUENIX0FMTE9DX0dSQU5VTEFSSVRZLgoKMjAwNC0wNi0wNCAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oOiBSZW1vdmUgY29tbWVudHMgY29waWVkIG92ZXIgZnJvbSB0bS50ZXhpLgoJUmVuYW1lIDY4MDAwIGFuZCA2OGsgdG8gbTY4ayBmb3IgY29uc2lzdGVuY3kgaW4gY29tbWVudHMuICBSZW1vdmUKCXRyYWlsaW5nIHdoaXRlc3BhY2UgYmVmb3JlIEVPTHMgYW5kIGJlZm9yZSBUQUJzLgoJKE1BWF9DT0RFX0FMSUdOKTogUmVtb3ZlIHVudXNlZCBtYWNyby4KCShDQUxMX1VTRURfUkVHSVNURVJTKTogUmVmb3JtYXQgYW5kIGFkZCBjb21tZW50cy4KCjIwMDQtMDYtMDQgIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQHJlZGhhdC5jb20+CgoJKiBnY2MuYyAoTUZMSUJfU1BFQyk6IFJlbW92ZSBsaWJyYXJ5IHJlZmVyZW5jZXMsIHRvIHJlcXVpcmUgdXNlcnMKCXRvIGVudW1lcmF0ZSAtbG11ZGZsYXAqIGFuZCBkZXBlbmRlbmNpZXMgd2hlbiBsaW5raW5nLgoKMjAwNC0wNi0wNCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiB0YXJnZXQvMTU4MjIKCSogZG9qdW1wLmMgKGRvX2p1bXApOiBGaXggdW5pbml0aWFsaXplZCB2YXJpYWJsZSB0Y29kZTEuCgoyMDA0LTA2LTA0ICBKZXJyeSBRdWlubiAgPGpscXVpbm5Ab3B0b25saW5lLm5ldD4KCgkqIE1ha2VmaWxlLmluIChpbnNuLWNvbmRpdGlvbnMubyk6IEJhY2sgb3V0IHJlbW92YWwgb2YgcmVsb2FkLmguCgkqIGdlbmNvbmRpdGlvbnMuYyAod3JpdGVfaGVhZGVyKTogQmFjayBvdXQgcmVtb3ZhbCBvZiByZWxvYWQuaC4KCjIwMDQtMDYtMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglSZS1hcHBseSBob3BlZnVsbHkgZml4ZWQgcGF0Y2g6CgkqIGkzODYubWQgKFVOU1BFQ1ZfRUhfUkVUVVJOKTogS2lsbC4KCShlaF9yZXR1cm4pOiBVc2UganVtcF9pbnNuLgoJKGVoX3JldHVybl9zaSwgZWhfcmV0dXJuX2RpKTogQ2hhbmdlIHBhdHRlcm4gdG8ganVtcCBpbnN0cnVjdGlvbi4KCjIwMDQtMDYtMDQgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiBjZmdydGwuYyAodHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogRml4IHJldHVybiB2YWx1ZS4KCjIwMDQtMDYtMDQgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGV4Y2VwdC5jIChmb3JfZWFjaF9laF9yZWdpb24pOiBOZXcgZnVuY3Rpb24uCgkqIGV4Y2VwdC5oIChmb3JfZWFjaF9laF9yZWdpb24pOiBBZGQgYSBwcm90b3R5cGUgZm9yIGl0LgoJKiB0cmVlLWNmZy5jICh1cGRhdGVfZWhfbGFiZWxzKTogTmV3IGZ1bmN0aW9uLCBjYWxsYmFjayBmb3IKCWZvcl9lYWNoX2VoX3JlZ2lvbi4KCShsYWJlbF9mb3JfYmIpOiBNYWtlIGdsb2JhbCBzdGF0aWMsIHVuZm9ydHVuYXRlbHkuCgkoY2xlYW51cF9kZWFkX2xhYmVscyk6IEFsc28gdXBkYXRlIGxhYmVsIHJlZmVyZW5jZXMgZm9yCglleGNlcHRpb24gcmVnaW9ucy4KCjIwMDQtMDYtMDMgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKHN0cnVjdCBpcml4X3NlY3Rpb25fYWxpZ25fZW50cnkpOiBGaXgKCUdUWSBtYXJrZXIuCgoyMDA0LTA2LTAzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHRvcGxldi5jIChjaGVja19nbG9iYWxfZGVjbGFyYXRpb25zKTogRG9uJ3QgYXNrIGZvcgoJREVDTF9BU1NFTUJMRVJfTkFNRSB1bmxlc3MgdGhlIGZ1bmN0aW9uIHJlYWxseSBpcyBkZWNsYXJlZAoJc3RhdGljIGFuZCBub3QgZGVmaW5lZC4KCjIwMDQtMDYtMDMgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCVBSIGMrKy8xNTQyOAoJKiBkZWZhdWx0LmggKFRBUkdFVF9XRUFLX05PVF9JTl9BUkNISVZFX1RPQyk6IE5ldyBuYW1lCglmb3IgVEFSR0VUX0VYUExJQ0lUX0lOU1RBTlRJQVRJT05TX09ORV9PTkxZLCB3aXRoIHJldmVyc2VkIHNlbnNlLgoJKiBjb25maWcvZGFyd2luLmggKFRBUkdFVF9XRUFLX05PVF9JTl9BUkNISVZFX1RPQyk6IExpa2V3aXNlLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1dFQUtfTk9UX0lOX0FSQ0hJVkVfVE9DKTogUmV3cml0ZQoJZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHRoZSBuZXcgbWFjcm8gbmFtZSBhbmQgdG8gY2xhcmlmeSBpdHMKCW1lYW5pbmcuCgoyMDA0LTA2LTAzICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBydGwuZGVmIChWQVJfTE9DQVRJT04pOiBNYWtlIFJUWF9FWFRSQS4KCjIwMDQtMDYtMDMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19pbmRpcmVjdF9kYXRhX3JlZmVyZW5jZSk6IENvcHkKCXRoZSBTWU1CT0xfUkVGX0RFQ0wgZnJvbSB0aGUgb3JpZ2luYWwgUlRYIGZvciB0aGUgbmV3Cglub24tbGF6eSBwb2ludGVyIFJUWC4KCjIwMDQtMDYtMDMgIE1hcmsgRy4gQWRhbXMgIDxtYXJrLmcuYWRhbXNAc3ltcGF0aWNvLmNhPgoKCSogdHJlZS5oOiBSZW1vdmUgaW5jbHVkZSBvZiB2ZXJzaW9uLmgKCSogYy1jcHBidWlsdGluLmM6IEluY2x1ZGUgdmVyc2lvbi5oCgkqIGRpYWdub3N0aWMuYzogSW5jbHVkZSB2ZXJzaW9uLmgKCSogZHdhcmYyb3V0LmM6IEluY2x1ZGUgdmVyc2lvbi5oCgkqIHRvcGxldi5jOiBJbmNsdWRlIHZlcnNpb24uaAoJKiB2bXNkYmdvdXQuYzogSW5jbHVkZSB2ZXJzaW9uLmgKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBkZXBlbmRlbmN5IG9uIHZlcnNpb24uaCBmcm9tIFRSRUVfSCwgYW5kCglhZGQgZGVwZW5kZW5jaWVzIHRvIHJlcXVpcmVkIC5vIHRhcmdldHMKCjIwMDQtMDYtMDMgIEplcnJ5IFF1aW5uICA8amxxdWlubkBvcHRvbmxpbmUubmV0PgoKCSogTWFrZWZpbGUuaW4gKFJBX0gsIFJFU09VUkNFX0gsIFNDSEVEX0lOVF9ILCBDRkdMQVlPVVRfSCwKCUNGR0xPT1BfSCwgREZfSCwgRERHX0gsIFRSRUVfU1NBX0xJVkVfSCk6IE5ldy4KCShUQVJHRVRfSCk6IEFkZCBpbnNuLW1vZGVzLmguCgkodHJlZS1zc2EubywgdHJlZS1jZmcubywgdHJlZS1zc2EtbG9vcC5vLCB0b3BsZXYubywgcGFzc2VzLm8sCglsb29wLm8sIGxvb3AtZG9sb29wLm8sIHVucm9sbC5vLCBjZmdsb29wLm8sIGNmZ2xvb3BhbmFsLm8sCglsb29wLWl2Lm8sIGNmZ2xvb3BtYW5pcC5vLCBsb29wLWluaXQubywgbG9vcC11bnN3aXRjaC5vLAoJbG9vcC11bnJvbGwubywgZGRnLm8sIG1vZHVsby1zY2hlZC5vLCBwcmVkaWN0Lm8sCgljZmdsYXlvdXQubywgaWZjdnQubyk6IFJlcGxhY2UgY2ZnbG9vcC5oIHdpdGggQ0ZHTE9PUF9ILgoJKHRvcGxldi5vLCBwYXNzZXMubywgY2ZnaG9va3MubywgY2ZnbG9vcG1hbmlwLm8sIGxvb3AtaW5pdC5vLAoJbG9vcC11bnN3aXRjaC5vLCBsb29wLXVucm9sbC5vLCBkZGcubywgbW9kdWxvLXNjaGVkLm8sCgliYi1yZW9yZGVyLm8sIHRyYWNlci5vLCBjZmdsYXlvdXQubyk6IFJlcGxhY2UgY2ZnbGF5b3V0Lmggd2l0aAoJQ0ZHTEFZT1VUX0guCgkocmEubywgcmEtYnVpbGQubywgcmEtY29sb3JpemUubywgcmEtZGVidWcubywgcmEtcmV3cml0ZS5vKToKCVJlcGxhY2UgcmEuaCB3aXRoIFJBX0guCgkocmVzb3VyY2UubywgcmVncmVuYW1lLm8sIGluc24tY29uZGl0aW9ucy5vLCBpbnNuLWVtaXQubywKCWluc24tcmVjb2cubyk6IFJlcGxhY2UgcmVzb3VyY2UuaCB3aXRoIFJFU09VUkNFX0guCgkoZGRnLm8sIG1vZHVsby1zY2hlZC5vLCBoYWlmYS1zY2hlZC5vLCBzY2hlZC1kZXBzLm8sIHNjaGVkLXJnbi5vLAoJc2NoZWQtZWJiLm8sIHNjaGVkLXZpcy5vLCBvdXRfb2JqZWN0X2ZpbGUpOiBSZXBsYWNlIHNjaGVkLWludC5oCgl3aXRoIFNDSEVEX0lOVF9ILgoJKHdlYi5vLCBsY20ubywgZGYubywgcmEubywgcmEtYnVpbGQubywgcmEtY29sb3JpemUubywgcmEtZGVidWcubywKCXJhLXJld3JpdGUubyk6IFJlcGxhY2UgZGYuaCB3aXRoIERGX0guCgkoZGRnLm8sIG1vZHVsby1zY2hlZC5vKTogUmVwbGFjZSBkZGYuaCB3aXRoIERER19ILgoJKHRyZWUtb3V0b2Ytc3NhLm8sIHRyZWUtc3NhLWxpdmUubywgdHJlZS1zc2EtY29weXJlbmFtZS5vKToKCVJlcGxhY2UgdHJlZS1zc2EtbGl2ZS5oIHdpdGggVFJFRV9TU0FfTElWRV9ILgoJKGluc24tY29uZGl0aW9ucy5vKTogUmVtb3ZlIHVudXNlZCByZWxvYWQuaC4KCSogY2ZnbGF5b3V0Lmg6IEFkZCBpbmNsdWRlIGd1YXJkLiAgSW5jbHVkZSBiYXNpYy1ibG9jay5oLgoJKiBjZmdsb29wLmg6IEFkZCBpbmNsdWRlIGd1YXJkLiAgSW5jbHVkZSBiYXNpYy1ibG9jay5oLCBydGwuaC4KCSogZGRnLmg6IEluY2x1ZGUgc2JpdG1hcC5oLCBiYXNpYy1ibG9jay5oLCBkZi5oLgoJKiBkZi5oOiBBZGQgaW5jbHVkZSBndWFyZC4gIEluY2x1ZGUgYml0bWFwLmgsIHNiaXRtYXAuaCwKCWJhc2ljLWJsb2NrLmguCgkqIGdlbmNvbmRpdGlvbnMuYzogUmVtb3ZlIHJlbG9hZC5oLgoJKiByYS5oOiBBZGQgaW5jbHVkZSBndWFyZC4gIEluY2x1ZGUgYml0bWFwLmgsIHNiaXRtYXAuaCwKCWhhcmQtcmVnLXNldC5oLCBpbnNuLW1vZGVzLmguCgkqIHJlc291cmNlLmg6IEFkZCBpbmNsdWRlIGd1YXJkLiAgSW5jbHVkZSBoYXJkLXJlZy1zZXQuaC4KCSogc2NoZWQtaW50Lmg6IEFkZCBpbmNsdWRlIGd1YXJkLiAgSW5jbHVkZSBpbnNuLWF0dHIuaCwKCWJhc2ljLWJsb2NrLmgsIHJ0bC5oLgoJKiB0YXJnZXQuaDogQWRkIGluY2x1ZGUgZ3VhcmQuICBJbmNsdWRlIGluc24tbW9kZXMuaC4KCSogdHJlZS1zc2EtbGl2ZS5oOiBJbmNsdWRlIHBhcnRpdGlvbi5oLgoKMjAwNC0wNi0wMyAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgkJS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIHRyZWUtc3NhLWNjcC5jICh2YXJ5aW5nX3NzYV9lZGdlcyk6IE5ldyB3b3JrbGlzdC4KCShhZGRfdmFyX3RvX3NzYV9lZGdlc193b3JrbGlzdCk6IEFkZCB2YWx1ZSBhcmd1bWVudC4KCVVwZGF0ZSBjYWxsZXJzLgoJVXNlIG5ldyB3b3JrbGlzdC4KCShwcm9jZXNzX3NzYV9lZGdlX3dvcmtsaXN0KTogTmV3IGZ1bmN0aW9uLgoJKHRyZWVfc3NhX2NjcCk6IE1vdmUgd29ya2xpc3QgcHJvY2Vzc2luZyBjb3JlIHRvCglwcm9jZXNzX3NzYV9lZGdlX3dvcmtsaXN0LCBhbmQganVzdCBjYWxsIHRoYXQgZm9yIHRoZSB0d28gd29ya2xpc3RzLgoKMjAwNC0wNi0wMyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogYmFzaWMtYmxvY2suYyAodGFpbF9yZWN1cnNpb25fbGFiZWxfbGlzdCk6IERvbid0IGRlY2xhcmUuCgkoQ0xFQU5VUF9QUkVfU0lCQ0FMTCk6IFJlbW92ZS4gIFJlbnVtYmVyIHRoZSBvdGhlciBDTEVBTlVQXyoKCWFjY29yZGluZ2x5LgoJKiBjZmdidWlsZC5jIChmaW5kX2xhYmVsX3JlZnMpOiBSZW1vdmUuCgkoZmluZF9iYXNpY19ibG9ja3NfMSk6IERvbid0IGhhbmRsZSBDQUxMX1BMQUNFSE9MREVSIGluc25zLgoJKiBjZmdjbGVhbnVwLmMgKHRhaWxfcmVjdXJzaW9uX2xhYmVsX3ApOiBSZW1vdmUuCgkobWVyZ2VfYmxvY2tzX21vdmUpOiBEbyBub3QgY2hlY2sgZm9yIHRhaWwgcmVjdXJzaW9uLgoJKHRyeV9vcHRpbWl6ZV9jZmcpOiBMaWtld2lzZS4KCShjbGVhbnVwX2NmZyk6IE5ldmVyIGhhbmRsZSBDTEVBTlVQX1BSRV9TSUJDQUxMLgoJKiBjZmdydGwuYyAodGFpbF9yZWN1cnNpb25fbGFiZWxfbGlzdCk6IFJlbW92ZS4KCSogZXhjZXB0LmMgKHJlbW92ZV91bnJlYWNoYWJsZV9yZWdpb25zKTogRG9uJ3QgaGFuZGxlCglDQUxMX1BMQUNFSE9MREVSIGluc25zLgoJKGNvbnZlcnRfZnJvbV9laF9yZWdpb25fcmFuZ2VzXzEsIGNhbl90aHJvd19pbnRlcm5hbCwKCWNhbl90aHJvd19leHRlcm5hbCk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChmcmVlX2FmdGVyX2NvbXBpbGF0aW9uKTogRG9uJ3QgY2xlYXIKCXhfdGFpbF9yZWN1cnNpb25fbGFiZWwuCgkoZml4dXBfdmFyX3JlZnNfaW5zbnMpOiBEb24ndCBoYW5kbGUgQ0FMTF9QTEFDRUhPTERFUiBpbnNucy4KCShpZGVudGlmeV9ibG9ja3NfMSk6IERvbid0IHJlY3Vyc2UgZm9yIENBTExfUExBQ0VIT0xERVIgaW5zbnMuCgkocmVvcmRlcl9ibG9ja3NfMSk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBSZW1vdmUgeF90YWlsX3JlY3Vyc2lvbl9sYWJlbAoJbWVtYmVyLiAgRG9uJ3QgZGVmaW5lIHRhaWxfcmVjdXJzaW9uX2xhYmVsLgoJKiBqdW1wLmMgKG1hcmtfYWxsX2xhYmVscyk6IERvbid0IGhhbmRsZSBDQUxMX1BMQUNFSE9MREVSIGluc25zLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogTGlrZXdpc2UuCgkqIHJ0bC5kZWYgKENBTExfUExBQ0VIT0xERVIpOiBSZW1vdmUuCgkqIHJ0bC5oIChzaWJjYWxsX3VzZV90KTogUmVtb3ZlIGVudW0uCgkob3B0aW1pemVfc2libGluZ19hbmRfdGFpbF9yZWN1cnNpdmVfY2FsbHMsCglyZXBsYWNlX2NhbGxfcGxhY2Vob2xkZXIpOiBSZW1vdmUgZnVuY3Rpb24gcHJvdG90eXBlcy4KCSogc3RtdC5jICh0YWlsX3JlY3Vyc2lvbl9hcmdzKTogUmVtb3ZlLgoJKG9wdGltaXplX3RhaWxfcmVjdXJzaW9uKTogUmVtb3ZlLgoJKGV4cGFuZF9yZXR1cm4pOiBEb24ndCBjaGVjayBmb3IgcG9zc2libGUgdGFpbCByZWN1cnNpb24uCgkqIHRyZWUuaCAob3B0aW1pemVfdGFpbF9yZWN1cnNpb24pOiBSZW1vdmUgcHJvdG90eXBlLgoKMjAwNC0wNi0wMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1jZmcuYyAodHJlZV9maW5kX2VkZ2VfaW5zZXJ0X2xvYyk6IEFsbG93IGluc2VydGluZyBiZWZvcmUKCXJldHVybl9zdG10LgoKMjAwNC0wNi0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoVEFHUyk6IERvbid0IG1lc3Mgd2l0aCBjLXBhcnNlLltjaF0uCglEbyBpbmNsdWRlIGMtcGFyc2UuaW4uCgoyMDA0LTA2LTAyICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGMtdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogRG9uJ3QgbG9zZSB0eXBlIHF1YWxpZmllcnMKCXdoZW4gY3JlYXRpbmcgbmV3IHZhcmlhbnRzLgoKMjAwNC0wNi0wMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTQwNDIKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE0NzI5CglQUiB0cmVlLW9wdGltaXphdGlvbi8xNDczNgoJKiB0cmVlLXNzYS5jICh0cmVlX3NzYV91c2VsZXNzX3R5cGVfY29udmVyc2lvbl8xKToKCUNoZWNrIHRoZSB0eXBlIHdoaWNoIHRoZSBwb2ludGVyIHBvaW50cyB0bwoJaW5zdGVhZCBvZiB0aGUgcG9pbnRlciB0eXBlcy4KCjIwMDQtMDYtMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTU3MzguCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9zdHJjaHIpOiBUcmFuc2Zvcm0KCXN0cnJjaHIgKHMsICdcMCcpIHRvIHN0cmNociAocywgJ1wwJykuCgoyMDA0LTA2LTAyICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBpMzg2LmMgKGl4ODZfYWRqdXN0X2Nvc3QpOiBEb24ndCBpbmNyZWFzZSB0aGUgY29zdCBmb3IKCWxvYWQrb3BlcmF0aW9uIGZvciBQUk9DRVNTT1JfUEVOVElVTVBSTywgaXQgaXMgYWxyZWFkeQoJbW9kZWxsZWQgaW4gdGhlIERGQSBkZXNjcmlwdGlvbgoKMjAwNC0wNi0wMSAgSmVycnkgUXVpbm4gIDxqbHF1aW5uQG9wdG9ubGluZS5uZXQ+CgoJKiBNYWtlZmlsZS5pbiAoRVhQUl9IKTogQWRkIGluc24tY29uZmlnLmgsIGZ1bmN0aW9uLmgsCgkkKFJUTF9IKSwgZmxhZ3MuaCwgJChUUkVFX0gpLCAkKE1BQ0hNT0RFX0gpLCAkKEVYUFJfSCkuCgkoQUxJQVNfSCwgRU1JVF9SVExfSCk6IE5ldy4KCShjc2VsaWIubyk6IFJlcGxhY2UgRVhQUl9IIHdpdGggRU1JVF9SVExfSC4KCShjZmdjbGVhbnVwLm8pOiBBZGQgRU1JVF9SVExfSC4KCShhbGlhcy5vKTogUmVwbGFjZSBFWFBSX0ggd2l0aCBFTUlUX1JUTF9IIGFuZCBBTElBU19ILgoJKiBhbGlhcy5jOiBSZXBsYWNlIGV4cHIuaCB3aXRoIGVtaXQtcnRsLmggYW5kIGFsaWFzLmguCgkqIGF0dHJpYnMuYywgYy1sZXguYywgYy1vYmotY29tbW9uLmMsIGMtc2VtYW50aWNzLmM6IFJlbW92ZSBleHByLmguCgkqIGNmZ2NsZWFudXAuYywgY3NlbGliLmM6IFJlcGxhY2UgZXhwci5oIHdpdGggZW1pdC1ydGwuaC4KCSogZXhwci5oOiBBZGQgaW5jbHVkZSBndWFyZC4gIEluY2x1ZGUgZnVuY3Rpb24uaCwgcnRsLmgsIGZsYWdzLmgsCgl0cmVlLmgsIG1hY2htb2RlLmgsIGluc24tY29uZmlnLmgsIGFsaWFzLmgsIGVtaXQtcnRsLmguCgkoZ2V0X3ZhcmFyZ3NfYWxpYXNfc2V0LCBnZXRfZnJhbWVfYWxpYXNfc2V0LCByZWNvcmRfYmFzZV92YWx1ZSwKCXJlY29yZF9hbGlhc19zdWJzZXQsIG5ld19hbGlhc19zZXQsIGNhbl9hZGRyZXNzX3ApOiBNb3ZlIHRvIGFsaWFzLmguCgkoc2V0X21lbV9hbGlhc19zZXQsIHNldF9tZW1fYWxpZ24sIHNldF9tZW1fZXhwciwgc2V0X21lbV9vZmZzZXQsCglzZXRfbWVtX3NpemUpOiBNb3ZlIHRvIGVtaXQtcnRsLmguCgkqIGVtaXQtcnRsLmg6IE5ldy4KCSogYWxpYXMuaDogTmV3LgoKMjAwNC0wNi0wMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhY3QtZXVyb3BlLmZyPgoKCSogZnVuY3Rpb24uYyAod2Fsa19maXh1cF9tZW1vcnlfc3VicmVnKTogTmV3IHBhcmFtZXRlciAndmFyJy4KCUNhbGwgZml4dXBfbWVtb3J5X3N1YnJlZyBvbmx5IGlmIHRoZSBNRU0gaXMgZXF1YWwgdG8gJ3ZhcicuCglBZGp1c3QgcmVjdXJzaXZlIGNhbGxzIHRvIHNlbGYuCgkoZml4dXBfdmFyX3JlZnNfaW5zbik6IFBhc3MgJ3ZhcicgdG8gd2Fsa19maXh1cF9tZW1vcnlfc3VicmVnLgoKMjAwNC0wNi0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSAgICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGMtcGFyc2UuaW4gKE9GRlNFVE9GLCBvZmZzZXRvZl9tZW1iZXJfZGVzaWduYXRvcik6IE5ldy4KCShwcmltYXJ5KTogSGFuZGxlIG9mZnNldG9mLiAgQWRkIGVycm9yIHByb2R1Y3Rpb25zIGZvciBmYXV4IGZ1bmN0aW9ucy4KCU1vdmUgY29tcG9uZW50X3JlZiBvYmpjIGNoZWNraW5nIHRvIGJ1aWxkX2NvbXBvbmVudF9yZWYuCgkocmVzd29yZHMpOiBBZGQgb2Zmc2V0b2YuCgkocmlkX3RvX3l5KTogQWRkIG9mZnNldG9mLgoJKiBjLXRyZWUuaCAoYnVpbGRfb2Zmc2V0b2YpOiBEZWNsYXJlLgoJKiBjLWNvbW1vbi5oIChvYmpjX2lzX3B1YmxpYyk6IERlY2xhcmUuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBDaGVjayBvYmpjX2lzX3B1YmxpYy4KCShidWlsZF9vZmZzZXRvZik6IE5ldy4KCSogc3R1Yi1vYmpjLmMgKG9iamNfaXNfcHVibGljKTogTmV3LgoJKiBvYmpjL29iamMtYWN0LmMsIG9iamMvb2JqYy1hY3QuaCAob2JqY19pc19wdWJsaWMpOiBSZW5hbWUKCWZyb20gaXNfcHVibGljLgoJKiBnaW5jbHVkZS9zdGRkZWYuaCAob2Zmc2V0b2YpOiBVc2UgX19idWlsdGluX29mZnNldG9mLgoJKiBkb2MvZXh0ZW5kLnRleGkgKE9mZnNldG9mKTogTW92ZSBmcm9tIEMrKyBzZWN0aW9uIHRvIEMgc2VjdGlvbgoJYW5kIHJld3JpdGUgZm9yIF9fYnVpbHRpbl9vZmZzZXRvZi4KCjIwMDQtMDYtMDEgIFBldGVyIEJhcmFkYSAgPHBldGVyQHRoZS1iYXJhZGFzLmNvbT4KCSAgICBQZXRlciBKYWt1YmVrICA8cGV0ZXJAbGFzZXJhbmltYXRpb24uY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jKG02OGtfb3V0cHV0X21pX3RodW5rKTogRm9yIENvbGRGaXJlLCB1c2UgJWQwIGFzCglhIHNjcmF0Y2ggdG8gcGVyZm9ybSBhbiBhZGQgdG8gbWVtb3J5LgoKMjAwNC0wNi0wMSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCVBSIHRhcmdldC8xNDAxOAoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfYWxpZ25fbG9vcHNfc3RyaW5nLCBtNjhrX2FsaWduX2p1bXBzX3N0cmluZywKCW02OGtfYWxpZ25fZnVuY3Nfc3RyaW5nLCBtNjhrX2FsaWduX2xvb3BzLCBtNjhrX2FsaWduX2p1bXBzLAoJbTY4a19hbGlnbl9mdW5jcyk6IFJlbW92ZS4KCShvdmVycmlkZV9vcHRpb25zKTogUmVtb3ZlIGNvZGUgdG8gaGFuZGxlIC1tYWxpZ24tKiBvcHRpb25zLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFRBUkdFVF9PUFRJT05TKTogUmVtb3ZlIC1tYWxpZ24tKiBvcHRpb25zLgoJKEZVTkNUSU9OX0JPVU5EQVJZLCBMT09QX0FMSUdOLCBMT09QX0FMSUdOX0FGVEVSX0JBUlJJRVIpOiBSZW1vdmUuCgkobTY4a19hbGlnbl9sb29wc19zdHJpbmcsIG02OGtfYWxpZ25fanVtcHNfc3RyaW5nLAoJbTY4a19hbGlnbl9mdW5jc19zdHJpbmcsIG02OGtfYWxpZ25fbG9vcHMsIG02OGtfYWxpZ25fanVtcHMsCgltNjhrX2FsaWduX2Z1bmNzKTogUmVtb3ZlIGRlZmluaXRpb25zLgoKMjAwNC0wNi0wMSAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CgoJUFIgdGFyZ2V0LzE1NjI2CgkqIGRvYy9pbnN0YWxsLnRleGkgKHNwYXJjLXN1bi1zb2xhcmlzMiopOiBEb2N1bWVudCBtZXNzYWdlcyBpc3N1ZWQKCWJ5IHRoZSBTdW4gbGlua2VyIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFN1biBhc3NlbWJsZXIuCgkoc3BhcmMtc3VuLXNvbGFyaXMyLjcpOiBVcGRhdGUgcmV2aXNpb24gaW5mbyBmb3IgU3VuIHBhdGNoIDEwNjk1MC4KCjIwMDQtMDYtMDEgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsKTogQmUgbW9yZSBzZWxlY3RpdmUgYWJvdXQgY2FsbGluZwoJbWFya19yZWdfcG9pbnRlci4KCjIwMDQtMDYtMDEgIE5pY29sYSBQZXJvICA8bmljb2xhQGJyYWluc3Rvcm0uY28udWs+CgoJUFIgb2JqYy83OTkzCgkqIG9iamMtYWN0LmMgKGlzX3ByaXZhdGUpOiBEbyBub3QgZW1pdCB0aGUgJ2luc3RhbmNlIHZhcmlhYmxlICVzCglpcyBkZWNsYXJlZCBwcml2YXRlJyBlcnJvci4KCShpc19wdWJsaWMpOiBFbWl0IHRoZSBlcnJvciBhZnRlciBjYWxsaW5nIGlzX3ByaXZhdGUuCgkobG9va3VwX29iamNfaXZhcik6IElmIHRoZSBpbnN0YW5jZSB2YXJpYWJsZSBpcyBwcml2YXRlLCByZXR1cm4gMAoJLSB0aGUgaW5zdGFuY2UgdmFyaWFibGUgaXMgaW52aXNpYmxlIGhlcmUuCgoyMDA0LTA2LTAxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL2ludm9rZS50ZXhpICgtc3RhdGljLWxpYmdjYyk6IEV4cGxpY2l0bHkgbWVudGlvbgoJbm9uLUdOVSBsaW5rZXJzLgoKMjAwNC0wNi0wMSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCVBSIHRhcmdldC8xMjk2OAoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IHN0YWNrIGFsaWdubWVudCBzaWRlLWVmZmVjdCBvZiAtbXNob3J0LgoKMjAwNC0wNS0zMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xNTc0OQoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IsIGZpbmlzaF9zdHJ1Y3QpOiBEb24ndCBwZWR3YXJuIGZvcgoJbWlzdXNlcyBvZiBzdHJ1Y3R1cmVzIHdpdGggZmxleGlibGUgYXJyYXkgbWVtYmVycyBpZgoJaW5fc3lzdGVtX2hlYWRlci4KCjIwMDQtMDUtMzEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdGFyZ2V0LzE1NjkzCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChjb21wYXJlX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGl0LgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKGNtcHNpIGV4cGFuZGVyKTogVXNlIGl0LiAgSWYgdGhlIGZpcnN0CglvcGVyYW5kIGlzIGEgWkVST19FWFRSQUNUIGFuZCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgbm90IHplcm8sCglmb3JjZSB0aGUgZm9ybWVyIHRvIGEgcmVnaXN0ZXIuCgkoY21wZGkgZXhwYW5kZXIpOiBMaWtld2lzZS4KCjIwMDQtMDUtMzEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZ2VuZ3R5cGUtbGV4Lmw6IENhdGNoIHN0cmF5IEdUWSBtYXJrZXJzIGluIHRoZSBmaWxlcyBnZW5ndHlwZQoJbG9va3MgYXQuCgkqIGFsaWFzLmMgKGFsaWFzX2ludmFyaWFudF9zaXplKTogTWFrZSBhbGlhc19pbnZhcmlhbnRfc2l6ZQoJc3RhdGljLCBmaXggR1RZIG1hcmtlci4KCjIwMDQtMDUtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTU3NDMuCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl8xKTogRm9sZCBpbmRleCgpIGFuZCByaW5kZXgoKS4KCjIwMDQtMDUtMzEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTUwNjkKCSogZm9sZC1jb25zdC5jIChmb2xkX3NpbmdsZV9iaXRfdGVzdCk6IE9ubHkgcGVyZm9ybSAiKFggJiBDKSAhPSAwIgoJaW50byAiWCA8IDAiICh3aGVyZSBDIGlzIHRoZSBzaWduYml0KSBpZiBYJ3MgdHlwZSBpcyBhIGZ1bGwgbW9kZS4KCjIwMDQtMDUtMzEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5tZDogRGlzYWJsZSB0aGUgcGVlcGhvbGUyIHBhdHRlcm5zIHRoYXQgZ2VuZXJhdGUgaW5kZXhlZAoJZmxvYXRpbmctcG9pbnQgc3RvcmVzIHdoZW4gaW5kZXhpbmcgaXMgZGlzYWJsZWQuCgoyMDA0LTA1LTMxICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfbGVmdF9icmFja2V0KTogTWFrZSBhIGZ1bmN0aW9uLgoJKHBwX2NfcmlnaHRfYnJhY2tldCk6IExpa2V3aXNlLgoJKHBwX2Nfc3Rhcik6IExpa2V3aXNlLgoJKHBwX2NfYW1wZXJzYW5kKTogRGVmaW5lLgoJKiBjLXByZXR0eS1wcmludC5oIChwcF9jX2xlZnRfYnJhY2tldCk6IERlY2xhcmUuCgkocHBfY19yaWdodF9icmFja2V0KTogTGlrZXdpc2UuCgkocHBfY19zdGFyKTogTGlrZXdpc2UuCgkocHBfY19hbXBlcnNhbmQpOiBMaWtld2lzZS4KCjIwMDQtMDUtMzEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc29sMi5oIChfX2VuYWJsZV9leGVjdXRlX3N0YWNrKTogQU5TSWZ5IGZ1bmN0aW9uCglkZWZpbml0aW9uLgoKMjAwNC0wNS0zMSAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGMtaW5jcGF0aC5jIChhZGRfcGF0aCk6IENhbm9uaWNhbGl6ZSBwYXRocyB0byB1c2UgJy8nIGlmCglIQVZFX0RPU19CQVNFRF9GSUxFU1lTVEVNLgoKMjAwNC0wNS0zMSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogdHJlZS1zc2EtZG9tLmMgKHJlY29yZF9lcXVpdmFsZW5jZXNfZnJvbV9pbmNvbWluZ19lZGdlKToKCU9ubHkgbG9vayBhdCBjYXNlIGxhYmVscyBpZiB0aGUgaW1tZWRpYXRlIGRvbWluYXRvciBpcyBhbHNvCgl0aGUgb25seSBwcmVkZWNlc3Nvci4gIERvbid0IGxvb2sgZm9yIG1vcmUgY2FzZSBsYWJlbHMgaWYgdGhlCglmaXJzdCBzZWVuIGlzIGEgY2FzZSByYW5nZS4KCjIwMDQtMDUtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBidWlsdGlucy5jOiBBZGQgYSBwcm90b3R5cGUgZm9yIGZvbGRfYnVpbHRpbl9zdHJjaHIoKS4KCjIwMDQtMDUtMzEgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUmV2ZXJ0IHRoaXMgcGF0Y2g6CgkyMDA0LTA1LTI3ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29tYmluZS5jIChnZW5fYmluYXJ5KTogUmVtb3ZlLgoJKGtub3duX2NvbmQsIHNpbXBsaWZ5X3NoaWZ0X2NvbnN0CglmaW5kX3NwbGl0X3BvaW50LCBjb21iaW5lX3NpbXBsaWZ5X3J0eCwKCXNpbXBsaWZ5X2lmX3RoZW5fZWxzZSwgc2ltcGxpZnlfc2V0LAoJc2ltcGxpZnlfbG9naWNhbCwgZXhwYW5kX2ZpZWxkX2Fzc2lnbm1lbnQsCglleHRyYWN0X2xlZnRfc2hpZnQsIGZvcmNlX3RvX21vZGUsCglpZl90aGVuX2Vsc2VfY29uZCwgYXBwbHlfZGlzdHJpYnV0aXZlX2xhdywKCXNpbXBsaWZ5X2FuZF9jb25zdF9pbnQsIHNpbXBsaWZ5X3NoaWZ0X2NvbnN0LAoJZ2VuX2xvd3BhcnRfZm9yX2NvbWJpbmUsIHNpbXBsaWZ5X2NvbXBhcmlzb24sCglyZXZlcnNlZF9jb21wYXJpc29uKTogUmVwbGFjZSB3aXRoCglzaW1wbGlmeV9nZW5fYmluYXJ5LCBzaW1wbGlmeV9nZW5fcmVsYXRpb25hbCBvcgoJZGlzdHJpYnV0ZV9hbmRfc2ltcGxpZnlfcnR4LgoJKGRpc3RyaWJ1dGVfYW5kX3NpbXBsaWZ5X3J0eCk6IE5ldyBmdW5jdGlvbi4KCjIwMDQtMDUtMzAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChlbWl0X21vdmVfc2VxdWVuY2UpOiBGaXggbG9hZGluZyBvZiBub24gMTQtYml0IENPTlNUIG9wZXJhbmRzCgl3aGVuIGdlbmVyYXRpbmcgUElDIGNvZGUuCgoyMDA0LTA1LTMwICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGMtZGVjbC5jIChjX2V4cGFuZF9ib2R5XzEpOiBSZW1vdmUgYW5kIGZvbGQgYmFjayBpbnRvIC4uLgoJKGNfZXhwYW5kX2JvZHkpOiBoZXJlLgoJKGNfZXhwYW5kX2RlY2wpOiBNb3ZlIHRvIC4uLgoJKiBjLWNvbW1vbi5jIChjX2V4cGFuZF9kZWNsKTogSGVyZSBhbmQgcmVtb3ZlIGNoZWNrIGZvciBuZXN0ZWQKCWZ1bmN0aW9ucy4KCSogYy1jb21tb24uaCAoY19leHBhbmRfZGVjbCk6IEFkZCBwcm90b3R5cGUuCgkqIGMtdHJlZS5oIChjX2V4cGFuZF9kZWNsKTogUmVtb3ZlLgoKMjAwNC0wNS0zMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGNvbWJpbmVfY29tcGFyaXNvbnMsIG9wdGltaXplX2JpdF9maWVsZF9jb21wYXJlLAoJcmFuZ2VfYmlub3AsIGZvbGRfdHJ1dGhvcCwgZm9sZF9iaW5hcnlfb3Bfd2l0aF9jb25kaXRpb25hbF9hcmcsCglmb2xkX21hdGhmbl9jb21wYXJlLCBmb2xkX2luZl9jb21wYXJlLCBmb2xkLAoJZm9sZF9yZWxhdGlvbmFsX2hpX2xvLCBub25kZXN0cnVjdGl2ZV9mb2xkX2JpbmFyeV90b19jb25zdGFudCk6CglVc2UgY29uc3RhbnRfYm9vbGVhbl9ub2RlIHdoZXJlIGFwcHJvcHJpYXRlLiAgRG9uJ3QgYm90aGVyIHVzaW5nCglmb2xkX2NvbnZlcnQgb24gdGhlIHNlY29uZCBhcmd1bWVudCB0byBvbWl0X29uZV9vcGVyYW5kLgoKMjAwNC0wNS0zMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkb2MvYy10cmVlLnRleGkgKEV4cHJlc3Npb25zKTogRG9jdW1lbnQgRkxPT1JfRElWX0VYUFIsCglDRUlMX0RJVl9FWFBSLCBST1VORF9ESVZfRVhQUiwgRkxPT1JfTU9EX0VYUFIsIENFSUxfTU9EX0VYUFIsCglST1VORF9NT0RfRVhQUiwgRVhBQ1RfRElWX0VYUFIuICBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YKCVRSVU5DX0RJVl9FWFBSLCBUUlVOQ19NT0RfRVhQUiBhbmQgY29tcGFyaXNvbiBvcGVyYXRpb25zLgoJQWRkIG1pc3NpbmcgKGJ1dCBkb2N1bWVudGVkKSB0cmVlIG5vZGVzIHRvIHRoZSBpbmRleC4KCjIwMDQtMDUtMzAgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xNDgxOQoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fc3RyY2hyKTogTmV3LgoJKGZvbGRfYnVpbHRpbl8xKTogSGFuZGxlIEJVSUxUX0lOX1NUUkNIUiBhbmQgQlVJTFRfSU5fU1RSUkNIUgoJd2l0aCBmb2xkX2J1aWx0aW5fc3RyY2hyKCkuCgoyMDA0LTA1LTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYmItcmVvcmRlci5jLCBidWlsdGlucy5jLCBjLWNvbW1vbi5jLCBjLWdpbXBsaWZ5LmMsCgljLWluY3BhdGguYywgY2dyYXBodW5pdC5jLCBkZGcuYywgZGVmYXVsdHMuaCwgZHdhcmYyb3V0LmMsCglleHBtZWQuYywgZmxhZ3MuaCwgZ2NjLmMsIGdlbnN1cHBvcnQuYywgZ2ltcGxpZnkuYywgZ2xvYmFsLmMsCglwYXNzZXMuYywgcmVnLXN0YWNrLmMsIHRhcmdldC5oLCB0b3BsZXYuYywgdHJlZS1hbGlhcy1hbmRlci5jLAoJdHJlZS1hbGlhcy1jb21tb24uYywgdHJlZS1jZmcuYywgdHJlZS1jb21wbGV4LmMsIHRyZWUtZGZhLmMsCgl0cmVlLWVoLmMsIHRyZWUtbXVkZmxhcC5jLCB0cmVlLW11ZGZsYXAuaCwgdHJlZS1vdXRvZi1zc2EuYywKCXRyZWUtcGhpbm9kZXMuYywgdHJlZS1wcmV0dHktcHJpbnQuYywgdHJlZS1zc2EtYWxpYXMuYywKCXRyZWUtc3NhLWNjcC5jLCB0cmVlLXNzYS1saXZlLmMsIHRyZWUtc3NhLWxpdmUuaCwKCXRyZWUtc3NhLXByZS5jLCB0cmVlLmgsIHZhbHVlLXByb2YuaCwgdmFyYXNtLmM6IEZpeCBjb21tZW50Cglmb3JtYXR0aW5nLgoKMjAwNC0wNS0zMCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogZ2ltcGxpZnkuYyAoc29ydF9jYXNlX2xhYmVscyk6IE5ldy4gIFNwbGl0IG91dCBmcm9tLi4uCgkoZ2ltcGxpZnlfc3dpdGNoX2V4cHIpOiAuLi5oZXJlLiAgVXNlIGl0LgoJKiB0cmVlLWVoLmMgKGxvd2VyX3RyeV9maW5hbGx5X3N3aXRjaCk6IFNvcnQgdGhlIGxhYmVscyBvZgoJdGhlIFNXSVRDSF9FWFBSIGNyZWF0ZWQgaGVyZSBiZWZvcmUgbGVhdmluZyB0aGUgZnVuY3Rpb24uCgkqIHRyZWUuYyAoc29ydF9jYXNlX2xhYmVscyk6IEFkZCBwcm90b3R5cGUuCgoyMDA0LTA1LTMwICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgW2Nhc2UgVFJVVEhfTk9UX0VYUFJdOiBNYWtlIHN1cmUgdGhlIHR5cGUgaXMKCW9mIEJPT0xFQU5fVFlQRS4KCjIwMDQtMDUtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWNvbW1vbi5jLCBjYWxscy5jLCBjZmdjbGVhbnVwLmMsIGNncmFwaC5jLCBjZ3JhcGh1bml0LmMsCglkZGcuYywgZGRnLmgsIGRmLmMsIGRmLmgsIGV4Y2VwdC5jLCBleHByLmMsIGZsYWdzLmgsCglmb2xkLWNvbnN0LmMsIGdjYy5jLCBnaW1wbGlmeS5jLCBoYWlmYS1zY2hlZC5jLAoJbW9kdWxvLXNjaGVkLmMsIHRyZWUtaW5saW5lLmMsIHRyZWUtaW50by1zc2EuYywgdHJlZS1uZXN0ZWQuYywKCXRyZWUtbnJ2LmMsIHRyZWUtc3NhLWNjcC5jLCB0cmVlLXNzYS1kb20uYywgdHJlZS1zc2EtbGl2ZS5jLAoJdHJlZS1zc2EtbG9vcC5jLCB0cmVlLXNzYS1wcmUuYywgdHJlZS10YWlsY2FsbC5jLCB0cmVlLmg6IEZpeAoJY29tbWVudCB0eXBvcy4gIEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDQtMDUtMjkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZ2VuZ3R5cGUteWFjYy55OiBBZGQgTkVTVEVEX1BUUiB0b2tlbi4KCShvcHRpb24pOiBSZWNvcmQgYG5lc3RlZF9wdHInIG9wdGlvbi4KCSogZ2VuZ3R5cGUtbGV4Lmw6IEhhbmRsZSBgbmVzdGVkX3B0cicga2V5d29yZC4KCSogZ2VuZ3R5cGUuYyAod2Fsa190eXBlKTogUHJvY2VzcyBgbmVzdGVkX3B0cicgb3B0aW9uLgoJKiBnZW5ndHlwZS5oIChzdHJ1Y3QgbmVzdGVkX3B0cl9kYXRhKTogTmV3LgoJKiBkb2MvZ3R5LnRleGkgKEdUWSBPcHRpb25zKTogRG9jdW1lbnQgYG5lc3RlZF9wdHInIG9wdGlvbi4KCSogc3RyaW5ncG9vbC5jIChzdHJ1Y3Qgc3RyaW5nX3Bvb2xfZGF0YSk6IE1ha2UgJ2VudHJpZXMnIHBvaW50IHRvCglodF9pZGVudGlmaWVyIGluc3RlYWQgb2YgdHJlZS4KCShndF9wY2hfc2F2ZV9zdHJpbmdwb29sKTogRG9uJ3QgYWRqdXN0IHBvaW50ZXJzLgoJKGd0X3BjaF9yZXN0b3JlX3N0cmluZ3Bvb2wpOiBDYWxsIGh0X2xvYWQuCgoyMDA0LTA1LTI5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2V4cHIpOiBEb24ndCBidWlsZCBhIHN0YXRlbWVudCBsaXN0CglpZiBubyBnaW1wbGlmaWNhdGlvbiB3YXMgbmVjZXNzYXJ5LgoKMjAwNC0wNS0yOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBwcmV0dHktcHJpbnQuYyAocHBfYmFzZV9mb3JtYXRfdGV4dCk6IFN1cHBvcnQgJTwgaW5zdGVhZCBvZiAlYAoJYW5kICU+IGFzIHdlbGwgYXMgJScuCgkqIGMtZm9ybWF0LmM6IFVzZSAlPCBhbmQgJT4uCgkoZ2NjX2RpYWdfY2hhcl90YWJsZSwgZ2NjX2NkaWFnX2NoYXJfdGFibGUsCglnY2NfY3h4ZGlhZ19jaGFyX3RhYmxlKTogVXBkYXRlLgoKMjAwNC0wNS0yOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLXR5cGVjay5jIChjb21tb25fdHlwZSk6IENvcnJlY3QgY29tbWVudC4KCjIwMDQtMDUtMjkgIFBldGVyIEJhcmFkYSAgPHBldGVyQHRoZS1iYXJhZGFzLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoQ09OU1RfTUVUSE9EKTogQWRkIE1WWiwgTVZTLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKGNvbnN0X21ldGhvZCk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKGNvbnN0X2ludF9jb3N0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoY29uc3RfaW50X2Nvc3QpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChvdXRwdXRfbW92ZV9jb25zdF9pbnRvX2RhdGFfcmVnKTogTGlrZXdpc2UuCgoyMDA0LTA1LTI5ICBQZXRlciBCYXJhZGEgIDxwZXRlckB0aGUtYmFyYWRhcy5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmggKEVYVFJBX0NPTlNUUkFJTlQpOiBhZGQgJ1UnIGZvciByZWdpc3RlciBvZmZzZXQKCWFkZHJlc3NpbmcuCgkqIGNvbmZpZy9tNjhrL202OGsubWQ6IEFkZCAnVSxVJyBhbHRlcm5hdGl2ZSB0byBDb2xkRmlyZSB2YXJpYW50cyBvZgoJbW92c2ksbW92aGksbW92cWkgaW5zbiBwYXR0ZXJucy4KCjIwMDQtMDUtMjggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogYy1zZW1hbnRpY3MuYyAoZW1pdF9sb2NhbF92YXIpOiBSZW1vdmUgY29kZSBmb3IgREVDTF9JTklUSUFMLgoKCVBSIHRhcmdldC8xNTcyMAoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX2luZGlyZWN0X2NhbGxfdGFyZ2V0KTogQ29weQoJdGhlIFNZTUJPTF9SRUZfREVDTCBmcm9tIHRoZSBvcmlnaW5hbCBSVFggZm9yIHRoZSBuZXcKCXN0dWIgUlRYLgoKMjAwNC0wNS0yOCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBzdG9yLWxheW91dC5jIChwbGFjZV9maWVsZCk6IFJldmVydCBlcnJvbmVvdXMgY29tbWl0LgoKMjAwNC0wNS0yOCAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLmggKHZlY19jdGYsIHZlY192Y2ZzeCwgdmVjX3ZjZnV4LCB2ZWNfY3RzLAoJdmVjX2N0dSwgdmVjX2RzcywgdmVjX2RzdCwgdmVjX2RzdHN0LCB2ZWNfZHN0c3R0LCB2ZWNfZHN0dCwgdmVjX2xkLAoJdmVjX2xkbCwgdmVjX2x2c2wsIHZlY19sdnNyLCB2ZWNfc2xkLCB2ZWNfc3BsYXQsIHZlY192c3BsdHcsCgl2ZWNfdnNwbHRoLCB2ZWNfdnNwbHRiLCB2ZWNfc3BsYXRfczgsIHZlY19zcGxhdF9zMTYsIHZlY19zcGxhdF9zMzIsCgl2ZWNfc3BsYXRfdTgsIHZlY19zcGxhdF91MTYsIHZlY19zcGxhdF91MzIsIHZlY19zdCwgdmVjX3N0bCwKCXZlY19zdGUpOiBSZW1vdmUgdHlwZSBjaGVja3MgZm9yIGludGVncmFsIHBhcmFtZXRlcnMgYW5kIGxpdGVyYWxzCglmcm9tICcuLi5fYXJnc19lcScgbWFjcm9zLgoKMjAwNC0wNS0yOCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogYy1jb21tb24uYyAoZm5hbWVfYXNfc3RyaW5nKTogRml4IHhjYWxsb2MgdG8geG1hbGxvYy4KCjIwMDQtMDUtMjggIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIHRlc3RzdWl0ZS9nKysuZGcvY2hhcnNldC9mdW5jdGlvbi5jYzogTmV3LgoKCSogdGVzdHN1aXRlL2djYy5kZy9jaGFyc2V0L2Z1bmN0aW9uLmM6IE5ldy4KCgkqIGMtZGVjbC5jIChjX21ha2VfZm5hbWVfZGVjbCk6IEZyZWUgcmV0dXJuIHZhbHVlIGZyb20KCWZuYW1lX2FzX3N0cmluZy4KCgkqIGNwL2RlY2wuYyAoY3BfbWFrZV9mbmFtZV9kZWNsKTogRnJlZSByZXR1cm4gdmFsdWUgZnJvbQoJZm5hbWVfYXNfc3RyaW5nLgoKCSogYy1jb21tb24uYyAoZm5hbWVfYXNfc3RyaW5nKTogVHJhbnNsYXRlIGlmIG5lY2Vzc2FyeS4KCjIwMDQtMDUtMjggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogc3RyaW5ncG9vbC5jOiBBZGQgY29tbWVudHMgdG8gUENIIHNhdmluZy9yZXN0b3Jpbmcgcm91dGluZXMuCgoyMDA0LTA1LTI4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGMtY29tbW9uLmMgKGNfZXN0aW1hdGVfbnVtX2luc25zXzEpOiBLaWxsLgoJKGNfZXN0aW1hdGVfbnVtX2luc25zKTogS2lsbC4KCSogYy1jb21tb24uaCAoY19lc3RpbWF0ZV9udW1faW5zbnMpOiBLaWxsLgoKCSogZ3Roci1wb3NpeC5oOiBDaGVjayBmb3IgX1BPU0lYX1BSSU9SSVRZX1NDSEVEVUxJTkcKCXdoZW4gY2hlY2tpbmcgZm9yIF9QT1NJWF9USFJFQURfUFJJT1JJVFlfU0NIRURVTElORy4KCVJlbW92ZSBjb21tZW50IGFib3V0IG5vdCBjaGVja2luZyBmb3IKCV9QT1NJWF9QUklPUklUWV9TQ0hFRFVMSU5HLgoJKiBndGhyLXBvc2l4LmM6IExpa2V3aXNlLgoKMjAwNC0wNS0yOCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCSAgICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE1NjQ5CglBZGQgTFRHVF9FWFBSIGFuZCBpbXByb3ZlIHByZXR0eS1wcmludGluZyBvZiB1bm9yZGVyZWQKCWNvbXBhcmlzb25zLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24pOgoJSGFuZGxlIExUR1RfRVhQUi4KCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkqIGRvanVtcC5jIChkb19qdW1wKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xLCBkb19zdG9yZV9mbGFnKTogTGlrZXdpc2UuCgkqIHByZWRpY3QuYyAodHJlZV9wcmVkaWN0X2J5X29wY29kZSk6IExpa2V3aXNlLgoJKiByZWFsLmMgKHJlYWxfY29tcGFyZSk6IExpa2V3aXNlLgoJKiB0cmVlLWNmZy5jICh2ZXJpZnlfZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5jIChlc3RpbWF0ZV9udW1faW5zbnNfMSk6IExpa2V3aXNlLgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkdW1wX2dlbmVyaWNfbm9kZSk6IExpa2V3aXNlLgoJSGFuZGxlIE9SREVSRURfRVhQUiwgVU5PUkRFUkVEX0VYUFIuCgkob3Bfc3ltYm9sKTogUHJpbnQgdW5vcmRlcmVkIGNvbXBhcmlzb25zIGRpZmZlcmVudGx5Cgl0aGFuIG9yZGVyZWQgb25lcy4KCSogdHJlZS5kZWYgKExUR1RfRVhQUik6IE5ldyAnPCcgdHJlZSBjb2RlLgoJKiBkb2MvYy10cmVlLnRleGkgKEV4cHJlc3Npb25zKTogRG9jdW1lbnQgZmxvYXRpbmctcG9pbnQKCWNvbXBhcmlzb24gbm9kZXMuCgoJRm9sZCBjb21wYXJpc29ucyBiZXR3ZWVuIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4KCSogZm9sZC1jb25zdC5jIChlbnVtIGNvbXBhcmlzb25fY29kZSk6IE5ldywgZnJvbQoJI2RlZmluZSdkIGNvbnN0YW50cy4gIERlZmluZSBjb21wY29kZXMgZm9yIHVub3JkZXJlZAoJY29tcGFyaXNvbnMgYW5kIGZvciBpbnZhbGlkIHRyYW5zZm9ybWF0aW9ucy4KCShpbnZlcnRfdHJlZV9jb21wYXJpc29uKTogQWRkICJob25vcl9uYW5zIiBwYXJhbWV0ZXIuCgkoZm9sZF90cnV0aG9wKTogUmV2YW1wIHRvIHdvcmsgb24gZmxvYXRpbmctcG9pbnQgdHlwZXMgdG9vLgoJKGNvbXBhcmlzb25fdG9fY29tcGNvZGUpOiBTdXBwb3J0IHVub3JkZXJlZCBjb21wYXJpc29ucy4KCVVzZSBuZXcgZW51bSBjb21wYXJpc29uX2NvZGUuCgkoY29tcGNvZGVfdG9fY29tcGFyaXNvbik6IExpa2V3aXNlLgoJKGNvbWJpbmVfY29tcGNvZGVzKTogTmV3IGZ1bmN0aW9uLgoJKGludmVydF90cnV0aHZhbHVlKTogTGV0IGludmVydF90cmVlX2NvbXBhcmlzb24gZGVjaWRlCgl3aGV0aGVyIGl0IGlzIHZhbGlkIHRvIGZvbGQgdGhlIGNvbXBhcmlzb24uICBGb2xkIE9SREVSRUQKCWFuZCBVTk9SREVSRUQgZXZlbiBpZiBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgaXMgb2ZmLAoJYW5kIHRoZSByZW1haW5pbmcgZXZlbiBpZiBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMKCWlzIG9mZiBidXQgd2UgYXJlIHVuZGVyIC1mbm8tdHJhcHBpbmctbWF0aC4KCShmb2xkX3JlbGF0aW9uYWxfY29uc3QpOiBJbnRlZ2VyIG1vZGVzIGRvIG5vdCBob25vciBOYU5zLgoKMjAwNC0wNS0yOCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgoyMDA0LTA1LTI4ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAodGh1bWJfZm9yY2VfbHJfc2F2ZSk6IE5ldyBmdW5jdGlvbi4KCShhcm1fZ2V0X2ZyYW1lX29mZnNldHMsIHRodW1iX3VuZXhwYW5kZWRfZXBpbG9ndWUsCgl0aHVtYl9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBVc2UgaXQuCgkodGh1bWJfZXhwYW5kX3Byb2xvZ3VlKTogU2V0IGxyX3NhdmVfZWxpbWluYXRlZC4KCjIwMDQtMDUtMjggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGV4dGVuZHNpZGkyKTogVGllIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uCglvZiB0aGUgcmVnaXN0ZXIgYWx0ZXJuYXRpdmUuICBTcGxpdCBpdCBpbnRvIG5vdGhpbmcuCgoyMDA0LTA1LTI4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBydGwuaCAoc2tpcF9jb25zZWN1dGl2ZV9sYWJlbHMpOiBEZWNsYXJlLgoJKiBlbWl0LXJ0bC5jIChza2lwX2NvbnNlY3V0aXZlX2xhYmVscyk6IE5ldyBmdW5jdGlvbi4KCSogcmVvcmcuYyAocmVsYXhfZGVsYXlfc2xvdHMsIGRicl9zY2hlZHVsZSk6IFVzZSBpdC4KCSoganVtcC5jIChmb2xsb3dfanVtcHMpOiBTYXkgd2hhdCBudWxsIHJldHVybiB2YWx1ZXMgbWVhbi4KCjIwMDQtMDUtMjggIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8xMzI1MAoJKiBjb25maWcvc2gvc2gubWQgKHJvdGxzaTMpOiBVc2UgZW1pdF9tb3ZlX2luc24uCgoyMDA0LTA1LTI3ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC90LWxpbnV4IChTSExJQl9NQVBGSUxFUyk6IFVzZSBzaCBzcGVjaWZpYwoJbGliZ2NjLXN0ZC52ZXIuCgkqIGNvbmZpZy9zaC9saWJnY2Mtc3RkLnZlcjogTmV3IGZpbGUuCgoyMDA0LTA1LTI3ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYzogUmV2ZXJ0IGNoYW5nZSBvZiAyMDA0LTA1LTI2LgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBSZXZlcnQgY2hhbmdlIG9mIDIwMDQtMDUtMjcuCgoyMDA0LTA1LTI3ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWM6IFJlbW92ZSAtLWVuYWJsZS10cmVlLWJyb3dzZXIgb3B0aW9uLgoJRGVmaW5lIFRSRUVCUk9XU0VSIHdoZW4gYWNfdHJlZV9jaGVja2luZyBpcyBkZWZpbmVkLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDA0LTA1LTI3ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogUmVzdG9yZSBzYW5pdHkgY2hlY2sgb24KCXRoZSBzaXplIG9mIHRoZSB0eXBlIGJlZm9yZSBjbGVhcmluZy4KCjIwMDQtMDUtMjcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNmZ2J1aWxkLmMgKGNvbnRyb2xfZmxvd19pbnNuX3ApOiBOb3RpY2Ugbm9yZXR1cm4gY2FsbAoKMjAwNC0wNS0yNyAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbWJpbmUuYyAoZ2VuX2JpbmFyeSk6IFJlbW92ZS4KCShrbm93bl9jb25kLCBzaW1wbGlmeV9zaGlmdF9jb25zdAoJZmluZF9zcGxpdF9wb2ludCwgY29tYmluZV9zaW1wbGlmeV9ydHgsCglzaW1wbGlmeV9pZl90aGVuX2Vsc2UsIHNpbXBsaWZ5X3NldCwKCXNpbXBsaWZ5X2xvZ2ljYWwsIGV4cGFuZF9maWVsZF9hc3NpZ25tZW50LAoJZXh0cmFjdF9sZWZ0X3NoaWZ0LCBmb3JjZV90b19tb2RlLAoJaWZfdGhlbl9lbHNlX2NvbmQsIGFwcGx5X2Rpc3RyaWJ1dGl2ZV9sYXcsCglzaW1wbGlmeV9hbmRfY29uc3RfaW50LCBzaW1wbGlmeV9zaGlmdF9jb25zdCwKCWdlbl9sb3dwYXJ0X2Zvcl9jb21iaW5lLCBzaW1wbGlmeV9jb21wYXJpc29uLAoJcmV2ZXJzZWRfY29tcGFyaXNvbik6IFJlcGxhY2Ugd2l0aAoJc2ltcGxpZnlfZ2VuX2JpbmFyeSwgc2ltcGxpZnlfZ2VuX3JlbGF0aW9uYWwgb3IKCWRpc3RyaWJ1dGVfYW5kX3NpbXBsaWZ5X3J0eC4KCShkaXN0cmlidXRlX2FuZF9zaW1wbGlmeV9ydHgpOiBOZXcgZnVuY3Rpb24uCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uKToKCVVzZSBub256ZXJvX2JpdHMgdG8gc2ltcGxpZnkgQU5EcyB3aGVyZSB3ZSBhcmUKCXR1cm5pbmcgb2ZmIGJpdHMgYWxyZWFkeSBrbm93biB0byBiZSBvZmYgaW4gT1AwLgoKMjAwNC0wNS0yNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMTQ0NzgKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocmVnX29yX25lZ19zaG9ydF9vcGVyYW5kKTogRG9uJ3QgYWxsb3cgemVyby4KCjIwMDQtMDUtMjcgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCglQUiBtaWRkbGUtZW5kLzE0MDg0CgkqIGVtaXQtcnRsLmMgKGdlbl9ydHhfUkVHX29mZnNldCk6IEFkanVzdCB0aGUgb2Zmc2V0IGFjY29yZGluZwoJdG8gc2l6ZSBvZiBkZWNsLgoKMjAwNC0wNS0yNiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSLzE0OTI0CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHNwZV9leHBhbmRfc3R2X2J1aWx0aW4pOiBOZXcuCgoyMDA0LTA1LTI2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHRyZWUuaDogRml4IGNvbW1lbnQgdHlwby4KCjIwMDQtMDUtMjcgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGdpbXBsaWZ5LmMgKGNvbXBhcmVfY2FzZV9sYWJlbHMpOiBOZXcgZnVuY3Rpb24uCgkoZ2ltcGxpZnlfc3dpdGNoX2V4cHIpOiBTb3J0IGNhc2UgbGFiZWxzLCBhbmQgbWFrZSBzdXJlIHRoZQoJbGFzdCBsYWJlbCBpbiB0aGUgbGFiZWwgdmVjdG9yIGlzIHRoZSBkZWZhdWx0IGNhc2UuCgkqIHRyZWUtY2ZnLmMgKGdyb3VwX2Nhc2VfbGFiZWxzKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX3RyZWVfY2ZnKTogQ2xlYW51cCByZWR1bmRhbnQgbGFiZWxzIGFuZCBncm91cCBjYXNlIGxhYmVscwoJYmVmb3JlIGNyZWF0aW5nIGVkZ2VzLgoJKGNsZWFudXBfZGVhZF9sYWJlbHMpOiBIYW5kbGUgR09UT19FWFBScy4KCShmaW5kX2Nhc2VfbGFiZWxfZm9yX3ZhbHVlKTogVXNlIGEgYmluYXJ5IHNlYXJjaCB0byBmaW5kIHRoZQoJY2FzZSBsYWJlbCBmb3IgdGhlIGdpdmVuIHZhbHVlLgoJKiB0cmVlLWdpbXBsZS5jOiBNZW50aW9uIHRoYXQgbGFiZWxzIGFyZSBzb3J0ZWQsIGFuZCB0aGF0IHRoZQoJbGFzdCBsYWJlbCBtdXN0IGJlIHRoZSBkZWZhdWx0LgoKMjAwNC0wNS0yNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2ZnY2xlYW51cC5jICh0cnlfb3B0aW1pemVfY2ZnKTogRG8gbm90IG1lcmdlIGFjcm9zcyBqdW1wdGFibGVzLgoKMjAwNC0wNS0yNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoVU5TUEVDVl9FSF9SRVRVUk4pOiBLaWxsLgoJKGVoX3JldHVybik6IFVzZSBqdW1wX2luc24uCgkoZWhfcmV0dXJuX3NpLCBlaF9yZXR1cm5fZGkpOiBDaGFuZ2UgcGF0dGVybiB0byBqdW1wIGluc3RydWN0aW9uLgoKMjAwNC0wNS0yNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2ZnY2xlYW51cC5jICh0cnlfZm9yd2FyZF9lZGdlcyk6IERvIG5vdCBjaGVjayBsb29wIHN0cnVjdHVyZSB3aGVuCglub3QgbG9vcCBvcHRpbWl6aW5nLgoKMjAwNC0wNS0yNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZXhjZXB0LmMgKGNhbl90aHJvd19pbnRlcm5hbCk6IE5vdGljZSBSRVNYIGluc3RydWN0aW9ucy4KCjIwMDQtMDUtMjYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RhbnQpIDxJTlRFR0VSX1RZUEU+OiBQYXNzIHRoZSBtaW5pbXVtCglvZiB0aGUgdHdvIHNpemVzIHRvIGFzc2VtYmxlX2ludGVnZXIuCgoyMDA0LTA1LTI1ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAodGh1bWJfZXhpdCwgdGh1bWJfdW5leHBhbmRlZF9lcGlsb2d1ZSk6IFJlbW92ZQoJcG9pbnRsZXNzICNpZmRlZi4KCjIwMDQtMDQtMjUgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAodG9wX2J1aWxkZGlyKTogRGVmaW5lIHRvIC4KCjIwMDQtMDUtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjIChnY2NfY3ZfbGQpOiBQcmVmZXIgaW4tdHJlZSBsZCBvdmVyIHdoYXRldmVyIHRoZQoJdG9wLWxldmVsIGRldGVjdHMsIGV4Y2VwdCB3aGVuIGluLXRyZWUgbGQgaXMgYmVpbmcgY3Jvc3MtYnVpbHQuCgkoZ2NjX2N2X2FzKTogTGlrZXdpc2UgZm9yIGFzLiAgVXNlIEFTX0ZPUl9UQVJHRVQgb3RoZXJ3aXNlLCBhbmQKCXRoZW4gQVMgb25seSBpZiB0YXJnZXQgaXMgaG9zdC4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwNC0wNS0yNSAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2FsbG9jKTogQ2FsbCBtYWtlX2FjY3VyYXRlX2xpdmVfYW5hbHlzaXMuCgkocmVjb3JkX29uZV9jb25mbGljdCk6IFJlbW92ZSBkZWFkIGNvZGUuCgkobWFya19yZWdfY2xvYmJlcik6IFJlbW92ZSBBVFRSSUJVVEVfVU5VU0VEIGZvciBwYXJhbWV0ZXIgZGF0YS4KCShiYl9pbmZvKTogTmV3IHN0cnVjdHVyZS4KCShCQl9JTkZPLCBCQl9JTkZPX0JZX0lOREVYKTogTmV3IG1hY3Jvcy4KCShhbGxvY2F0ZV9iYl9pbmZvLCBmcmVlX2JiX2luZm8sIG1hcmtfcmVnX2NoYW5nZSwKCWNhbGN1bGF0ZV9sb2NhbF9yZWdfYmJfaW5mbywgc2V0X3VwX2JiX3J0c19udW1iZXJzLCBycG9zdF9jbXAsCgltb2RpZnlfYmJfcmVnX3BhdiwgY2FsY3VsYXRlX3JlZ19wYXYsCgltYWtlX2FjY3VyYXRlX2xpdmVfYW5hbHlzaXMpOiBOZXcgZnVuY3Rpb25zLgoKMjAwNC0wNS0yNSAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGFsaWFzLmMgKGluaXRfYWxpYXNfYW5hbHlzaXMpOiBVc2UgZ2djX2NhbGxvYyBpbnN0ZWFkIG9mCgl4cmVhbGxvYy4KCShlbmRfYWxpYXNfYW5hbHlzaXMpOiBVc2UgZ2djX2ZyZWUgaW5zdGVhZCBmbyBmcmVlLgoKMjAwNC0wNS0yNSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzE1NTQ2CgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQVNNX09VVFBVVF9GREVTQyk6IE1hcmsgdGhlIERFQ0wKCWFzIG5lZWRlZCB0byBiZSBvdXRwdXR0ZWQuCgoyMDA0LTA1LTI1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBidWlsdGlucy5kZWYgKF9fYnVpbHRpbl9leHBlY3QpOiBNYXJrIHRoZSBmdW5jdGlvbiBhcyBjb25zdCZub3Rocm93LgoKMjAwNC0wNS0yNSAgQXlhbCBaYWtzICA8emFrc0BpbC5pYm0uY29tPgoJTW9zdGFmYSBIYWdvZyAgPG11c3RhZmFAaWwuaWJtLmNvbT4KCgkqIE1ha2VmaWxlLmluIChtb2R1bG8tc2NoZWQubywgZGRnLm8pOiBOZXcuCgkqIGRkZy5oLCBkZGcuYywgbW9kdWxvLXNjaGVkLmM6IE5ldyBmaWxlcy4KCSogY2ZnbGF5b3V0LmMgKGR1cGxpY2F0ZV9pbnNuX2NoYWluKTogUmVtb3ZlICJzdGF0aWMiIGFuZCBwdXNoCglpbnRlcm5hbHMgdG8gImR1cGljYXRlX2luc24iLgoJKGR1cGxpY2F0ZV9pbnNuKTogTmV3IGZ1bmN0aW9uLgoJKiBjZmdsYXlvdXQuaCAoZHVwbGljYXRlX2luc25fY2hhaW4sIGR1cGxpY2F0ZV9pbnNuKTogTmV3CglkZWNsYXJhdGlvbnMuCgkqIGNvbW1vbi5vcHQgKGZtb2R1bG8tc2NoZWQpOiBOZXcgZmxhZy4KCSogZGYuYyAoZGZfYmJfcmVnbm9fbGFzdF91c2VfZmluZCwgZGZfYmJfcmVnbm9fZmlyc3RfZGVmX2ZpbmQpOgoJUmVtb3ZlIHN0YXRpYyBhbmQgZm9yd2FyZCBkZWNsYXJhdGlvbi4KCShkZl9maW5kX2RlZiwgZGZfcmVnX3VzZWQsIGRmX2JiX3JlZ25vX2xhc3RfZGVmX2ZpbmQpOiBOZXcKCWZ1bmN0aW9ucy4KCSogZGYuaCAoZGZfYmJfcmVnbm9fbGFzdF91c2VfZmluZCwgZGZfYmJfcmVnbm9fZmlyc3RfZGVmX2ZpbmQsCglkZl9iYl9yZWdub19sYXN0X2RlZl9maW5kLCBkZl9maW5kX2RlZiwgZGZfcmVnX3VzZWQpOiBOZXcKCWRlY2xhcmF0aW9ucy4KCSogZmxhZ3MuaCAoZmxhZ19tb2R1bG9fc2NoZWQpOiBOZXcgZmxhZy4KCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSBtb2R1bG8tc2NoZWQgZmxhZy4KCSogcGFyYW1zLmRlZiAobWF4LXNtcy1sb29wLW51bWJlciwgc21zLW1heC1paS1mYWN0b3IsCglzbXMtZGZhLWhpc3RvcnksIHNtcy1sb29wLWF2ZXJhZ2UtY291bnQtdGhyZXNob2xkKTogTmV3CglwYXJhbWV0ZXJzLgoJKiBwYXJhbXMuaCAoTUFYX1NNU19MT09QX05VTUJFUiwgU01TX01BWF9JSV9GQUNUT1IsCglTTVNfREZBX0hJU1RPUlksIFNNU19MT09QX0FWRVJBR0VfQ09VTlRfVEhSRVNIT0xEKTogTmV3CglwYXJhbWV0ZXJzLgoJKiBwYXNzZXMuYyAoInNtcyIsICJzbXMtdmNnIik6IE5ldyBkdW1wcy4KCShyZXN0X29mX2hhbmRsZV9zY2hlZCk6IENhbGwgc21zX3NjaGVkdWxlLgoJKiBydGwuaCAoc21zX3NjaGVkdWxlKTogTmV3IGRlY2xhcmF0aW9uLgoJKiB0aW1ldmFyLmRlZiAoVFZfU01TKTogTmV3LgoJKiB0b3BsZXYuYyAoZmxhZ19tb2R1bG9fc2NoZWQpOiBJbml0aWFsaXplLgoJKGZfb3B0aW9ucyk6IEhhbmRsZSAtZm1vZHVsby1zY2hlZCBvcHRpb24uCgkqIGRvY3MvaW52b2tlLnRleGk6IERvY3VtZW50IC1mbW9kdWxvLXNjaGVkICYgLWRtIG9wdGlvbnMuCgkqIGRvY3MvcGFzc2VzLnRleGk6IERvY3VtZW50IG5ldyBTTVMgcGFzcy4KCjIwMDQtMDUtMjUgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBydGxob29rcy5vLgoJKHJ0bGFuYWwubyk6IERlcGVuZCBvbiBmdW5jdGlvbi5oLgoJKGNzZS5vKTogRGVwZW5kIG9uIHJ0bGhvb2tzLWRlZi5oLgoJKGNvbWJpbmUubyk6IERlcGVuZCBvbiBydGxob29rcy1kZWYuaC4KCShydGxob29rcy5vKTogTmV3IHJ1bGUuCgkqIGNvbWJpbmUuYzogSW5jbHVkZSBydGxob29rcy1kZWYuaC4KCShub256ZXJvX2JpdHMsIGNhY2hlZF9ub256ZXJvX2JpdHMsIG5vbnplcm9fYml0czEsCgludW1fc2lnbl9iaXRfY29waWVzLCBjYWNoZWRfbnVtX3NpZ25fYml0X2NvcGllcywKCW51bV9zaWduX2JpdF9jb3BpZXMxKTogTW92ZSBtb3N0IG9mIHRoZSBjb2RlIHRvIHJ0bGFuYWwuYy4KCShyZWdfbm9uemVyb19iaXRzX2Zvcl9jb21iaW5lLAoJcmVnX251bV9zaWduX2JpdF9jb3BpZXNfZm9yX2NvbWJpbmUpOiBOZXcgZnVuY3Rpb25zIGhvbGRpbmcKCXRoZSByZW1uYW50cyBvZiB0aGUgYWJvdmUuCgkoY29tYmluZV9ydGxfaG9va3MpOiBOZXcuCgkoY29tYmluZV9pbnN0cnVjdGlvbnMpOiBTZXQgcnRsX2hvb2tzIGluc3RlYWQgb2YgZ2VuX2xvd3BhcnQuCgkqIGNzZS5jOiBJbmNsdWRlIHJ0bGhvb2tzLWRlZi5oLgoJKGNzZV9ydGxfaG9va3MpOiBOZXcuCgkoY3NlX21haW4pOiBTZXQgcnRsX2hvb2tzIGluc3RlYWQgb2YgZ2VuX2xvd3BhcnQuCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0KTogUmVtb3ZlLgoJKGdlbl9sb3dwYXJ0X2dlbmVyYWwpOiBNb3ZlIHRvIHJ0bGhvb2tzLmMuCgkqIHJ0bC5oIChub256ZXJvX2JpdHMsIG51bV9zaWduX2JpdF9jb3BpZXMsCglzdHJ1Y3QgcnRsX2hvb2tzLCBydGxfaG9va3MsIGdlbmVyYWxfcnRsX2hvb2tzKTogTmV3LgoJKGdlbl9sb3dwYXJ0X2dlbmVyYWwpOiBSZW1vdmUuCgkoZ2VuX2xvd3BhcnQpOiBUZW1wb3JhcmlseSByZWRlZmluZSBhcyBhIG1hY3JvLgoJKiBydGxhbmFsLmM6IEluY2x1ZGUgZnVuY3Rpb24uaC4KCShub256ZXJvX2JpdHMsIGNhY2hlZF9ub256ZXJvX2JpdHMsIG5vbnplcm9fYml0czEsCgludW1fc2lnbl9iaXRfY29waWVzLCBjYWNoZWRfbnVtX3NpZ25fYml0X2NvcGllcywKCW51bV9zaWduX2JpdF9jb3BpZXMxKTogTmV3LCBmcm9tIGNvbWJpbmUuYy4KCSogcnRsaG9va3MuYzogTmV3IGZpbGUuCgkqIHJ0bGhvb2tzLWRlZi5oOiBOZXcgZmlsZS4KCjIwMDQtMDUtMjUgIFN2ZWluIEUuIFNlbGRhbCAgPFN2ZWluLlNlbGRhbEBzb2xpZGFzLmNvbT4KCgkqIGNvbmZpZy9hdnIvYXZyLmggKExPTkdfTE9OR19UWVBFX1NJWkUpOiBDaGFuZ2VkIGxvbmcgbG9uZyB0eXBlCgl0byBzdXBwb3J0IDMyLWJpdCAtbWludDggbW9kZS4KCgkqIGRvYy9pbnZva2UudGV4aSAoLW1pbnQ4KTogQWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIC1taW50OAoJb3B0aW9uIGluIHRoZSBBVlIgYXJjaGl0ZWN0dXJlLgoKMjAwNC0wNS0yNCAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCB0aGF0IGRlamFnbnUgMS40LjQgaXMgcmVxdWlyZWQuCgoyMDA0LTA1LTI0ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGludGwuaCAob3Blbl9xdW90ZSwgY2xvc2VfcXVvdGUpOiBOZXcuCgkqIGludGwuYyAob3Blbl9xdW90ZSwgY2xvc2VfcXVvdGUpOiBOZXcuCgkoZ2NjX2luaXRfbGliaW50bCk6IFNldCB0aGVtLgoJKiBwcmV0dHktcHJpbnQuYzogSW5jbHVkZSAiaW50bC5oIi4KCShwcF9iYXNlX2Zvcm1hdF90ZXh0KTogU3VwcG9ydCAncScgZm9ybWF0IGZsYWcgYW5kICVgIGFuZCAlJwoJZm9ybWF0cy4gIFVzZSAnIGluc3RlYWQgb2YgYCBpbiBjb21tZW50cy4KCSogYy1mb3JtYXQuYyAoZ2NjX2RpYWdfZmxhZ19zcGVjcywgZ2NjX2N4eGRpYWdfZmxhZ19zcGVjcywKCWdjY19kaWFnX2NoYXJfdGFibGUsIGdjY19jZGlhZ19jaGFyX3RhYmxlLCBnY2NfY3h4ZGlhZ19jaGFyX3RhYmxlLAoJZm9yYW10X3R5cGVzX29yaWcpOiBEZXNjcmliZSB0aGVzZSBuZXcgZm9ybWF0cy4KCShkZWNvZGVfZm9ybWF0X2F0dHIsIGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdCwKCWNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBVc2UgdGhlc2UgbmV3IGZvcm1hdHMuCgkoc3RhdHVzX3dhcm5pbmcpOiBVc2UgQVRUUklCVVRFX0dDQ19ESUFHLgoJKiB0b3BsZXYuYyAoQVRUUklCVVRFX0dDQ19ESUFHKTogSW5jcmVhc2UgcmVxdWlyZWQgR0NDIHZlcnNpb24gdG8KCWNoZWNrIHRoZXNlIGZvcm1hdHMgdG8gMy41LgoKMjAwNC0wNS0yNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBNYWtlZmlsZS5pbiAoQ1BQTElCUyk6IFJlbmFtZWQgdG8gQ1BQTElCLgoJKEJBQ0tFTkQpOiBSZWZsZWN0IHRoaXMuCgkoTElCREVQUyk6IE1vdmUgQ1BQTElCIGJlZm9yZSBMSUJJQkVSVFkuCgkoTElCUyk6IExpa2V3aXNlLgoKMjAwNC0wNS0yNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE0MTk3CgkqIGJ1aWx0aW5zLmM6IEluY2x1ZGUgInRyZWUtZ2ltcGxlLmgiCgkocmVhZG9ubHlfZGF0YV9leHByKTogVXNlIGdldF9iYXNlX2FkZHJlc3MuICBNYWtlIHN1cmUgdG8gY2FsbAoJZGVjbF9yZWFkb25seV9zZWN0aW9uIG9ubHkgb24gdHJlZXMgaXQgY2FuIGhhbmRsZS4KCSogdHJlZS1naW1wbGUuYyAoZ2V0X2Jhc2VfYWRkcmVzcyk6IEFjY2VwdCBTVFJJTkdfQ1NUIGFuZAoJQ09OU1RSVUNUT1IgZXhwcmVzc2lvbnMuCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwNC0wNS0yMyAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglNb3ZlIGxpYmNwcCB0byB0aGUgdG9wbGV2ZWwuCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgcmVmZXJlbmNlcyB0byBsaWJjcHAgZmlsZXMsCgl1c2UgQ1BQTElCUyBpbnN0ZWFkIG9mIGxpYmNwcC5hLiAgRGVmaW5lIFNZTVRBQl9ICglhbmQgY2hhbmdlIGhhc2h0YWJsZS5oIHRvIHRoYXQuCgkqIGFjbG9jYWwubTQgKGdjY19BQ19IRUFERVJfU1REQk9PTCwKCWdjY19BQ19IRUFERVJfU1RSSU5HLCBnY2NfQUNfQ19fQk9PTCk6IFJlbW92ZS4KCSogY29uZmlndXJlLmFjIChnY2NfQUNfQ19fQk9PTCwgSEFWRV9VQ0hBUik6IFJlbW92ZSB0ZXN0cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGMtcHBvdXRwdXQuYzogSW5jbHVkZSAuLi9saWJjcHAvaW50ZXJuYWwuaCBpbnN0ZWFkIG9mIGNwcGhhc2guaC4KCSogY3BwY2hhcnNldC5jOiBSZW1vdmVkLgoJKiBjcHBlcnJvci5jOiBSZW1vdmVkLgoJKiBjcHBleHAuYzogUmVtb3ZlZC4KCSogY3BwZmlsZXMuYzogUmVtb3ZlZC4KCSogY3BwaGFzaC5jOiBSZW1vdmVkLgoJKiBjcHBoYXNoLmg6IFJlbW92ZWQuCgkqIGNwcGluaXQuYzogUmVtb3ZlZC4KCSogY3BwbGV4LmM6IFJlbW92ZWQuCgkqIGNwcGxpYi5jOiBSZW1vdmVkLgoJKiBjcHBsaWIuaDogUmVtb3ZlZC4KCSogY3BwbWFjcm8uYzogUmVtb3ZlZC4KCSogY3BwcGNoLmM6IFJlbW92ZWQuCgkqIGNwcHRyYWQuYzogUmVtb3ZlZC4KCSogY3BwdWNuaWQuaDogUmVtb3ZlZC4KCSogY3BwdWNuaWQucGw6IFJlbW92ZWQuCgkqIGNwcHVjbmlkLnRhYjogUmVtb3ZlZC4KCSogaGFzaHRhYmxlLmM6IFJlbW92ZWQuCgkqIGhhc2h0YWJsZS5oOiBSZW1vdmVkLgoJKiBsaW5lLW1hcC5jOiBSZW1vdmVkLgoJKiBsaW5lLW1hcC5oOiBSZW1vdmVkLgoJKiBta2RlcHMuYzogUmVtb3ZlZC4KCSogbWtkZXBzLmg6IFJlbW92ZWQuCgkqIHN0cmluZ3Bvb2wuaDogSW5jbHVkZSBzeW10YWIuaCBpbnN0ZWFkIG9mIGhhc2h0YWJsZS5oLgoJKiB0cmVlLmg6IEluY2x1ZGUgc3ltdGFiLmggaW5zdGVhZCBvZiBoYXNodGFibGUuaC4KCSogc3lzdGVtLmggKE9fTk9OQkxPQ0ssIE9fTk9DVFRZKTogRG8gbm90IGRlZmluZS4KCjIwMDQtMDUtMjMgUGFvbG8gQm9uemluaSA8Ym9uemluaUBnbnUub3JnPgoKCSogZ2NjLmMgKHN0cnVjdCBwcmVmaXhfbGlzdCk6IEFkZCBmb3J3YXJkIGRlY2xhcmF0aW9uLgoJKGRvX3NwZWNfcGF0aCk6IE5ldyBmdW5jdGlvbiwgZXh0cmFjdGVkIGZyb20uLi4KCShkb19zcGVjXzEpIDwnRCc+OiAuLi4gaGVyZS4gIERyb3Agc3VwcG9ydCBmb3IKCVNQQUNFX0FGVEVSX0xfT1BUSU9OLgoJKGRvX3NwZWNfMSkgPCdJJz46IFVzZSBkb19zcGVjX3BhdGguCgkocHJvY2Vzc19jb21tYW5kKTogRG8gbm90IHN0b3JlIHRoZSAnaW5jbHVkZScgc3VmZml4CglpbiBpbmNsdWRlX3ByZWZpeGVzLgoJKiBzeXN0ZW0uaDogUG9pc29uIFNQQUNFX0FGVEVSX0xfT1BUSU9OLgoKMjAwMi0wNS0yMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKG5vbl9sdmFsdWUpOiBFeHBsaWNpdGx5IGxpc3QgdGhlIHRyZWUgY29kZXMgdGhhdAoJbmVlZCB0byBiZSB3cmFwcGVkIGJ5IE5PTl9MVkFMVUVfRVhQUiwgaW5zdGVhZCBvZiB0aG9zZSB0aGF0IGRvbid0LgoKMjAwNC0wNS0yMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvZ2NjLnRleGksIGRvYy9nY2NpbnQudGV4aSwgZG9jL2luY2x1ZGUvZ2NjLWNvbW1vbi50ZXhpOgoJVXBkYXRlIGJhc2VkIG9uIHByaW50ZWQgbWFudWFsLiAgRW5hYmxlIHNldHRpbmcgb2Ygb2Zmc2V0cyBmb3IKCUZTRlBSSU5UIGFuZCBtb3ZlIGl0IHRvIGdjYy1jb21tb24udGV4aS4KCSogZG9jL2djYy50ZXhpOiBVcGRhdGUgRlNGIHByaW50aW5nIGRldGFpbHMuCgkqIGRvYy9nY2NpbnQudGV4aTogUmVtb3ZlIEZTRiBwcmludGluZyBkZXRhaWxzLgoKMjAwNC0wNS0yMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb25maWcvcnM2MDAwL3QtcnM2MDAwOiBSZW1vdmUgdGhlIGRpc2FibGluZyAtV2Vycm9yLgoKMjAwNC0wNS0yMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJzdHIsIGV4cGFuZF9idWlsdGluX3N0cmNociwKCWV4cGFuZF9idWlsdGluX3N0cnJjaHIsIGV4cGFuZF9idWlsdGluX3N0cnBicmssCglleHBhbmRfYnVpbHRpbl9tZW1wY3B5LCBleHBhbmRfYnVpbHRpbl9tZW1jbXAsCglleHBhbmRfYnVpbHRpbl9zdHJjbXAsIGV4cGFuZF9idWlsdGluX3N0cm5jbXAsCglleHBhbmRfYnVpbHRpbl9zdHJjYXQsIHN0ZF9leHBhbmRfYnVpbHRpbl92YV9zdGFydCwKCXN0ZF9leHBhbmRfYnVpbHRpbl92YV9hcmcsIGV4cGFuZF9idWlsdGluX3ZhX2NvcHksCglleHBhbmRfYnVpbHRpbl9zaWduYml0LCBmb2xkX2J1aWx0aW5fY2FicywKCWZvbGRfYnVpbHRpbl9sb2dhcml0aG0sIGZvbGRfYnVpbHRpbl9tZW1wY3B5LAoJZm9sZF9idWlsdGluX3NpZ25iaXQsIGZvbGRfYnVpbHRpbl9pc2FzY2lpLAoJZm9sZF9idWlsdGluX3RvYXNjaWksIGZvbGRfYnVpbHRpbl9pc2RpZ2l0LAoJZm9sZF9idWlsdGluXzEsIGJ1aWxkX2Z1bmN0aW9uX2NhbGxfZXhwciwKCXNpbXBsaWZ5X2J1aWx0aW5fc3RyY2hyLCBzaW1wbGlmeV9idWlsdGluX3N0cnJjaHIsCglzaW1wbGlmeV9idWlsdGluX3N0cnBicmssIHNpbXBsaWZ5X2J1aWx0aW5fc3RybmNweSwKCXNpbXBsaWZ5X2J1aWx0aW5fbWVtY21wLCBzaW1wbGlmeV9idWlsdGluX3N0cmNtcCwKCXNpbXBsaWZ5X2J1aWx0aW5fc3RybmNtcCwgc2ltcGxpZnlfYnVpbHRpbl9zdHJuY2F0LAoJc2ltcGxpZnlfYnVpbHRpbl9zdHJzcG4sIHNpbXBsaWZ5X2J1aWx0aW5fc3RyY3NwbiwKCXNpbXBsaWZ5X2J1aWx0aW5fZnB1dHMsIHNpbXBsaWZ5X2J1aWx0aW5fc3ByaW50Zik6IFJlcGxhY2UgY2FsbHMKCXRvIGJ1aWxkIHdpdGggY2FsbHMgdG8gYnVpbGQyLCBidWlsZDMgb3Igb21pdF9vbmVfb3BlcmFuZC4KCjIwMDQtMDUtMjIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19maWxlX3N0YXJ0KTogRW1pdCBhIC5nY2NfY29tcGlsZWRfbG9uZ1hYCglzZWN0aW9uIHdoZW4gZ2VuZXJhdGluZyBFQUJJIGNvZGUuCgoyMDA0LTA1LTIyICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiAxNTU0NgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG91dHB1dF9waWNfYWRkcl9jb25zdCA8Y2FzZSBTWU1CT0xfUkVGPik6CglDYWxsIG1hcmtfZGVjbF9yZWZlcmVuY2VkIG9uIHRoZSBTWU1CT0xfUkVGX0RFQ0wuCgoyMDA0LTA1LTIyICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3RydXRodmFsdWVfY29udmVyc2lvbik6IEhhbmRsZQoJVU5FUV9FWFBSLCBVTkxFX0VYUFIsIFVOR0VfRVhQUiwgVU5MVF9FWFBSLCBVTkdUX0VYUFIsCglPUkRFUkVEX0VYUFIsIGFuZCBVTk9SREVSRURfRVhQUiBhcyBjb21wYXJpc29uIG9wZXJhdG9ycywKCWkuZS4gc2V0IHRoZSB0eXBlIHRvIHRydXRodmFsdWVfdHlwZV9ub2RlIGFuZCByZXR1cm4uCgoyMDA0LTA1LTIyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9kZWNsKTogQWRkIHBvc3NpYmx5X2lubGluZWQgYml0LgoJKERFQ0xfUE9TU0lCTFlfSU5MSU5FRCk6IE5ldyBhY2Nlc3NvciBtYWNyby4KCSogY2dyYXBoLmg6IFJlbW92ZSBkZWNsYXJhdGlvbiBvZiBjZ3JhcGhfaW5saW5lX2hhc2guCgkqIGNncmFwaC5jOiBSZW1vdmUgZGVmaW5pdGlvbiBvZiBjZ3JhcGhfaW5saW5lX2hhc2guCgkoaGFzaF9ub2RlKTogUmV2ZXJ0IHRvIGhhc2hpbmcgREVDTF9VSUQuCgkoZXFfbm9kZSk6IFRha2UgdHdvIHBvaW50ZXJzIHRvIGNncmFwaF9ub2RlIHN0cnVjdHVyZXMuCglDb21wYXJlIERFQ0xfVUlEcy4KCShjZ3JhcGhfcmVtb3ZlX25vZGUpOiBQYXNzIHRoZSBub2RlIGRpcmVjdGx5IHRvIGh0YWJfZmluZF9zbG90LgoJKGNncmFwaF92YXJwb29sX2hhc2hfbm9kZSk6IFJlbmFtZSBoYXNoX3ZhcnBvb2xfbm9kZTsKCWhhc2ggb24gREVDTF9VSUQuCgkoZXFfY2dyYXBoX3ZhcnBvb2xfbm9kZSk6IFJlbmFtZSBlcV92YXJwb29sX25vZGU7IHRha2UgdHdvCglwb2ludGVycyB0byBjZ3JhcGhfdmFycG9vbF9ub2RlIHN0cnVjdHVyZXM7IGNvbXBhcmUgREVDTF9VSURzLgoJKGNncmFwaF9ub2RlKTogQWxsb2NhdGUgYSB0ZW1wb3Jhcnkgbm9kZSBvbiB0aGUgc3RhY2ssIGZpbGwgaW4KCWl0cyBERUNMIGZpZWxkLCBhbmQgcGFzcyB0aGF0IHRvIGh0YWJfZmluZF9zbG90LgoJKGNncmFwaF92YXJwb29sX25vZGUpOiBMaWtld2lzZS4KCShjZ3JhcGhfZnVuY3Rpb25fcG9zc2libHlfaW5saW5lZF9wKTogSWYgZ2xvYmFsIGluZm8gaXMgcmVhZHksCglyZXR1cm4gdGhlIERFQ0xfUE9TU0lCTFlfSU5MSU5FRCBiaXQuCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX21hcmtfaW5saW5lX2VkZ2UpOiBTZXQgREVDTF9QT1NTSUJMWV9JTkxJTkVECglpbnN0ZWFkIG9mIG11Y2tpbmcgd2l0aCBjZ3JhcGhfaW5saW5lX2hhc2guCgoyMDA0LTA1LTIyICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9jb250cmliLnRleGk6IEFkZCBnNzcgY29udHJpYnV0b3JzLgoKMjAwNC0wNS0yMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdGlvbik6IEZvcmJpZCBzaWJjYWxscyBpZiBhCgljYWxsZWUtY29waWVkIGFyZ3VtZW50IGlzIHN0b3JlZCBpbiB0aGUgY3VycmVudCBmdW5jdGlvbidzIGZyYW1lLgoKMjAwNC0wNS0yMiAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogVXBkYXRlIGZvciBhZGRfcGF0aCBjaGFuZ2UuCgoyMDA0LTA1LTIyICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGMub3B0IChXbWlzc2luZy1pbmNsdWRlLWRpcnMpOiBOZXcuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogUGFzcyB0cnVlIGZvciB1c2VyX3N1cHBsaWVkX3AKCXRvIGFkZF9wYXRoICgpIGZvciAtSSwgYnV0IGZhbHNlIGZvciBPUFRfaWRpcmFmdGVyLCBPUFRfaXF1b3RlIGFuZAoJT1BUX2lzeXN0ZW0uIEhhbmRsZSBjYXNlIE9QVF9XbWlzc2luZ19pbmNsdWRlX2RpcnMuCgkqIGMtaW5jcGF0aC5oIChhZGRfcGF0aCk6IEFkZCBmb3VydGggKGJvb2wpIGFyZ3VtZW50LgoJKiBjLWluY3BhdGguYyAoYWRkX2Vudl92YXJfcGF0aHMpOiBQYXNzIGZhbHNlIHRvIGFkZF9wYXRoICgpLgoJKGFkZF9zdGFuZGFyZF9wYXRocyk6IExpa2V3aXNlLgoJKHJlbW92ZV9kdXBsaWNhdGVzKSBbUkVBU09OX05PRU5UXTogV2FybiBpZiAtV21pc3NpbmctaW5jbHVkZS1kaXJzCglpcyB1c2VkIGFuZCB0aGUgZGlyZWN0b3J5IHdhcyB1c2VyLXN1cHBsaWVkIHZpYSAtSS4KCShhZGRfcGF0aCk6IFNldCBwLT51c2VyX3N1cHBsaWVkX3AuICBSZW1vdmUgZHVwbGljYXRlZCBjb2RlIGJ5Cgl1c2luZyBhZGRfY3BwX2Rpcl9wYXRoICgpLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9vcHRpb25zKTogQWRkIHdhcm5fbWlzc2luZ19pbmNsdWRlX2RpcnMuCgkoc3RydWN0IGNwcF9kaXIpOiBBZGQgdXNlcl9zdXBwbGllZF9wLgoJKiBkb2MvaW52b2tlLnRleGkgKFdhcm5pbmcgT3B0aW9ucyk6IERvY3VtZW50IG5ldyBvcHRpb24uCgoyMDA0LTA1LTIxICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfcmVhZF9mcm9tX2NvbnN0YW50X3N0cmluZyk6IENvbnZlcnQgcmVzdWx0IHRvCglyZXF1ZXN0ZWQgdHlwZS4KCjIwMDQtMDUtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnaW1wbGlmeS5jIChtb3N0bHlfY29weV90cmVlX3IpOiBEb24ndCBhdHRlbXB0IHRvIGNvcHkgZGVjbHMuCgkoY29weV9pZl9zaGFyZWRfcik6IERvbid0IGNvcHkgZGVjbHMsIHR5cGVzLCBjb25zdGFudHMsIEJJTkRzLgoJRG9uJ3QgbWFyayBWQV9BUkdfRVhQUnMgdm9sYXRpbGUgaGVyZS4KCShnaW1wbGlmeV9tb2RpZnlfZXhwcik6IFVuc2hhcmUgVFlQRV9TSVpFX1VOSVQuCgoyMDA0LTA1LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKHRyZWUtZHVtcC5vKTogRGVwZW5kIG9uIHRyZWUtaXRlcmF0b3IuaC4KCSogdHJlZS1kdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEdW1wIFNUQVRFTUVOVF9MSVNUcy4KCjIwMDQtMDUtMjEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkLCBmb2xkX3JlbGF0aW9uYWxfaGlfbG8sCglub25kZXN0cnVjdGl2ZV9mb2xkX2JpbmFyeV90b19jb25zdGFudCwKCWZvbGRfcmVhZF9mcm9tX2NvbnN0YW50X3N0cmluZyk6IFVzZSBmb2xkX2NvbnZlcnQgaW5zdGVhZCBvZiBjb252ZXJ0LgoJKiBidWlsdGlucy5jIChzaW1wbGlmeV9idWlsdGluLCBzaW1wbGlmeV9idWlsdGluX3N0cnN0ciwKCXNpbXBsaWZ5X2J1aWx0aW5fc3RyY2hyLCBzaW1wbGlmeV9idWlsdGluX3N0cnJjaHIsCglzaW1wbGlmeV9idWlsdGluX3N0cnBicmspOiBVc2UgZm9sZF9jb252ZXJ0IGluc3RlYWQgb2YgY29udmVydC4KCjIwMDQtMDUtMjEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1mbG93LWlubGluZS5oIChudW1faW1tZWRpYXRlX3VzZXMpOiBEb24ndCBhYm9ydCBpZiBERgoJaXMgTlVMTC4KCjIwMDQtMDUtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoT1BUSU9OX0RFRkFVTFRfU1BFQ1MpOiBJZiBTUEFSQ19CSV9BUkNILAoJb3ZlcnJpZGUgc3BhcmMuaCBkZWZpbml0aW9uLgoKMjAwNC0wNS0yMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmVlLmMgKGFycmF5X3R5cGVfbmVsdHMsIHNhdmVfZXhwciwgc3Vic3RpdHV0ZV9pbl9leHByLAoJZ2V0X3Vud2lkZW5lZCwgZ2V0X25hcnJvd2VyKTogUmVwbGFjZSBidWlsZCB3aXRoIGJ1aWxkMi4KCSogZm9sZC1jb25zdC5jIChuZWdhdGVfZXhwciwgYXNzb2NpYXRlX3RyZWVzLCBzaXplX2Jpbm9wLAoJZm9sZF9jb252ZXJ0LCBldmFsX3N1YnN0LCBvbWl0X29uZV9vcGVyYW5kLCBpbnZlcnRfdHJ1dGh2YWx1ZSwKCXBlZGFudGljX29taXRfb25lX29wZXJhbmQsIGRpc3RyaWJ1dGVfYml0X2V4cHIsCgltYWtlX2JpdF9maWVsZF9yZWYsIG9wdGltaXplX2JpdF9maWVsZF9jb21wYXJlLAoJZGVjb2RlX2ZpZWxkX3JlZmVyZW5jZSwgcmFuZ2VfYmlub3AsIG1ha2VfcmFuZ2UsCglidWlsZF9yYW5nZV9jaGVjaywgZm9sZF9yYW5nZV90ZXN0LCBmb2xkX3RydXRob3AsCglvcHRpbWl6ZV9taW5tYXhfY29tcGFyaXNvbiwgZXh0cmFjdF9tdWxkaXZfMSwKCWZvbGRfYmluYXJ5X29wX3dpdGhfY29uZGl0aW9uYWxfYXJnLCBmb2xkX21hdGhmbl9jb21wYXJlLAoJZm9sZF9pbmZfY29tcGFyZSwgZm9sZF9zaW5nbGVfYml0X3Rlc3QsIGZvbGQsCglmb2xkX3JlbGF0aW9uYWxfaGlfbG8sIG5vbmRlc3RydWN0aXZlX2ZvbGRfYmluYXJ5X3RvX2NvbnN0YW50KToKCUxpa2V3aXNlIHJlcGxhY2UgYnVpbGQgd2l0aCBlaXRoZXIgYnVpbGQyIG9yIGJ1aWxkMy4KCjIwMDQtMDUtMjAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBzeXN0ZW0uaDogUG9pc29uIE5PX1JFQ1VSU0lWRV9GVU5DVElPTl9DU0UuCgkqIGNhbGxzLmMgKHByZXBhcmVfY2FsbF9hZGRyZXNzKTogRG9uJ3QgdGVzdAoJTk9fUkVDVVJTSVZFX0ZVTkNUSU9OX0NTRS4KCSogY29uZmlnL2FyYy9hcmMuaCAoTk9fUkVDVVJTSVZFX0ZVTkNUSU9OX0NTRSk6IERvbid0IGRlZmluZS4KCSogY29uZmlnL2FybS9hcm0uaCAoTk9fUkVDVVJTSVZFX0ZVTkNUSU9OX0NTRSk6IExpa2V3aXNlLgoJKiBjb25maWcvYXZyL2F2ci5oIChOT19SRUNVUlNJVkVfRlVOQ1RJT05fQ1NFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKE5PX1JFQ1VSU0lWRV9GVU5DVElPTl9DU0UpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChOT19SRUNVUlNJVkVfRlVOQ1RJT05fQ1NFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pcDJrL2lwMmsuaCAoTk9fUkVDVVJTSVZFX0ZVTkNUSU9OX0NTRSk6IExpa2V3aXNlLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5oIChOT19SRUNVUlNJVkVfRlVOQ1RJT05fQ1NFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoTk9fUkVDVVJTSVZFX0ZVTkNUSU9OX0NTRSk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKE5PX1JFQ1VSU0lWRV9GVU5DVElPTl9DU0UpOiBMaWtld2lzZS4KCSogY29uZmlnL21jb3JlL21jb3JlLmggKE5PX1JFQ1VSU0lWRV9GVU5DVElPTl9DU0UpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChOT19SRUNVUlNJVkVfRlVOQ1RJT05fQ1NFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oIChOT19SRUNVUlNJVkVfRlVOQ1RJT05fQ1NFKToKCUxpa2V3aXNlLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oIChOT19SRUNVUlNJVkVfRlVOQ1RJT05fQ1NFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5oOiBSZW1vdmUgTk9fUkVDVVJTSVZFX0ZVTkNUSU9OX0NTRSBjb21tZW50LgoJKiBkb2MvdG0udGV4aSAoQ29zdHMpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBmb3IKCU5PX1JFQ1VSU0lWRV9GVU5DVElPTl9DU0UuCgoyMDA0LTA1LTIwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogdW53aW5kLWR3Mi1mZGUuYyAoZ2V0X2NpZV9lbmNvZGluZyk6IEhhbmRsZSBkd2FyZjMgQ0lFIGZvcm1hdC4KCSogdW53aW5kLWR3Mi5jIChleHRyYWN0X2NpZV9pbmZvKTogRGl0dG8uCgkoX1Vud2luZF9GcmFtZVN0YXRlKTogQ2hhbmdlIHJldGFkZHJfY29sdW1uIHRvIHdvcmQgdHlwZS4KCjIwMDQtMDUtMjAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMzA3NAoJKiBmb2xkLWNvbnN0LmMgKHN0cmlwX2NvbXBvdW5kX2V4cHIpOiBEZWxldGUgZnVuY3Rpb24uCgkoY291bnRfY29uZCk6IERlbGV0ZSBmdW5jdGlvbi4KCShmb2xkX2JpbmFyeV9vcF93aXRoX2NvbmRpdGlvbmFsX2FyZyk6IE9ubHkgcGVyZm9ybSB0cmFuc2Zvcm1hdGlvbnMKCSJhICsgKGI/YzpkKSAtPiBiID8gYStjIDogYStkIiBhbmQgIihiP2M6ZCkgKyBhIC0+IGIgPyBjK2EgOiBkK2EiCgl3aGVuIGEgaXMgY29uc3RhbnQuICBUaGlzIGdyZWF0bHkgc2ltcGxpZmllcyB0aGlzIHJvdXRpbmUuCgoJKiB0cmVlLmMgKHNhdmVkX2V4cHJfcCk6IERlbGV0ZSBmdW5jdGlvbi4KCSogdHJlZS5oIChzYXZlZF9leHByX3ApOiBEZWxldGUgZnVuY3Rpb24gcHJvdG90eXBlLgoKMjAwNC0wNS0yMCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb21tb24ub3B0IChmdHJlZS1sb29wLW9wdGltaXplKTogUmVtb3ZlLgoKMjAwNC0wNS0yMCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AZGViaWFuLm9yZz4KCgkqIE1ha2VmaWxlLmluIChBUl9GT1JfVEFSR0VULCBSQU5MSUJfRk9SX1RBUkdFVCkKCShOTV9GT1JfVEFSR0VUKTogVXNlIDo9IGFuZCAkKHNoZWxsKS4KCShtYWludmVyc2lvbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgoyMDA0LTA1LTIwICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcmVvcmcuYyAoZGVsZXRlX2Zyb21fZGVsYXlfc2xvdCk6IElmIHdlIGhhdmUgYSBiYXJyaWVyIGFmdGVyIHRoZQoJc2VxdWVuY2UgY29udGFpbmluZyB0aGUgaW5zbiB0byBiZSBkZWxldGVkLCBhbHdheXMgcmVlbWl0IGl0LgoKMjAwNC0wNS0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiAxNTQ1NAoJKiB0cmVlLW5lc3RlZC5jIChnZXRfY2hhaW5fZGVjbCk6IENyZWF0ZSBhIFBBUk1fREVDTCBieSBoYW5kLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fc3RhcnQpOiBFeHBhbmQgc3RhdGljX2NoYWluX2RlY2wgYnkgaGFuZC4KCSogZ2ltcGxpZnkuYyAoY3JlYXRlX3RtcF92YXJfbmFtZSk6IEV4cG9ydC4KCSogdHJlZS1naW1wbGUuaCAoY3JlYXRlX3RtcF92YXJfbmFtZSk6IERlY2xhcmUuCgoyMDA0LTA1LTIwICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHJzNjAwMC5jIChwcmludF9vcGVyYW5kKSA8Y2FzZSAneic+OiBDYWxsCgltYXJrX2RlY2xfcmVmZXJlbmNlZCBiZWZvcmUgYXNzZW1ibGVfbmFtZS4KCjIwMDQtMDUtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjZ3JhcGguYyAoaGFzaF9ub2RlLCBlcV9ub2RlLCBjZ3JhcGhfbm9kZSwgY2dyYXBoX3JlbW92ZV9ub2RlKQoJKGNncmFwaF92YXJwb29sX2hhc2hfbm9kZSwgZXFfY2dyYXBoX3ZhcnBvb2xfbm9kZSkKCShjZ3JhcGhfdmFycG9vbF9ub2RlKTogSGFzaCBvbiB0aGUgcG9pbnRlciB0byB0aGUgZGVjbCwgbm90Cgl0aGUgREVDTF9VSUQuICBGaXhlcyA2NC1iaXQgYm9vdHN0cmFwIGZhaWx1cmUuCgoyMDA0LTA1LTIwICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChpdGVfbmVfemVyb2V4dHJhY3RzaSwgaXRlX25lX3plcm9leHRyYWN0c2lfc2hpZnRlZCk6IEVuc3VyZQoJd2UgZG9uJ3QgZWFybHljbG9iYmVyIG9wZXJhbmRzIHVzZWQgaW4gdGhlIHNlY29uZCBpbnNuLgoKMjAwNC0wNS0yMCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogdHJlZS1tdWRmbGFwLmM6IEZvcm1hdHRpbmcgZml4ZXMuCgoyMDA0LTA1LTIwICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIE1ha2VmaWxlLmluIChHVEZJTEVTKTogQWRkICQoc3JjZGlyKS9yZWxvYWQuaC4KCSogZ2VuZ3R5cGUuYyAob3Blbl9iYXNlX2ZpbGVzKTogSW5jbHVkZSByZWxvYWQuaCBpbiBpZmlsZXMuCgkqIHJlbG9hZC5oIChyZWdfZXF1aXZfbWVtb3J5X2xvY192YXJyYXkpOiBEZWNsYXJlLgoJKiByZWxvYWQxLmMgKHJlZ19lcXVpdl9tZW1vcnlfbG9jX3ZhcnJheSk6IE5ldyB2YXJpYWJsZS4KCShpbml0X3JlbG9hZCk6IEluaXRpYWxpemUgaXQuCgkocmVsb2FkKTogSW5zdGVhZCBvZiBmcmVlaW5nIHJlZ19lcXVpdl9tZW1vcnlfbG9jLCAnZ3JvdycKCXJlZ19lcXVpdl9tZW1vcnlfbG9jX3ZhcnJheSB0byBzaXplIDAuCgkqIHJhLmMgKHJlZ19hbGxvYyk6IEFsbG9jYXRlIHJlZ19lcXVpdl9tZW1vcnlfbG9jIGJ5Cglncm93aW5nIHJlZ19lcXVpdl9tZW1vcnlfbG9jX3ZhcnJheSB0byB0aGUgZGVzaXJlZCBzaXplLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfb2xkX3JlZ2FsbG9jKTogTGlrZXdpc2UuCgkqIHJlbG9hZC5jOiBBbWVuZCBjb21tZW50IG9uIGNhbGxpbmcgaW5pdF9yZWxvYWQuCgoyMDA0LTA1LTIwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2M0eC9jNHguaCAoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogUmVwbGFjZSAndHJhbXAnCgl3aXRoICdUUkFNUCcgaW4gdGhlIGJvZHkgb2YgdGhlIG1hY3JvIGRlZmluaXRpb24uCgoyMDA0LTA1LTE5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgdGFyZ2V0LzE1MzgzCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfY29tcGFyZSk6IERvbid0IGNoZWNrCglUQVJHRVRfSFBVWCBmb3IgVEZtb2RlIGNvbXBhcmUuIEFib3J0IGlmIG9wMCBpcyBpbiBURm1vZGUgYW5kCgljbXB0Zl9saWJmdW5jIGlzbid0IHNldC4KCShpYTY0X2luaXRfbGliZnVuY3MpOiBSZW5hbWUgVEZtb2RlIGxpYmZ1bmNzIHVzaW5nIHRoZSBIUFVYCgljb252ZW50aW9ucy4KCShpYTY0X3N5c3Y0X2luaXRfbGliZnVuY3MpOiBOZXcuCgoJKiBjb25maWcvaWE2NC9zeXN2NC5oIChUQVJHRVRfSU5JVF9MSUJGVU5DUyk6IE5ldy4gRGVmaW5lZCBhcwoJaWE2NF9zeXN2NF9pbml0X2xpYmZ1bmNzLgoKMjAwNC0wNS0yMCAgRmFsayBIdWVmZm5lciAgPGZhbGtAZGViaWFuLm9yZz4KCglQUiBvdGhlci8xNTUyNgoJKiBsaWJnY2MyLmMgKF9fbXVsdnNpMyk6IEZpeCBvdmVyZmxvdyB0ZXN0LgoKMjAwNC0wNS0xOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYy8xNDE3MQoJKiByZWctc3RhY2suYyAobmFuKTogUmVuYW1lIHRvIC4uLgoJKG5vdF9hX251bSk6IEhlcmUuCgkocmVnX3RvX3N0YWNrKTogUmVuYW1lIG5hbiB0byBub3RfYV9udW0uCgkoc3Vic3Rfc3RhY2tfcmVnc19wYXQpOiBMaWtld2lzZS4KCShjb252ZXJ0X3JlZ3NfZW50cnkpOiBMaWtld2lzZS4KCShjb252ZXJ0X3JlZ3NfMSk6IExpa2V3aXNlLgoKCSogdHJlZS1jZmcuYyAoZmluZF9jYXNlX2xhYmVsX2Zvcl92YWx1ZSk6IFJlcGxhY2UgY2FsbCB0bwoJc2ltcGxlX2NzdF9lcXVhbCB3aXRoIHRyZWVfaW50X2NzdF9lcXVhbC4KCjIwMDQtMDUtMTkgIEplZmYgTGF3IDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtaW50by1zc2EuYyAocHJlcGFyZV9vcGVyYW5kX2Zvcl9yZW5hbWUpOiBOZXcgYXJndW1lbnQgaXNfdXNlLgoJSWYgdGhlIG9wZXJhbmQgaXMgZm9yIGEgdXNlLCB0aGVuIHN0cmlwIGF3YXkgdGhlIFNTQV9OQU1FLCBkbyBub3QKCXN0cmlwIGF3YXkgdGhlIFNTQV9OQU1FIGZvciBhIHNldC4gIE5ldmVyIGNhbGwgcmVsZWFzZV9zc2FfbmFtZS4KCShtYXJrX2RlZl9zaXRlcyk6IEFwcHJvcHJpYXRlbHkgcGFzcyBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvCglwcmVwYXJlX29wZXJhbmRfZm9yX3JlbmFtZS4gIElmIGEgVkRFRl9SRVNVTFQgaXMgbm90IGFuIFNTQV9OQU1FLAoJdGhlbiBzZXQgdGhlIFZERUZfUkVTVUxUIHRvIHRoZSBWREVGX09QLgoJKHNldF9kZWZfYmxvY2spOiBTdHJpcCBhd2F5IGFueSBTU0FfTkFNRSB0byBnZXQgdG8gdGhlIHJlYWwKCXVuZGVybHlpbmcgdmFyaWFibGUuCgoJKiB0cmVlLXNzYS1waGlvcHQuYyAodmFsdWVfcmVwbGFjZW1lbnQpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUKCXRoZSBkZXNpcmVkIGVkZ2Ugb3V0IG9mIENPTkRfQkxPQ0sgcmVhY2hlcyBPVEhFUl9CTE9DSyByYXRoZXIgdGhhbgoJQkIgZGlyZWN0bHkuCgoyMDA0LTA1LTE5ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJUFIgYysrLzE1NDYzCgkqIGxvb3AtaXYuYyAoaXZfbnVtYmVyX29mX2l0ZXJhdGlvbnMpOiBVc2UgdHJ1bmNfaW50X2Zvcl9tb2RlIG9uCglyZXN1bHQgb2YgaW52ZXJzZS4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE1Mjc0CgkqIGxvb3AtaXYuYyAoZGV0ZXJtaW5lX21heF9pdGVyLCBzaG9ydGVuX2ludG9fbW9kZSwKCWl2X251bWJlcl9vZl9pdGVyYXRpb25zKTogSGFuZGxlIGNvbnN0YW50cyBjb3JyZWN0bHkuCgkqIHJ0bC5oIChnZXRfbW9kZV9ib3VuZHMpOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKiBzdG9yLWxheW91dC5jIChnZXRfbW9kZV9ib3VuZHMpOiBSZXR1cm4gYSBjb25zdGFudCBzdWl0YWJsZSBmb3IKCXRoZSB0YXJnZXQgbW9kZS4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE0NjkyCgkqIGxvb3AtdW5zd2l0Y2guYyAobWF5X3Vuc3dpdGNoX29uKTogVHJ5IGZvbGRpbmcgdGhlIHJlc3VsdC4KCSh1bnN3aXRjaF9zaW5nbGVfbG9vcCk6IFdvcmsgY29ycmVjdGx5IHdoZW4gbWF5X3Vuc3dpdGNoX29uCglyZXR1cm5zIGEgZm9sZGVkIGNvbnN0YW50LgoKCSogbG9vcC1pdi5jIChpbXBsaWVzX3ApOiBIYW5kbGUgQSA8IEIgPT0+IEEgKyAxIDw9IEIuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9jb25zdF9yZWxhdGlvbmFsX29wZXJhdGlvbik6IE9wdGltaXplCgljb21wYXJpc29ucyB3aXRoIG1vZGUgYm91bmRzLgoKCSogZnVuY3Rpb24uYyAoc3RydWN0IHRlbXBfc2xvdCk6IEFkZCBuZXcgZmllbGQgcHJldi4KCShmcmVlX2FmdGVyX2NvbXBpbGF0aW9uLCBpbml0X3RlbXBfc2xvdHMpOiBGcmVlIG5ldyBmaWVsZHMuCgkoY3V0X3Nsb3RfZnJvbV9saXN0LCBpbnNlcnRfc2xvdF90b19saXN0LAoJdGVtcF9zbG90c19hdF9sZXZlbCwgbWF4X3Nsb3RfbGV2ZWwsIG1vdmVfc2xvdF90b19sZXZlbCwKCW1ha2Vfc2xvdF9hdmFpbGFibGUpOiBOZXcgZnVuY3Rpb25zLgoJKGFzc2lnbl9zdGFja190ZW1wX2Zvcl90eXBlLCBjb21iaW5lX3RlbXBfc2xvdHMsCglmaW5kX3RlbXBfc2xvdF9mcm9tX2FkZHJlc3MsIHByZXNlcnZlX3RlbXBfc2xvdHMsCglwcmVzZXJ2ZV9ydGxfZXhwcl9yZXN1bHQsIGZyZWVfdGVtcF9zbG90cywKCWZyZWVfdGVtcHNfZm9yX3J0bF9leHByLCBwb3BfdGVtcF9zbG90cyk6IFdvcmsgd2l0aAoJdGhlIG5ldyBzdHJ1Y3R1cmUgb2YgbGlzdHMuCgkobWFya19hbGxfdGVtcHNfdXNlZCk6IFJlbW92ZWQuCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IEZpZWxkIHhfdGVtcF9zbG90cwoJcmVwbGFjZWQgYnkgeF91c2VkX3RlbXBfc2xvdHMgYW5kIHhfYXZhaWxfdGVtcF9zbG90cy4KCSh0ZW1wX3Nsb3RzKTogUmVwbGFjZWQgYnkgLi4uCgkodXNlZF90ZW1wX3Nsb3RzLCBhdmFpbF90ZW1wX3Nsb3RzKTogTmV3LgoJKiB0cmVlLmggKG1hcmtfYWxsX3RlbXBzX3VzZWQpOiBEZWNsYXJhdGlvbiByZW1vdmVkLgoKCSogbG9vcC1pdi5jIChtYXJrX3NpbmdsZV9zZXQsIGdldF9iaXZfc3RlcF8xLCBpdl9hbmFseXplLAoJc2ltcGxpZnlfdXNpbmdfYXNzaWdubWVudCk6IFRha2UgdGhlIGV4cHJlc3Npb24gb3V0IG9mCgl0aGUgZXhwcl9saXN0IHdyYXBwZXIuCgoJKiBsb29wLWl2LmMgKGl2X251bWJlcl9vZl9pdGVyYXRpb25zKTogSW1wcm92ZSBjbGFzaWZpY2F0aW9uIG9mCglpbmZpbml0ZSBsb29wcy4KCjIwMDQtMDUtMTkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9SVFhfQ09TVFMpOiBEb2N1bWVudCB0aGF0IGluc3RydWN0aW9uCgljb3N0cyBzaG91bGQgYmUgYmFzZWQgb24gY29kZSBzaXplIHdoZW4gb3B0aW1pemluZyBmb3Igc2l6ZS4KCjIwMDQtMDUtMTkgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBmb2xkLWNvbnN0LmM6IFJlbW92ZSBub24tcHJpbnRhYmxlIGNoYXJhY3RlciAxNjAuCgoyMDA0LTA1LTE5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChBUk0gT3B0aW9ucyk6IEZpeCB0eXBvLgoJUmVtb3ZlIGRlc2NycHRpb24gb2YgLW1zaG9ydC1sb2FkLWJ5dGVzIGFuZAoJLW1uby1zaG9ydC1sb2FkLWJ5dGVzLgoKCSogY29uZmlnL2lwMmsvaXAyay5jIChpcDJrX2NvbXBvc2l0ZV94ZXhwX25vdF91c2VzX3JlZ19wKTogQWRkCgltaXNzaW5nIHBhcmVudGhlc2lzLgoJKiBjb25maWcvaXAyay9pcDJrLmMgKGlwMmtfdW5hcnlfb3BlcmF0b3IpOiBMaWtld2lzZS4KCSogY29uZmlnL2lwMmsvaXAyay5jIChpcDJrX2JpbmFyeV9vcGVyYXRvcik6IExpa2V3aXNlLgoKMjAwNC0wNS0xOSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcik6IEJ1aWxkIGxvb3Agc3RhcnQgYW5kIGVuZCBieSBoYW5kCglpbnN0ZWFkIG9mIHZpYSBsb29wIGZ1bmN0aW9ucyBmcm9tIHN0bXQuYy4KCShleHBhbmRfZXhwcl9yZWFsXzEpOiBBYm9ydCBpZiB3ZSBzZWUgYW4gRVhJVF9FWFBSIG9yIGEgTE9PUF9FWFBSLgoJUmVtb3ZlIHRoZSBjb2RlIHRvIGV4cGFuZCB0aGVtLgoKCSogc3RtdC5jIChsb29wX3N0YWNrKTogUmVtb3ZlIHRoaXMgYW5kIGV2ZXJ5dGhpbmcgcmVsYXRlZC4KCShzdHJ1Y3QgbmVzdGluZywgZW51bSBuZXN0aW5nX2Rlc2MpOiBVcGRhdGUuCgkoZXhwYW5kX2ZpeHVwKTogTGlrZXdpc2UuCgkoZXhwYW5kX2xvb3Bfc3RhcnQsIGV4cGFuZF9zdGFydF9sb29wX2NvbnRpbnVlX2Vsc2V3aGVyZSwKCWV4cGFuZF9zdGFydF9udWxsX2xvb3AsIGV4cGFuZF9sb29wX2NvbnRpbnVlX2hlcmUsIGV4cGFuZF9lbmRfbG9vcCwKCWV4cGFuZF9lbmRfbnVsbF9sb29wLCBleHBhbmRfY29udGludWVfbG9vcCwgZXhwYW5kX2V4aXRfbG9vcCwKCWV4cGFuZF9leGl0X2xvb3BfaWZfZmFsc2UsIGV4cGFuZF9leGl0X2xvb3BfdG9wX2NvbmQsCglleHBhbmRfZXhpdF9zb21ldGhpbmcpOiBSZW1vdmUuCgkqIHRyZWUuaDogUmVtb3ZlIHByb3RvdHlwZXMuCgoyMDA0LTA1LTE4ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCSAgICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9BU01fRU1JVF9VTldJTkRfTEFCRUwpOiBBZGQgYXJndW1lbnQgdG8gaW5kaWNhdGUKCWlmIHRoaXMgbGFiZWwgaXMgZm9yIGVoLgoJKiBjb25maWcvZGFyd2luLXByb3Rvcy5oIChkYXJ3aW5fZW1pdF91bndpbmRfbGFiZWwpOiBMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fZW1pdF91bndpbmRfbGFiZWwpOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKG91dHB1dF9jYWxsX2ZyYW1lX2luZm8pOiBMaWtld2lzZS4KCSogb3V0cHV0LmggKGRlZmF1bHRfZW1pdF91bndpbmRfbGFiZWwpOiBMaWtld2lzZS4KCSogdGFyZ2V0LmggKHVud2luZF9sYWJlbCk6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAoZGVmYXVsdF9lbWl0X3Vud2luZF9sYWJlbCk6IExpa2V3aXNlLgoKCSogY29uZmlnL2Rhcndpbi5oIChEV0FSRjJfREVCVUdHSU5HX0lORk8sIFBSRUZFUlJFRF9ERUJVR0dJTkdfVFlQRSwKCURFQlVHX0ZSQU1FX1NFQ1RJT04sIERFQlVHX0lORk9fU0VDVElPTiwgREVCVUdfQUJCUkVWX1NFQ1RJT04sCglERUJVR19BUkFOR0VTX1NFQ1RJT04sIERFQlVHX01BQ0lORk9fU0VDVElPTiwgREVCVUdfTElORV9TRUNUSU9OLAoJREVCVUdfTE9DX1NFQ1RJT04sIERFQlVHX1BVQk5BTUVTX1NFQ1RJT04sIERFQlVHX1NUUl9TRUNUSU9OLAoJREVCVUdfUkFOR0VTX1NFQ1RJT04pOiBEZWZpbmUuCgoyMDA0LTA1LTE4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2dyYXBoLmMgKGhhc2hfbm9kZSwgZXFfbm9kZSwgY2dyYXBoX25vZGUsIGNncmFwaF9yZW1vdmVfbm9kZSkKCShjZ3JhcGhfdmFycG9vbF9oYXNoX25vZGUsIGVxX2NncmFwaF92YXJwb29sX25vZGUpCgkoY2dyYXBoX3ZhcnBvb2xfbm9kZSk6CglVc2UgREVDTF9VSUQgZm9yIHRoZSBrZXksIG5vdCBERUNMX0FTU0VNQkxFUl9OQU1FLgoJKGNncmFwaF9mdW5jdGlvbl9wb3NzaWJseV9pbmxpbmVkX3ApOiBVc2UgdGhlIGRlY2wgaXRzZWxmIGZvcgoJdGhlIGtleSwgbm90IERFQ0xfQVNTRU1CTEVSX05BTUUuCgkoY2hhbmdlX2RlY2xfYXNzZW1ibGVyX25hbWUpOiBObyBuZWVkIHRvIG11Y2sgd2l0aCB0aGUgaGFzaCB0YWJsZXMuCgkoY2dyYXBoX25vZGVfZm9yX2lkZW50aWZpZXIsIGNncmFwaF92YXJwb29sX25vZGVfZm9yX2lkZW50aWZpZXIpOgoJRGVsZXRlLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9tYXJrX2lubGluZV9lZGdlKTogVXNlIHRoZSBkZWNsIGl0c2VsZgoJZm9yIHRoZSBrZXksIG5vdCBERUNMX0FTU0VNQkxFUl9OQU1FLgoJKiBjZ3JhcGguaDogUmVtb3ZlIHByb3RvdHlwZXMgb2YgZGVsZXRlZCBmdW5jdGlvbnMuCgkqIHZhcmFzbS5jIChtYXJrX3JlZmVyZW5jZWQpOiBKdXN0IHNldCBUUkVFX1NZTUJPTF9SRUZFUkVOQ0VELgoJKG1hcmtfZGVjbF9yZWZlcmVuY2VkKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmg6IFByb3RvdHlwZSBtYXJrX2RlY2xfcmVmZXJlbmNlZC4KCSogZmluYWwuYyAob3V0cHV0X2FkZHJfY29uc3QpIDxjYXNlIFNZTUJPTF9SRUY+OiBDYWxsCgltYXJrX2RlY2xfcmVmZXJlbmNlZCBiZWZvcmUgYXNzZW1ibGVfbmFtZS4KCSogYy1kZWNsLmMgKGZpbmlzaF9kZWNsKTogVXNlIG1hcmtfZGVjbF9yZWZlcmVuY2VkLgoKMjAwNC0wNS0xOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgkgICAgSmVmZiBMYXcgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtcGhpb3B0LmMgKGFic19yZXBsYWNlbWVudCk6IE5ldyBmdW5jdGlvbi4KCShlbXB0eV9ibG9ja19wKTogTmV3IGZ1bmN0aW9uIGV4dHJhY3RlZCBmcm9tLi4uCgkoY2FuZGlkYXRlX2JiX2Zvcl9waGlfb3B0aW1pemF0aW9uKTogQnJlYWsgb3V0IGVtcHR5IGJsb2NrIHRlc3QuCgkoY29uZGl0aW9uYWxfcmVwbGFjZW1lbnQpOiBVc2UgZW1wdHlfYmxvY2tfcC4KCSh2YWx1ZV9yZXBsYWNlbWVudCk6IFNpbWlsYXJseS4KCgkqIE1ha2VmaWxlLmluICh0cmVlLXNzYS1waGlvcHQubyk6IERlcGVuZHMgb24gZmxhZ3MuaC4KCSogdHJlZS1zc2EtcGhpb3B0LmM6IEluY2x1ZGUgZmxhZ3MuaC4KCShjb25kaXRpb25hbF9yZXBsYWNlbWVudCk6IFJlbW92ZSBhcmd1bWVudCBuYW1lcyBmcm9tIHByb3RvdHlwZS4KCU1pbm9yIGZvcm1hdHRpbmcgYW5kIGNvbW1lbnQgZml4ZXMuCgkodHJlZV9zc2FfcGhpb3B0KTogSWYgY29uZGl0aW9uYWxfcmVwbGFjZW1lbnQgcmV0dXJucyBmYWxzZSwgdGhlbgoJY2FsbCB2YWx1ZV9yZXBsYWNlbWVudC4KCSh2YWx1ZV9yZXBsYWNlbWVudCk6IE5ldyBmdW5jdGlvbi4KCjIwMDQtMDUtMTggIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1waGlvcHQuYyAocmVwbGFjZV9waGlfd2l0aF9zdG10KTogTmV3IGZ1bmN0aW9uIGV4dHJhY3RlZAoJZnJvbSBjb25kaXRpb25hbF9yZXBsYWNlbWVudC4KCShjYW5kaWRhdGVfYmJfZm9yX3BoaV9vcHRpbWl6YXRpb24pOiBTaW1pbGFybHkuCgkoY29uZGl0aW9uYWxfcmVwbGFjZW1lbnQpOiBVc2UgcmVwbGFjZV9waGlfd2l0aF9zdG10IGFuZAoJY2FuZGlkYXRlX2JiX2Zvcl9waGlfb3B0aW1pemF0aW9uLgoKCSogdHJlZS1zc2EtcGhpb3B0LmM6IEZpeCB2YXJpb3VzIGZvcm1hdHRpbmcgaXNzdWVzLgoKMjAwNC0wNS0xOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2V4cGFuZF9tb3ZzdHIsIHMzOTBfZXhwYW5kX2NscnN0ciwKCXMzOTBfZXhwYW5kX2NtcG1lbSk6IERvIG5vdCB1c2UgZXhwYW5kX3N0YXJ0X2xvb3AgYW5kCglleHBhbmRfZW5kX2xvb3AsIGluc3RlYWQgYnVpbGQgdGhlIGxvb3AgbWFudWFsbHkuCgoyMDA0LTA1LTE4ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGN0cnNpX2ludGVybmFsMyk6IERlbGV0ZS4KCShjdHJzaV9pbnRlcm5hbDQsIGN0cmRpX2ludGVybmFsMywgY3RyZGlfaW50ZXJuYWw0KTogRGVsZXRlLgoKMjAwNC0wNS0xNyAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5oIChmbGFnX2RlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzKTogTW92ZSBmcm9tIGhlcmUgdG8uLi4KCSogZmxhZ3MuaCAoZmxhZ19kZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcyk6IEhlcmUuCgkqIHRyZWUtZmxvdy5oIChjcHJvcF9pbnRvX3N1Y2Nlc3Nvcl9waGlzKTogQWRkIGFyZ3VtZW50IHRvIHByb3RvdHlwZS4KCSogdHJlZS1waGlub2Rlcy5jIChyZXNpemVfcGhpX25vZGUpOiBJbml0aWFsaXplIFBISV9BUkdfTk9OWkVSTy4KCShhZGRfcGhpX2FyZywgcmVtb3ZlX3BoaV9hcmdfbnVtKTogU2ltaWxhcmx5LgoJKiB0cmVlLXNzYS1jb3B5LmMgKGNwcm9wX2ludG9fc3VjY2Vzc29yX3BoaXMpOiBQcm9wYWdhdGUgbm9uemVybwoJcHJvcGVydHkgaW50byBQSEkgbm9kZXMuCgkqIHRyZWUtc3NhLWRvbS5jOiBSZW1vdmUgcmVkdW5kYW50IGluY2x1c2lvbiBvZiBmbGFncy5oLgoJKHJlY29yZF9lcXVpdmFsZW5jZXNfZnJvbV9waGlzKTogSWYgYWxsIFBISSBhcmd1bWVudHMgYXJlIGtub3duIHRvIGJlCglub256ZXJvLCB0aGVuIHRoZSByZXN1bHQgbXVzdCBiZSBub256ZXJvIGFzIHdlbGwuCgkoY3Byb3BfaW50b19waGlzKTogUGFzcyBub256ZXJvX3ZhcnMgYml0bWFwIHRvIGNwcm9wX2ludG9fc3VjY2Vzc29yX3BoaXMuCgkocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX3N0bXQpOiBDaGVjayBmbGFnX2RlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzCglhcHByb3ByaWF0ZWx5LiAgV2FsayB0aGUgVVNFLURFRiBjaGFpbnMgYW5kIHByb3BhZ2F0ZSBub256ZXJvIHByb3BlcnR5CglhcyBhcHByb3ByaWF0ZS4KCSogdHJlZS5oIChQSElfQVJHX05PTlpFUk8pOiBEZWZpbmUuCgkocGhpX2FyZ19kKTogQWRkIG5vbnplcm8gZmxhZy4KCjIwMDQtMDUtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmOiBFbnRpcmUgZGlyZWN0b3J5IHJlbW92ZWQKCgkqIGMtY29tbW9uLmggKENUSV9HNzdfSU5URUdFUl9UWVBFLCBDVElfRzc3X1VJTlRFR0VSX1RZUEUpCgkoQ1RJX0c3N19MT05HSU5UX1RZUEUsIENUSV9HNzdfVUxPTkdJTlRfVFlQRSkKCShnNzdfaW50ZWdlcl90eXBlX25vZGUsIGc3N191aW50ZWdlcl90eXBlX25vZGUpCgkoZzc3X2xvbmdpbnRfdHlwZV9ub2RlLCBvciBnNzdfdWxvbmdpbnRfdHlwZV9ub2RlKTogRGVsZXRlLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBEbyBub3QgaW5pdGlhbGl6ZQoJdGhlIGFib3ZlIHNldCBvZiB2YXJpYWJsZXMuCgoJKiBjb25maWcvaTM4Ni91d2luLmg6IE5vIG5lZWQgdG8gZGVmaW5lIFdJTjMyX1VXSU5fVEFSR0VULgoJKiBkb2MvaW52b2tlLnRleGksIGRvYy9zdGFuZGFyZHMudGV4aTogUmVtb3ZlIGNyb3NzLXJlZmVyZW5jZXMKCXRvIGc3NyBtYW51YWwuCgoyMDA0LTA1LTE3ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTU0MzgKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMpOiBEbyBub3QgdHJlYXQgbWFsbG9jCglhdHRyaWJ1dGVkIGZ1bmN0aW9ucyBhcyBwdXJlIG9yIGNvbnN0LgoKMjAwNC0wNS0xNyAgRnJhbmsgQ2guIEVpZ2xlciAgPGZjaGVAcmVkaGF0LmNvbT4KCgkqIHRyZWUtbXVkZmxhcC5jIChteF9yZWdpc3Rlcl9kZWNscyk6IFRvbGVyYXRlIGRlY2wgdHJlZXMgcmVzdWx0aW5nCglmcm9tIHNvdXJjZSBjb2RlIHdpdGggZXJyb3JzLgoKMjAwNC0wNS0xNyAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJRW5hYmxlIHRyZWUgYnJvd3NlciBmb3IgYWxsIGZyb250IGVuZHMuCgkqIE1ha2VmaWxlLmluIChjYzEpOiBNb3ZlZCBAVFJFRUJST1dTRVJAIGZyb20gaGVyZS4uLgoJKEJBQ0tFTkQpOiAuLi50byBoZXJlLgoKMjAwNC0wNS0xNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChjb25zdHJ1Y3RfY29udGFpbmVyKTogRG8gbm90IHByb2R1Y2UgQkxLbW9kZSByZWdpc3RlcnMuCgkoY2xhc3NpZnlfYXJndW1lbnQpOiBQcm9wZXJseSBjb21wdXRlIGFsaWdubWVudCBvZiBjb21wbGV4IHR5cGVzLgoKMjAwNC0wNS0xNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIHRhcmdldC8xNTA4NAoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqbW92c2lfaW5zdl8xX3JleDY0KTogQ2hhbmdlZCB0byBESW1vZGUKCWFuZCByZW5hbWVkIHRvIG1vdmRpX2luc3ZfMV9yZXg2NC4KCShpbnN2KTogU3VwcG9ydCBTSW1vZGUgZm9yIDMyYml0IGFuZCBESW1vZGUgZm9yIDY0Yml0LgoKMjAwNC0wNS0xNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChNQVNLX0RFQlVHX0csIFRBUkdFVF9ERUJVR19HX01PREUpOiBEZWxldGUuCgkoVEFSR0VUX1NXSVRDSEVTKTogUmVtb3ZlIGRlYnVnZy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoYWRkZGkzLCBhc2hsZGkzLCBhc2hyZGkzLCBsc2hyZGkzKTogT25seSBoYW5kbGUKCVRBUkdFVF82NEJJVC4KCShzdWJkaTMpOiBSZXBsYWNlIHRoZSBkZWZpbmVfZXhwYW5kIHdpdGggYSBkZWZpbmVfaW5zbiwgdGhlIGxhdHRlcgoJcmVuYW1lZCBmcm9tIHN1YmRpM19pbnRlcm5hbF8zLgoJKG5lZ2RpMik6IExpa2V3aXNlIG5lZ2RpMl9pbnRlcm5hbF8yLgoJKGFkZGRpM19pbnRlcm5hbF9bMTJdLCBzdWJkaTNfaW50ZXJuYWwsIGFzaGxkaTNfaW50ZXJuYWx7LDIsM30pCgkoYXNocmRpM19pbnRlcm5hbHssMiwzfSwgbHNocmRpM19pbnRlcm5hbHssMiwzfSk6IFJlbW92ZSBwYXR0ZXJucwoJYW5kIGFzc29jaWF0ZWQgZGVmaW5lX3NwbGl0cy4KCShhZGRkaTNfaW50ZXJuYWwpOiBSZW5hbWVkIGZyb20gYWRkZGkzX2ludGVybmFsXzMuCgkoYXNobGRpM19pbnRlcm5hbCk6IExpa2V3aXNlIGFzaGxkaTNfaW50ZXJuYWw0LgoJKGFzaHJkaTNfaW50ZXJuYWwpOiBMaWtld2lzZSBhc2hyZGkzX2ludGVybmFsNC4KCShsc2hyZGkzX2ludGVybmFsKTogTGlrZXdpc2UgbHNocmRpM19pbnRlcm5hbDQuCgoyMDA0LTA1LTE3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBvcHRhYnMuYyAoZXhwYW5kX3Vub3ApOiBUcnkgaW1wbGVtZW50aW5nIG5lZ2F0aW9uIHVzaW5nIHN1YnRyYWN0aW9uCglmcm9tIHplcm8uCgoyMDA0LTA1LTE2ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEubWQ6IEZpeCB0eXBvIGZyb20gbGFzdCBjaGFuZ2UuICBSZW1vdmUgREZtb2RlIG1vdmUgdG8gYW5kIGZyb20KCVNBUiByZWdpc3Rlci4KCjIwMDQtMDUtMTYgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCVBSIHRhcmdldC8xMDk4MgoJKiBhcm0ubWQgKG5lX3plcm9leHRyYWN0c2kpOiBDb252ZXJ0IHRvIGluc24tYW5kLXNwbGl0LgoJKG5lX3plcm9leHRyYWN0c2lfc2hpZnRlZCk6IE5ldyBwYXR0ZXJuLgoJKGl0ZV9uZV96ZXJvZXh0cmFjdHNpKTogTmV3IHBhdHRlcm4uCgkoaXRlX25lX3plcm9leHRyYWN0c2lfc2hpZnRlZCk6IE5ldyBwYXR0ZXJuLgoKMjAwNC0wNS0xNSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogYy1naW1wbGlmeS5jIChjX2dlbmVyaWNpemUpOgoJUmVwbGFjZSBjYWxscyB2aWEgKCpsYW5nX2hvb2tzLmZvbykgd2l0aCBsYW5nX2hvb2tzLmZvby4KCSogYy1wYXJzZS5pbiA8ZXhwcl9ub19jb21tYXM+OiBMaWtld2lzZS4KCTxpZl9wcmVmaXg+OiBMaWtld2lzZS4KCTxzZWxlY3Rfb3JfaXRlcl9zdG10PjogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZXhwYW5kX3ZhciwgZXhwYW5kX2V4cHJfcmVhbF8xKTogTGlrZXdpc2UuCgkqIGV4cHIuaCAoZXhwYW5kX2V4cHIpOiBNYWtlIGl0IGEgc3RhdGljIGlubGluZSBmdW5jdGlvbi4KCU1vdmUgcHJvdG90eXBlIGZvciBleHBhbmRfZXhwcl9yZWFsIHVwIGJlZm9yZSB0aGlzLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfcmVsYXRpb25hbF9oaV9sbywgZm9sZF9yZWxhdGlvbmFsX2NvbnN0KToKCUxpa2V3aXNlLgoJKiBnaW1wbGlmeS5jIChnaW1wbGVfYm9vbGlmeSwgZ2ltcGxpZnlfYWRkcl9leHByLAoJZ2ltcGxpZnlfYXNtX2V4cHIsIGdpbXBsaWZ5X2V4cHIpOiBMaWtld2lzZS4KCSogdHJlZS1jZmcuYyAoZHVtcF90cmVlX2NmZywgZHVtcF9jZmdfc3RhdHMsIHRyZWVfY2ZnMnZjZywKCWR1bXBfZnVuY3Rpb25fdG9fZmlsZSk6IExpa2V3aXNlLgoJKiB0cmVlLWRmYS5jIChkdW1wX2ltbWVkaWF0ZV91c2VzLCBkdW1wX2RmYV9zdGF0cyk6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5jIChyZW1hcF9ibG9jaywgc2F2ZV9ib2R5LCB3YWxrX3RyZWUpOiBMaWtld2lzZS4KCSogdHJlZS1pbnRvLXNzYS5jIChkdW1wX3RyZWVfc3NhKTogTGlrZXdpc2UuCgkqIHRyZWUtbXVkZmxhcC5jIChtZl92YXJuYW1lX3RyZWUsIG1mX2ZpbGVfZnVuY3Rpb25fbGluZV90cmVlKToKCUxpa2V3aXNlLgoJKiB0cmVlLW9wdGltaXplLmMgKGV4ZWN1dGVfb25lX3Bhc3MpOiBMaWtld2lzZS4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX2JiX2J1ZmYpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAoZHVtcF9hbGlhc19zdGF0cywgZHVtcF9hbGlhc19pbmZvKTogTGlrZXdpc2UuCgoJKiBvYmpjL29iamMtYWN0LmMgKG9iamNfYnVpbGRfdHJ5X2VudGVyX2ZyYWdtZW50LAoJb2JqY19idWlsZF90cnlfZXBpbG9ndWUsIG9iamNfYnVpbGRfY2F0Y2hfc3RtdCwKCW9iamNfYnVpbGRfZmluYWxseV9wcm9sb2d1ZSk6IFJlcGxhY2UgY2FsbHMgdmlhICgqbGFuZ19ob29rcy5mb28pCgl3aXRoIGxhbmdfaG9va3MuZm9vICgpLgoKMjAwNC0wNS0xNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChzaW1wbGlmeV9idWlsdGluX3N0cmNweSk6IEF2b2lkIHVzZSBvZiBjaGFpbm9uLCBzbwoJdGhhdCBzaW1wbGlmeV9idWlsdGluIGRvZXNuJ3QgZGVzdHJ1Y3RpdmVseSBtb2RpZnkgaXRzIGFyZ3VtZW50LgoKMjAwNC0wNS0xNSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYW5yc2hhQGFybS5jb20+CgoJKiBhcm0vbGliMWZ1bmNzLmFzbSAoX2xzaHJkaTMsIF9hc2hyZGkzLCBfYXNobGRpMyk6IEFkZCBBU00KCWltcGxlbWVudGF0aW9ucyBmb3IgQVJNIGFuZCBUaHVtYi4KCSogYXJtL3QtYXJtLWVsZiAoTElCMUFTTUZVTkNTKTogVXNlIHRoZW0uCgoyMDA0LTA1LTE1ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBwcmVmaXguYyAodXBkYXRlX3BhdGgpOiBSZXBsYWNlIFBSRUZJWCB3aXRoIEtFWSBvbmx5Cgl3aGVuIGl0IG1hdGNoZXMgYSBmdWxsIGRpcmVjdG9yeSBuYW1lIGluIFBBVEguCgoyMDA0LTA1LTE1ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhbnJzaGFAYXJtLmNvbT4KCgkqIGFybS5oIChUQVJHRVRfQVBDU18zMik6IERlbGV0ZS4KCShUQVJHRVRfTU1VX1RSQVBTKTogRGVsZXRlLgoJKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogVW5jb25kaXRpb25hbGx5IGRlZmluZSBfX0FQQ1NfMzJfXy4gIE5ldmVyCglkZWZpbmUgX19BUENTXzI2X18uCgkoQ1BQX1NQRUMpOiBSZW1vdmUgY2hlY2tpbmcgb2YgLW1hcGNzLXsyNiwzMn0uCgkoQVJNX0ZMQUdfQVBDU18zMiwgQVJNX0ZMQUdfTU1VX1RSQVBTKTogRGVsZXRlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSBhbGlnbm1lbnRfdHJhcHMgYW5kIGFwY3MtezI2LDMyfSBzd2l0Y2hlcy4KCShwcm9nX21vZGVfdHlwZSk6IERlbGV0ZS4KCShQUk9NT1RFX01PREUpOiBBbHdheXMgcHJvbW90ZSB1bnNpZ25lZCBmb3IgSEltb2RlLgoJKFNFQ09OREFSWV9JTlBVVF9SRUxPQURfQ0xBU1MpOiBTaW1wbGlmeS4KCShNQVNLX1JFVFVSTl9BRERSKTogU2ltcGxpZnkuCgkqIGFybS5jIChhcm1fcHJnbW9kZSk6IERlbGV0ZS4KCShhcm1fb3ZlcnJpZGVfb3B0aW9ucywgYXJtX2dlbl9yb3RhdGVkX2hhbGZfbG9hZCk6IFNpbXBsaWZ5LgoJKHByaW50X211bHRpX3JlZywgb3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbik6IFNpbXBsaWZ5LgoJKGFybV9vdXRwdXRfZXBpbG9ndWUsIGFybV9maW5hbF9wcmVzY2FuX2luc24pOiBTaW1wbGlmeS4KCShhcm1fcmV0dXJuX2FkZHIpOiBTaW1wbGlmeS4KCSogYXJtLm1kIChwcm9nX21vZGUpOiBEZWxldGUuCgkoY29uZHMpOiBTaW1wbGlmeS4KCSh6ZXJvX2V4dGVuZGhpc2kyLCBleHRlbmRoaXNpMiwgbW92aGksIG1vdmhpX2J5dGVzKTogU2ltcGxpZnkuCgkocm90YXRlZF9sb2Fkc2ksIG1vdmhpX2luc25fbGl0dGxlZW5kLCBtb3ZoaV9pbnNuX2JpZ2VuZCk6IERlbGV0ZS4KCShsb2FkaGlfc2lfYmlnZW5kLCBsb2FkaGlfcHJlaW5jLCBsb2FkaGlfc2hpZnRwcmVpbmMpOiBEZWxldGUuCgkobG9hZGhpX3NoaWZ0cHJlZGVjKTogRGVsZXRlLgoJKHBlZXBob2xlIGZvciBwb3N0LWluY3JlbWVudCBvbiBISW1vZGUgbG9hZCk6IERlbGV0ZS4KCSogYXJtL2NydG4uYXNtOiAoRlVOQ19FTkQpOiBTaW1wbGlmeS4KCSogYXJtL2xpYjFmdW5jcy5hc206IFJlbW92ZSBBUENTLTI2IHJldHVybiBtYWNyb3MuCgkqIGFybS9hb2YuaCwgYXJtL2NvZmYuaCBhcm0vZWxmLmggYXJtL2xpbnV4LWVsZi5oIGFybS9uZXRic2QtZWxmLmgKCSogYXJtL25ldGJzZC5oIGFybS9wZS5oIGFybS9zZW1pLmggYXJtL3NlbWlhb2YuaCBhcm0vdW5rbm93bi1lbGYuaAoJKiBhcm0vdnh3b3Jrcy5oIGFybS93aW5jZS1wZS5oOiBUaWR5IFRBUkdFVF9ERUZBVUxUUyBhbmQKCU1VTFRJTElCX0RFRkFVTFRTIGFzIHJlcXVpcmVkLgoJKiBhcm0vdC1hcm0tZWxmIGFybS90LWxpbnV4IGFybS90LXBlIGFybS90LXNlbWkgYXJtL3Qtd2luY2UtcGUKCSogYXJtL3QteHNjYWxlLWNvZmYgYXJtL3QteHNjYWxlLWVsZiBhcm0vdWNsaW51eC1lbGY6IFRpZHkgTVVMVElMSUIKCXZhcmlhYmxlcyBhcyByZXF1aXJlZC4KCSogZG9jL2ludm9rZS50ZXhpIChBUk0gT3B0aW9ucyk6IFJlbW92ZSBvYnNvbGV0ZSBmbGFncy4KCjIwMDQtMDUtMTUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdmFfYXJnIDxBQklfVjQ+KTogRG9uJ3QgdXNlCglVTklUU19QRVJfV09SRCB0byBjYWxjdWxhdGUgZ3ByIHNpemUuICBSZS1pbnN0YXRlIGNvZGUgdG8gc2V0IHJlZwoJY291bnQgdG8gOCB0byBoYW5kbGUgbl9yZWcgPiAyLgoKMjAwNC0wNS0xNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvZXh0ZW5kLnRleGk6IFVwZGF0ZSBXRzE0IFVSTC4KCjIwMDQtMDUtMTUgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGJhc2ljLWJsb2NrLmggKGxpZmVfYW5hbHlzaXMsIGRlbGV0ZV9ub29wX21vdmVzKToKCVVwZGF0ZSBwcm90b3R5cGVzLgoJKiBidC1sb2FkLmMgKGJyYW5jaF90YXJnZXRfbG9hZF9vcHRpbWl6ZSk6IERvbid0IHRha2UgdGhlCglpbnNucyBzdHJlYW0gYXMgYW4gYXJndW1lbnQuICBVcGRhdGUgdGhlIGxpZmVfYW5hbHlzaXMgY2FsbHMuCgkqIGNvbWJpbmUuYyAoY29tYmluZV9pbnN0cnVjdGlvbnMpOiBVcGRhdGUgZGVsZXRlX25vb3BfbW92ZXMKCWNhbGxzLgoJKiBmbG93LmMgKG5vdGljZV9zdGFja19wb2ludGVyX21vZGlmaWNhdGlvbik6IERvbid0IHRha2UgdGhlCglpbnNucyBzdHJlYW0gYXMgYW4gYXJndW1lbnQuICBXb3JrIG9uIHRoZSBmbG93IGdyYXBoLgoJKGxpZmVfYW5hbHlzaXMpOiBMaWtld2lzZS4KCShkZWxldGVfbm9vcF9tb3Zlcyk6IExpa2V3aXNlLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfc3RhY2tfcmVncyk6IFVwZGF0ZSByZWdfdG9fc3RhY2sgY2FsbC4KCShyZXN0X29mX2hhbmRsZV9saWZlKTogVXBkYXRlIGxpZmVfYW5hbHlzaXMgY2FsbC4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogTGlrZXdpc2UsIGFuZCBhbHNvIHVwZGF0ZQoJYnJhbmNoX3RhcmdldF9sb2FkX29wdGltaXplIGNhbGwuCgkqIHJhLmMgKHJlZ19hbGxvYyk6IFVwZGF0ZSBsaWZlX2FuYWx5c2lzIGNhbGwuCgkqIHJlZy1zdGFjay5jIChyZWdfdG9fc3RhY2spOiBMaWtld2lzZS4gIEFsc28sIGRvbid0IHRha2UKCXRoZSBpbnNucyBzdHJlYW0gYXMgYW4gYXJndW1lbnQuCgkqIHJlZ3JlbmFtZS5jIChjb3B5cHJvcF9oYXJkcmVnX2ZvcndhcmQpOiBVcGRhdGUgZGVsZXRlX25vb3BfbW92ZXMKCWNhbGwuCgkqIHJ0bC5jIChicmFuY2hfdGFyZ2V0X2xvYWRfb3B0aW1pemUsIHJlZ190b19zdGFjayk6IFVwZGF0ZQoJcHJvdG90eXBlcy4KCSogdmFsdWUtcHJvZmlsZS5jIChicmFuY2hfcHJvYik6IFVwZGF0ZSBsaWZlX2FuYWx5c2lzIGNhbGwuCgkqIHdlYi5jICh3ZWJfbWFpbik6IFdvcmsgb24gdGhlIENGRywgbm90IG9uIHRoZSBpbnNucyBzdHJlYW0uCgoJKiBjb25maWcvaXAyay9pcDJrLmMgKGlwMmtfcmVvcmcpOiBVcGRhdGUgbGlmZV9hbmFseXNpcyBjYWxscy4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChtNjhoYzExX3Jlb3JnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCjIwMDQtMDUtMTUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvMTU0NDQKCSogYy1mb3JtYXQuYyAoYXZvaWRfZG9sbGFyX251bWJlcik6IE5ldyBmdW5jdGlvbi4KCShjaGVja19mb3JtYXRfaW5mb19tYWluKTogQ2FsbCBhdm9pZF9kb2xsYXJfbnVtYmVyIHdoZW4gb3BlcmFuZAoJbnVtYmVycyBtaWdodCBvY2N1ciBidXQgaGFzX29wZXJhbmRfbnVtYmVyID09IDAuCgoyMDA0LTA1LTE0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAoYWxsIHBlZXBob2xlMiBwYXR0ZXJucyk6IFVzZSBwcmVkaWNhdGVzIHRoYXQgdmFsaWRhdGUKCXJlZ2lzdGVyIGNsYXNzZXMgYXMgYXBwcm9wcmlhdGUuCgoyMDA0LTA1LTE0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJUFIgb3B0LzE0NDcyCgkqIHRyZWUtdGFpbGNhbGwuYyAocHJvY2Vzc19hc3NpZ25tZW50KTogVXNlIFNUUklQX05PUFMgdG8KCWlnbm9yZSB0eXBlIGNvbnZlcnNpb25zIHRoYXQgZG8gbm90IGluaGliaXQgdGFpbCBjYWxsaW5nLgoJKGZpbmRfdGFpbF9jYWxscyk6IExpa2V3aXNlLgoKMjAwNC0wNS0xNCAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWRvbS5jIChyZWRpcmVjdF9lZGdlc19hbmRfdXBkYXRlX3NzYV9ncmFwaCk6IERvbid0IGV2ZW4KCWJvdGhlciBtYXJraW5nIGJ5cGFzc2VkIHZpcnR1YWxzIGZvciBvdXQtb2Ytc3NhLiAgSW5zdGVhZCBtZXJnZQoJYnlwYXNzZWQgdmlydHVhbHMgaW50byB2YXJzX3RvX3JlbmFtZSBqdXN0IGJlZm9yZSBpbnRvLXNzYSBwYXNzLgoKCSogdHJlZS1zc2EtZG9tLmMgKHNpbXBsaWZ5X3Joc19hbmRfbG9va3VwX2F2YWlsX2V4cHIpOiBSZW9yZ2FuaXplCglzbyB0aGF0IGl0IHBpY2tzIHVwIG1vcmUgb3Bwb3J0dW5pdGllcyB0byBlbGltaW5hdGUgQUJTIGV4cHJlc3Npb25zCglvciB0dXJuIHRoZW0gaW50byBuZWdhdGlvbnMuCgoyMDA0LTA1LTE0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfbnVsbF9wb2ludGVyKTogUmVtb3ZlLgoJKHJlc3Rfb2ZfaGFuZGxlX2NzZSk6IERvbid0IGNhbGwgcmVzdF9vZl9oYW5kbGVfbnVsbF9wb2ludGVyLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCSogcnRsLmggKGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogZ2NzZS5jIChyZF9raWxsLCByZF9nZW4sIHJlYWNoaW5nX2RlZnMsIHJkX291dCwgYWVfaW4sIGFlX291dCk6CglSZW1vdmUgZGVjbGFyYXRpb25zLgoJKGdldF9iaXRtYXBfd2lkdGgsIGFsbG9jX3JkX21lbSwgZnJlZV9yZF9tZW0sIGhhbmRsZV9yZF9raWxsX3NldCwKCWNvbXB1dGVfa2lsbF9yZCwgY29tcHV0ZV9yZCwgYWxsb2NfYXZhaWxfZXhwcl9tZW0sCglmcmVlX2F2YWlsX2V4cHJfbWVtLCBjb21wdXRlX2FlX2dlbiwgZXhwcl9raWxsZWRfcCwgY29tcHV0ZV9hZV9raWxsLAoJZXhwcl9yZWFjaGVzX2hlcmVfcCwgY29tcHV0aW5nX2luc24sIGRlZl9yZWFjaGVzX2hlcmVfcCwKCWNhbl9kaXNyZWdhcmRfb3RoZXJfc2V0cywgaGFuZGxlX2F2YWlsX2V4cHIsIGNsYXNzaWNfZ2NzZSwKCW9uZV9jbGFzc2ljX2djc2VfcGFzcywgaW52YWxpZGF0ZV9ub25udWxsX2luZm8sCglkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrc18xLCBkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcywKCWV4cHJfcmVhY2hlZF9oZXJlX3Bfd29yayk6IFJlbW92ZS4KCShnY3NlX21haW4pOiBEbyBub3QgcGVyZm9ybSBjbGFzc2ljIEdDU0Ugd2hlbiBvcHRpbWl6aW5nIGZvciBzaXplLgoJKGFsbG9jX3ByZV9tZW0sIGZyZWVfcHJlX21lbSk6IERvbid0IHRvdWNoIGFlX2luIGFuZCBhZV9vdXQsIHRoZXkKCWFyZSBuZXZlciB1c2VkLgoKMjAwNC0wNS0xNCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgb3B0aW1pemF0aW9uLzE0NDY2CgkqIHRyZWUtY29tcGxleC5jIChtYWtlX3RlbXApOiBSZW1vdmUuCgkoZ2ltcGxpZnlfdmFsKTogUmVwbGFjZSBtYWtlX3RlbXAgd2l0aCBtYWtlX3JlbmFtZV90ZW1wCglhbmQgYWRkIE5VTEwgYXMgdGhlIHNlY29uZCBhcmd1bWVudC4KCShleHBhbmRfY29tcGxleF9kaXZfd2lkZSk6IExpa2V3aXNlLgoJKiB0cmVlLWRmYS5jIChtYWtlX3JlbmFtZV90ZW1wKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLWZsb3cuaCAobWFrZV9yZW5hbWVfdGVtcCk6IERlY2xhcmUuCgkqIHRyZWUtc3JhLmMgKG1ha2VfdGVtcCk6IFJlbW92ZS4KCShsb29rdXBfc2NhbGFyKTogUmVwbGFjZSBtYWtlX3RlbXAgd2l0aCBtYWtlX3JlbmFtZV90ZW1wLgoJKGNyZWF0ZV9zY2FsYXJfY29waWVzKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXBoaW9wdC5jIChjb25kaXRpb25hbF9yZXBsYWNlbWVudCk6IFdoZW4gd2UKCWdldCBub24gZ2ltcGxlIGNyZWF0ZSBhIHRlbXBvcmFyeSB2YXJpYWJsZSB0byBob2xkIHRoZQoJY2FzdGVkIGV4cHJlc3Npb24uCgoyMDA0LTA1LTE0ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAodXBkYXRlX2FsaWdubWVudF9mb3JfZmllbGQpOiBVc2UKCXRhcmdldG0uYWxpZ25fYW5vbl9iaXRmaWVsZC4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfQUxJR05fQU5PTl9CSVRGSUVMRCk6IERlZmluZS4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBVc2UgaXQuCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IEFkZCBhbGlnbl9hbm9uX2JpdGZpZWxkLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fYWxpZ25fYW5vbl9iaXRmaWVsZCk6IE5ldyBmdW5jdGlvbi4KCShUQVJHRVRfQUxJR05fQU5PTl9CSVRGSUVMRCk6IERlZmluZS4KCSogZG9jL3RtLnRleGk6IERvY3VtZW50IFRBUkdFVF9BTElHTl9BTk9OX0JJVEZJRUxELgoKMjAwNC0wNS0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuZGVmIChkb2N1bWVudGF0aW9uKTogUmVtb3ZlIG1lbnRpb24gb2YgY2xhc3MgJ2InLgoJKEJMT0NLKTogTm93IGluIGNsYXNzICd4Jy4KCSogYy1jb21tb24uYyAodmVyaWZ5X3RyZWUpOiBSZW1vdmUgY2FzZSAnYicuCgkqIGMtdHlwZWNrLmMgKHNhbWVfdHJhbnNsYXRpb25fdW5pdF9wKTogQ2hhbmdlICdiJyB0byAneCcuCgkqIGNhbGxzLmMgKGNhbGxzX2Z1bmN0aW9uXzEpOiBDb250cm9sIGNhbm5vdCBnZXQgcGFzdCB0aGUgc3dpdGNoCgl3aGVuIGV4cCBpcyBhIEJMT0NLLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBNb3ZlIGNvZGUgZm9yIGNsYXNzICdiJyB0byB0aGUgY2xhc3MKCSdjJy8neCcgc3dpdGNoLCBhcyBjYXNlIEJMT0NLLgoJKiB0cmVlLmMgKHRyZWVfc2l6ZSwgbWFrZV9ub2RlX3N0YXQsIHRyZWVfbm9kZV9zdHJ1Y3R1cmUpOiBMaWtld2lzZS4KCSh1bnNhZmVfZm9yX3JlZXZhbCwgc3Vic3RpdHV0ZV9wbGFjZWhvbGRlcl9pbl9leHByKQoJKHN0YWJpbGl6ZV9yZWZlcmVuY2VfMSk6IFJlbW92ZSBjYXNlICdiJy4KCSogdHJlZS1icm93c2VyLmMgKGJyb3dzZV90cmVlKTogQ2hhbmdlIGFsbCB0ZXN0cyBmb3IgVFJFRV9DT0RFX0NMQVNTCglvZiBzb21ldGhpbmcgYmVpbmcgJ2InIHRvIHRlc3RzIGZvciBUUkVFX0NPREUgb2Ygc29tZXRoaW5nIGJlaW5nCglCTE9DSy4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMpOiBMaWtld2lzZS4KCjIwMDQtMDUtMTMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1naW1wbGUuYzogUmVuYW1lIGZyb20gdHJlZS1zaW1wbGUuYy4KCSogdHJlZS1naW1wbGUuaDogUmVuYW1lIGZyb20gdHJlZS1zaW1wbGUuaC4KCSogYy1naW1wbGlmeS5jOiBSZW5hbWUgZnJvbSBjLXNpbXBsaWZ5LmMKCSogTWFrZWZpbGUuaW4sIGMtZGVjbC5jLCBnaW1wbGUtbG93LmMsIGdpbXBsaWZ5LmMsCglsYW5naG9va3MuYywgdHJlZS1hbGlhcy1hbmRlci5jLCB0cmVlLWFsaWFzLWNvbW1vbi5jLAoJdHJlZS1jb21wbGV4LmMsIHRyZWUtZGZhLmMsIHRyZWUtZmxvdy5oLCB0cmVlLWlubGluZS5jLAoJdHJlZS1pbnRvLXNzYS5jLCB0cmVlLWl0ZXJhdG9yLmMsIHRyZWUtbXVkZmxhcC5jLAoJdHJlZS1uZXN0ZWQuYywgdHJlZS1ub211ZGZsYXAuYywgdHJlZS1vdXRvZi1zc2EuYywgdHJlZS1zcmEuYywKCXRyZWUtc3NhLWFsaWFzLmMsIHRyZWUtc3NhLWNjcC5jLCB0cmVlLXNzYS1jb3B5cmVuYW1lLmMsCgl0cmVlLXNzYS1kY2UuYywgdHJlZS1zc2EtbGl2ZS5jLCB0cmVlLXNzYS1wcmUuYywgdHJlZS1zc2EuYzoKCVVwZGF0ZS4KCjIwMDQtMDUtMTQgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IE1lbnRpb24gbGliYmFuc2hlZSBhbmQgbGlibXVkZmxhcC4KCjIwMDQtMDUtMTMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogdHJlZS1zc2EuYyAoZGVsZXRlX3RyZWVfc3NhKTogWEZSRUUKCWJpdG1hcHMgYWxsb2NhdGVkIHdpdGggQklUTUFQX1hNQUxMT0MuCgoJKiB0cmVlLXNzYS1wcmUuYyAoZXhlY3V0ZV9wcmUpOiBGcmVlIGVwaGlfdXNlX3Bvb2wgYW5kCglpZGZzX2NhY2hlIGF0IHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLgoKCSogdHJlZS1zc2EtbGl2ZS5jIChjYWxjdWxhdGVfbGl2ZV9vbl9lbnRyeSk6IEZyZWUgc2F3X2RlZgoJYXQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCgoJKiB0cmVlLXNzYS1kY2UuYyAocGVyZm9ybV90cmVlX3NzYV9kY2UpOiBGcmVlCgllbCBhdCB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KCgkqIHRyZWUtaW50by1zc2EuYyAoaW5zZXJ0X3BoaV9ub2Rlc19mb3IpOiBYRlJFRQoJYml0bWFwcyBhbGxvY2F0ZWQgd2l0aCBCSVRNQVBfWE1BTExPQy4KCgkqIGxvb3AtdW5zd2l0Y2guYyAodW5zd2l0Y2hfc2luZ2xlX2xvb3ApOiBGcmVlIGJicyBhdAoJdGhlIGVuZC4KCgkqIGZpbmFsLmMgKHNob3J0ZW5fYnJhbmNoZXMpOiBGcmVlIHVpZF9zaHVpZCBiZWZvcmUKCXJlYWxsb2NhdGluZyBpdC4KCgkqIGJiLXJlb2Rlci5jIChjb25uZWN0X3RyYWNlcyk6IEZyZWUgY29sZF90cmFjZXMgYXQgdGhlIGVuZC4KCjIwMDQtMDUtMTMgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1saXZlLmMgKGNhbGN1bGF0ZV9saXZlX29uX2VudHJ5KTogSWdub3JlIHZpcnR1YWwKCXZhcmlhYmxlcy4gIFNpbXBsaWZ5IHNsaWdodGx5IGJ5IHVzaW5nIFVTRV9PUC9ERUZfT1AgaW5zdGVhZAoJb2YgVVNFX09QX1BUUi9ERUZfT1BfUFRSIGFuZCBkZXJlZmVyZW5jaW5nIHRoZSByZXN1bHQuCgoJKiB0cmVlLWludG8tc3NhLmMgKGNvbXB1dGVfZ2xvYmFsX2xpdmVpbik6IFVzZSBFWEVDVVRFX0lGX1NFVF9JTl9CSVRNQVAKCXJhdGhlciB0aGFuIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBibG9ja3MgdGVzdGluZyBlYWNoIGJpdCBpbgoJbGl2ZWluIHRvIGluaXRpYWxpemUgdGhlIHdvcmtsaXN0LgoJKG1hcmtfZGVmX3NpdGVzKTogUmVtb3ZlIHVzZWxlc3MgY2hlY2tzIG9mIEtJTExTIGZvciB2aXJ0dWFsCglvcGVyYW5kcy4KCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKHJlY29yZF9zaW5nbGVfYXJndW1lbnRfY29uZF9leHBycyk6IEFjY2VwdAoJbmV3IHBhcmFtZXRlcnMgZm9yIHRoZSBzdGF0ZW1lbnQgYW5kIHZhcmlhYmxlIHdvcmtsaXN0IGFzIHdlbGwKCWFzIGEgYml0bWFwIG9mIGludGVyZXN0aW5nIFNTQV9OQU1Fcy4gIFdhbGsgb3ZlciB0aGUgc3RhdGVtZW50Cgl3b3JrbGlzdCByZWNvcmRpbmcgaW50ZXJlc3RpbmcgdmFyaWFibGVzIGluIHRoZSB2YXJpYWJsZSB3b3JrbGlzdAoJYW5kIGJpdG1hcC4gIEhhbmRsZSBjYXN0cyBiZXR3ZWVuIGludGVncmFsIGFuZCBib29sZWFuIHR5cGVzLgoJKHN1YnN0aXR1dGVfc2luZ2xlX3VzZV92YXJzKTogQWNjZXB0IG5ldyBwYXJhbWV0ZXJzIGZvciB0aGUgc3RhdGVtZW50CglhbmQgdmFyaWFibGUgd29ya2xpc3QuICBXaGVuIGEgc3Vic3RpdHV0aW9uIGlzIG1hZGUgYWRkIGEgbmV3CgllbnRyeSB0byB0aGUgc3RhdGVtZW50IHdvcmtsaXN0LiAgSGFuZGxlIGNhc3RzIGJldHdlZW4gaW50ZWdyYWwKCWFuZCBib29sZWFuIHR5cGVzLgoJKHRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFycyk6IFJld29yayB0byBwYXNzCgl3b3JrbGlzdHMgdG8gY2hpbGRyZW4uICBJdGVyYXRlIHVudGlsIHRoZSBzdGF0ZW1lbnQgd29ya2xpc3QKCWlzIGVtcHR5LgoKMjAwNC0wNS0xMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB0cmVlLW91dG9mLXNzYS5jIChyZXdyaXRlX3ZhcnNfb3V0X29mX3NzYSk6IEZyZWUgbWFwIGF0Cgl0aGUgZW5kIG9mIHRoZSBibG9jay4KCgkqIHRyZWUtaW50by1zc2EuYyAoZGVmX2Jsb2Nrc19mcmVlKTogWEZSRUUgYml0bWFwcyBhbGxvY2F0ZWQKCXdpdGggQklUTUFQX1hNQUxMT0MuCgoJKiB0cmVlLXNzYS1hbGlhcy5jIChkZWxldGVfYWxpYXNfaW5mbyk6IFhGUkVFIGJpdG1hcHMgYWxsb2NhdGVkCgl3aXRoIEJJVE1BUF9YTUFMTE9DLgoKCSogdHJlZS1zc2EtZG9tLmMgKHRyZWVfc3NhX2RvbWluYXRvcl9vcHRpbWl6ZSk6CglGcmVlIG5vbnplcm9fdmFycyBhdCB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogTWFrZSBhIENPTlZFUlRfRVhQUiB3aGVuIHRoZXJlIGlzIGEKCW5lZWQgdG8gZ2VuZXJhdGUgY29kZSBpbnN0ZWFkIG9mIGEgTk9QX0VYUFIuCgoyMDA0LTA1LTEzICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogZ2NjLmMgKGRlZmF1bHRfY29tcGlsZXJzKTogRmlsbCBvdXQgaW5pdGlhbGl6ZXJzIGZvciBuZXcgRm9ydHJhbgoJZW50cmllcy4KCjIwMDQtMDUtMTMgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5oIChQQ0NfQklURklFTERfVFlQRV9NQVRURVJTKTogRGVmaW5lLgoKMjAwNC0wNS0xMyAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9kZWZhdWx0X3Nob3J0X2VudW1zKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9ERUZBVUxUX1NIT1JUX0VOVU1TKTogRGVmaW5lLgoKMjAwNC0wNS0xMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJTWVyZ2UgZnJvbSB0cmVlLXNzYS0yMDAyMDYxOS1icmFuY2guCgoJKiBNYWtlZmlsZS5pbiAocmVsb2FkMS5vLXdhcm4pOiBBZGQuCgkodHJlZS1hbGlhcy1hbmRlci5vLXdhcm4pOiBBZGQuCgkoR01QTElCUyk6IERlZmluZS4KCShHTVBJTkMpOiBEZWZpbmUuCgkoQkFOU0hFRUxJQik6IERlZmluZS4KCShCQU5TSEVFSU5DKTogRGVmaW5lLgoJKFRSRUVfRFVNUF9IKTogRGVmaW5lLgoJKFRSRUVfU0lNUExFX0gpOiBEZWZpbmUuCgkoVFJFRV9GTE9XX0gpOiBEZWZpbmUuCgkoTElCREVQUyk6IEFkZCBCQU5TSEVFTElCLgoJKElOQ0xVREVTKTogQWRkIEJBTlNIRUVJTkMgYW5kIEdNUElOQy4KCShDX0FORF9PQkpDX09CSlMpOiBBZGQgYy1zaW1wbGlmeS5vLCB0cmVlLW11ZGZsYXAubywKCWMtbXVkZmxhcC5vIGFuZCBjLXByZXR0eS1wcmludC5vLgoJKENfT0JKUyk6IFJlbW92ZSBjLXByZXR0eS1wcmludC5vLgoJKE9CSlMtY29tbW9uKTogUmVtb3ZlIHNpYmNhbGwuby4KCUFkZCB0cmVlLWNmZy5vLCB0cmVlLWRmYS5vLCB0cmVlLWVoLm8sCgl0cmVlLXNzYS5vLCB0cmVlLW9wdGltaXplLm8sIHRyZWUtc2ltcGxlLm8sCgl0cmVlLWFsaWFzLXR5cGUubywgZ2ltcGxpZnkubywgdHJlZS1wcmV0dHktcHJpbnQubywKCXRyZWUtaW50by1zc2EubywgdHJlZS1vdXRvZi1zc2EubywgdHJlZS1hbGlhcy1jb21tb24ubywKCXRyZWUtc3NhLWNjcC5vLCBAQU5ERVJALCB0cmVlLXNzYS1kY2UubywgdHJlZS1zc2EtY29weS5vLAoJdHJlZS1ucnYubywgdHJlZS1zc2EtY29weXJlbmFtZS5vLCB0cmVlLXNzYS1wcmUubywKCXRyZWUtc3NhLWxpdmUubywgdHJlZS1zc2Etb3BlcmFuZHMubywgdHJlZS1zc2EtYWxpYXMubywKCXRyZWUtc3NhLXBoaW9wdC5vLCB0cmVlLXNzYS1mb3J3cHJvcC5vLCB0cmVlLW5lc3RlZC5vLAoJdHJlZS1zc2EtZHNlLm8sIHRyZWUtc3NhLWRvbS5vLCBkb213YWxrLm8sCgl0cmVlLXRhaWxjYWxsLm8sIGdpbXBsZS1sb3cubywgdHJlZS1pdGVyYXRvci5vLAoJdHJlZS1waGlub2Rlcy5vLCB0cmVlLXNzYW5hbWVzLm8sIHRyZWUtc3JhLm8sCgl0cmVlLWNvbXBsZXgubywgdHJlZS1zc2EtbG9vcC5vLCBydGwtcHJvZmlsZS5vIGFuZAoJdHJlZS1wcm9maWxlLm8uCgkoT0JKQy1hcmNoaXZlKTogQWRkIHRyZWUtbm9tdWRmbGFwLm8uCgkoY2MxKTogQWRkIGRlcGVuZGVuY3kgb24gQFRSRUVCUk9XU0VSQC4KCShjLWRlY2wubyk6IEFkZCBkZXBlbmRlbmN5IG9uIFRSRUVfRFVNUF9ILgoJKGMtZHVtcC5vKTogTGlrZXdpc2UuCgkoYy1jb21tb24ubyk6IEFkZCBkZXBlbmRlbmN5IG9uIHRyZWUtaXRlcmF0b3IuaAoJKGMtcHJldHR5LXByaW50Lm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBESUFHTk9TVElDX0guCgkoZ3R5cGUtZGVzYy5vKTogQWRkIGRlcGVuZGVuY3kgb24gVFJFRV9GTE9XX0guCgkodHJlZS5vKTogQWRkIGRlcGVuZGVuY3kgb24gdHJlZS1pdGVyYXRvci5oLAoJQkFTSUNfQkxPQ0tfSCBhbmQgVFJFRV9GTE9XX0guCgkodHJlZS1kdW1wLm8pOiBEZXBlbmQgb24gVFJFRV9EVU1QX0ggaW5zdGVhZCBvZiB0cmVlLWR1bXAuaC4KCShsYW5naG9va3Mubyk6IEFkZCBkZXBlbmRlbmN5IG9uIFRSRUVfU0lNUExFX0guCgkodHJlZS1hbGlhcy10eXBlLm8sIHRyZWUtYWxpYXMtYW5kZXIubywKCXRyZWUtYWxpYXMtY29tbW9uLm8sIHRyZWUtc3NhLm8sIHRyZWUtaW50by1zc2EubywKCXRyZWUtb3V0b2Ytc3NhLm8sIHRyZWUtc3NhLWRzZS5vLCB0cmVlLXNzYS1mb3J3cHJvcC5vLAoJdHJlZS1zc2EtcGhpb3B0Lm8sIHRyZWUtbnJ2Lm8sIHRyZWUtc3NhLWNvcHkubywKCXRyZWUtc3NhLWRvbS5vLCB0cmVlLXNzYW5hbWVzLm8sIHRyZWUtcGhpbm9kZXMubywKCWRvbXdhbGsubywgdHJlZS1zc2EtbGl2ZS5vLCB0cmVlLXNzYS1jb3B5cmVuYW1lLm8sCgl0cmVlLXNzYS1wcmUubywgdHJlZS1jZmcubywgdHJlZS10YWlsY2FsbC5vLAoJdHJlZS1uZXN0ZWQubywgdHJlZS1pdGVyYXRvci5vLCB0cmVlLWRmYS5vLAoJdHJlZS1zc2Etb3BlcmFuZHMubywgdHJlZS1laC5vLCB0cmVlLXNzYS1sb29wLm8sCgl0cmVlLXNzYS1hbGlhcy5vLCB0cmVlLW9wdGltaXplLm8sIGMtc2ltcGxpZnkubywKCWdpbXBsaWZ5Lm8sIGdpbXBsZS1sb3cubywgdHJlZS1icm93c2VyLm8sIHRyZWUtc2ltcGxlLm8sCgl0cmVlLW11ZGZsYXAubywgYy1tdWRmbGFwLm8sIHRyZWUtbm9tdWRmbGFwLm8sCgl0cmVlLXByZXR0eS1wcmludC5vLCB0cmVlLXNzYS1kY2UubywgdHJlZS1zc2EtY2NwLm8sCgl0cmVlLXNyYS5vLCB0cmVlLWNvbXBsZXgubywgdHJlZS1wcm9maWxlLm8sCglydGwtcHJvZmlsZS5vKTogTmV3IHJ1bGVzLgoJKGZ1bmN0aW9uLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBiYXNpYy1ibG9jay5oCgkoZXhwci5vKTogQWRkIGRlcGVuZGVuY3kgb24gdHJlZS1pdGVyYXRvci5oLgoJKHNpYmNhbGwubyk6IFJlbW92ZS4KCShwcm9maWxlLm8pOiBEZXBlbmQgb24gVFJFRV9GTE9XX0ggaW5zdGVhZCBvZiBUUkVFX0guCgkoY2ZnLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBUSU1FVkFSX0guCgkoY2ZnaG9va3Mubyk6IEFkZCBkZXBlbmRlbmN5IG9uIFRSRUVfRkxPV19ILgoJKHJlZy1zdGFjay5vKTogQWRkIGRlcGVuZGVuY3kgb24gYmFzaWMtYmxvY2suaC4KCShHVEZJTEVTKTogQWRkIGh3aW50LmgsIHRyZWUtbXVkZmxhcGguYywgdHJlZS1mbG93LmgsCgljLW9iamMtY29tbW9uLmMsIGMtY29tbW9uLmMsIGMtcGFyc2UuaW4sIHRyZWUtc3NhbmFtZXMuYywKCXRyZWUtZWguYywgdHJlZS1waGlub2Rlcy5jLCB0cmVlLWNmZy5jLCB0cmVlLWRmYS5jLAoJdHJlZS1zc2EtY2NwLmMsIHRyZWUtaXRlcmF0b3IuYywgZ2ltcGxpZnkuYywKCXRyZWUtYWxpYXMtdHlwZS5oLCB0cmVlLWFsaWFzLWNvbW1vbi5oLAoJdHJlZS1hbGlhcy10eXBlLmMsIHRyZWUtYWxpYXMtY29tbW9uLmMsCgl0cmVlLXNzYS1vcGVyYW5kcy5oLCB0cmVlLXNzYS1vcGVyYW5kcy5jLCB0cmVlLXByb2ZpbGUuYywKCXJ0bC1wcm9maWxlLmMgYW5kIHRyZWUtbmVzdGVkLmMuCgkoZ3QtdHJlZS1hbGlhcy1jb21tb24uaCwgZ3QtdHJlZS1tdWRmbGFwLmgsCglndC10cmVlLXNzYS1jY3AuaCwgZ3QtdHJlZS1laC5oLCBndC10cmVlLXNzYW5hbWVzLmgsCglndC10cmVlLWl0ZXJhdG9yLmgsIGd0LWdpbXBsaWZ5LmgsIGd0LXRyZWUtcGhpbm9kZXMuaCwKCWd0LXRyZWUtY2ZnLmgsIGd0LXRyZWUtbmVzdGVkLmgpOiBOZXcgcnVsZXMuCgkoVEVYSV9HQ0NJTlRfRklMRVMpOiBBZGQgY2ZnLnRleGkgYW5kIHRyZWUtc3NhLnRleGkuCgkqIGJhc2ljLWJsb2NrLmg6IEluY2x1ZGUgcHJlZGljdC5oCgkoc3RydWN0IGVkZ2VfZGVmKTogQWRkIEdUWSBtYXJrZXIuCglDaGFuZ2UgZmllbGQgJ2luc25zJyB0byBiZSBhIHVuaW9uIG9mIHRyZWUgYW5kIHJ0eC4KCShFREdFX1RSVUVfVkFMVUUpOiBEZWZpbmUuCgkoRURHRV9GQUxTRV9WQUxVRSk6IERlZmluZS4KCShFREdFX0VYRUNVVEFCTEUpOiBEZWZpbmUuCgkoc3RydWN0IGJiX2Fubl9kKTogRm9yd2FyZCBkZWNsYXJlLgoJKHN0cnVjdCBiYXNpY19ibG9ja19kZWYpOiBBZGQgR1RZIG1hcmtlci4KCVJlbW92ZSBmaWVsZHMgaGVhZF90cmVlIGFuZCBlbmRfdHJlZS4KCUFkZCBmaWVsZHMgc3RtdF9saXN0LCByYmkgYW5kIHRyZWVfYW5ub3RhdGlvbnMuCgkoc3RydWN0IHJlb3JkZXJfYmxvY2tfZGVmKTogRGVmaW5lLgoJKGJhc2ljX2Jsb2NrX2luZm8pOiBBZGQgR1RZIG1hcmtlci4KCShFTlRSWV9CTE9DS19QVFIsIEVYSVRfQkxPQ0tfUFRSKTogQ2hhbmdlIHRvIGdsb2JhbAoJdmFyaWFibGVzIGluc3RlYWQgb2YgbWFjcm9zLgoJKGZsb3dfY2FsbF9lZGdlc19hZGQpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkobWFrZV9laF9lZGdlKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGJyaWVmX2R1bXBfY2ZnLCBmaW5kX2VkZ2UsIHRyZWVfcHJlZGljdGVkX2J5X3AsCglydGxfcHJlZGljdGVkX2J5X3AsIHRyZWVfcHJlZGljdF9lZGdlLCBydGxfcHJlZGljdF9lZGdlLAoJcHJlZGljdF9lZGdlX2RlZiwgcnRsX21ha2VfZWhfZWRnZSwgZmluZF9iYXNpY19ibG9ja3MsCgljbGVhbnVwX2NmZywgZGVsZXRlX3VucmVhY2hhYmxlX2Jsb2NrcywgbWVyZ2Vfc2VxX2Jsb2NrcywKCWFsbG9jX3JiaV9wb29sLCBpbml0aWFsaXplX2JiX3JiaSwgZnJlZV9yYmlfcG9vbCk6IERlY2xhcmUuCgkodHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogTW9kZml5IHJldHVybiB0eXBlIHRvCgllZGdlIGluc3RlYWQgb2YgYm9vbC4KCSogYmItcmVvcmRlci5jIChjb3B5X2JiKTogQ2FsbCBkdXBsaWNhdGVfYmxvY2sKCWluc3RlYWQgb2YgY2ZnX2xheW91dF9kdXBsaWNhdGVfYmIuCgkoY29weV9iYl9wKTogQ2FsbCBjYW5fZHVwbGljYXRlX2Jsb2NrX3AgaW5zdGVhZCBvZgoJY2ZnX2xheW91dF9jYW5fZHVwbGljYXRlX2JiX3AuCgkqIGJpdG1hcC5jIChiaXRtYXBfZmlyc3Rfc2V0X2JpdCk6IEFib3J0IGlmIHdvcmQKCXdhc24ndCBmb3VuZC4KCShiaXRtYXBfbGFzdF9zZXRfYml0KTogTGlrZXdpc2UuCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChERUZfRlVOQ1RJT05fVFlQRV8yKTogQWRkCgkoREVGX0ZVTkNUSU9OX1RZUEVfMyk6IEFkZC4KCSogYnVpbHRpbnMuYyAoY19zdHJsZW4pOiBNYWtlIGV4dGVybi4KCShidWlsdGluX3NhdmVfZXhwcik6IE5ldy4KCShleHBhbmRfYnVpbHRpbl9ub25sb2NhbF9nb3RvKTogTmV3LgoJKGV4cGFuZF9idWlsdGluX2NvbnN0YW50X3ApOiBSZW1vdmUuCgkoZXhwYW5kX2J1aWx0aW5fbWF0aGZuKTogQ2FsbCBidWlsdGluX3NhdmVfZXhwciBpbnN0ZWFkCglvZiBzYXZlX2V4cHIuCgkoZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzIpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zdHJjbXApOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zdHJuY21wKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY2F0KTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2NhYnMpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9hbGxvY2EpOiBEb24ndCB0cmlnZ2VyIGlmIC1mbXVkZmxhcCBpcwoJZ2l2ZW4uCgkoYnVpbGRfc3RyaW5nX2xpdGVyYWwpOiBTZXQgVFJFRV9JTlZBUklBTlQgb24gbmV3IG5vZGUuCgkoZXhwYW5kX2J1aWx0aW5fcHJvZmlsZV9mdW4pOiBOZXcuCgkocm91bmRfdHJhbXBvbGluZV9hZGRyKTogTmV3LgoJKGV4cGFuZF9idWlsdGluX2luaXRfdHJhbXBvbGluZSk6IE5ldy4KCShleHBhbmRfYnVpbHRpbl9hZGp1c3RfdHJhbXBvbGluZSk6IE5ldy4KCShleHBhbmRfYnVpbHRpbikgPEJVSUxUX0lOX05FWFRfQVJHPjogQ2FsbCBzaW1wbGlmeV9idWlsdGluX25leHRfYXJnLgoJPEJVSUxUX0lOX0NPTlNUQU5UX1A+OiBSZXR1cm4gY29uc3QwX3J0eDsKCTxCVUlMVF9JTl9TVEFDS19BTExPQywgQlVJTFRfSU5fU1RBQ0tfU0FWRSwKCUJVSUxUX0lOX1NUQUNLX1JFU1RPUkUsIEJVSUxUX0lOX05PTkxPQ0FMX0dPVE8sCglCVUlMVF9JTl9QUk9GSUxFX0ZVTkNfRU5URVIsIEJVSUxUX0lOX1BST0ZJTEVfRlVOQ19FWElULAoJQlVJTFRfSU5fSU5JVF9UUkFNUE9MSU5FLCBCVUlMVF9JTl9BREpVU1RfVFJBTVBPTElORT46CglIYW5kbGUuCgkoZm9sZF9idWlsdGluX2V4cGVjdCk6IE5ldy4KCShmb2xkX2J1aWx0aW5faXNhc2NpaSk6IERvbid0IHJldHVybiBub24tY29uc3RhbnQgcmVzdWx0cwoJaW4gR0lNUExFIGZvcm0uCgkoZm9sZF9idWlsdGluX2lzZGlnaXQpOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW5fMSk6IE5ldy4KCShmb2xkX2J1aWx0aW4pOiBDYWxsIGl0LgoJKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfZXhwcik6IFVwZGF0ZSBjYWxsIHRvIGJ1aWxkIGEgbmV3CglDQUxMX0VYUFIuCgkocHVyZ2VfYnVpbHRpbl9jb25zdGFudF9wKTogUmVtb3ZlLgoJKHNpbXBsaWZ5X2J1aWx0aW4sIHNpbXBsaWZ5X2J1aWx0aW5fbWVtY21wLAoJc2ltcGxpZnlfYnVpbHRpbl9zdHJjbXAsIHNpbXBsaWZ5X2J1aWx0aW5fc3RybmNtcCwKCXNpbXBsaWZ5X2J1aWx0aW5fc3RycGJyaywgc2ltcGxpZnlfYnVpbHRpbl9zdHJzdHIsCglzaW1wbGlmeV9idWlsdGluX3N0cmNociwgc2ltcGxpZnlfYnVpbHRpbl9zdHJyY2hyLAoJc2ltcGxpZnlfYnVpbHRpbl9zdHJjYXQsIHNpbXBsaWZ5X2J1aWx0aW5fc3RybmNhdCwKCXNpbXBsaWZ5X2J1aWx0aW5fc3Ryc3BuLCBzaW1wbGlmeV9idWlsdGluX3N0cmNzcG4sCglzaW1wbGlmeV9idWlsdGluX25leHRfYXJnLCBzaW1wbGlmeV9idWlsdGluX3ZhX3N0YXJ0LAoJc2ltcGxpZnlfYnVpbHRpbl9zcHJpbnRmKTogTmV3LgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX1NUQUNLX0FMTE9DLAoJQlVJTFRfSU5fU1RBQ0tfU0FWRSwgQlVJTFRfSU5fU1RBQ0tfUkVTVE9SRSwKCUJVSUxUX0lOX0lOSVRfVFJBTVBPTElORSwgQlVJTFRfSU5fQURKVVNUX1RSQU1QT0xJTkUsCglCVUlMVF9JTl9OT05MT0NBTF9HT1RPLCBCVUlMVF9JTl9QUk9GSUxFX0ZVTkNfRU5URVIsCglCVUlMVF9JTl9QUk9GSUxFX0ZVTkNfRVhJVCk6IERlZmluZS4KCSogYy1jb21tb24uYzogSW5jbHVkZSB0cmVlLWl0ZXJhdG9yLmggYW5kIGhhc2h0YWIuaC4KCShsYW5nX3N0YXRlbWVudF9jb2RlX3ApOiBEZWNsYXJlLgoJKGxhbmdfZ2ltcGxpZnlfc3RtdCk6IERlY2xhcmUuCgkoZml4X3N0cmluZ190eXBlKTogU2V0IFRSRUVfSU5WQVJJQU5UIGZvciB2YWx1ZS4KCShwb2ludGVyX2ludF9zdW0pOiBSZWx5IG9uIGJ1aWxkIHRvIHNldCBUUkVFX0NPTlNUQU5ULgoJKGNfdHlwZV9oYXNoKTogTmV3LgoJKGNfY29tbW9uX2dldF9hbGlhc19zZXQpOiBIYW5kbGUgbXVsdGlwbGUgdHlwZSBub2RlcwoJcmVmZXJyaW5nIHRvICJ0aGUgc2FtZSIgdHlwZSwgY3VycmVudGx5IGZvciBDOTAgb25seS4KCShjX2FkZF9jYXNlX2xhYmVsKTogVXNlIGNyZWF0ZV9hcnRpZmljaWFsX2xhYmVsLgoJKGZpbmlzaF9sYWJlbF9hZGRyZXNzX2V4cHIpOiBEb24ndCBzZXQgVFJFRV9DT05TVEFOVCBvbgoJcmVzdWx0LgoJKGNfZXhwYW5kX2V4cHIpOiBEb24ndCBoYW5kbGUgU1RNVF9FWFBSLgoJKGhhbmRsZV9hbGlhc19hdHRyaWJ1dGUpOiBNYXJrZSBhbGlhc2VkIHZhcmlhYmxlcyB0byBiZQoJVFJFRV9TVEFUSUMuCgkoaGFuZGxlX25vbm51bGxfYXR0cmlidXRlKTogSW5pdGlhbGl6ZSBhcmdfbnVtLgoJKGNoZWNrX2Z1bmN0aW9uX25vbm51bGwpOiBMaWtld2lzZS4KCShjX3dhbGtfc3VidHJlZXMpOiBOZXcuCgkoY19lc3RpbWF0ZV9udW1faW5zbnNfMSk6IERvbid0IGhhbmRsZQoJRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04gbm9yIEZJTEVfU1RNVC4KCShjX2RlY2xfdW5pbml0XzEpOiBSZW1vdmUuCgkoY19kZWNsX3VuaW5pdCk6IFJlbW92ZS4KCShjX3dhcm5fdW51c2VkX3Jlc3VsdCk6IE5ldy4KCSogYy1jb21tb24uZGVmIChBU01fU1RNVCk6IENoYW5nZSBudW1iZXIgb2Ygb3BlcmFuZHMKCXRvIDQuCgkoRklMRV9TVE1UKTogUmVtb3ZlLgoJKiBjLWNvbW1vbi5oIChsYW5nX2V4cGFuZF9zdG10LCBsYW5nX2V4cGFuZF9kZWNsX3N0bXQpOgoJUmVtb3ZlLgoJKGxhbmdfZ2ltcGxpZnlfc3RtdCk6IEFkZC4KCShleHBhbmRfc3RtdCk6IFJlbW92ZS4KCShBU01fQ1ZfUVVBTCwgQVNNX1NUUklORywgQVNNX09VVFBVVFMsIEFTTV9JTlBVVFMsCglBU01fQ0xPQkJFUlMsIFNUTVRfRVhQUl9XQVJOX1VOVVNFRF9SRVNVTFQsCglBU01fVk9MQVRJTEVfUCwgRklMRV9TVE1UX0ZJTEVOQU1FX05PREUsCglGSUxFX1NUTVRfRklMRU5BTUUsIFNUTVRfTElORU5PLCBTVE1UX0xJTkVOT19GT1JfRk5fUCwKCUFTTV9JTlBVVF9QLCBERUNMX0NfSEFSRF9SRUdJU1RFUik6IFJlbW92ZS4KCShnZW5ydGxfZG9fcHVzaGxldmVsLCBnZW5ydGxfZ290b19zdG10LCBnZW5ydGxfZXhwcl9zdG10LAoJZ2VucnRsX2V4cHJfc3RtdF92YWx1ZSwgZ2VucnRsX2RlY2xfc3RtdCwgZ2VucnRsX2lmX3N0bXQsCglnZW5ydGxfd2hpbGVfc3RtdCwgZ2VucnRsX2RvX3N0bXQsIGdlbnJ0bF9yZXR1cm5fc3RtdCwKCWdlbnJ0bF9mb3Jfc3RtdCwgZ2VucnRsX2JyZWFrX3N0bXQsIGdlbnJ0bF9jb250aW51ZV9zdG10LAoJZ2VucnRsX3Njb3BlX3N0bXQsIGdlbnJ0bF9zd2l0Y2hfc3RtdCwgZ2VucnRsX2Nhc2VfbGFiZWwsCglnZW5ydGxfY29tcG91bmRfc3RtdCwgZ2VucnRsX2FzbV9zdG10LAoJZ2VucnRsX2NsZWFudXBfc3RtdCwgY19kZWNsX3VuaW5pdCk6IFJlbW92ZS4KCShjX2RvX3N3aXRjaF93YXJuaW5ncywgY19naW1wbGlmeV9leHByLCBjX3dhbGtfc3VidHJlZXMsCgljX3RyZWVfY2hhaW5fbWF0dGVyc19wLCBjX3dhcm5fdW51c2VkX3Jlc3VsdCwKCWNfZ2VuZXJpY2l6ZSwgY19naW1wbGlmeV9zdG10LCBzdG10X2V4cHJfbGFzdF9zdG10KToKCURlY2xhcmUuCgkqIGMtY29udmVydC5jIChjb252ZXJ0KTogTWFrZSBjb252ZXJ0IHdvcmsgd2hlbgoJY29udmVydGluZyB0byBjb21wYXRpYmxlIHR5cGVzIGFjcm9zcyB0cmFuc2xhdGlvbiB1bml0LgoJKiBjLWRlY2wuYzogSW5jbHVkZSBsYW5naG9va3MuaCwgdHJlZS1tdWRmbGFwLmgsCgl0cmVlLXNpbXBsZS5oLCBkaWFnbm9zdGljLmggYW5kIHRyZWUtZHVtcC5oCgkobWVyZ2VfZGVjbHMpOiBJbml0aWFsaXplIG9sZHR5cGUgdG8gTlVMTC4KCShmaW5pc2hfZGVjbCk6IFVzZSBERUNMX0hBUkRfUkVHSVNURVIgaW5zdGVhZCBvZgoJREVDTF9DX0hBUkRfUkVHSVNURVIuCgkoY2hlY2tfYml0ZmllbGRfdHlwZV9hbmRfd2lkdGgpOiBDaGVjayBmb3IgbnVsbAoJbGFuZ190eXBlX3NwZWNpZmljIHdoZW4gY2hlY2sgdGhlIHByZWNpc2lvbiBvZiBhbiBlbnVtLgoJKGdyb2tkZWNsYXJhdG9yKTogSW1tZWRpYXRlbHkgbGF5b3V0IGFuIEFSUkFZX1RZUEUgdXNlZAoJaW4gYSBwb2ludGVyLXRvLWFycmF5IGRlY2xhcmF0b3IuCgkoZmluaXNoX3N0cnVjdCk6IENsZWFyIGFsbG9jYXRlZCBzdHJ1Y3QgbGFuZ190eXBlLgoJKGZpbmlzaF9lbnVtKTogU2V0IGVudW1fbWluIGFuZCBlbnVtX21heC4gIFNldAoJVFlQRV9NSU4vTUFYX1ZBTFVFIHRvIHRoZSBsaW1pdHMgb2YgdGhlIGNvbXBhdGlibGUgdHlwZSwKCW5vdCB0byB0aGUgZW51bWVyYXRvcnMuCgkoc2V0X2RlY2xfbm9ubG9jYWwpOiBOZXcuCgkoc3RvcmVfcGFybV9kZWNscyk6IFVzZSBpdCB2aWEgd2Fsa190cmVlLgoJKGNfZmluYWxpemUpOiBOZXcuCgkoZmluaXNoX2Z1bmN0aW9uKTogV2hlbiAhdGFyZ2V0bS5oYXZlX2N0b3JzX2R0b3JzLAoJcmVjb3JkIHN0YXRpYyBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGhlcmUuLi4KCShjX2V4cGFuZF9ib2R5XzEpOiAuLi4gbm90IGhlcmUuCgkoY19leHBhbmRfZGVjbCk6IFJlbmFtZSBmcm9tIGNfZXhwYW5kX2RlY2xfc3RtdC4KCUhhbmRsZSBhbGwgQy1zcGVjaWZpYyBleHBhbnNpb24gc2VtYW50aWNzLgoJKiBjLWR1bXAuYyAoZHVtcF9zdG10KTogVXNlIEVYUFJfTE9DVVMgaW5zdGVhZCBvZgoJU1RNVF9MSU5FTk8uCgkqIGMtZm9ybWF0LmMgKGhhbmRsZV9mb3JtYXRfYXJnX2F0dHJpYnV0ZSk6IEluaXRpYWxpemUKCWZvcm1hdF9udW0uCgkqIGMtbGFuZy5jOiBJbmNsdWRlIHRyZWUtaW5saW5lLmgKCShMQU5HX0hPT0tTX0VYUEFORF9ERUNMLAoJTEFOR19IT09LU19GVU5DVElPTl9NSVNTSU5HX05PUkVUVVJOX09LX1AsCglMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfV0FMS19TVUJUUkVFUywKCUxBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19UUkVFX0NIQUlOX01BVFRFUlNfUCwKCUxBTkdfSE9PS1NfR0lNUExJRllfRVhQUiwgTEFOR19IT09LU19UWVBFU19DT01QQVRJQkxFX1ApOiBEZWZpbmUuCgkoTEFOR19IT09LU19ERUNMX1VOSU5JVCwgTEFOR19IT09LU19SVExfRVhQQU5EX1NUTVQsCglMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfRVNUSU1BVEVfTlVNX0lOU05TKTogUmVtb3ZlLgoJKGNfdHlwZXNfY29tcGF0aWJsZV9wKTogTmV3LgoJKiBjLW11ZGZsYXAuYzogTmV3IGZpbGUuCgkqIGMtb2JqYy1jb21tb24uYzogSW5jbHVkZSB0cmVlLW11ZGZsYXAuaAoJKHN0YXJ0X2NkdG9yLCBmaW5pc2hfY2R0b3IpOiBDb2xsYXBzZQoJdG9nZXRoZXIgaW50bwoJKGJ1aWxkX2NkdG9yKTogLi4uaGVyZS4gIFVwZGF0ZSB0byBjb25zdHJ1Y3QgYSBjb21wbGV0ZSB0cmVlCglmb3IgdGhlIGZ1bmN0aW9uLiAgTm8gbmVlZCB0byBjYWxsIHB1c2hfc2NvcGUsIHBvcF9zY29wZSwgb3IKCWNsZWFyX2xhc3RfZXhwciwgb3Igc2V0IGN1cnJlbnRfZnVuY3Rpb25fY2Fubm90X2lubGluZS4KCShjX21pc3Npbmdfbm9yZXR1cm5fb2tfcCk6IENoYW5nZSBwcm90b3R5cGUgdG8gcmV0dXJuCglib29sLgoJKGNfb2JqY19jb21tb25faW5pdCk6IERvbid0IHNldCBsYW5nX21pc3Npbmdfbm9yZXR1cm5fb2tfcC4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBNb3ZlIGhhbmRsaW5nIG9mIC1mZHVtcC0gdG8KCW9wdHMuYy4KCShjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBEb24ndCBldmVyIHVzZSBydGwgaW5saW5pbmcuCgkqIGMtcGFyc2UuaW46IFVzZSBFWFBSX0xPQ1VTIGluc3RlYWQgb2YgU1RNVF9MSU5FTk8uCgkqIGMtcHJhZ21hLmMgKGhhbmRsZV9wcmFnbWFfcmVkZWZpbmVfZXh0bmFtZSk6IERlZmluZQoJYWx3YXlzLgoJKGluaXRfcHJhZ21hKTogQWN0aXZhdGUgI3ByYWdtYSByZWRlZmluZV9leHRuYW1lIGZvciBtdWRmbGFwLgoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX3N0YXRlbWVudCk6IFJlbW92ZSBGSUxFX1NUTVQuCgkocHBfY19pbml0aWFsaXplcik6IEFjY2VwdCBhbnkgdHlwZSBDT05TVFJVQ1RPUi4KCShwcF9jX2luaXRpYWxpemVyX2xpc3QpOiBGaXggY29kZSBleHBlY3RhdGlvbnMgZm9yIFZFQ1RPUl9UWVBFIGFuZAoJQ09NUExFWF9UWVBFLgoJKGRlY2xfbmFtZV9zdHIpOiBOZXcgbG9jYWwgZnVuY3Rpb24uCgkocHBfY19kaXJlY3RfZGVjbGFyYXRvcik6IENhbGwgaXQuCgkocHBfY19wcmltYXJ5X2V4cHJlc3Npb24pOiBDYWxsIGl0LgoJKHBwX2NfaWRfZXhwcmVzc2lvbik6IENhbGwgaXQuCgkocHBfY19zdGF0ZW1lbnQpOiBDYWxsIGl0LgoJKHByaW50X2NfdHJlZSk6IENyZWF0ZSBuZXcgcHAgb2JqZWN0LgoJKiBjLXByZXR0eS1wcmludC5oIChwcF9jX3RyZWVfZGVjbF9pZGVudGlmaWVyLAoJcHJpbnRfY190cmVlKTogRGVjbGFyZS4KCSogYy1zZW1hbnRpY3MuYzogSW5jbHVkZSBsYW5naG9va3MuaAoJKGxhbmdfZXhwYW5kX3N0bXQsIGxhbmdfZXhwYW5kX2RlY2xfc3RtdCwKCWZpbmRfcmVhY2hhYmxlX2xhYmVsXzEsIGZpbmRfcmVhY2hhYmxlX2xhYmVsLAoJZXhwYW5kX3VucmVhY2hhYmxlX2lmX3N0bXQsIGV4cGFuZF91bnJlYWNoYWJsZV9zdG10LAoJZ2VucnRsX2RvX3N0bXRfMSk6IFJlbW92ZS4KCShiZWdpbl9zdG10X3RyZWUpOiBEb24ndCBjaGVjayBmb3IgY2hhbmdlZCBmaWxlbmFtZS4KCUNhbGwgYW5ub3RhdGVfd2l0aF9sb2N1cy4KCShmaW5pc2hfc3RtdF90cmVlKTogRG9uJ3Qgc2V0IGxpbmUgZm9yIGVuZCBvZiBmdW5jdGlvbi4KCShidWlsZF9zdG10KTogRG9uJ3QgY2hlY2sgdHlwZSBub2RlcyBmb3IKCXNpZGUgZWZmZWN0cy4KCShidWlsZF9zdG10KTogU2V0IFRSRUVfU0lERV9FRkZFQ1RTLgoJU2V0IEVYUFJfTE9DVVMgaW5zdGVhZCBvZiBTVE1UX0xJTkVOTy4KCShsYW5nX2V4cGFuZF9zdG10LCBsYW5nX2V4cGFuZF9kZWNsX3N0bXQsCglleHBhbmRfY29uZCwgZ2VucnRsX2RvX3B1c2hsZXZlbCwgZ2VucnRsX2dvdG9fc3RtdCwgZ2VucnRsX2V4cHJfc3RtdCwKCWdlbnJ0bF9leHByX3N0bXRfdmFsdWUsIGdlbnJ0bF9kZWNsX3N0bXQsIGdlbnJ0bF9pZl9zdG10LAoJZ2VucnRsX3doaWxlX3N0bXQsIGdlbnJ0bF9kb19zdG10XzEsIGdlbnJ0bF9kb19zdG10LAoJZ2VucnRsX3JldHVybl9zdG10LCBnZW5ydGxfZm9yX3N0bXQsIGdlbnJ0bF9icmVha19zdG10LAoJZ2VucnRsX2NvbnRpbnVlX3N0bXQsIGdlbnJ0bF9zY29wZV9zdG10LCBnZW5ydGxfc3dpdGNoX3N0bXQsCglnZW5ydGxfY2FzZV9sYWJlbCwgZ2VucnRsX2NvbXBvdW5kX3N0bXQsIGdlbnJ0bF9hc21fc3RtdCwKCWdlbnJ0bF9jbGVhbnVwX3N0bXQsIGV4cGFuZF9zdG10LCBmaW5kX3JlYWNoYWJsZV9sYWJlbCwKCWZpbmRfcmVhY2hhYmxlX2xhYmVsXzEsIGV4cGFuZF91bnJlYWNoYWJsZV9pZl9zdG10LAoJZXhwYW5kX3VucmVhY2hhYmxlX3N0bXQpOiBSZW1vdmUuCgkocHJlcF9zdG10KTogVXNlIEVYUFJfTE9DVVMgaW5zdGVhZCBvZiBTVE1UX0xJTkVOTy4KCSogYy1zaW1wbGlmeS5jOiBOZXcgZmlsZS4KCSogYy10cmVlLmggKENfTEFOR19UUkVFX05PREVfQ0hBSU5fTkVYVCk6IERlZmluZS4KCShzdHJ1Y3QgbGFuZ190eXBlKTogQWRkIGZpZWxkcyBlbnVtX21pbiBhbmQgZW51bV9tYXguCgkoY19leHBhbmRfZGVjbF9zdG10LCBjX21pc3Npbmdfbm9yZXR1cm5fb2tfcCk6IFJlbW92ZS4KCShjX2V4cGFuZF9kZWNsLCBjX21pc3Npbmdfbm9yZXR1cm5fb2tfcCwKCWNfdHlwZXNfY29tcGF0aWJsZV9wKTogRGVjbGFyZS4KCSogYy10eXBlY2suYyAodGFnZ2VkX3R5cGVzX3R1X2NvbXBhdGlibGVfcCk6IEFsbG93IGZvcgoJY29tcGlsZXItZ2VuZXJhdGVkIFRZUEVfREVDTHMgd2l0aG91dCBhIERFQ0xfT1JJR0lOQUxfVFlQRS4KCShkZWZhdWx0X2Z1bmN0aW9uX2FycmF5X2NvbnZlcnNpb24pOiBSZWx5IG9uIGJ1aWxkIHRvCglzZXQgVFJFRV9DT05TVEFOVC4KCShwYXJzZXJfYnVpbGRfYmluYXJ5X29wLCBwb2ludGVyX2RpZmYpOiBMaWtld2lzZS4KCShidWlsZF91bmFyeV9vcCwgYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfYXJyYXlfcmVmKToKCShidWlsZF9leHRlcm5hbF9yZWYpOiBTZXQgVFJFRV9JTlZBUklBTlQuCgkoYnVpbGRfY19jYXN0LCBwb3BfaW5pdF9sZXZlbCk6IExpa2V3aXNlLgoJKHByb2Nlc3NfaW5pdF9lbGVtZW50KTogVXNlIEFTTV9WT0xBVElMRV9QLgoJKGJ1aWxkX2FzbV9leHByKTogQWRhcHQgdG8gR0VORVJJQy9HSU1QTEUgc3ludGF4LgoJKGNfZmluaXNoX2Nhc2UpOiBDYWxsIGNfZG9fc3dpdGNoX3dhcm5pbmdzLgoJKiBjLm9wdCAoZmR1bXAtKTogUmVtb3ZlLgoJKiBjYWxscy5jICh0cnlfdG9faW50ZWdyYXRlKTogUmVtb3ZlLgoJKHByZXBhcmVfY2FsbF9hZGRyZXNzKTogUmVwbGFjZSBmbmRlY2wgYXJnIHdpdGggYQoJcHJlY29tcHV0ZWQgc3RhdGljIGNoYWluIHZhbHVlLgoJKGVtaXRfY2FsbF8xKTogTmV3IGFyZ3VtZW50IGZvciBmdWxsIGNhbGwgZXhwci4KCShmbGFnc19mcm9tX2RlY2xfb3JfdHlwZSk6IENhbGwgc3BlY2lhbF9mdW5jdGlvbl9wLgoJKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBBZGQgYXJndW1lbnQKCW1heV90YWlsY2FsbC4KCShwdXJnZV9yZWdfZXF1aXZfbm90ZXMpOiBOZXcuCgkoZXhwYW5kX2NhbGwpOiBEbyBub3QgdHJ5IHRvIGV4cGFuZCBjYWxscyBpbmxpbmUuCgkoZml4dXBfdGFpbF9jYWxscyk6IE5ldy4KCSogY2ZnLmM6IEluY2x1ZGUgdGltZXZhci5oIGFuZCBnZ2MuaC4KCShiYl9wb29sLCBlZGdlX3Bvb2wpOiBSZW1vdmUuCgkoRU5UUllfQkxPQ0tfUFRSLCBFWElUX0JMT0NLX1BUUik6IERlY2xhcmUuCgkoZW50cnlfZXhpdF9ibG9ja3MpOiBSZW1vdmUuCgkocmJpX3Bvb2wpOiBEZWNsYXJlLgoJKGluaXRfZmxvdyk6IERvIG5vdCBjcmVhdGUgcG9vbHMuCglBbGxvY2F0ZSBlbnRyeS9leGl0IGJsb2NrLgoJKGZyZWVfZWRnZSwgYWxsb2NfYmxvY2ssIGV4cHVuZ2VfYmxvY2ssIHVuY2hlY2tlZF9tYWtlX2VkZ2UpOiBVc2UgR0dDLgoJKGFsbG9jX3JiaV9wb29sLCBmcmVlX3JiaV9wb29sLCBpbml0aWFsaXplX2JiX3JiaSk6IE5ldy4KCSh1bmxpbmtfYmxvY2spOiBDbGVhciBiLT5wcmV2X2JiIGFuZCBiLT5uZXh0X2JiLgoJKGNvbXBhY3RfYmxvY2tzKTogQ2xlYXIgYWxsIHNsb3RzIG9mIEJBU0lDX0JMT0NLIGFycmF5LgoJKGR1bXBfZmxvd19pbmZvKTogV29yayBvbiB0cmVlcyB0b28uCgkoZHVtcF9jZmdfYmJfaW5mbyk6IE5ldy4KCShicmllZl9kdW1wX2NmZyk6IE5ldy4KCSogY2ZnYW5hbC5jIChuZWVkX2Zha2VfZWRnZV9wLCBmbG93X2NhbGxfZWRnZXNfYWRkKTogUmVtb3ZlLgoJKGZpbmRfZWRnZSk6IE5ldy4KCSogY2ZnYnVpbGQuYyAocnRsX21ha2VfZWhfZWRnZSk6IFJlbmFtZSBmcm9tCgltYWtlX2VoX2VkZ2UuICBVcGRhdGUgYWxsIHVzZXJzLgoJKGZpbmRfYmFzaWNfYmxvY2tzKTogRG9uJ3QgY2FsbCBWQVJSQVlfRlJFRSBvbgoJYmFzaWNfYmxvY2tfaW5mby4KCSogY2ZnY2xlYW51cC5jIChvdXRnb2luZ19lZGdlc19tYXRjaCk6IEluaXRpYWxpemUgbmV3cG9zMQoJYW5kIG5ld3BvczIuCgkoZGVsZXRlX3VucmVhY2hhYmxlX2Jsb2Nrcyk6IFJldHVybiBjaGFuZ2VkIHN0YXR1cy4KCShtZXJnZV9zZXFfYmxvY2tzKTogTmV3LgoJKiBjZmdob29rcy5jOiBJbmNsdWRlIHRyZWUtZmxvdy5oCgkodHJlZV9yZWdpc3Rlcl9jZmdfaG9va3MsIGlyX3R5cGUpOiBOZXcuCgkocmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIGVkZ2UuCgkocHJlZGljdF9lZGdlLCBwcmVkaWN0ZWRfYnlfcCwgY2FuX2R1cGxpY2F0ZV9ibG9ja19wLAoJZHVwbGljYXRlX2Jsb2NrLCBibG9ja19lbmRzX3dpdGhfY2FsbF9wLAoJYmxvY2tfZW5kc193aXRoX2NvbmRqdW1wX3AsIGZsb3dfY2FsbF9lZGdlc19hZGQpOiBOZXcuCgkqIGNmZ2hvb2tzLmggKHJlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCk6IENoYW5nZSByZXR1cm4KCXR5cGUgdG8gZWRnZS4KCShwcmVkaWN0X2VkZ2UsIHByZWRpY3RlZF9ieV9wLCBjYW5fZHVwbGljYXRlX2Jsb2NrX3AsCglkdXBsaWNhdGVfYmxvY2ssIGJsb2NrX2VuZHNfd2l0aF9jYWxsX3AsCglibG9ja19lbmRzX3dpdGhfY29uZGp1bXBfcCwgZmxvd19jYWxsX2VkZ2VzX2FkZCk6IERlY2xhcmUuCgkocmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIGVkZ2UuCgkoc3RydWN0IGNmZ19ob29rcyk6IEFkZCBmaWVsZHMgYmxvY2tfZW5kc193aXRoX2NhbGxfcCwKCWJsb2NrX2VuZHNfd2l0aF9jb25kanVtcF9wLCBmbG93X2NhbGxfZWRnZXNfYWRkLAoJcHJlZGljdF9lZGdlLCBwcmVkaWN0ZWRfYnlfcCwgY2FuX2R1cGxpY2F0ZV9ibG9ja19wIGFuZAoJZHVwbGljYXRlX2Jsb2NrLgoJKHRyZWVfY2ZnX2hvb2tzLCBpcl90eXBlLCB0cmVlX3JlZ2lzdGVyX2NmZ19ob29rcyk6IERlY2xhcmUuCgkqIGNmZ2xheW91dC5jIChjZmdfbGF5b3V0X3Bvb2wsIGNmZ19sYXlvdXRfaW5pdGlhbGl6ZV9yYmkpOiBSZW1vdmVkLgoJKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBVc2UgaW5pdGlhbGl6ZV9iYl9yYmkuCgkoY2ZnX2xheW91dF9jYW5fZHVwbGljYXRlX2JiX3AsIGNmZ19sYXlvdXRfZHVwbGljYXRlX2JiKTogSG9va2l6ZWQuCgkoY2ZnX2xheW91dF9pbml0aWFsaXplKTogVXNlIGNmZy5jIHJiaSBwb29sIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCgkoY2FuX2NvcHlfYmJzX3AsIGNvcHlfYmJzKTogVXNlIGNmZ2hvb2tzIGZvciBiYiBkdXBsaWNhdGlvbi4KCShpbnNuX2xvY2F0b3JzX2luaXRpYWxpemUpOiBVc2UgbmV3IGluZm8gYWJvdXQgYmxvY2tzLgoJKiBjZmdsYXlvdXQuaCAodHlwZWRlZiBzdHJ1Y3QgcmVvcmRlcl9ibG9ja19kZWYpOiBNb3ZlZCB0bwoJYmFzaWNfYmxvY2suaC4KCShjZmdfbGF5b3V0X2Nhbl9kdXBsaWNhdGVfYmJfcCwgY2ZnX2xheW91dF9kdXBsaWNhdGVfYmIpOiBEZWNsYXJhdGlvbgoJcmVtb3ZlZC4KCSogY2ZnbG9vcC5jOiBJbmNsdWRlIHRyZWUuaCBhbmQgdHJlZS1mbG93LmguCgkqIGNmZ2xvb3AuaCAoY3JlYXRlX2xvb3Bfbm90ZXMpOiBEZWNsYXJlLgoJKiBjZmdsb29wbWFuaXAuYyAoY3JlYXRlX2xvb3Bfbm90ZXMpOiBOZXcuCgkqIGNmZ3J0bC5jIChjZmdfbGF5b3V0X2NyZWF0ZV9iYXNpY19ibG9jayk6IFVzZSBpbml0aWFsaXplX2JiX3JiaS4KCShydGxfY2ZnX2hvb2tzLCBjZmdfbGF5b3V0X3J0bF9jZmdfaG9vayk6IEZpbGwgaW4gY2FuX2R1cGxpY2F0ZV9ibG9ja19wCglhbmQgZHVwbGljYXRlX2Jsb2NrIGZpZWxkcy4KCShjcmVhdGVfYmFzaWNfYmxvY2tfc3RydWN0dXJlKTogRG9uJ3QgbG9vayBhdAoJUlRYX0lOVEVHUkFURURfUC4KCShydGxfYmxvY2tfZW5kc193aXRoX2NhbGxfcCk6IE5ldy4KCShydGxfYmxvY2tfZW5kc193aXRoX2NvbmRqdW1wX3ApOiBOZXcuCgkobmVlZF9mYWtlX2VkZ2VfcCk6IE1vdmVkIGZyb20gY2ZnYW5hbC5jLgoJKHJ0bF9mbG93X2NhbGxfZWRnZXNfYWRkKTogTW92ZWQgZnJvbSBjZmdhbmFsLmMgKGZsb3dfY2FsbF9lZGdlc19hZGQpLgoJKHJ0bF9jZmdfaG9va3MpOiBBZGQgcnRsX2Jsb2NrX2VuZHNfd2l0aF9jYWxsX3AsCglydGxfYmxvY2tfZW5kc193aXRoX2NvbmRqdW1wX3AsIHJ0bF9mbG93X2NhbGxfZWRnZXNfYWRkLgoJKGNmZ19sYXlvdXRfcnRsX2NmZ19ob29rcyk6IERpdHRvLgoJKiBjZ3JhcGguYyAoY2dyYXBoX21hcmtfcmVhY2hhYmxlX25vZGUpOiBEb24ndCBmb3JjZSBuZXN0ZWQKCWZ1bmN0aW9ucyB0byBiZSByZWFjaGFibGUuCgkqIGNncmFwaHVuaXQuYyAoZGVjaWRlX2lzX2Z1bmN0aW9uX25lZWRlZCk6CgkqIGNncmFwaHVuaXQuYyAoZGVjaWRlX2lzX2Z1bmN0aW9uX25lZWRlZCk6IE5lc3RlZCBmdW5jdGlvbnMgb2YgZXh0ZXJuCglpbmxpbmUgZnVuY3Rpb25zIGRvbid0IG5lZWQgdG8gYmUgb3V0cHV0LgoJKGNncmFwaF9hc3NlbWJsZV9wZW5kaW5nX2Z1bmN0aW9ucyk6IERvbid0IGRvIGFueXRoaW5nCglzcGVjaWFsIGZvciBuZXN0ZWQgZnVuY3Rpb25zLgoJKGNncmFwaF9tYXJrX2Z1bmN0aW9uc190b19vdXRwdXQpOiBMaWtld2lzZS4KCShjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBEb24ndCB6YXAgREVDTF9TVFJVQ1RfRlVOQ1RJT04uCgkoY2dyYXBoX2FuYWx5emVfZnVuY3Rpb24pOiBVc2UgZXN0aW1hdGVfbnVtX2luc25zLgoJKGNncmFwaF9tYXJrX2Z1bmN0aW9uc190b19vdXRwdXQpOiBMaWtld2lzZS4KCShjZ3JhcGhfZXN0aW1hdGVfZ3Jvd3RoLCBjZ3JhcGhfY2xvbmVfaW5saW5lZF9ub2Rlcyk6IExpa2V3aXNlLgoJKGNncmFwaF9leHBhbmRfZnVuY3Rpb24pOiBBbGxvdyBmdW5jdGlvbnMgdG8gbm90IGJlCgllbWl0dGVkLgoJKGNncmFwaF9yZW1vdmVfdW5yZWFjaGFibGVfbm9kZXMpOgoJKGNncmFwaF9yZWN1cnNpdmVfaW5saW5pbmdfcCk6IFNpbXBsaWZ5LgoJKGxvb2t1cF9yZWN1cnNpdmVfY2FsbHMsCgljZ3JhcGhfZGVjaWRlX3JlY3Vyc2l2ZV9pbmxpbmluZyk6IE5ldy4KCShjZ3JhcGhfZGVjaWRlX2lubGluaW5nXyopOiBVcGRhdGUgY2FsbHMgb2YKCWNncmFwaF9tYXJrX2lubGluZS4KCSogY29tYmluZS5jIChnZXRfcG9zX2Zyb21fbWFzayk6IEFsd2F5cyBzZXQgKnBsZW4uCgkqIGNvbW1vbi5vcHQgKGZkdW1wLSwgZm11ZGZsYXAsIGZtdWRmbGFwdGgsIGZtdWRmbGFwaXIsCglmdHJlZS1iYXNlZC1wcm9maWxpbmcsIGZ0cmVlLWNjcCwgZnRyZWUtY2gsCglmdHJlZS1jb21iaW5lLXRlbXBzLCBmdHJlZS1jb3B5cmVuYW1lLCBmdHJlZS1kY2UsCglmdHJlZS1kb21pbmF0b3Itb3B0cywgZnRyZWUtZHNlLCBmdHJlZS1sb29wLW9wdGltaXplLAoJZnRyZWUtcG9pbnRzLXRvLCBmdHJlZS1wcmUsIGZ0cmVlLXNyYSwgZnRyZWUtdGVyLAoJZnRyZWUtbHJzKTogQWRkLgoJKiBjb25maWcuaW4gKEhBVkVfTERfUElFLCBIQVZFX0JBTlNIRUUsIFBSRUZJWF9JTkNMVURFX0RJUik6CglVbmRlZmluZS4KCSogY29uZmlndXJlLmFjOiBBZGQgLS1lbmFibGUtdHJlZS1icm93c2VyIG9wdGlvbi4KCUFkZCAtLXdpdGgtbGliYmFuc2hlZSBvcHRpb24uCglBZGQgR01QTElCUyBhbmQgR01QSU5DLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvdmVyYWdlLmMgKHRyZWVfY3RyX3RhYmxlcyk6IE5ldy4KCShjb3ZlcmFnZV9jb3VudGVyX2FsbG9jKTogVXNlIGl0LgoJKGJ1aWxkX2N0cl9pbmZvX3ZhbHVlKTogRGl0dG8uCgkoY292ZXJhZ2VfY291bnRlcl9yZWYpOiBEaXR0by4gIFJlbmFtZSB0byBydGxfY292ZXJhZ2VfY291bnRlcl9yZWYuCgkodHJlZV9jb3ZlcmFnZV9jb3VudGVyX3JlZik6IE5ldy4KCSogY292ZXJhZ2UuaCAoY292ZXJhZ2VfY291bnRlcl9yZWYpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkocnRsX2NvdmVyYWdlX2NvdW50ZXJfcmVmKTogRGVjbGFyZS4KCSh0cmVlX2NvdmVyYWdlX2NvdW50ZXJfcmVmKTogRGVjbGFyZS4KCSogY3BwZXhwLmMgKGFwcGVuZF9kaWdpdCk6IFJlYXJyYW5nZSB1bnNpZ25lZHAvb3ZlcmZsb3cgc2V0dGluZy4KCShldmFsX3Rva2VuLCBudW1fYmluYXJ5X29wLCBudW1fcGFydF9tdWwsIG51bV9kaXZfb3ApOiBMaWtld2lzZS4KCSogY3NlLmMgKGZvbGRfcnR4KTogRG8gbm90IGhhbmRsZSBDT05TVEFOVF9QX1JUWC4KCShzdHJ1Y3QgY3NlX2Jhc2ljX2Jsb2NrX2RhdGEpOiBSZW5hbWUgZW51bSB2YWx1ZXMgdG8gbm90Cgljb25mbGljdCB3aXRoIHByb2ZpbGUuaDsgdXBkYXRlIGFsbCB1c2VzLgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3N5bWJvbF9sb2NhdGlvbik6IERvbid0IG1lbnRpb24gaW50ZWdyYXRlLmMKCWluIGNvbW1lbnRzLgoJKiBkZWZhdWx0cy5oIChUUkFNUE9MSU5FX0FMSUdOTUVOVCk6IE1vdmUgZnJvbSBmdW5jdGlvbi5jLgoJKiBkaWFnbm9zdGljLmggKGRlYnVnX291dHB1dF9idWZmZXIsIGR1bXBfZ2VuZXJpY19ub2RlLAoJcHJpbnRfZ2VuZXJpY19zdG10LCBwcmludF9nZW5lcmljX3N0bXRfaW5kZW50ZWQsCglwcmludF9nZW5lcmljX2V4cHIsIHByaW50X2dlbmVyaWNfZGVjbCwKCWRlYnVnX2dlbmVyaWNfZXhwciwgZGVidWdfZ2VuZXJpY19zdG10LCBkZWJ1Z19jX3RyZWUpOgoJRGVjbGFyZS4KCSogZG9taW5hbmNlLmM6IENhY2hlIGltbWVkaWF0ZSBkb21pbmF0b3JzLgoJKiBkb213YWxrLmM6IE5ldyBmaWxlLgoJKiBkb213YWxrLmg6IE5ldyBmaWxlLgoJKiBkd2FyZjJvdXQuYyAoaXNfZm9ydHJhbik6IFN1cHBvcnQgRFdfTEFOR19Gb3J0cmFuOTUuCgkoZ2VuX3N1YnByb2dyYW1fZGllKTogR2VuZXJhdGUgYSBESUUgZm9yIGEgbmFtZWQKCXJldHVybiB2YWx1ZS4KCShsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUpOiBUcmVhdCBSRVNVTFRfREVDTCBsaWtlIFZBUl9ERUNMLgoJKGFkZF9sb2NhdGlvbl9vcl9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBMaWtld2lzZS4KCShhZGRfYm91bmRfaW5mbyk6IExpa2V3aXNlLgoJKGdlbl9kZWNsX2RpZSk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChtYXliZV9zZXRfZmlyc3RfbGFiZWxfbnVtKTogTmV3LgoJKGNvcHlfbW9zdF9ydHgpOiBEb24ndCBjb3B5IHRoZSBpbnRlZ3JhdGVkIGZsYWcuCglDb3B5IHRoZSBuZXcgcmV0dXJuX3ZhbCBmbGFnLgoJKiBldC1mb3Jlc3QuYyAoTUFYX05PREVTKTogRGVmaW5lLgoJKHJlY29yZF9wYXRoX2JlZm9yZV8xKTogQWJvcnQgaWYgbGVuIGlzIGdyZWF0ZXIgdGhhbgoJTUFYX05PREVTLgoJKiBleGNlcHQuYyAoZ2VuX2VoX3JlZ2lvbiwgZ2VuX2VoX3JlZ2lvbl9jbGVhbnVwLCBnZW5fZWhfcmVnaW9uX3RyeSwKCWdlbl9laF9yZWdpb25fY2F0Y2gsIGdlbl9laF9yZWdpb25fYWxsb3dlZCwKCWdlbl9laF9yZWdpb25fbXVzdF9ub3RfdGhyb3csIGdldF9laF9yZWdpb25fbnVtYmVyLAoJZ2V0X2VoX3JlZ2lvbl9tYXlfY29udGFpbl90aHJvdywgZ2V0X2VoX3JlZ2lvbl90cmVlX2xhYmVsLAoJc2V0X2VoX3JlZ2lvbl90cmVlX2xhYmVsLCBleHBhbmRfcmVzeF9leHByKTogTmV3LgoJKGV4cGFuZF9laF9yZWdpb25fc3RhcnQsIGV4cGFuZF9zdGFydF9jYXRjaCk6IFVzZSB0aGVtLgoJKGV4cGFuZF9lbmRfY2F0Y2gpOiBUaWR5LgoJKG5vdGVfZWhfcmVnaW9uX21heV9jb250YWluX3Rocm93KTogVGFrZSByZWdpb24gYXJndW1lbnQuCgkobm90ZV9jdXJyZW50X3JlZ2lvbl9tYXlfY29udGFpbl90aHJvdyk6IE5ldy4KCShnZXRfZXhjZXB0aW9uX2ZpbHRlcik6IEV4cG9ydC4KCShjb2xsZWN0X2VoX3JlZ2lvbl9hcnJheSk6IEV4cG9ydC4KCShyZW1vdmVfdW5yZWFjaGFibGVfcmVnaW9ucyk6IENoZWNrIEVSVF9UUlkgYmFzZWQgb24gcmVhY2hhYmlsaXR5CglvZiBjYXRjaGVzLCBub3QgcmVhY2hhYmlsaXR5IG9mIGNvbnRpbnVlX2xhYmVsLiAgTmV2ZXIgcmVtb3ZlCglFUlRfTVVTVF9OT1RfVEhST1cgcmVnaW9ucy4KCShjb2xsZWN0X3J0bF9sYWJlbHNfZnJvbV90cmVlcyk6IE5ldy4KCShjb252ZXJ0X2Zyb21fZWhfcmVnaW9uX3Jhbmdlcyk6IFVzZSBpdC4KCShjb25uZWN0X3Bvc3RfbGFuZGluZ19wYWRzKTogSGFuZGxlIGR5aW5nIGNsZWFudXBzLgoJKHN0cnVjdCByZWFjaGFibGVfaW5mbyk6IEFkZCBjYWxsYmFjayBkYXRhLgoJKGFkZF9yZWFjaGFibGVfaGFuZGxlcik6IEludm9rZSB0aGUgY2FsbGJhY2suCgkoZm9yZWFjaF9yZWFjaGFibGVfaGFuZGxlcik6IE5ldy4KCShyZWFjaGFibGVfaGFuZGxlcnMpOiBVc2UgaXQuCgkoYXJoX3RvX2xhbmRpbmdfcGFkLCBhcmhfdG9fbGFiZWwpOiBOZXcuCgkoY2FuX3Rocm93X2ludGVybmFsXzEpOiBTcGxpdCBvdXQgZnJvbSBjYW5fdGhyb3dfaW50ZXJuYWwuCgkoY2FuX3Rocm93X2V4dGVybmFsXzEpOiBTaW1pbGFybHkuCgkqIGV4Y2VwdC5oOiBVcGRhdGUuCgkqIGV4cGxvdy5jIChlbWl0X3N0YWNrX3NhdmUpOiBSZW1vdmUgc2F2ZWFyZWEgbW9kZSBjaGVjay4KCSh1cGRhdGVfbm9ubG9jYWxfZ290b19zYXZlX2FyZWEpOiBOZXcuCgkoYWxsb2NhdGVfZHluYW1pY19zdGFja19zcGFjZSk6IFVzZSBpdC4KCShwcm9iZV9zdGFja19yYW5nZSk6IE5ldmVyIGVtaXQgbG9vcCBub3Rlcy4KCSogZXhwbWVkLmMgKGV4dHJhY3RfZml4ZWRfYml0X2ZpZWxkKTogQWx3YXlzIHByb3BhZ2F0ZSB0aGUKCXRhcmdldCBmb3IgdGhlIHNoaWZ0IGlmIGl0IGlzIGEgUkVHLgoJKiBleHByLmM6IEluY2x1ZGUgdHJlZS1pdGVyYXRvci5oCgkoaXNfemVyb3NfcCk6IFJlbW92ZS4KCShjYXRlZ29yaXplX2N0b3JfZWxlbWVudHNfMSwgY2F0ZWdvcml6ZV9jdG9yX2VsZW1lbnRzKTogTmV3LgoJKGNvdW50X3R5cGVfZWxlbWVudHMpOiBOZXcuCgkobW9zdGx5X3plcm9zX3ApOiBVc2UgdGhlbS4KCShleHByX3dmbF9zdGFjayk6IFJlbW92ZS4KCShjb252ZXJ0X21vdmUpOiBEbyBub3RoaW5nIGlmIHRvIGFuZCBmcm9tIGFyZSB0aGUgc2FtZS4KCShlbWl0X2Jsb2NrX21vdmVfdmlhX2xvb3ApOiBEb24ndCBlbWl0IExPT1Agbm90ZXMuCgkoZW1pdF9tb3ZlX2luc24pOiBEb24ndCBoYW5kbGUgQ09OU1RBTlRfUF9SVFguCgkoZW1pdF9tb3ZlX2luc25fMSk6IERvbid0IGdlbmVyYXRlIGlubGluZSB3YXJuaW5ncy4KCShleHBhbmRfdmFycywgZXhwYW5kX3Zhcik6IFNwbGl0IGZyb20gLi4uCgkoZXhwYW5kX2V4cHJfMSk6IC4uLiBoZXJlLgoJKGV4cGFuZF9leHByX3JlYWwsIGV4cGFuZF9leHByX3JlYWxfMSk6IFVzZSBuZXcgbWFjcm9zCglFWFBSX0xPQ0FUSU9OIGFuZCBFWFBSX0hBU19MT0NBVElPTi4KCSogZXhwci5oIChzaW1wbGlmeV9idWlsdGluX2ZwdXRzLAoJc2ltcGxpZnlfYnVpbHRpbl9zdHJjcHksIHNpbXBsaWZ5X2J1aWx0aW5fc3RybmNweSwKCWV4cGFuZF92YXIsIGZpeHVwX3RhaWxfY2FsbHMsCgl1cGRhdGVfbm9ubG9jYWxfZ290b19zYXZlX2FyZWEpOiBEZWNsYXJlLgoJKGxvb2t1cF9zdGF0aWNfY2hhaW4sIGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24sCgltYXJrX3NlZW5fY2FzZXMpOiBSZW1vdmUuCgkocHJlcGFyZV9jYWxsX2FkZHJlc3MpOiBDaGFuZ2UgdHlwZSBvZiAybmQgYXJndW1lbnQgdG8KCXJ0eC4KCSogZmluYWwuYyAocHJvZmlsZV9mdW5jdGlvbik6IFVwZGF0ZSBzdGF0aWMgY2hhaW4gdGVzdC4KCShmaW5hbCk6IERvbid0IGxvb2sgYXQgUlRYX0lOVEVHUkFURURfUC4KCSogZmxhZ3MuaCAoZmxhZ19tdWRmbGFwLCBmbGFnX211ZGZsYXBfdGhyZWFkcywKCWZsYWdfbXVkZmxhcF9pZ25vcmVfcmVhZHMsIGZsYWdfdHJlZV9wcmUsIGZsYWdfdHJlZV9jY3AsCglmbGFnX3RyZWVfZGNlLCBmbGFnX3RyZWVfY29tYmluZV90ZW1wcywKCWZsYWdfdHJlZV9saXZlX3JhbmdlX3NwbGl0LCBmbGFnX3RyZWVfZG9tLCBmbGFnX3RyZWVfY2gsCglmbGFnX3RyZWVfZHNlLCBmbGFnX3RyZWVfc3JhLCBmbGFnX3RyZWVfY29weXJlbmFtZSwKCWZsYWdfdHJlZV9wb2ludHNfdG8pOiBEZWNsYXJlLgoJKGVudW0gcHRhX3R5cGUpOiBEZWNsYXJlLgoJKiBmbG93LmMgKGxhbmdfbWlzc2luZ19ub3JldHVybl9va19wKTogUmVtb3ZlLgoJKGNoZWNrX2Z1bmN0aW9uX3JldHVybl93YXJuaW5ncyk6IFJlbW92ZS4KCSh1cGRhdGVfbGlmZV9pbmZvKTogVXBkYXRlIGNvbW1lbnRzLgoJKGZyZWVfYmFzaWNfYmxvY2tfdmFycyk6IERvbid0IGNhbGwgVkFSUkFZX0ZSRUUgZm9yCgliYXNpY19ibG9ja19pbmZvLgoJKHJlZ25vX3VuaW5pdGlhbGl6ZWQpOiBSZW1vdmUuCgkqIGZvbGQtY29uc3QuYyAoaW50X2NvbnN0X2Jpbm9wKTogTWFrZSBleHRlcm4uCgkobm9uX2x2YWx1ZSk6IFJlbHkgb24gYnVpbGQgdG8gc2V0IFRSRUVfQ09OU1RBTlQuCgkob3BlcmFuZF9lcXVhbF9wKTogUmVwbGFjZSBvbmx5X2NvbnN0IGFyZ3VtZW50IHdpdGgKCWZsYWdzLiAgQWxsb3cgcHVyZSBmdW5jdGlvbnMgaWYgT0VQX1BVUkVfU0FNRS4KCShmb2xkKTogVXNlIE9FUF9PTkxZX0NPTlNULgoJKGludmVydF90cnV0aHZhbHVlKSA8Tk9QX0VYUFI+IEJyZWFrIGlmIGFyZ3VtZW50IGlzIG9mCglib29sZWFuIHR5cGUuCgkoZm9sZF9yZWxhdGlvbmFsX2hpX2xvLAoJbm9uZGVzdHJ1Y3RpdmVfZm9sZF9iaW5hcnlfdG9fY29uc3RhbnQsCglub25kZXN0cnVjdGl2ZV9mb2xkX3VuYXJ5X3RvX2NvbnN0YW50LAoJZm9sZF9yZWFkX2Zyb21fY29uc3RhbnRfc3RyaW5nKTogTmV3LgoJKiBmdW5jdGlvbi5jIChzdHJ1Y3QgZnVuY3Rpb24pOiBSZW1vdmUgY2FsbHNfY29uc3RhbnRfcC4KCShjdXJyZW50X2Z1bmN0aW9uX2NhbGxzX2NvbnN0YW50X3ApOiBSZW1vdmUuCgkoaW5saW5lX2Z1bmN0aW9uX2RlY2wpOiBSZW1vdmUuCgkocHV0X3Zhcl9pbnRvX3N0YWNrKTogRG9uJ3QgdXNlIGl0LgoJKGZpeF9sZXhpY2FsX2FkZHIpOiBMaWtld2lzZS4KCShpbmxpbmVfZnVuY3Rpb25fZGVjbCk6IFJlbW92ZSBleHRlcm4gZGVjbGFyYXRpb24uCgkoVFJBTVBPTElORV9BTElHTk1FTlQpOiBNb3ZlIHRvIGRlZmF1bHRzLmguCgkodHJhbXBvbGluZXNfY3JlYXRlZCk6IE1vdmUgdG8gdmFyYXNtLmMuCgkoZnJlZV9hZnRlcl9jb21waWxhdGlvbik6IFVwZGF0ZSBmb3IgcmVtb3ZlZCBmaWVsZHMuCgkoYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZGVsZXRlX2hhbmRsZXJzLCBsb29rdXBfc3RhdGljX2NoYWluKTogUmVtb3ZlLgoJKGZpeF9sZXhpY2FsX2FkZHIpOiBEb24ndCBjb25zaWRlciBub24tbG9jYWwgdmFyaWFibGUgcmVmcy4KCSh0cmFtcG9saW5lX2FkZHJlc3MpOiBSZW1vdmUuCgkocm91bmRfdHJhbXBvbGluZV9hZGRyKTogTW92ZSB0byBidWlsdGlucy5jLgoJKGFkanVzdF90cmFtcG9saW5lX2FkZHIpOiBSZW1vdmUuCgkoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogVXBkYXRlIGZvciBjaGFuZ2VzIHRvIHN0YXRpYyBjaGFpbgoJYW5kIG5vbmxvY2FsIGdvdG8gaGFuZGxpbmcuCgkoaW5pdGlhbF90cmFtcG9saW5lKTogTW92ZSB0byB2YXJhc20uYy4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogRG9uJ3QgYnVpbGQgdHJhbXBvbGluZXMgb3Iga2lsbAoJdW5yZWZlcmVuY2VkIG5vbmxvY2FsIGdvdG8gbGFiZWxzLgoJKGZyZWVfYWZ0ZXJfY29tcGlsYXRpb24pOiBEb24ndCBzZXQgaXQuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IExpa2V3aXNlLgoJKHNldGptcF92YXJzX3dhcm5pbmcpOiBSZW5hbWUgZnJvbQoJdW5pbml0aWFsaXplZF92YXJzX3dhcm5pbmcsIHJlbW92ZSB1bmluaXRpYWxpemVkIHZhcnMgd2FybmluZy4KCSh1bmluaXRpYWxpemVkX3ZhcnNfd2FybmluZyk6IFJlbW92ZSBvbGQgY29tbWVudAoJYW5kIGNoZWNrIGZvciBERUNMX0lOSVRJQUwsIHJlcGxhY2Ugd2l0aCBhIGNoZWNrIG9mIFRSRUVfTk9fV0FSTklORwoJYW5kIGRvIG5vdCBjYWxsIHRoZSBsYW5naG9vay4KCShleHBhbmRfZnVuY3Rpb25fc3RhcnQsIGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBEb24ndCBkbwoJZnVuY3Rpb24gaW5zdHJ1bWVudGF0aW9uIGhlcmUuCgkoY2xlYXJfYmxvY2tfbWFya3MpOiBSZW5hbWUgZnJvbSByZW9yZGVyX2Jsb2Nrc18wLCBleHBvcnQuCgkoYmxvY2tzX25yZXZlcnNlKTogRXhwb3J0LgoJKHVuaW5pdGlhbGl6ZWRfdmFyc193YXJuaW5nKTogVXNlIERFQ0xfUlRMX1NFVF9QIHRvIHRlc3QgZm9yIHByZXNlbmNlCglvZiBydGwuCgkocmVzZXRfYmxvY2tfY2hhbmdlcywgcmVjb3JkX2Jsb2NrX2NoYW5nZSwgZmluYWxpemVfYmxvY2tfY2hhbmdlcywKCWNoZWNrX2Jsb2NrX2NoYW5nZSwgZnJlZV9ibG9ja19jaGFuZ2VzKTogTmV3IGZ1bmN0aW9ucy4KCShhc3NpZ25fcGFybXMpOiBTZXR0aW5nIG9mIGN1cnJlbnRfZnVuY3Rpb25fc3RkYXJnCgltb3ZlZCAuLi4KCShhbGxvY2F0ZV9zdHJ1Y3RfZnVuY3Rpb24pOiAuLi4gaGVyZS4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIHhfbm9ubG9jYWxfbGFiZWxzLAoJeF9ub25sb2NhbF9nb3RvX2hhbmRsZXJfc2xvdHMsIHhfbm9ubG9jYWxfZ290b19zdGFja19sZXZlbCwKCXhfY29udGV4dF9kaXNwbGF5LCB4X3RyYW1wb2xpbmVfbGlzdCwgbmVlZHNfY29udGV4dC4KCUFkZCBzdGF0aWNfY2hhaW5fZGVjbCwgbm9ubG9jYWxfZ290b19zYXZlX2FyZWEuCgkoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIHhfY2xvYmJlcl9yZXR1cm5faW5zbi4KCUFkZCB0YWlsX2NhbGxfZW1pdCBmaWVsZCwgbGFzdF9sYWJlbF91aWQsCgl1bmV4cGFuZGVkX3Zhcl9saXN0LCBkb250X2VtaXRfYmxvY2tfbm90ZXMsCglpYl9ib3VuZGFyaWVzX2Jsb2NrLCBmdW5jdGlvbl9lbmRfbG9jdXMgYW5kIHNhdmVkX3RyZWUvc2F2ZWRfYXJncy4KCShjbGVhcl9ibG9ja19tYXJrcyk6IERlY2xhcmUuCgkqIGdjYy5jIChNRldSQVBfU1BFQywgTUZMSUJfU1BFQyk6IEFkZCAtZm11ZGZsYXB0aCBzdXBwb3J0LgoJKG1md3JhcF9zcGVjLCBtZmxpYl9zcGVjKTogRGVjbGFyZS4KCShjcHBfdW5pcXVlX29wdGlvbnMsIGNjMV9vcHRpb25zKTogRGl0dG8uCgkoZGVmYXVsdF9jb21waWxlcnMpOiBBZGQgLkYgYW5kIC5mOTAuCgkoc3RhdGljX3NwZWNzKTogQWRkIG1md3JhcCBhbmQgbWZsaWIuCgkqIGdjc2UuYyAod2FudF90b19nY3NlX3AsIGdjc2VfY29uc3RhbnRfcCk6IERvbid0IGhhbmRsZQoJQ09OU1RBTlRfUlRYX1AuCgkocmVnX3VzZWRfb25fZWRnZSwgcmVnX2tpbGxlZF9vbl9lZGdlLCBieXBhc3NfYmxvY2spOgoJVXBkYXRlIHRvIG1hdGNoIGluc25zIGZpZWxkIGluIHN0cnVjdCBlZGdlX2RlZi4KCSogZ2RiaW5pdC5pbiAocGdzLCBwZ2UpOiBEZWZpbmUuCgkqIGdlbmF0dHJ0YWIuYyAoQVRUUl9QRVJNQU5FTlRfUCk6IFVzZSB0aGUgcmV0dXJuX3ZhbCBmbGFnCglpbnN0ZWFkIG9mIHRoZSBpbnRlZ3JhdGVkIGZsYWcuCgkqIGdlbmd0eXBlLWxleC5sIChJV09yRCk6IEFkZCBIT1NUX1dJREVTVF9JTlQKCSogZ2VuZ3R5cGUteWFjYy55IChiaXRmaWVsZGxlbik6IEFkZCBlbXB0eSBhY3Rpb24uCgkoc3RydWN0X2ZpZWxkcyk6IEFjY2VwdCB1bm5hbWVkIGJpdGZpZWxkcy4KCShiaXRmaWVsZGxlbik6IFNwbGl0IGZyb20gLi4uCgkoYml0ZmllbGRvcHQpOiAuLi4gaGVyZS4KCSogZ2VuZ3R5cGUuYyAoaWZpbGVzKTogQWRkIHRyZWUtYWxpYXMtdHlwZS5oIGFuZAoJdHJlZS1mbG93LmguCgkqIGdlbnJlY29nLmMgKHZhbGlkYXRlX3BhdHRlcm4pOiBEbyBub3QgaGFuZGxlCglDT05TVEFOVF9QX1JUWC4KCSogZ2ltcGxlLWxvdy5jOiBOZXcgZmlsZS4KCSogZ2ltcGxpZnkuYzogTmV3IGZpbGUuCgkqIGhhaWZhLXNjaGVkLmMgKHByaW9yaXR5KTogRG8gbm90IGhhbmRsZSBDT05TVEFOVF9QX1JUWC4KCShyZXN0b3JlX2xpbmVfbm90ZXMpOiBEbyBub3Qgc2V0IFJUWF9JTlRFR1JBVEVEX1AuCgkqIGlmY3Z0LmMgKGRlYWRfb3JfcHJlZGljYWJsZSk6IEluaXRpYWxpemUgbG9jYWwgdmFyaWFibGUKCSdlYXJsaWVzdCcuCgkqIGlucHV0LmggKGV4cHJfd2ZsX3N0YWNrKTogUmVtb3ZlLgoJKiBpbnRlZ3JhdGUuYyAoSU5URUdSQVRFX1RIUkVTSE9MRCk6IFJlbW92ZS4KCShzZXR1cF9pbml0aWFsX2hhcmRfcmVnX3ZhbHVlX2ludGVncmF0aW9uKTogTGlrZXdpc2UuCgkoaW5pdGlhbGl6ZV9mb3JfaW5saW5lKTogTGlrZXdpc2UuCgkobm90ZV9tb2RpZmllZF9wYXJtcmVncyk6IExpa2V3aXNlLgoJKGludGVncmF0ZV9wYXJtX2RlY2xzKTogTGlrZXdpc2UuCgkocHJvY2Vzc19yZWdfcGFyYW0pOiBMaWtld2lzZS4KCShzYXZlX3Bhcm1faW5zbnMpOiBMaWtld2lzZS4KCShjb3B5X2luc25fbGlzdCk6IExpa2V3aXNlLgoJKGNvcHlfaW5zbl9ub3Rlcyk6IExpa2V3aXNlLgoJKGNvbXBhcmVfYmxvY2tzKTogTGlrZXdpc2UuCgkoZmluZF9ibG9jayk6IExpa2V3aXNlLgoJKGlubGluaW5nKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fY2Fubm90X2lubGluZV9wKTogTGlrZXdpc2UuCgkocGFybWRlY2xfbWFwKTogTGlrZXdpc2UuCgkoaW5fbm9ucGFyYW1faW5zbnMpOiBMaWtld2lzZS4KCShzYXZlX2Zvcl9pbmxpbmUpOiBMaWtld2lzZS4KCShGSVhFRF9CQVNFX1BMVVMpOiBMaWtld2lzZS4KCShleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBEb24ndCBsb29rIGF0IG1hcC0+aW50ZWdyYXRpbmcsCgltYXAtPmlubGluZV90YXJnZXQsIGFuZCBpbmxpbmluZywgc2luY2Ugd2UgYXJlIG5ldmVyIGNvcHlpbmcKCWZvciBpbnRlZ3JhdGluZy4KCURvbid0IGFib3J0IG9uIFJUWF9JTlRFR1JBVEVEX1AuCgkob2xkX2Z1bik6IFJlbW92ZS4KCShvdXRwdXRfaW5saW5lX2Z1bmN0aW9uKTogUmVtb3ZlLgoJKiBpbnRlZ3JhdGUuaCAoc3RydWN0IGlubGluZV9tYXApOiBSZW1vdmUgZmllbGRzIGludGVncmF0aW5nLAoJYmxvY2tfbWFwLCBsZWFmX3JlZ19tYXAsIGlubGluZV90YXJnZXQsIGFuZCBsb2NhbF9yZXR1cm5fbGFiZWwuCgkqIGp1bXAuYyAobmV4dF9ub25ub3RlX2luc25faW5fbG9vcCwgZHVwbGljYXRlX2xvb3BfZXhpdF90ZXN0LAoJY29weV9sb29wX2hlYWRlcnMsIG5ldmVyX3JlYWNoZWRfd2FybmluZyk6IFJlbW92ZWQuCgkoYW55X3VuY29uZGp1bXBfcCk6IFJlamVjdCBub25sb2NhbCBnb3RvLgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF90eXBlc19jb21wYXRpYmxlX3AsCglsaGRfZXhwYW5kX2RlY2wsIGxoZF9naW1wbGlmeV9leHByKTogRGVjbGFyZS4KCShMQU5HX0hPT0tTX0VYUEFORF9ERUNMLCBMQU5HX0hPT0tTX1RZUEVTX0NPTVBBVElCTEVfUCwKCUxBTkdfSE9PS1NfRlVOQ1RJT05fTUlTU0lOR19OT1JFVFVSTl9PS19QLAoJTEFOR19IT09LU19GVU5DVElPTl9MRUFWRV9ORVNURUQsCglMQU5HX0hPT0tTX0ZVTkNUSU9OX01JU1NJTkdfTk9SRVRVUk5fT0tfUCwKCUxBTkdfSE9PS1NfR0lNUExJRllfRVhQUiwKCUxBTkdfSE9PS1NfR0lNUExFX0JFRk9SRV9JTkxJTklORywKCUxBTkdfSE9PS1NfRVhQQU5EX0RFQ0wsIExBTkdfSE9PS1NfVFlQRVNfQ09NUEFUSUJMRV9QLAoJTEFOR19IT09LU19HSU1QTElGWV9FWFBSLAoJTEFOR19IT09LU19HSU1QTEVfQkVGT1JFX0lOTElOSU5HKTogRGVmaW5lLgoJKExBTkdfSE9PS1NfREVDTF9VTklOSVQsIExBTkdfSE9PS1NfUlRMX0VYUEFORF9TVEFSVCwKCUxBTkdfSE9PS1NfUlRMX0VYUEFORF9TVE1ULCBMQU5HX0hPT0tTX1JUTF9FWFBBTkRfRU5ELAoJTEFOR19IT09LU19GVU5DVElPTl9MRUFWRV9ORVNURUQsCglMQU5HX0hPT0tTX1JUTF9FWFBBTkRfSU5JVElBTElaRVIsCglMQU5HX0hPT0tTX0RFQ0xfVU5JTklULAoJTEFOR19IT09LU19SVExfRVhQQU5EX0lOSVRJQUxJWkVSKTogUmVtb3ZlLgoJKiBsYW5naG9va3MuYzogSW5jbHVkZSB0cmVlLXNpbXBsZS5oLgoJKGxoZF9leHBhbmRfZGVjbCk6IE5ldy4KCShsaGRfdHlwZXNfY29tcGF0aWJsZV9wKTogTmV3LgoJKGxoZF9kZWNsX3VuaW5pdCk6IFJlbW92ZS4KCShsaGRfZ2ltcGxpZnlfZXhwcik6IE5ldy4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzX2Zvcl9ydGxfZXhwYW5zaW9uKToKCVJlbW92ZS4KCShzdHJ1Y3QgbGFuZ19ob29rc19mb3JfZnVuY3Rpb25zKTogQWRkIGZpZWxkCgltaXNzaW5nX25vcmV0dXJuX29rX3AuCgkoc3RydWN0IGxhbmdfaG9va3MpOiBBZGQgZmllbGQgZXhwYW5kX2RlY2wsCgl0eXBlc19jb21wYXRpYmxlX3AsIGdpbXBsaWZ5X2V4cHIgYW5kCglnaW1wbGVfYmVmb3JlX2lubGluaW5nLgoJUmVtb3ZlIGZpZWxkcyBkZWNsX3VuaW5pdCBhbmQgcnRsX2V4cGFuZAoJKiBvcHRzLmMgKGRlY29kZV9vcHRpb25zKTogU2V0IGZsYWdfdHJlZV9jY3AsCglmbGFnX3RyZWVfZGNlLCBmbGFnX3RyZWVfZG9tLCBmbGFnX3RyZWVfZHNlLAoJZmxhZ190cmVlX3ByZSwgZmxhZ190cmVlX3RlciwKCWZsYWdfdHJlZV9saXZlX3JhbmdlX3NwbGl0LCBmbGFnX3RyZWVfc3JhLAoJZmxhZ190cmVlX2NvcHlyZW5hbWUgYW5kIGZsYWdfdHJlZV9jaCBhdCAtTzEgYW5kIGhpZ2hlci4KCShjb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSBPUFRfZmR1bXBfLCBPUFRfZm11ZGZsYXAsCglPUFRfZm11ZGZsYXB0aCwgT1BUX2ZtdWRmbGFwaXIsCglPUFRfZnRyZWVfYmFzZWRfcHJvZmlsaW5nLCBPUFRfZnRyZWVfY2NwLCBPUFRfZnRyZWVfZGNlLAoJT1BUX2Z0cmVlX2NvbWJpbmVfdGVtcHMsIE9QVF9mdHJlZV90ZXIsIE9QVF9mdHJlZV9scnMsCglPUFRfZnRyZWVfZG9taW5hdG9yX29wdHMsIE9QVF9mdHJlZV9jb3B5cmVuYW1lLAoJT1BUX2Z0cmVlX2NoLCBPUFRfZnRyZWVfZHNlLCBPUFRfZnRyZWVfc3JhLAoJT1BUX2Z0cmVlX3BvaW50c190b18gYW5kIE9QVF9mdHJlZV9wcmUuCgkqIG91dHB1dC5oIChyZWdub191bmluaXRpYWxpemVkLCBmaW5kX2Jhc2ljX2Jsb2NrcywKCWNsZWFudXBfY2ZnLCBkZWxldGVfdW5yZWFjaGFibGVfYmxvY2tzLAoJY2hlY2tfZnVuY3Rpb25fcmV0dXJuX3dhcm5pbmdzKTogUmVtb3ZlLgoJKiBwYXJhbXMuZGVmIChQQVJBTV9NQVhfSU5MSU5FX0lOU05TX1JFQ1VSU0lWRSwKCVBBUkFNX01BWF9JTkxJTkVfSU5TTlNfUkVDVVJTSVZFX0FVVE8sCglQQVJBTV9NQVhfSU5MSU5FX1JFQ1VSU0lWRV9ERVBUSCwKCVBBUkFNX01BWF9JTkxJTkVfUkVDVVJTSVZFX0RFUFRIX0FVVE8sCglQQVJBTV9HTE9CQUxfVkFSX1RIUkVTSE9MRCwgUEFSQU1fTUFYX0FMSUFTRURfVk9QUyk6CgkqIHBhcmFtcy5oIChHTE9CQUxfVkFSX1RIUkVTSE9MRCwgTUFYX0FMSUFTRURfVk9QUyk6CglEZWZpbmUuCgkqIHBhc3Nlcy5jIChyZXN0X29mX2RlY2xfY29tcGlsYXRpb24pOgoJKHJlc3Rfb2ZfaGFuZGxlX3NpYmxpbmdfY2FsbHMpOiBSZW1vdmUuCgkocmVzdF9vZl9oYW5kbGVfaW5saW5pbmcpOiBSZW1vdmUuCgkocmVzdF9vZl9oYW5kbGVfZ2NzZSk6IERvIG5vdCBydW4KCXB1cmdlX2J1aWx0aW5fY29uc3RhbnRfcC4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogVXBkYXRlLgoJRG8gbm90IGNhbGwgY29weV9sb29wX2hlYWRlcnMuCglEbyBydGwtYmFzZWQgcHJvZmlsaW5nIG9ubHkgd2hlbgoJIWZsYWdfdHJlZV9iYXNlZF9wcm9maWxpbmcuICBSZWdpc3RlciBydGwtYmFzZWQgcHJvZmlsaW5nCglob29rcy4KCSogcHJlZGljdC5jOiBJbmNsdWRlIHRyZWUtZmxvdy5oLCBnZ2MuaCwgdHJlZS1kdW1wLmgKCShwcmVkaWN0ZWRfYnlfcCk6IFJlbmFtZSB0byAuLi4KCShydGxfcHJlZGljdGVkX2J5X3ApOiAuLiB0aGlzIG9uZTsgbWFrZSBnbG9iYWwKCSh0cmVlX3ByZWRpY3RlZF9ieV9wKTogTmV3LgoJKGR1bXBfcHJlZGljdGlvbik6IEFkZCBGSUxFIGFyZ3VtZW50LgoJKHByZWRpY3RfZWRnZSk6IFJlbmFtZSB0byAuLi4KCShydGxfcHJlZGljdF9lZGdlKTogLi4gdGhpcyBvbmUuCgkodHJlZV9wcmVkaWN0X2VkZ2UpOiBOZXcuCgkoY29tYmluZV9wcmVkaWN0aW9uc19mb3JfaW5zbik6IFVwZGF0ZSBjYWxscyBvZiBwcmVkaWN0X2VkZ2UuCgkocHJlZGljdF9sb29wcyk6IEJyZWFrIG91dCBmcm9tIC4uLgoJKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogLi4uIGhlcmU7IHVwZGF0ZSBjb21tZW50czsgbW92ZSB1cGRhdGluZwoJb2YgdW5rbm93biBwcm9iYWJpbGl0aWVzIGZyb20gLi4uCgkoZXN0aW1hdGVfYmJfZnJlcXVlbmNpZXMpOiAuLi4gaGVyZS4KCShjb21iaW5lX3ByZWRpY3Rpb25zX2Zvcl9iYik6IE5ldy4KCSh0cmVlX3ByZWRpY3RfYnlfb3Bjb2RlKTogTmV3LgoJKHRyZWVfZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBOZXcuCgkqIHByZWRpY3QuZGVmIChQUkVEX1RSRUVfUE9JTlRFUiwgUFJFRF9UUkVFX09QQ09ERV9QT1NJVElWRSwKCVBSRURfVFJFRV9PUENPREVfTk9ORVFVQUwsIFBSRURfVFJFRV9GUE9QQ09ERSk6IE5ldyBwcmVkaWN0b3JzLgoJKiBwcmVkaWN0Lmg6IEFkZCBpbmNsdWRlIGd1YXJkLgoJKHByZWRpY3RfZWRnZSwgcHJlZGljdF9lZGdlX2RlZik6IE1vdmUgcHJvdG90eXBlcyB0byBiYXNpY19ibG9jay5oCgkqIHByZXR0eS1wcmludC5jIChwcF93cml0ZV90ZXh0X3RvX3N0cmVhbSk6IE1ha2UgZXh0ZXJuLgoJKiBwcmV0dHktcHJpbnQuaCAocHBfd3JpdGVfdGV4dF90b19zdHJlYW0pOiBEZWNsYXJlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogRG9uJ3QgcHJpbnQgdGhlIGludGVncmF0ZWQgZmxhZy4KCVByaW50IHRoZSByZXR1cm5fdmFsIGZsYWcuCgkqIHByaW50LXRyZWUuYzogVXNlIFRSRUVfRklMRU5BTUUgYW5kIFRSRUVfTElORU5PIGluc3RlYWQKCW9mIERFQ0xfU09VUkNFX0ZJTEUgYW5kIERFQ0xfU09VUkNFX0xJTkUgcmVzcGVjdGl2ZWx5LgoJUmVtb3ZlIHN1cHBvcnQgZm9yIEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OIG5vZGVzLgoJKHByaW50X25vZGUpOiBQcmludCBUUkVFX0lOVkFSSUFOVCBhbmQgVFJFRV9WSVNJVEVELgoJKiBwcm9maWxlLmM6IEluY2x1ZGUgY2ZnaG9va3MuaCwgdHJlZS1mbG93LmguCgkocHJvZmlsZV9ob29rcyk6IE5ldy4KCShwcm9maWxlX2R1bXBfZmlsZSk6IE5ldy4KCShpbnN0cnVtZW50X2VkZ2VzKTogVXNlIGhvb2tzIGluc3RlYWQgb2YgUlRMLXNwZWNpZmljIGNvZGUuCgkoaW5zdHJ1bWVudF92YWx1ZXMpOiBEaXR0by4KCShnZXRfZXhlY19jb3VudHMpOiBEaXR0by4KCShjb21wdXRlX2JyYW5jaF9wcm9iYWJpbGl0aWVzKTogRGl0dG8uCgkoY29tcHV0ZV92YWx1ZV9oaXN0b2dyYW1zKTogRGl0dG8uCgkoYnJhbmNoX3Byb2IpOiBEaXR0by4KCShmaW5kX3NwYW5uaW5nX3RyZWUpOiBEaXR0by4KCShlbmRfYnJhbmNoX3Byb2IpOiBEaXR0by4KCShnZW5fZWRnZV9wcm9maWxlcik6IE1vdmUgdG8gcnRsLXByb2ZpbGUuYyAocnRsX2dlbl9lZGdlX3Byb2ZpbGVyKS4KCShnZW5faW50ZXJ2YWxfcHJvZmlsZXIpOiBEaXR0byAocnRsX2dlbl9pbnRlcnZhbF9wcm9maWxlcikuCgkoZ2VuX3BvdzJfcHJvZmlsZXIpOiBEaXR0byAocnRsX2dlbl9wb3cyX3Byb2ZpbGVyKS4KCShnZW5fb25lX3ZhbHVlX3Byb2ZpbGVyKTogRGl0dG8gKHJ0bF9nZW5fb25lX3ZhbHVlX3Byb2ZpbGVyKS4KCSh0cmVlX3JlZ2lzdGVyX3Byb2ZpbGVfaG9va3MpOiBOZXcuCgkocnRsX3JlZ2lzdGVyX3Byb2ZpbGVfaG9va3MpOiBOZXcuCgkqIHJhLXJld3JpdGUuYyAocmV3cml0ZV9wcm9ncmFtKTogQ2xlYXIgdmFyaWFibGUgaW5mby4KCSogcmVjb2cuYyAoaW1tZWRpYXRlX29wZXJhbmQpOiBEbyBub3QgaGFuZGxlIENPTlNUQU5UX1BfUlRYLgoJKiByZWdzLmg6IEFkZCBpbmNsdWRlIGd1YXJkcy4KCSogcmVsb2FkLmMgKGRlY29tcG9zZSk6IENsZWFyIHZhbCB1c2luZyBtZW1zZXQuCgkqIHJ0bC5kZWYgKENPTlNUQU5UX1BfUlRYKTogUmVtb3ZlLgoJKiBydGwuaCAoQ09OU1RBTlRfUCk6IERvIG5vdCBoYW5kbGUgQ09OU1RBTlRfUF9SVFguCgkoY29weV9sb29wX2hlYWRlcnMpOiBSZW1vdmUuCgkoc3RydWN0IHJ0eF9kZWYpOiBSZXBsYWNlIHRoZSBpbnRlZ3JhdGVkIGZsYWcgd2l0aCB0aGUKCXJldHVybl92YWwgZmxhZy4KCShtYXliZV9zZXRfZmlyc3RfbGFiZWxfbnVtKTogRGVjbGFyZS4KCShpbml0X2JyYW5jaF9wcm9iKTogTW92ZSBkZWNsYXJhdGlvbiB0byB2YWx1ZS1wcm9mLmguCgkoZW5kX2JyYW5jaF9wcm9iKTogRGl0dG8uCgkoYnJhbmNoX3Byb2IpOiBEaXR0by4KCShuZXZlcl9yZWFjaGVkX3dhcm5pbmcpOiBEb24ndCBkZWNsYXJlIGl0LgoJKiBydGxhbmFsLmMgKGdldF9yZWxhdGVkX3ZhbHVlKTogSW5pdGlhbGl6ZSBnZXRfanVtcF90YWJsZV9vZmZzZXQKCShob2lzdF9pbnNuX3RvX2VkZ2UpOiBVcGRhdGUgdG8gbWF0Y2ggZmllbGQgaW5zbnMgaW4KCXN0cnVjdCBlZGdlX2RlZi4KCSogc2JpdG1hcC5jIChzYml0bWFwX3JlYWxsb2MpOiBOZXcuCgkqIHNiaXRtYXAuaCAoc2JpdG1hcF9yZWFsbG9jKTogRGVjbGFyZS4KCSogc2liY2FsbC5jOiBSZW1vdmUgZmlsZS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3J0eCk6IERvIG5vdCBoYW5kbGUKCUNPTlNUQU5UX1BfUlRYLgoJKiBzdG10LmMgKHBhcnNlX291dHB1dF9jb25zdHJhaW50KTogRG9uJ3Qgd2FybiBmb3IgcmVhZC13cml0ZQoJbWVtb3J5IG9wZXJhbmQuCgkodGFpbF9yZWN1cnNpb25fYXJncyk6IFVzZSB0eXBlc19jb21wYXRpYmxlX3AgbGFuZ2hvb2suCgkoZm9yY2VfbGFiZWxfcnR4KTogRG9uJ3QgbG9vayBhdCBpbmxpbmVfZnVuY3Rpb25fZGVjbC4KCShsYWJlbF9ydHgpOiBTZXQgTEFCRUxfUFJFU0VSVkVfUCBhcHByb3ByaWF0ZWx5LgoJKGV4cGFuZF9sYWJlbCk6IEhhbmRsZSBERUNMX05PTkxPQ0FMIGFuZCBGT1JDRURfTEFCRUwuCgkoZGVjbGFyZV9ub25sb2NhbF9sYWJlbCk6IFJlbW92ZS4KCShleHBhbmRfZ290byk6IERvbid0IGhhbmRsZSBub25sb2NhbCBnb3Rvcy4KCShleHBhbmRfbmxfaGFuZGxlcl9sYWJlbCk6IFJlbW92ZS4KCShleHBhbmRfbmxfZ290b19yZWNlaXZlcnMpOiBSZW1vdmUuCgkoZXhwYW5kX2VuZF9iaW5kaW5ncyk6IERvbid0IGV4cGFuZF9ubF9nb3RvX3JlY2VpdmVycy4gIFVzZQoJdXBkYXRlX25vbmxvY2FsX2dvdG9fc2F2ZV9hcmVhLgoJKGV4cGFuZF9leHByX3N0bXRfdmFsdWUpOiBDaGVjayBUUkVFX05PX1dBUk5JTkcuCgkod2Fybl9pZl91bnVzZWRfdmFsdWUpOiBMaWtld2lzZS4KCShleHBhbmRfc3RhcnRfbG9vcCwgZXhwYW5kX2xvb3BfY29udGludWVfaGVyZSwKCWV4cGFuZF9lbmRfbG9vcCk6IERvbid0IGNyZWF0ZSBsb29wIG5vdGVzLgoJKGFsbF9jYXNlc19jb3VudCwgQklUQVJSQVlfVEVTVCwgQklUQVJSQVlfU0VULAoJbWFya19zZWVuX2Nhc2VzLCBjaGVja19mb3JfZnVsbF9lbnVtZXJhdGlvbl9oYW5kbGluZyk6IFJlbW92ZS4KCShleHBhbmRfZW5kX2Nhc2VfdHlwZSk6IERvbid0IGRvIHdhcm5fc3dpdGNoIGhhbmRsaW5nLgoJKHB1c2hjYXNlLCBwdXNoY2FzZV9yYW5nZSkgVXBkYXRlIGFkZF9jYXNlX25vZGUgY2FsbHMuCgkoYWRkX2Nhc2Vfbm9kZSk6IEFkZCBkb250X2V4cGFuZF9sYWJlbCBhcmd1bWVudC4KCShzYW1lX2Nhc2VfdGFyZ2V0X3ApOiBEb24ndCBzZWFyY2ggcnRsLgoJKGV4cGFuZF9zdGFydF9iaW5kaW5nc19hbmRfYmxvY2ssIGV4cGFuZF9lbmRfYmluZGluZ3MpOgoJRG9uJ3QgZW1pdCBibG9jayBub3RlcyB3aGVuIGRvbnRfZW1pdF9ibG9ja19ub3Rlcy4KCSh1c2luZ19laF9mb3JfY2xlYW51cHNfcCk6IEV4cG9ydC4KCShleHBhbmRfcmV0dXJuKTogQWxsb3cgYW55IHR5cGVkIHJocy4KCShleHBhbmRfc3RhY2tfYWxsb2MpOiBOZXcuCgkoZXhwYW5kX3N0YWNrX3NhdmUsIGV4cGFuZF9zdGFja19yZXN0b3JlKTogTmV3LgoJKGNvbnRhaW5pbmdfYmxvY2tzX2hhdmVfY2xlYW51cHNfb3Jfc3RhY2tfbGV2ZWwpOiBOZXcKCWZ1bmN0aW9uLgoJKGFzbV9vcF9pc19tZW1faW5wdXQpOiBOZXcgZm4uCgkoZXhwYW5kX2FzbV9leHByKTogTmV3IGZuLgoJKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogQ2hlY2sgb3BlcmFuZCAwIG9mIFNBVkVfRVhQUgoJbm9kZXMuCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF90eXBlKTogSnVzdCByZXR1cm4gaWYgdHlwZSBpcwoJZXJyb3JfbWFya19ub2RlLgoJKHVwZGF0ZV9hbGlnbm1lbnRfZm9yX2ZpZWxkKTogRXhwb3J0LgoJKHZhcmlhYmxlX3NpemUpOiBXZSBkb24ndCBjYXJlIGFib3V0IGdsb2JhbF9iaW5kaW5nc19wIGlmCgl0aGUgZnJvbnRlbmQgZG9lc24ndCB3YW50IGEgbGlzdCBvZiB0aGUgZXhwcmVzc2lvbnMuCgkqIHN5c3RlbS5oOiBQb2lzb24gSU5URUdSQVRFX1RIUkVTSE9MRC4KCSogdGltZXZhci5kZWYgKFRWX1RSRUVfR0lNUExJRlksIFRWX1RSRUVfRUgsIFRWX1RSRUVfQ0ZHLAoJVFZfVFJFRV9DTEVBTlVQX0NGRywgVFZfVFJFRV9QVEEsIFRWX1RSRUVfTUFZX0FMSUFTLAoJVFZfVFJFRV9JTlNFUlRfUEhJX05PREVTLCBUVl9UUkVFX1NTQV9SRVdSSVRFX0JMT0NLUywKCVRWX1RSRUVfU1NBX09USEVSLCBUVl9UUkVFX09QUywKCVRWX1RSRUVfU1NBX0RPTUlOQVRPUl9PUFRTLCBUVl9UUkVFX1NSQSwgVFZfVFJFRV9DQ1AsCglUVl9UUkVFX1NQTElUX0VER0VTLCBUVl9UUkVFX1BSRSwgVFZfVFJFRV9QSElPUFQsCglUVl9UUkVFX0ZPUldQUk9QLCBUVl9UUkVFX0RDRSwgVFZfVFJFRV9DRF9EQ0UsCglUVl9UUkVFX0RTRSwgVFZfVFJFRV9MT09QLCBUVl9UUkVFX0NILAoJVFZfVFJFRV9TU0FfVE9fTk9STUFMLCBUVl9UUkVFX1NTQV9UT19OT1JNQUwsCglUVl9UUkVFX05SViwgVFZfVFJFRV9DT1BZX1JFTkFNRSwgVFZfVFJFRV9TU0FfVkVSSUZZLAoJVFZfVFJFRV9TVE1UX1ZFUklGWSwgVFZfRE9NX0ZST05USUVSUywKCVRWX0NPTlRST0xfREVQRU5ERU5DRVMpOiBEZWZpbmUuCgkqIHRvcGxldi5jOiBJbmNsdWRlIHRyZWUtYWxpYXMtY29tbW9uLmgKCShjdXJyZW50X2ZpbGVfZGVjbCwgZmxhZ19tdWRmbGFwLCBmbGFnX211ZGZsYXBfdGhyZWFkcywKCWZsYWdfbXVkZmxhcF9pZ25vcmVfcmVhZHMsIGZsYWdfdHJlZV9iYXNlZF9wcm9maWxpbmcsCglmbGFnX3RyZWVfZ3ZuLCBmbGFnX3RyZWVfcG9pbnRzX3RvLCBmbGFnX3RyZWVfY2NwLAoJZmxhZ190cmVlX2RjZSwgZmxhZ190cmVlX2NoLCBmbGFnX3RyZWVfc3JhLAoJZmxhZ190cmVlX2NvbWJpbmVfdGVtcHMsIGZsYWdfdHJlZV90ZXIsCglmbGFnX3RyZWVfbGl2ZV9yYW5nZV9zcGxpdCwgZmxhZ190cmVlX2RvbSwKCWZsYWdfdHJlZV9jb3B5cmVuYW1lLCBmbGFnX3RyZWVfZHNlKTogRGVjbGFyZS4KCShmX29wdGlvbnMpOiBBZGQgdHJlZS1iYXNlZC1wcm9maWxpbmcsIHRyZWUtZ3ZuLAoJdHJlZS1wcmUsIHRyZWUtY2NwLCB0cmVlLWRjZSwKCXRyZWUtZG9taW5hdG9yLW9wdHMsIHRyZWUtY29weXJlbmFtZSwgdHJlZS1kc2UsCgl0cmVlLWNvbWJpbmUtdGVtcHMsIHRyZWUtdGVyLCB0cmVlLWxycyBhbmQgdHJlZS1jaC4KCSh3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IERvbid0IG91dHB1dCBuZXN0ZWQgaW5saW5lZCBmdW5jdGlvbnMuCgkoZ2VuZXJhbF9pbml0KTogQ2FsbCBpbml0X3RyZWVfb3B0aW1pemF0aW9uX3Bhc3Nlcy4KCShwcm9jZXNzX29wdGlvbnMpOiBTb3JyeSBmb3IgLWZ0cmVlLWJhc2VkLXByb2ZpbGluZyBwbHVzCgktZnRlc3QtY292ZXJhZ2Ugb3IgLWZwcm9maWxlLXZhbHVlcy4KCSogdG9wbGV2LmggKGluaXRfdHJlZV9vcHRpbWl6YXRpb25fcGFzc2VzLAoJZmxhZ190cmVlX2Jhc2VkX3Byb2ZpbGluZyk6IERlY2xhcmUuCgkqIHRyYWNlci5jICh0YWlsX2R1cGxpY2F0ZSk6IFVzZSBjZmdob29rcyBmb3IgYmIgZHVwbGljYXRpb24uCgkqIHRyZWUtYWxpYXMtYW5kZXIuYzogTmV3IGZpbGUuCgkqIHRyZWUtYWxpYXMtYW5kZXIuaDogTmV3IGZpbGUuCgkqIHRyZWUtYWxpYXMtY29tbW9uLmM6IE5ldyBmaWxlLgoJKiB0cmVlLWFsaWFzLWNvbW1vbi5oOiBOZXcgZmlsZS4KCSogdHJlZS1hbGlhcy10eXBlLmM6IE5ldyBmaWxlLgoJKiB0cmVlLWFsaWFzLXR5cGUuaDogTmV3IGZpbGUuCgkqIHRyZWUtYnJvd3Nlci5jOiBOZXcgZmlsZS4KCSogdHJlZS1icm93c2VyLmRlZjogTmV3IGZpbGUuCgkqIHRyZWUtY2ZnLmM6IE5ldyBmaWxlLgoJKiB0cmVlLWNvbXBsZXguYzogTmV3IGZpbGUuCgkqIHRyZWUtZGZhLmM6IE5ldyBmaWxlLgoJKiB0cmVlLWR1bXAuYyAoZHVtcF9lbmFibGVfYWxsKTogTmV3LgoJKGRlcXVldWVfYW5kX2R1bXApOiBEbyBub3QgaGFuZGxlIEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OLgoJKGR1bXBfbm9kZSk6IFJlbW92ZSBjb25zdCBmcm9tIGZpZWxkIHN1ZmZpeCBhbmQgc3d0Y2guCgkoZHVtcF9maWxlcyk6IEFkZCBudWxsIGVudHJ5LCAuZ2VuZXJpYywgLm5lc3RlZCwgLnZjZywKCS54bWwgYW5kIGEgbWF0Y2gtYWxsIGVudHJ5LgoJKGV4dHJhX2R1bXBfZmlsZXMsIGV4dHJhX2R1bXBfZmlsZXNfaW5fdXNlLAoJZXh0cmFfZHVtcF9maWxlc19hbGxvY2VkKTogRGVjbGFyZQoJKGR1bXBfb3B0aW9uX3ZhbHVlX2luZm8pOiBBZGQgcmF3LCBkZXRhaWxzLCBzdGF0cywKCWJsb2Nrcywgdm9wcywgbGluZW5vLCB1aWQgYW5kIGFsbC4KCShkdW1wX3JlZ2lzdGVyKTogTmV3LgoJKGdldF9kdW1wX2ZpbGVfaW5mbyk6IE5ldy4KCShkdW1wX2JlZ2luKTogQ2FsbCBpdC4KCURvIG5vdGhpbmcgZm9yIFRESV9ub25lLgoJKGR1bXBfYmVnaW4pOiBJbmNsdWRlIHBoYXNlIG51bWJlciBpbiBkdW1wIGZpbGVuYW1lLgoJKGR1bXBfZW5hYmxlX2FsbCk6IE5ldy4KCShkdW1wX3N3aXRjaF9wXzEpOiBTcGxpdCBvdXQgZnJvbSBkdW1wX3N3aXRjaF9wLgoJKGR1bXBfc3dpdGNoX3ApOiBIYW5kbGUgZXh0cmFfZHVtcF9maWxlcy4KCVN0YXJ0IG91ciBzY2FuIGF0IFRESV9ub25lICsgMS4KCUlmIC1mZHVtcC10cmVlLWFsbCB3YXMgZ2l2ZW4sIGNhbGwgZHVtcF9lbmFibGVfYWxsLgoJKiB0cmVlLWR1bXAuaDogSW5jbHVkZSBzcGxheS10cmVlLmguCgkoZHVtcF9mdW5jdGlvbiwgZHVtcF9mdW5jdGlvbl90b19maWxlLCBkdW1wX3JlZ2lzdGVyKToKCURlY2xhcmUuCgkqIHRyZWUtZWguYzogTmV3IGZpbGUuCgkqIHRyZWUtZmxvdy1pbmxpbmUuaDogTmV3IGZpbGUuCgkqIHRyZWUtZmxvdy5oOiBOZXcgZmlsZS4KCSogdHJlZS1pbmxpbmUuYzogUmUtd3JpdGUgdG8gaGFuZGxlIGlubGluaW5nIG9uIEdJTVBMRS4KCSogdHJlZS1pbmxpbmUuaCAod2Fsa190cmVlLAoJd2Fsa190cmVlX3dpdGhvdXRfZHVwbGljYXRlcyk6IE1vdmUgdG8gdHJlZS5oLgoJKGVzdGltYXRlX251bV9pbnNucyk6IERlY2xhcmUuCgkqIHRyZWUtaW50by1zc2EuYzogTmV3IGZpbGUuCgkqIHRyZWUtaXRlcmF0b3IuYzogTmV3IGZpbGUuCgkqIHRyZWUtaXRlcmF0b3IuaDogTmV3IGZpbGUuCgkqIHRyZWUtbXVkZmxhcC5jOiBOZXcgZmlsZS4KCSogdHJlZS1tdWRmbGFwLmg6IE5ldyBmaWxlLgoJKiB0cmVlLW5lc3RlZC5jOiBOZXcgZmlsZS4KCSogdHJlZS1ub211ZGZsYXAuYzogTmV3IGZpbGUuCgkqIHRyZWUtbnJ2LmM6IE5ldyBmaWxlLgoJKiB0cmVlLW9wdGltaXplLmMgKGR1bXBfZmxhZ3MsIHZhcnNfdG9fcmVuYW1lLAoJaW5fZ2ltcGxlX2Zvcm0sIGFsbF9wYXNzZXMsIHBhc3NfZ2ltcGxlLAoJcGFzc19yZWJ1aWxkX2JpbmQsIHBhc3NfYWxsX29wdGltaXphdGlvbnMsIHBhc3NfZGVsX2NmZyk6IERlY2xhcmUuCgkoZXhlY3V0ZV9naW1wbGUsIGV4ZWN1dGVfcmVidWlsZF9iaW5kLAoJZ2F0ZV9hbGxfb3B0aW1pemF0aW9ucywgZXhlY3V0ZV9kZWxfY2ZnLAoJcmVnaXN0ZXJfb25lX2R1bXBfZmlsZSwgcmVnaXN0ZXJfZHVtcF9maWxlcywgZHVwX3Bhc3NfMSwKCWluaXRfdHJlZV9vcHRpbWl6YXRpb25fcGFzc2VzLCBleGVjdXRlX3RvZG8sCglleGVjdXRlX29uZV9wYXNzLCBleGVjdXRlX3Bhc3NfbGlzdCk6IE5ldy4KCShjbGVhcl9kZWNsX3J0bCk6IFJlbW92ZS4KCSh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBVcGRhdGUgdG8gdXNlIHRyZWUKCW9wdGltaXplcnMuCgkqIHRyZWUtb3V0b2Ytc3NhLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXBhc3MuaDogTmV3IGZpbGUuCgkqIHRyZWUtcGhpbm9kZXMuYzogTmV3IGZpbGUuCgkqIHRyZWUtcHJldHR5LXByaW50LmM6IE5ldyBmaWxlLgoJKiB0cmVlLXByb2ZpbGUuYzogTmV3IGZpbGUuCgkqIHRyZWUtc2ltcGxlLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXNpbXBsZS5oOiBOZXcgZmlsZS4KCSogdHJlZS1zcmEuYzogTmV3IGZpbGUuCgkqIHRyZWUtc3NhLWFsaWFzLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS1jY3AuYzogTmV3IGZpbGUuCgkqIHRyZWUtc3NhLWNvcHkuYzogTmV3IGZpbGUuCgkqIHRyZWUtc3NhLWNvcHlyZW5hbWUuYzogTmV3IGZpbGUuCgkqIHRyZWUtc3NhLWRjZS5jOiBOZXcgZmlsZS4KCSogdHJlZS1zc2EtZG9tLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS1kc2UuYzogTmV3IGZpbGUuCgkqIHRyZWUtc3NhLWZvcndwcm9wLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS1saXZlLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS1saXZlLmg6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS1sb29wLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jOiBOZXcgZmlsZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuaDogTmV3IGZpbGUuCgkqIHRyZWUtc3NhLXBoaW9wdC5jOiBOZXcgZmlsZS4KCSogdHJlZS1zc2EtcHJlLmM6IE5ldyBmaWxlLgoJKiB0cmVlLXNzYS5jOiBOZXcgZmlsZS4KCSogdHJlZS1zc2FuYW1lcy5jOiBOZXcgZmlsZS4KCSogdHJlZS10YWlsY2FsbC5jOiBOZXcgZmlsZS4KCSogdHJlZS5jOiBJbmNsdWRlIHRyZWUtaXRlcmF0b3IuaCwgYmFzaWMtYmxvY2suaCBhbmQKCXRyZWUtZmxvdy5oLgoJKHRyZWVfbm9kZV9raW5kKTogQWRkIHBoaV9ub2RlcyBhbmQgc3NhIG5hbWVzLgoJKHRyZWVfc2l6ZSk6IEhhbmRsZSBQSElfTk9ERSwgRVBISV9OT0RFLCBTU0FfTkFNRSwKCUVVU0VfTk9ERSwgRUtJTExfTk9ERSwgRUVYSVRfTk9ERSBhbmQgU1RBVEVNRU5UX0xJU1QuCgkobWFrZV9ub2RlX3N0YXQpOiBIYW5kbGUgUEhJX05PREUgYW5kIFNTQV9OQU1FLgoJPCdjJz4gU2V0IFRSRUVfSU5WQVJJQU5ULgoJKGNvcHlfbm9kZV9zdGF0KTogQWJvcnQgaWYgdHJ5aW5nIHRvIGNvcHkgYQoJU1RBVEVNRU5UX0xJU1QuCglDbGVhciBUUkVFX1ZJU0lURUQuCglDbGVhciBhbm5vdGF0aW9uIGZpZWxkLgoJKGJ1aWxkX2NvbnN0cnVjdG9yKTogQ29weSBUUkVFX0lOVkFSSUFOVCBmcm9tIHZhbHMuCglEb24ndCBjbGVhciBUUkVFX0NPTlNUQU5ULgoJKGV4cHJfZmlyc3QsIGV4cHJfbGFzdCwgZXhwcl9sZW5ndGgpOiBSZW1vdmUuCgkoc3RhdGljcCk6IFBhc3MgdW5rbm93biBjb21wb25lbnQgcmVmZXJlbmNlcyB0byB0aGUgbGFuZ3VhZ2UuCgkoc2F2ZV9leHByKTogQ2hlY2sgVFJFRV9JTlZBUklBTlQgaW5zdGVhZCBvZiBUUkVFX0NPTlNUQU5ULgoJKHNraXBfc2ltcGxlX2FyaXRobWV0aWMpOiBMaWtld2lzZS4KCShzdGFiaWxpemVfcmVmZXJlbmNlXzEpOiBMaWtld2lzZS4KCSh0cmVlX25vZGVfc3RydWN0dXJlKTogSGFuZGxlIFBISV9OT0RFLCBFUEhJX05PREUsCglFVVNFX05PREUsIEVLSUxMX05PREUsIEVFWElUX05PREUsIFNTQV9OQU1FIGFuZAoJU1RBVEVNRU5UX0xJU1QuCgkobGhkX3Vuc2F2ZV9leHByX25vdyk6IFJlbW92ZS4KCSh1bnNhZmVfZm9yX3JlZXZhbCk6IEhhbmRsZSBMQUJFTF9FWFBSIGFuZCBCSU5EX0VYUFIuCgkocmVjb21wdXRlX3RyZWVfaW52YXJhbnRfZm9yX2FkZHJfZXhwcik6IE5ldy4KCShidWlsZDFfc3RhdCk6IENsZWFyIEVYUFJfTE9DVVMgYW5kIFRSRUVfQkxPQ0suCglDYWxsIHJlY29tcHV0ZV90cmVlX2ludmFyYW50X2Zvcl9hZGRyX2V4cHIuCglTZXQgVFJFRV9JTlZBUklBTlQgYWNjb3JkaW5nbHkuCgkoYnVpbGQyX3N0YXQpOiBEb24ndCBoYW5kbGUgQ0FMTF9FWFBSLgoJKGJ1aWxkM19zdGF0KTogRG9uJ3QgY2FsbCBidWlsZDJfc3RhdCBmb3IgQ0FMTF9FWFBScy4KCShidWlsZF9leHByX3dmbCk6IFJlbW92ZS4KCShhbm5vdGF0ZV93aXRoX2ZpbGVfbGluZSwgYW5ub3RhdGVfd2l0aF9sb2N1cyk6IE5ldy4KCShzaW1wbGVfY3N0X2VxdWFsKTogQ2FsbCBzaW1wbGVfY3N0X2xpc3RfZXF1YWwgdG8gY29tcGFyZQoJQ09OU1RSVUNUT1JfRUxUUyBwb2ludGVycy4KCShpdGVyYXRpdmVfaGFzaF9leHByKTogRG9uJ3QgaGFzaCB0eXBlcyBhc3NvY2lhdGVkCgl3aXRoIGNvbnZlcnNpb25zLiAgSW5zdGVhZCBoYXNoIG9uIHRoZSBzaWduZWRuZXNzIG9mIHRoZQoJdG9wbGV2ZWwgb2JqZWN0IGFuZCB0aGUgb3BlcmFuZCBvZiB0aGUgY29udmVyc2lvbi4KCShkdW1wX3RyZWVfc3RhdGlzdGljcyk6IENhbGwgc3NhbmFtZXNfcHJpbnRfc3RhdGlzdGljcwoJYW5kIHBoaW5vZGVzX3ByaW50X3N0YXRpc3RpY3MuCgkoZXBoaV9ub2RlX2VsdF9jaGVja19mYWlsZWQsIHBoaV9ub2RlX2VsdF9jaGVja19mYWlsZWQsCglhZGRfdmFyX3RvX2JpbmRfZXhwciwgYnVpbGRfZW1wdHlfc3RtdCwgaXNfZXNzYV9ub2RlLAoJbmVlZHNfdG9fbGl2ZV9pbl9tZW1vcnkpOiBOZXcuCgkoaW5pdGlhbGl6ZXJfemVyb3ApOiBIYW5kbGUgVkVDVE9SX0NTVC4gIERvbid0IGNoZWNrCglBR0dSRUdBVEVfVFlQRV9QIGZvciBDT05TVFJVQ1RPUi4KCSogdHJlZS5kZWYgKEZJTFRFUl9FWFBSLCBDQVNFX0xBQkVMX0VYUFIsIFJFU1hfRVhQUiwKCVNTQV9OQU1FLCBFVVNFX05PREUsIEVLSUxMX05PREUsIEVQSElfTk9ERSwgRUVYSVRfTk9ERSwKCVBISV9OT0RFLCBDQVRDSF9FWFBSLCBFSF9GSUxURVJfRVhQUiwgU1RBVEVNRU5UX0xJU1QpOiBEZWZpbmUuCgkoR09UT19TVUJST1VUSU5FX0VYUFIpOiBDaGFuZ2UgdHlwZSB0byAncycuCgkoQ0FMTF9FWFBSKTogQWRkIGFub3RoZXIgb3BlcmFuZC4KCShFWFBSX1dJVEhfRklMRV9MT0NBVElPTik6IFJlbW92ZS4KCShTV0lUQ0hfRVhQUik6IEFkZCBhbm90aGVyIG9wZXJhbmQuCgkqIHRyZWUuaDogVXBkYXRlIHZhcmlvdXMgY29tbWVudHMuCgkodW5pb24gdHJlZV9hbm5fZCk6IEZvcndhcmQgZGVjbGFyZS4KCShzdHJ1Y3QgdHJlZV9jb21tb24pOiBBZGQgZmllbGRzIG5vd2FybmluZ19mbGFnLAoJaW52YXJpYW50X2ZsYWcgYW5kIHZpc2l0ZWQuCgkoRVJFRl9OT0RFX0NIRUNLLCBFUEhJX05PREVfRUxUX0NIRUNLLAoJUEhJX05PREVfRUxUX0NIRUNLLCBFUkVGX05PREVfQ0hFQ0ssIFBISV9OT0RFX0VMVF9DSEVDSywKCUVQSElfTk9ERV9FTFRfQ0hFQ0ssIFRSRUVfQkxPQ0ssCglTVFJJUF9VU0VMRVNTX1RZUEVfQ09OVkVSU0lPTiwgQ0FMTF9FWFBSX1RBSUxDQUxMLAoJVFJFRV9OT19XQVJOSU5HLCBGT1JDRURfTEFCRUwsIFRSRUVfSU5WQVJJQU5ULAoJSVNfRU1QVFlfU1RNVCwgRVhQUl9MT0NVUywgU0VUX0VYUFJfTE9DVVMsIEVYUFJfRklMRU5BTUUsCglFWFBSX0xJTkVOTywgRVhQUl9MT0NBVElPTiwgRVhQUl9IQVNfTE9DQVRJT04sCglFWElUX0VYUFJfQ09ORCwgU1dJVENIX0NPTkQsIFNXSVRDSF9CT0RZLCBTV0lUQ0hfTEFCRUxTLAoJQ0FTRV9MT1csIENBU0VfSElHSCwgQ0FTRV9MQUJFTCwgQklORF9FWFBSX1ZBUlMsCglCSU5EX0VYUFJfQk9EWSwgQklORF9FWFBSX0JMT0NLLCBHT1RPX0RFU1RJTkFUSU9OLAoJQVNNX1NUUklORywgQVNNX09VVFBVVFMsIEFTTV9JTlBVVFMsIEFTTV9DTE9CQkVSUywKCUFTTV9JTlBVVF9QLCBBU01fVk9MQVRJTEVfUCwgQ09ORF9FWFBSX0NPTkQsCglDT05EX0VYUFJfVEhFTiwgQ09ORF9FWFBSX0VMU0UsIExBQkVMX0VYUFJfTEFCRUwsCglDQVRDSF9UWVBFUywgQ0FUQ0hfQk9EWSwgRUhfRklMVEVSX1RZUEVTLAoJRUhfRklMVEVSX0ZBSUxVUkUsIEVIX0ZJTFRFUl9NVVNUX05PVF9USFJPVywKCVNTQV9OQU1FX1ZBUiwgU1NBX05BTUVfREVGX1NUTVQsIFNTQV9OQU1FX1ZFUlNJT04sCglTU0FfTkFNRV9PQ0NVUlNfSU5fQUJOT1JNQUxfUEhJLCBTU0FfTkFNRV9JTl9GUkVFX0xJU1QsCglQSElfUkVTVUxULCBQSElfUkVXUklUVEVOLCBQSElfTlVNX0FSR1MsCglQSElfQVJHX0NBUEFDSVRZLCBQSElfQVJHX0VMVCwgUEhJX0FSR19FREdFLCBQSElfQVJHX0RFRiwKCUVSRUZfUFJPQ0VTU0VELCBFUkVGX0lELCBFUkVGX05BTUUsIEVSRUZfU1RNVCwKCUVSRUZfUkVMT0FELCBFUkVGX1NBVkUsIEVSRUZfQ0xBU1MsIEVSRUZfSU5KVVJFRCwKCUVSRUZfVEVNUCwgRVVTRV9ERUYsIEVVU0VfUEhJT1AsIEVVU0VfSU5TRVJURUQsCglFVVNFX0xWQUwsIEVQSElfTlVNX0FSR1MsIEVQSElfQVJHX0NBUEFDSVRZLAoJRVBISV9BUkdfRUxULCBFUEhJX0FSR19FREdFLCBFUEhJX0FSR19QUkVELCBFUEhJX0FSR19ERUYsCglFUEhJX0FSR19JTkpVUkVELCBFUEhJX0FSR19ERUxBWUVEX1JFTkFNRSwKCUVQSElfQVJHX0hBU19SRUFMX1VTRSwgRVBISV9BUkdfU1RPUFMsCglFUEhJX0FSR19QUk9DRVNTRUQyLCBFUEhJX0lERU5USVRZLCBFUEhJX0lERU5UX0lOSlVSRUQsCglFUEhJX1JFUF9PQ0NVUl9LTk9XTiwgRVBISV9JREVOVElDQUxfVE8sIEVQSElfRE9XTlNBRkUsCglFUEhJX0NBTlRfQkVfQVZBSUwsIEVQSElfREVBRCwgRVBISV9VU0VTLCBFUEhJX1NUT1BTLAoJVFJFRV9WSVNJVEVELCBTU0FfVkFSX1AsIERFQ0xfTlVNX1NUTVRTLAoJREVDTF9IQVJEX1JFR0lTVEVSLCBERUNMX1BUQV9BTElBU1ZBUiwgTEFCRUxfREVDTF9VSUQsCglERUNMX05FRURTX1RPX0xJVkVfSU5fTUVNT1JZX0lOVEVSTkFMLAoJU1RBVEVNRU5UX0xJU1RfSEVBRCwgU1RBVEVNRU5UX0xJU1RfVEFJTCwgVERGX1JBVywKCVRERl9ERVRBSUxTLCBUREZfU1RBVFMsIFRERl9CTE9DS1MsIFRERl9WT1BTLCBUREZfTElORU5PLAoJVERGX1VJRCwpOiBEZWZpbmUuCgkoVFJFRV9OT19VTlVTRURfV0FSTklORywgRVhQUl9XRkxfRU1JVF9MSU5FX05PVEUsCglFWFBSX1dGTF9OT0RFLCBFWFBSX1dGTF9GSUxFTkFNRV9OT0RFLCBFWFBSX1dGTF9GSUxFTkFNRSwKCUVYUFJfV0ZMX0xJTkVDT0wsIEVYUFJfV0ZMX0xJTkVOTywgRVhQUl9XRkxfQ09MTk8sCglFWFBSX1dGTF9TRVRfTElORUNPTCk6IFJlbW92ZS4KCShwaGlfbm9kZV9lbHRfY2hlY2tfZmFpbGVkLCBlcGhpX25vZGVfZWx0X2NoZWNrX2ZhaWxlZCwKCW1ha2VfcGhpX25vZGUsIGluaXRfcGhpbm9kZXMsIGZpbmlfcGhpbm9kZXMsCglyZWxlYXNlX3BoaV9ub2RlLCBwaGlub2Rlc19wcmludF9zdGF0aXN0aWNzLAoJaW5pdF9zc2FuYW1lcywgZmluaV9zc2FuYW1lcywgbWFrZV9zc2FfbmFtZSwKCXJlbGVhc2Vfc3NhX25hbWUsIHNzYW5hbWVzX3ByaW50X3N0YXRpc3RpY3MsCglhbm5vdGF0ZV93aXRoX2ZpbGVfbGluZSwgYnVpbGRfZW1wdHlfc3RtdCwKCWFubm90YXRlX3dpdGhfbG9jdXMsIGV4cHJfb25seSwgY2F0ZWdvcml6ZV9jdG9yX2VsZW1lbnRzLAoJY291bnRfdHlwZV9lbGVtZW50cywgYWRkX3Zhcl90b19iaW5kX2V4cHIsIGlzX2Vzc2Ffbm9kZSwKCWV4cGFuZF9zdGFja19hbGxvYywgZXhwYW5kX3N0YWNrX3NhdmUsCglleHBhbmRfc3RhY2tfcmVzdG9yZSwgYWRkX2Nhc2Vfbm9kZSwgb3BlcmFuZF9lcXVhbF9wLAoJbm9uZGVzdHJ1Y3RpdmVfZm9sZF91bmFyeV90b19jb25zdGFudCwKCW5vbmRlc3RydWN0aXZlX2ZvbGRfYmluYXJ5X3RvX2NvbnN0YW50LAoJZm9sZF9yZWFkX2Zyb21fY29uc3RhbnRfc3RyaW5nLCBpbnRfY29uc3RfYmlub3AsCglzdHJpcF9mbG9hdF9leHRlbnNpb25zLCBzaW1wbGlmeV9idWlsdGluLCBjX3N0cmxlbiwKCXJlY29tcHV0ZV90cmVlX2ludmFyYW50X2Zvcl9hZGRyX2V4cHIsCgluZWVkc190b19saXZlX2luX21lbW9yeSwgbWFrZV92ZWN0b3IsCglzZXRqbXBfdmFyc193YXJuaW5nLCB1cGRhdGVfYWxpZ25tZW50X2Zvcl9maWVsZCwKCWV4cGFuZF9hc21fZXhwciwgYXNtX29wX2lzX21lbV9pbnB1dCwKCWNvbnRhaW5pbmdfYmxvY2tzX2hhdmVfY2xlYW51cHNfb3Jfc3RhY2tfbGV2ZWwsCgljcmVhdGVfYXJ0aWZpY2lhbF9sYWJlbCwgZ2ltcGxpZnlfZnVuY3Rpb25fdHJlZSwKCWdldF9uYW1lLCB1bnNoYXJlX2V4cHIsIHdhbGtfdHJlZSwKCXdhbGtfdHJlZV93aXRob3V0X2R1cGxpY2F0ZXMsIGluX2dpbXBsZV9mb3JtKTogRGVjbGFyZS4KCShzdHJ1Y3QgdHJlZV9leHApOiBBZGQgZmllbGRzIGxvY3VzIGFuZCBibG9jay4KCShzdHJ1Y3QgdHJlZV9zc2FfbmFtZSwgc3RydWN0IGVkZ2VfZGVmLCBzdHJ1Y3QKCXRyZWVfcGhpX25vZGUsIHN0cnVjdCB0cmVlX2VyZWZfY29tbW9uLCBzdHJ1Y3QKCXRyZWVfZXVzZV9ub2RlLCBzdHJ1Y3QgZXBoaV9hcmdfZCwgc3RydWN0IHRyZWVfZXBoaV9ub2RlLAoJdW5pb24gYWxpYXNfdmFyX2RlZiwgc3RydWN0IHRyZWVfc3RhdGVtZW50X2xpc3Rfbm9kZSwKCXN0cnVjdCB0cmVlX3N0YXRlbWVudF9saXN0LCBlbnVtIG9wZXJhbmRfZXF1YWxfZmxhZyk6IERlY2xhcmUuCgkoZW51bSB0cmVlX25vZGVfc3RydWN0dXJlX2VudW0pOiBBZGQgVFNfU1NBX05BTUUsCglUU19QSElfTk9ERSwgVFNfRVBISV9OT0RFLCBUU19FVVNFX05PREUsIFRTX0VSRUZfTk9ERSwKCVRTX1NUQVRFTUVOVF9MSVNULgoJKHVuaW9uIHRyZWVfbm9kZSk6IEFkZCBmaWVsZHMgc3NhX25hbWUsIHBoaSwgZXJlZiwgZXBoaSwKCWV1c2UgYW5kIHN0bXRfbGlzdC4KCShmdW5jdGlvbl9jYW5ub3RfaW5saW5lX3AsIHVuaW5pdGlhbGl6ZWRfdmFyc193YXJuaW5nLAoJc2F2ZV9mb3JfaW5saW5lLCBvdXRwdXRfaW5saW5lX2Z1bmN0aW9uLCBhbGxfY2FzZXNfY291bnQsCgljaGVja19mb3JfZnVsbF9lbnVtZXJhdGlvbl9oYW5kbGluZywKCWRlY2xhcmVfbm9ubG9jYWxfbGFiZWwpOiBSZW1vdmUuCgkoZW51bSB0cmVlX2R1bXBfaW5kZXgpOiBBZGQgVERJX25vbmUsIFRESV90dSwKCVRESV9nZW5lcmljLCBURElfbmVzdGVkLCBURElfdmNnLCBURElfeG1sLgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBEb24ndCBjbGVhciBtYXAtPmlubGluZV90YXJnZXQuCgkqIHVud2luZC1zamxqLmMgKHV3X2luc3RhbGxfY29udGV4dCk6IE1ha2UgYSBwcm9wZXIgc3RhdGljIGlubGluZQoJZnVuY3Rpb24uCgkqIHZhbHVlLXByb2YuYyAodmFsdWVfcHJvZl9ob29rcyk6IE5ldy4KCShmaW5kX3ZhbHVlc190b19wcm9maWxlKTogUmVuYW1lIHRvIHJ0bF9maW5kX3ZhbHVlc190b19wcm9maWxlLgoJTW92ZSBydGwtc3BlY2lmaWMgYml0cyBpbiBmcm9tIGJyYW5jaF9wcm9iLgoJKHZhbHVlX3Byb2ZpbGVfdHJhbnNmb3JtYXRpb25zKTogUmVuYW1lIHRvCglydGxfdmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMuCgkoc3RydWN0IHZhbHVlX3Byb2ZfaG9va3MpOiBOZXcuCgkocnRsX3ZhbHVlX3Byb2ZfaG9va3MpOiBOZXcuCgkocnRsX3JlZ2lzdGVyX3ZhbHVlX3Byb2ZfaG9va3MpOiBOZXcuCgkodHJlZV9maW5kX3ZhbHVlc190b19wcm9maWxlKTogTmV3IHN0dWIuCgkodHJlZV92YWx1ZV9wcm9maWxlX3RyYW5zZm9ybWF0aW9ucyk6IE5ldyBzdHViLgoJKHRyZWVfdmFsdWVfcHJvZl9ob29rcyk6IE5ldyBzdHViLgoJKHRyZWVfcmVnaXN0ZXJfdmFsdWVfcHJvZl9ob29rcyk6IE5ldyBzdHViLgoJKGZpbmRfdmFsdWVzX3RvX3Byb2ZpbGUpOiBOZXcuCgkodmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMpOiBOZXcuCgkqIHZhbHVlLXByb2YuaDogQWRkIG11bHRpcGxlIGluY2x1c2lvbiBndWFyZC4KCShzdHJ1Y3QgaGlzdG9ncmFtX3ZhbHVlKTogQ2hhbmdlIHJ0eCBmaWVsZHMgdG8gdm9pZCAqLgoJKHJ0bF9yZWdpc3Rlcl92YWx1ZV9wcm9mX2hvb2tzKTogTmV3IGRlY2xhcmF0aW9uLgoJKHRyZWVfcmVnaXN0ZXJfdmFsdWVfcHJvZl9ob29rcyk6IE5ldyBkZWNsYXJhdGlvbi4KCShmaW5kX3ZhbHVlc190b19wcm9maWxlKTogTmV3IGRlY2xhcmF0aW9uLgoJKGZyZWVfcHJvZmlsZWRfdmFsdWVzKTogTmV3IGRlY2xhcmF0aW9uLgoJKHZhbHVlX3Byb2ZpbGVfdHJhbnNmb3JtYXRpb25zKTogTmV3IGRlY2xhcmF0aW9uLgoJKHN0cnVjdCBwcm9maWxlX2hvb2tzKTogTmV3IGRlY2xhcmF0aW9uLgoJKGluaXRfYnJhbmNoX3Byb2IpOiBEZWNsYXJhdGlvbiBtb3ZlZCBmcm9tIHJ0bC5oLgoJKGJyYW5jaF9wcm9iKTogRGVjbGFyYXRpb24gbW92ZWQgZnJvbSBydGwuaC4KCShlbmRfYnJhbmNoX3Byb2IpOiBEZWNsYXJhdGlvbiBtb292ZWQgZnJvbSBydGwuaC4KCSh0cmVlX3JlZ2lzdGVyX3Byb2ZpbGVfaG9va3MpOiBOZXcgZGVjbGFyYXRpb24uCgkocnRsX3JlZ2lzdGVyX3Byb2ZpbGVfaG9va3MpOiBOZXcgZGVjbGFyYXRpb24uCgkodHJlZV9wcm9maWxlX2hvb2tzKTogTmV3IGRlY2xhcmF0aW9uLgoJKHJ0bF9wcm9maWxlX2hvb2tzKTogTmV3IGRlY2xhcmF0aW9uLgoJKiB2YXJhc20uYzogSW5jbHVkZSB0cmVlLW11ZGZsYXAuaC4KCShUUkFNUE9MSU5FX0FMSUdOTUVOVCk6IFJlbW92ZS4KCShtYWtlX2RlY2xfcnRsKTogQ2FsbCBtdWRmbGFwX2VucXVldWVfZGVjbC4KCShhc3NlbWJsZV9zdGF0aWNfc3BhY2UpOgoJKGFzc2VtYmxlX3RyYW1wb2xpbmVfdGVtcGxhdGUpOiBTZXQgYW5kIHJldHVybgoJVFJBTVBPTElORV9BTElHTk1FTlQuCgkqIHZhcnJheS5jIChlbGVtZW50KTogQWRkIEdFTkVSSUNfUFRSX05PR0MgZW50cnkuCglBZGQgZW50cnkgZm9yICd0cmVlIConLgoJQWRkIGVudHJ5IGZvciBzdHJ1Y3QgZWRnZV9kZWYgKi4KCSh2YXJyYXlfY29weSk6IE5ldy4KCSogdmFycmF5LmggKGVudW0gdmFycmF5X2RhdGFfZW51bSk6IEFkZAoJVkFSUkFZX0RBVEFfR0VORVJJQ19OT0dDLCBWQVJSQVlfREFUQV9FREdFIGFuZAoJVkFSUkFZX0RBVEFfVFJFRV9QVFIuCgkodW5pb24gdmFycmF5X2RhdGFfdGFnKTogQ29ycmVzcG9uZGluZyBjaGFuZ2VzLgoJKFZBUlJBWV9HRU5FUklDX1BUUl9OT0dDX0lOSVQsIFZBUlJBWV9FREdFX0lOSVQsCglWQVJSQVlfVFJFRV9QVFJfSU5JVCwgVkFSUkFZX0dFTkVSSUNfUFRSX05PR0MsCglWQVJSQVlfRURHRSwgVkFSUkFZX1RSRUVfUFRSLAoJVkFSUkFZX1BVU0hfR0VORVJJQ19QVFJfTk9HQywgVkFSUkFZX1BVU0hfRURHRSwKCVZBUlJBWV9QVVNIX1RSRUVfUFRSLCBWQVJSQVlfVE9QX0dFTkVSSUNfUFRSX05PR0MsCglWQVJSQVlfVE9QX0VER0UsIFZBUlJBWV9UT1BfVFJFRV9QVFIpOiBEZWZpbmUuCgoJKiBjb25maWcvKi8qOiBWYXJpb3VzIHVwZGF0ZXMgZm9yIGNoYW5nZWQgbWFjcm9zLCB0cmVlCgljb2RlcywgZXRjLiAgQ2hlY2sgQ2hhbmdlTG9nLnRyZWUtc3NhLgoKCSogZG9jL2NmZy50ZXhpOiBOZXcgZmlsZS4KCSogZG9jL3RyZWUtc3NhLnRleGk6IE5ldyBmaWxlLgoJKiBkb2MvYy10cmVlLnRleGk6IERvY3VtZW50IG5ldyBjb2Rlcy4KCSogZG9jL2djY2ludC50ZXhpOiBJbmNsdWRlIG5ldyBmaWxlcy4KCSogZG9jL2luc3RhbGwudGV4aTogRG9jdW1lbnQgbmV3IGZlYXR1cmVzLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IG5ldyBzd2l0Y2hlcy4KCSogZG9jL3Bhc3Nlcy50ZXhpOiBEb2N1bWVudCBuZXcgcGFzc2VzLgoJKiBkb2MvcnRsLnRleGk6IFVwZGF0ZSBjaGFuZ2VkIFJUTCBjb2Rlcy4KCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IFVwZGF0ZSBidWlsZCBpbnN0cnVjdGlvbnMuCgkqIGRvYy9zdGFuZGFyZHMudGV4aTogRG9jdW1lbnQgRm9ydHJhbiBjaGFuZ2VzLgoJKiBkb2MvdG0udGV4aTogVXBkYXRlLgoKMjAwNC0wNS0xMiAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglSZXBsYWNlIHNldmVyYWwgYXJyYXlzIHdpdGggYSBzdHJ1Y3Qgb2YgYXJyYXlzLgoJKiBjb21iaW5lLmMgKHN0cnVjdCByZWdfc3RhdCk6IE5ldy4KCShpbml0X3JlZ19sYXN0X2FycmF5cyk6IFJlbmFtZWQgdG8uLi4KCShpbml0X3JlZ19sYXN0KTogLi4udGhpcy4gIENhbGxlcnMgYWRqdXN0ZWQuCgkocmVnX3N0YXQpOiBOZXcuCgkoY29tYmluZV9pbnN0cnVjdGlvbnMpOiBBbGxvY2F0ZSBpdCBhbmQgdXNlIGl0LgoJKHJlZ19sYXN0X2RlYXRoLCByZWdfbGFzdF9zZXQsIHJlZ19sYXN0X3NldF92YWx1ZSwKCXJlZ19sYXN0X3NldF9sYWJlbCwgcmVnX2xhc3Rfc2V0X3RhYmxlX3RpY2ssCglyZWdfbGFzdF9zZXRfaW52YWxpZCwgcmVnX25vbnplcm9fYml0cywgcmVnX3NpZ25fYml0X2NvcGllcywKCXJlZ19sYXN0X3NldF9tb2RlLCByZWdfbGFzdF9zZXRfbm9uemVyb19iaXRzLAoJcmVnX2xhc3Rfc2V0X3NpZ25fYml0X2NvcGllcyk6IFJlcGxhY2UgdGhyb3VnaG91dAoJd2l0aCBpdGVtcyBvZiByZWdfc3RhdC4KCjIwMDQtMDUtMTEgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIG9wdGltaXphdGlvbi8xNTEwMAoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBEb24ndCBjcmVhdGUgYSBkYW5nbGluZwoJUkVHX0xJQkNBTEwvUkVHX1JFVFZBTCBub3RlLgoKMjAwNC0wNS0xMSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKHNwZV9ldm5lZyk6IFJlbmFtZSB0byBuZWd2MnNpMi4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGJkZXNjXzFhcmcpOiBDaGFuZ2Ugc3BlX2V2bmVnIHRvCgluZWd2MnNpMi4KCjIwMDQtMDUtMTEgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGRvYy9tZC50ZXhpIChTdGFuZGFyZCBOYW1lcyk6IEZpeCB0eXBvIGluIHZlY19pbml0IGRlc2NyaXB0aW9uLgoKMjAwNC0wNS0xMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2MvZ3R5LnRleGkgKEdUWSBPcHRpb25zKTogQ2xhcmlmeSBleGFtcGxlLgoKMjAwNC0wNS0xMSAgRmFyaWJvcnogSmFoYW5pYW4gIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2hhbmRsZV9hbHRpdmVjX2F0dHJpYnV0ZSk6CglBZGQgY29uc3QgcXVhbGlmaWVyIHRvIGFsdGl2ZWMgdmVjdG9yIHR5cGUgaWYgb25lIGlzIG5lZWRlZC4KCjIwMDQtMDUtMTEgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmbGFncy5oIChmbGFnX3Nob3J0X2VudW1zKTogVXBkYXRlIGNvbW1lbnQuCgkqIG9wdHMuYyAoZGVjb2RlX29wdGlvbnMpOiBTZXQgZmxhZ19zaG9ydF9lbnVtcyB0byAyLgoJKiB0b3BsZXYuYyAoZmxhZ19zaG9ydF9lbnVtcyk6IFVwZGF0ZSBjb21tZW50LgoJKHByb2Nlc3Nfb3B0aW9ucyk6IENhbGwgZGVmYXVsdF9zaG9ydF9lbnVtcyB0YXJnZXQgaG9vay4KCjIwMDQtMDUtMTEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8xNDA2MwoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsdGl2ZWNfZHNzYWxsKToKCUNoYW5nZSB0byB1bnNwZWNfdm9sYXRpbGUuCgkoYWx0aXZlY19kc3MpOiBMaWtld2lzZS4KCjIwMDQtMDUtMTAgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoIm9uZV9jbXBsdjE2cWkyIik6IENoYW5nZSB2bm90IHRvCgl2bm9yLgoJKCJvbmVfY21wbHY4aGkyIik6IFNhbWUuCgkoIm9uZV9jbXBsdjRzaTIiKTogU2FtZS4KCjIwMDQtMDUtMTAgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8xNTEzMAoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmggKHNoX2V4cGFuZF9lcGlsb2d1ZSk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGNvbmZpZy9zaC9zaC5jIChvdXRwdXRfc3RhY2tfYWRqdXN0KTogVGFrZSB0aGUgc2liY2FsbCBlcGlsb2d1ZQoJaW50byBhY2NvdW50LiAgQ29tcHV0ZSB0aGUgY29ycmVjdCBudW1iZXIgb2YgZ2VuZXJhbCByZWdpc3RlcnMKCWZvciB0aGUgcmV0dXJuIHZhbHVlLiAgR2VuZXJhdGUgYSBzcGVjaWFsIHB1c2gvcG9wIHNlcXVlbmNlIHdoZW4KCWZhaWxpbmcgdG8gZ2V0IGEgdGVtcG9yYXJ5IHJlZ2lzdGVyIGZvciBub24gU0htZWRpYSBlcGlsb2d1ZS4KCShzaF9leHBhbmRfZXBpbG9ndWUpOiBBZGQgYW4gYXJndW1lbnQgdG8gc2hvdyB3aGV0aGVyIGl0J3MgZm9yCglzaWJjYWxsIG9yIG5vdC4gIFNldCB0aGUgM3JkIGFyZ3VtZW50IG9mIG91dHB1dF9zdGFja19hZGp1c3QgdG8KCS0xIGlmIG5lZWRlZC4KCShzaF9uZWVkX2VwaWxvZ3VlKTogQ2FsbCBzaF9leHBhbmRfZXBpbG9ndWUgd2l0aCAwLgoJKiBjb25maWcvc2gvc2gubWQgKHNpYmNhbGxfZXBpbG9ndWUpOiBDYWxsIHNoX2V4cGFuZF9lcGlsb2d1ZQoJd2l0aCAxLgoJKGVwaWxvZ3VlKTogQ2FsbCBzaF9leHBhbmRfZXBpbG9ndWUgd2l0aCAwLgoKMjAwNC0wNS0xMCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBnY3NlLmMgKGVsaW1pbmF0ZV9wYXJ0aWFsbHlfcmVkdW5kYW50X2xvYWRzKTogSW5zdGVhZCBvZiByZXR1cm5pbmcgZWFybHksCglnb3RvIGEgY2xlYW51cCBsYWJlbC4gIEFmdGVyIHRoZSBjbGVhbnVwLCBmcmVlIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LgoKMjAwNC0wNS0xMCAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLmggKHZlY19zbGQpOiBBZGQgb3ZlcmxvYWRzIGZvcgoJYXJndW1lbnQvcmV0dXJuIHR5cGVzIG9mICd2ZWN0b3IgYm9vbCBpbnQnLCAndmVjdG9yIGJvb2wgc2hvcnQnCglhbmQgJ3ZlY3RvciBib29sIGNoYXInLgoKMjAwNC0wNS0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChzdG9yZV9wYXJtX2RlY2xzX25ld3N0eWxlKTogQ29ycmVjdCB0ZXN0IGZvciBhCgluZXN0ZWQgZnVuY3Rpb24uCgoyMDA0LTA1LTEwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiByZWFkLXJ0bC5jIChyZWFkX3J0eCk6IEFsbG93ICdzJyBhbmQgJ1QnIHN0cmluZ3MgdG8gYmUgb21pdHRlZCwKCXRyZWF0aW5nIG1pc3Npbmcgb25lcyBhcyAiIi4KCSogY29uZmlnL21pcHMvbWlwcy5tZDogUmVtb3ZlIGNvbnN0cmFpbnRzIGZyb20gbWF0Y2hfb3BlcmFuZHMgYW5kCgltYXRjaF9zY3JhdGNoZXMgaWYgdGhleSBhcHBlYXIgaW4gZGVmaW5lX2V4cGFuZHMgKGV4Y2VwdCByZWxvYWQqKSwKCWRlZmluZV9wZWVwaG9sZTJzLCBkZWZpbmVfc3BsaXRzIG9yIGF0dHJpYnV0ZSBzcGVjaWZpY2F0aW9ucy4KCSogY29uZmlnL21pcHMvNzAwMC5tZCwgY29uZmlnL21pcHMvc2IxLm1kOiBSZW1vdmUgbWF0Y2hfb3BlcmFuZAoJY29uc3RyYWludCBzdHJpbmdzLgoKMjAwNC0wNS0xMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGZ1bmN0aW9uX2FyZ19ib3VuZGFyeSk6IEFsd2F5cyBhbGlnbgoJQWx0aVZlYyB2ZWN0b3JzLgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogUGFzcyBUQVJHRVRfMzJCSVQgLW1hYmk9bm8tYWx0aXZlYyBBbHRpVmVjCgl2ZWN0b3JzIGJ5IHJlZmVyZXJlbmNlLiAgQWxpZ24gdGhlIHNhbWUgZm9yIFRBUkdFVF82NEJJVCB0byBhIDE2CglieXRlIGJvdW5kYXJ5LiAgUmVtb3ZlIHVzZWxlc3MgY29kZS4gIEFkZCBmdW5jdGlvbiBjb21tZW50LgoJKGZ1bmN0aW9uX2FyZyk6IFNpbWlsYXJseS4gIE1vdmUgZ3ByIHJzNjAwMF9taXhlZF9mdW5jdGlvbl9hcmcKCWNhbGwgdG8gd2hlcmUgaXQgYmVsb25ncy4KCShmdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncyk6IFJldHVybiB0cnVlIGZvciBhbGwgVEFSR0VUXzMyQklUCgktbWFiaT1uby1hbHRpdmVjIEFsdGlWZWMgdmVjdG9ycy4gIEZpeCBkZWJ1ZyBvdXRwdXQuCgkocnM2MDAwX3ZhX2FyZyk6IEFkanVzdCBmb3IgQWx0aVZlYyBjaGFuZ2UuCgoyMDA0LTA1LTEwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3Byb21vdGVfcHJvdG90eXBlcyk6IFVzZSBUQVJHRVRfQUFQQ1NfQkFTRUQuCgkqIGNvbmZpZy9hcm0vYXJtLmggKFRBUkdFVF9BQVBDU19CQVNFRCk6IERlZmluZS4KCShUQVJHRVRfRE9VQkxFV09SRF9BTElHTik6IFVzZSBpdC4KCShXQ0hBUl9UWVBFKTogRGVmaW5lLgoJKFdDSEFSX1NJWkVfVFlQRSk6IERlZmluZS4KCShTSVpFX1RZUEUpOiBEZWZpbmUuCgoyMDA0LTA1LTEwICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZnVuY3Rpb25fYXJnX2JvdW5kYXJ5KTogQWxpZ24gZm9yIEFCSV9WNAoJd2hlbiBzaXplIGlzIDggYnl0ZXMuCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBBY2NvdW50IGZvciBzdGFjayBzcGFjZSB1c2VkIGJ5IEFsdGlWZWMKCWFyZ3Mgd2hlbiAtbWFiaT1hbHRpdmVjLiAgU2ltcGxpZnkgYWxpZ25tZW50IGNhbGN1bGF0aW9ucy4gIEZvcgoJQUJJX1Y0LCBwYXNzIEFsdGlWZWMgdmVjdG9ycyBieSByZWZlcmVuY2Ugd2hlbiAtbWFiaT1uby1hbHRpdmVjLgoJKGZ1bmN0aW9uX2FyZyk6IFNpbWlsYXJseS4KCShmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBUcnVlIGZvciBBQklfVjQgQWx0aVZlYyB3aGVuCglub3QgQWx0aVZlYyBBQkkuCgkocnM2MDAwX3ZhX2FyZyk6IENvcnJlY3QgZnAgYXJnIHRlc3QuICBBZGp1c3QgZm9yIEFsdGlWZWMgY2hhbmdlLgoJQ29ycmVjdCBhbGlnbm1lbnQsIGFuZCBhbGlnbiBiZWZvcmUgdGVzdGluZyByZWcgY291bnQuICBSZW1vdmUKCVRSRUVfVEhJU19WT0xBVElMRSBmcm9tIHJlZy4gIERvbid0IGVtaXQgdW51c2VkIGxhYmVscy4KCShyczYwMDBfY29tcGxleF9mdW5jdGlvbl92YWx1ZSk6IENoZWNrIFRBUkdFVF9IQVJEX0ZMT0FUIGFuZAoJVEFSR0VUX0ZQUlMgaGVyZS4uCgkocnM2MDAwX2Z1bmN0aW9uX3ZhbHVlKTogLi4gbm90IGhlcmUgYmVmb3JlIGNhbGwuCgoyMDA0LTA1LTA5ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAoInRzdHNmbHRfZ3ByIik6IEZpeCB0eXBvIGluIHVuc3BlYy4KCjIwMDQtMDUtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgMTUwMDcKCSogYy1kZWNsLmMgKGN1cnJlbnRfZmlsZV9kZWNsKTogUmVuYW1lIHRvIGFsbF90cmFuc2xhdGlvbl91bml0cywKCWFkanVzdCBjb21tZW50LgoJKHBvcF9zY29wZSk6IElmIHBvcHBpbmcgZmlsZV9zY29wZSwgY29uc3RydWN0IGEKCVRSQU5TTEFUSU9OX1VOSVRfREVDTCBhbmQgbWFrZSBpdCB0aGUgY29udGV4dCBvZiBhbGwgdGhlCglzeW1ib2xzIGluIHRoZSBzY29wZS4KCShwdXNoX2ZpbGVfc2NvcGUpOiBEb24ndCBjb25zdHJ1Y3QgYSBUUkFOU0xBVElPTl9VTklUX0RFQ0wgaGVyZS4KCShwdXNoZGVjbCk6IENsYXJpZnkgY29tbWVudC4gIERvIG5vdCBzZXQgREVDTF9DT05URVhUIG9mCglhbnl0aGluZyB0byBjdXJyZW50X2ZpbGVfZGVjbC4KCShwdXNoZGVjbF90b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShzdG9yZV9wYXJtX2RlY2xzX25ld3N0eWxlKTogQWRqdXN0IGNoZWNrIGZvciBuZXN0ZWQgZnVuY3Rpb24uCgkoY193cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zKTogVXBkYXRlIGZvciByZW5hbWVkIHZhcmlhYmxlLgoKMjAwNC0wNS0wOSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmgKCShyczYwMDBfY29uZGl0aW9uYWxfcmVnaXN0ZXJfdXNhZ2UpOiBQcm90b2l6ZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9jb25kaXRpb25hbF9yZWdpc3Rlcl91c2FnZSk6IE5ldy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogQ2FsbAoJZnVuY3Rpb24uCgoyMDA0LTA1LTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9kaXZfY29tcGFyZSk6IE5ldyBmdW5jdGlvbiB0byBvcHRpbWl6ZSBYL0MxIG9wIEMyCgl3aGVyZSBvcCBpcyBhIGNvbXBhcmlzb24gb3BlcmF0b3IgYW5kIEMxIGFuZCBDMiBhcmUgaW50ZWdlciBjb25zdGFudHMKCWludG8gYSByYW5nZSBjaGVjay4KCShmb2xkKTogQ2FsbCBmb2xkX2Rpdl9jb21wYXJlLgoKMjAwNC0wNS0wOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKHNwYXJjLXN1bi1zb2xhcmlzMiopOiBEb2N1bWVudCBib290c3RyYXAKCXByb2JsZW1zIHdpdGggZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgR05VIGNvbXBpbGVyLgoKMjAwNC0wNS0wNyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKHJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2tfcCk6CglEZWNsYXJlLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9va19wKTogTmV3LgoJKHJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2spOiBOZXcuCgkocnM2MDAwX2luaXRfaGFyZF9yZWdub19tb2RlX29rKTogTmV3LgoJKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogQ2FsbCByczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2suCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChIQVJEX1JFR05PX05SRUdTKTogVXNlIHByZWNvbXB1dGVkCglyZXN1bHQuCgoyMDA0LTA1LTA3ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMuaCAodmVjdG9yLCBwaXhlbCwgYm9vbCk6IERvIG5vdAoJZGVmaW5lIGFzIG1hY3JvcyAjaWZkZWYgX19BUFBMRV9BTFRJVkVDX18uCgoyMDA0LTA1LTA3ICBGYXJpYm9yeiBKYWhhbmlhbiAgPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbWl4ZWRfZnVuY3Rpb25fYXJnKToKCUdlbmVyYXRlIGFwcHJvcHJpYXRlIHBhcmFsbGVscyBmb3IgdmVjdG9yIGFyZ3VtZW50cwoJcGFzc2VkIHRvIHZhcmFyZyBmdW5jdGlvbnMuIChmdW5jdGlvbl9hcmcpOiBtYWtlIHRoZSBjYWxsCgl0byByczYwMDBfbWl4ZWRfZnVuY3Rpb25fYXJnIGZvciB2ZWN0b3IgYXJncyBhcyBuZWVkZWQuCgoyMDA0LTA1LTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfdmFfYXJnKTogRml4IGNhbGN1bGF0aW9uIG9mIG9zaXplIGZvcgoJRUFCSV9GTE9BVF9WQVJBUkdTX1AuCgoyMDA0LTA1LTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKElTQV9IQVNfQlJBTkNITElLRUxZKTogUmVtb3ZlIFRBUkdFVF9NSVBTNTUwMC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChvdmVycmlkZV9vcHRpb25zKTogRGlzYWJsZSBicmFuY2ggbGlrZWx5CglpbnN0cnVjdGlvbnMgaWYgVFVORV9NSVBTNTUwMC4KCjIwMDQtMDUtMDcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IEFsbG93IHRoZSBoaSBhbmQgbG8gcmVnaXN0ZXJzCgl0byBzdG9yZSBhbnkgaW50ZWdyYWwgbW9kZSwgbm90IGp1c3QgTU9ERV9JTlRzLgoKMjAwNC0wNS0wNyAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9wcm9tb3RlX3Byb3RvdHlwZXMpOiBVc2UgVEFSR0VUX0FBUENTX0JBU0VELgoJKiBjb25maWcvYXJtL2FybS5oIChUQVJHRVRfQUFQQ1NfQkFTRUQpOiBEZWZpbmUuCgkoVEFSR0VUX0RPVUJMRVdPUkRfQUxJR04pOiBVc2UgaXQuCgkoV0NIQVJfVFlQRSk6IERlZmluZS4KCShXQ0hBUl9TSVpFX1RZUEUpOiBEZWZpbmUuCgkoU0laRV9UWVBFKTogRGVmaW5lLgoKMjAwNC0wNS0wNyAgVXJvcyBCaXpqYWsgIDx1cm9zQGtzcy1sb2thLnNpPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2VtaXRfZnBfdW5vcmRlcmVkX2p1bXApOiBVc2UKCXRlc3RiICQ0LCAlYWggaW5zbiBpbnN0ZWFkIG9mIHNhaGYgaW5zbiBpZiAhVEFSR0VUX1VTRV9TQUhGLgoKMjAwNC0wNS0wNyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBsb29wLWRvbG9vcC5jIChkb2xvb3BfdmFsaWRfcCk6IE1ha2Ugc3VyZSB0aGF0IGJvZHkKCWdldHMgZnJlZWQuCgoyMDA0LTA1LTA3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMtcHJvdG9zLmggKHNwYXJjX3NraXBfY2FsbGVyX3VuaW1wKTogTmV3CglkZWNsYXJhdGlvbi4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKFNLSVBfQ0FMTEVSU19VTklNUF9QKTogRGVsZXRlLgoJKHNwYXJjX3NraXBfY2FsbGVyX3VuaW1wKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShzcGFyY19mdW5jdGlvbl9lcGlsb2d1ZSk6IFNldCAnc3BhcmNfc2tpcF9jYWxsZXJfdW5pbXAnLgoJVXNlIGl0IGluc3RlYWQgb2YgU0tJUF9DQUxMRVJTX1VOSU1QX1AuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoY2FsbCBleHBhbmRlcik6IEFkZCBzYW5pdHkgY2hlY2suCgkoY2FsbF9hZGRyZXNzX3N0cnVjdF92YWx1ZV9zcDMyKTogUmUtc3luYyB3aXRoIGV4cGFuZGVyLgoJKGNhbGxfc3ltYm9saWNfc3RydWN0X3ZhbHVlX3NwMzIpOiBMaWtld2lzZS4KCShyZXR1cm4gcGVlcGhvbGVzKTogVXNlICdzcGFyY19za2lwX2NhbGxlcl91bmltcCcgaW5zdGVhZAoJb2YgY3VzdG9tIHByZWRpY2F0ZS4KCjIwMDQtMDUtMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgYysrLzE0OTYyCgkqIGMtcHJhZ21hLmMgKGhhbmRsZV9wcmFnbWFfcmVkZWZpbmVfZXh0bmFtZSk6IE9ubHkgY2hhbmdlCgl0aGUgYXNzZW1ibGVyIG5hbWUgb2YgRlVOQ1RJT05fREVDTHMgYW5kIFZBUl9ERUNMcy4KCjIwMDQtMDUtMDcgIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIG9wdGFicy5oIChlbnVtIG9wdGFiX2luZGV4KTogQWRkIG5ldyBPVElfbG9nMXAuCgkobG9nMXBfb3B0YWIpOiBEZWZpbmUgY29ycmVzcG9uZGluZyBtYWNyby4KCSogb3B0YWJzLmMgKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSBsb2cxcF9vcHRhYi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEltcGxlbWVudCBsb2cxcF9vcHRhYiB1c2luZyBsb2cxcD9mMgoJcGF0dGVybnMuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6IEhhbmRsZSBCVUlMVF9JTl9MT0cxUHssRixMfQoJdXNpbmcgbG9nMXBfb3B0YWIuCgkoZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgQlVJTFRfSU5fTE9HMVB7LEYsTH0gdXNpbmcKCWV4cGFuZF9idWlsdGluX21hdGhmbiBpZiBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgaXMgc2V0LgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogSGFuZGxlIFVOU1BFQ19GWUwyWFAxLgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2VtaXRfaTM4N19sb2cxcCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9lbWl0X2kzODdfbG9nMXApOgoJUHJvdG90eXBlIGhlcmUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKFVOU1BFQ19GWUwyWFAxKTogTmV3IHVuc3BlYyB0byByZXByZXNlbnQKCXg4NydzIGZ5bDJ4cDEgaW5zdHJ1Y3Rpb24uCgkoKmZ5bDJ4X3hmMyk6IFJlbmFtZSBpbnNuIGRlZmluaXRpb24gdG8gZnlsMnhfeGYzLgoJKGZ5bDJ4cDFfeGYzKTogTmV3IHBhdHRlcm4gdG8gaW1wbGVtZW50IGZ5bDJ4cDEgeDg3IGluc3RydWN0aW9uLgoJKGxvZzFwc2YyLCBsb2cxcGRmMiwgbG9nMXB4ZjIpOiBOZXcgZXhwYW5kZXJzIHRvIGltcGxlbWVudCBsb2cxcGYsCglsb2cxcCAgYW5kIGxvZzFwbCBidWlsdC1pbnMgYXMgaW5saW5lIHg4NyBpbnRyaW5zaWNzLgoKMjAwNC0wNS0wNyAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIGNvbmZpZy9hbHBoYS9mcmVlYnNkLmggKFNVQlRBUkdFVF9FWFRSQV9TUEVDUyk6IFByb3BlciByZWRlZmluaXRpb24uCgkqIGNvbmZpZy9hcm0vZnJlZWJzZC5oOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvZnJlZWJzZC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL2ZyZWVic2QuaDogTGlrZXdpc2UuCgoyMDA0LTA1LTA3ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTUyOTYKCSogcmVvcmcuYyAoZmlsbF9zaW1wbGVfZGVsYXlfc2xvdHMpOiBVc2UgbmV4dF9yZWFsX2luc24gd2hlbgoJZ2V0dGluZyBsYXN0IGNvbnNlY3V0aXZlIGxhYmVsIGF0IGEgYnJhbmNoLgoJKHJlbGF4X2RlbGF5X3Nsb3RzKTogU2ltaWxhciwgbmVhciB0b3Agb2YgbG9vcC4KCjIwMDQtMDUtMDYgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzE1MjAyCgkqIHBhLm1kIChtb3ZkaSwgbW92c2ksIG1vdmhpLCBtb3ZxaSk6IFN1cHBvcnQgbW92ZSBmcm9tIHNoaWZ0IGFtb3VudAoJcmVnaXN0ZXIgdG8gZ2VuZXJhbCByZWdpc3Rlci4KCjIwMDQtMDUtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChTVEFDS19CT1VOREFSWSk6IFVzZSAxMjggYml0IGZvciBlaXRoZXIKCVRBUkdFVF9BTFRJVkVDIG9yIFRBUkdFVF9BTFRJVkVDX0FCSS4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChBQklfU1RBQ0tfQk9VTkRBUlkpOiBMaWtld2lzZS4KCShTVEFDS19CT1VOREFSWSk6IERlbGV0ZS4KCjIwMDQtMDUtMDYgIFN0dWFydCBIYXN0aW5ncyAgPHN0dWFydEBhcHBsZS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IFJlc3RvcmUgLWZnY3NlLWFmdGVyLXJlbG9hZCBkb2MgZnJvbSAxLjQyMSwKCW1pc3Rha2VubHkgY2xvYmJlcmVkIGJ5IDEuNDIzLgoKMjAwNC0wNS0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbXZyNDEzMC1hbGlnbi4KCSogY29uZmlnL21pcHMvbWlwcy5oIChNQVNLX1ZSNDEzMF9BTElHTiwgVEFSR0VUX1ZSNDEzMF9BTElHTikKCShUVU5FX01JUFM0MTIwLCBUVU5FX01JUFM0MTMwKTogTmV3IG1hY3Jvcy4KCShUVU5FX01BQ0NfQ0hBSU5TKTogSW5jbHVkZSBUVU5FX01JUFM0MTIwIGFuZCBUVU5FX01JUFM0MTMwLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbXZyNDEzMC1hbGlnbiBhbmQgLW1uby12cjQxMzAtYWxpZ24uCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IEluY2x1ZGUgc2NoZWQtaW50LmguCgkoVVNFRlVMX0lOU05fUCwgU0VRX0JFR0lOLCBTRVFfRU5ELCBGT1JfRUFDSF9TVUJJTlNOKTogTmV3IG1hY3Jvcy4KCShtaXBzX3J0eF9jb3N0cyk6IFNldCBpbnRlZ2VyIG11bHRpcGxpY2F0aW9uIGNvc3RzIGZvciBUVU5FX01JUFM0MTMwLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBFbmFibGUgLW12cjQxMzAtYWxpZ24gYXQgLU8zIGFuZCBhYm92ZS4KCShtaXBzX3NpbV9pbnNuKTogTmV3IHZhcmlhYmxlLgoJKG1pcHNfc2ltKTogTmV3IHN0cnVjdHVyZS4KCShtaXBzX3NpbV9yZXNldCwgbWlwc19zaW1faW5pdCwgbWlwc19zaW1fbmV4dF9jeWNsZSwgbWlwc19zaW1fd2FpdF9yZWcpCgkobWlwc19zaW1fd2FpdF9yZWdzXzIsIG1pcHNfc2ltX3dhaXRfcmVnc18xLCBtaXBzX3NpbV93YWl0X3JlZ3MpCgkobWlwc19zaW1fd2FpdF91bml0cywgbWlwc19zaW1fd2FpdF9pbnNuLCBtaXBzX3NpbV9yZWNvcmRfc2V0KQoJKG1pcHNfc2ltX2lzc3VlX2luc24sIG1pcHNfc2ltX2lzc3VlX25vcCwgbWlwc19zaW1fZmluaXNoX2luc24pCgkodnI0MTMwX2F2b2lkX2JyYW5jaF9ydF9jb25mbGljdCwgdnI0MTMwX2FsaWduX2luc25zKTogTmV3IGZ1bmN0aW9ucy4KCShtaXBzX3Jlb3JnKTogQ2FsbCB2cjQxMzBfYWxpZ25faW5zbnMuCgkodnI0MTMwX2xhc3RfaW5zbik6IE5ldyB2YXJpYWJsZS4KCSh2cjQxMzBfdHJ1ZV9yZWdfZGVwZW5kZW5jZV9wXzEsIHZyNDEzMF90cnVlX3JlZ19kZXBlbmRlbmNlX3ApCgkodnI0MTMwX3N3YXBfaW5zbnNfcCwgdnI0MTMwX3Jlb3JkZXIpOiBOZXcgZnVuY3Rpb25zLgoJKG1pcHNfc2NoZWRfcmVvcmRlciwgbWlwc192YXJpYWJsZV9pc3N1ZSk6IEhvb2sgaW4gdnI0MTMwIGNvZGUuCgkobWlwc19pc3N1ZV9yYXRlKTogUmV0dXJuIDIgZm9yIFBST0NFU1NPUl9SNDEzMC4KCShtaXBzX3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlKTogUmV0dXJuIHRydWUgZm9yIHRoZSBzYW1lLgoJKiBjb25maWcvbWlwcy80MTMwLm1kOiBOZXcgZmlsZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZDogSW5jbHVkZSBpdC4gIEFkZCBhIHBlZXBob2xlMiB0byBjb252ZXJ0CgkibXVsdDttZmxvIiBpbnRvICJtdGxvO21hY2MiLgoJKCptYWNjLCAqdW11bF9hY2NfZGksICpzbXVsX2FjY19kaSk6IFVzZSAkMSByYXRoZXIgdGhhbiAkMCBhcyB0aGUKCXRhcmdldCBvZiBtYWNjcy4KCSgqbXNhY191c2luZ19tYWNjKTogTmV3IHBhdHRlcm4uCgoyMDA0LTA1LTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy81NTAwLm1kIChpcl92cjU1X3N0b3JlKTogU2V0IGxhdGVuY3kgdG8gMC4KCShpcl92cjU1X2hpbG8pOiBTcGxpdCBpbnRvLi4uCgkoaXJfdnI1NV9tZmhpbG8sIGlyX3ZyNTVfbXRoaWxvKTogLi4udGhlc2UgbmV3IHJlc2VydmF0aW9ucy4KCShpcl92cjU1X2ltdWxfc2ksIGlyX3ZyNTVfaW1hZGQpOiBDaGFuZ2UgbGF0ZW5jeSB0byA1LgoJKGlyX3ZyNTVfaW11bF9kaSk6IENoYW5nZSBsYXRlbmN5IHRvIDkuICBSZXNlcnZlIHZyNTVfbWFjIGZvciA0IGN5Y2xlcy4KCUFkZCB2YXJpb3VzIG11bHRpcGxpY2F0aW9uIGJ5cGFzc2VzLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcnR4X2Nvc3RzKTogQWRqdXN0IFZSNTUwMCBjb3N0cyBmb3IgaW50ZWdlcgoJbXVsdGlwbGljYXRpb24uCgoyMDA0LTA1LTA2ICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqZnNjYWxleGY0KTogQ29ycmVjdCBpbnNuICJtb2RlIgoJYXR0cmlidXRlIHRvICJYRiIuCgoyMDA0LTA1LTA1ICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX2Ztb2QgYW5kIE9USV9kcmVtLgoJKGZtb2Rfb3B0YWIsIGRyZW1fb3B0YWIpOiBEZWZpbmUgY29ycmVzcG9uZGluZyBtYWNyb3MuCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgZm1vZF9vcHRhYiBhbmQgZHJlbV9vcHRhYi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEltcGxlbWVudCBmbW9kX29wdGFiIGFuZCBkcmVtX29wdGFiCgl1c2luZyBmbW9kP2YzIGFuZCBkcmVtP2YzIHBhdHRlcm5zLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tYXRoZm5fMik6IEhhbmRsZSBCVUlMVF9JTl9GTU9EeyxGLEx9Cgl1c2luZyBmbW9kX29wdGFiIGFuZCBCVUlMVF9JTl9EUkVNeyxGLEx9IHVzaW5nIGRyZW1fb3B0YWIuCgkoZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgQlVJTFRfSU5fRk1PRHssRixMfSBhbmQKCUJVSUxUX0lOX0RSRU17LEYsTH0gdXNpbmcgZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzIgaWYKCWZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucyBpcyBzZXQuCgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVnc19wYXQpOiBIYW5kbGUgVU5TUEVDX0ZQUkVNX0YsCglVTlNQRUNfRlBSRU1fVSwgVU5TUEVDX0ZQUkVNMV9GIGFuZCBVTlNQRUNfRlBSRU0xX1UuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZW1pdF9mcF91bm9yZGVyZWRfanVtcCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9lbWl0X2ZwX3Vub3JkZXJlZF9qdW1wKToKCVByb3RvdHlwZSBoZXJlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChVTlNQRUNfRlBSRU1fRiwgVU5TUEVDX0ZQUkVNX1UsCglVTlNQRUNfRlBSRU0xX0YsIFVOU1BFQ19GUFJFTTFfVSk6IE5ldyB1bnNwZWNzIHRvIHJlcHJlc2VudCB4ODcncwoJZnByZW0gYW5kIGZwcmVtMSBpbnN0cnVjdGlvbnMuCgkoKng4Nl9mbnN0c3dfMSk6IENoYW5nZSBpbnB1dCBwYXJhbWV0ZXIgdG8gKHJlZzpDQ0ZQIDE4KS4KCVJlbmFtZSBpbnNuIGRlZmluaXRpb24gdG8geDg2X2Zuc3Rzd18xLgoJKGZwcmVteGY0LCBmcHJlbTF4ZjQpOiBOZXcgcGF0dGVybnMgdG8gaW1wbGVtZW50IGZwcmVtIGFuZCBmcHJlbTEKCXg4NyBpbnN0cnVjdGlvbnMuCgkoZm1vZHNmMywgZm1vZGRmMywgZm1vZHhmMyk6IE5ldyBleHBhbmRlcnMgdG8gaW1wbGVtZW50IGZtb2RmLCBmbW9kCglhbmQgZm1vZGwgYnVpbHQtaW5zIGFzIGlubGluZSB4ODcgaW50cmluc2ljcy4KCShkcmVtc2YzLCBkcmVtZGYzLCBkcmVteGYzKTogTmV3IGV4cGFuZGVycyB0byBpbXBsZW1lbnQgZHJlbWYsIGRyZW0KCWFuZCBkcmVtbCBidWlsdC1pbnMgYXMgaW5saW5lIHg4NyBpbnRyaW5zaWNzLgoKMjAwNC0wNS0wNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiByZWxvYWQxLmMgKGluaGVyaXRfcGllY2VtZWFsX3ApOiBNYXJrIHBhcmFtZXRlcnMgcG90ZW50aWFsbHkgdW51c2VkLgoKMjAwNC0wNS0wNSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCglQUiBkcml2ZXIvOTgyMgoJKiBkb2MvaW52b2tlLnRleGkgKFNwZWMgRmlsZXMpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBvZiAlYy4KCjIwMDQtMDUtMDUgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBVcGRhdGUgdGhlIG1zdWIgZGVmaW5lX3NwbGl0IGZvciBuZXcgbWZsby9tZmhpCglyZXByZXNlbnRhdGlvbi4KCjIwMDQtMDUtMDYgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS1wcm90b3RzLmggKHZmcF9tZW1fb3BlcmFuZCk6IFJlbmFtZSAuLi4KCShhcm1fY29wcm9jX21lbV9vcGVyYW5kKTogLi4uIFRvIHRoaXMuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9sZWdpdGltYXRlX2FkZHJlc3NfcCk6IEFsbG93IGxkcmQgbW9kZXMuCgkoYXJtX2xlZ2l0aW1hdGVfaW5kZXhfcCk6IERpdHRvLgoJKHZmcF9tZW1fb3BlcmFuZCk6IFJlbmFtZSAuLi4KCShhcm1fY29wcm9jX21lbV9vcGVyYW5kKTogLi4uIFRvIHRoaXMuICBIYW5kbGUgd3JpdGViYWNrIG1vZGVzLgoJKHZmcF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogVXNlIGl0LgoJKG91dHB1dF9tb3ZlX2RvdWJsZSk6IFVzZSBkb3VibGV3b3JkIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zLgoJKGFybV9oYXJkX3JlZ25vX21vZGVfb2spOiBPbmx5IGFsbG93IGV2ZW4gcmVnIHBhaXJzIGZvciBsZHJkLgoJKiBjb25maWcvYXJtL2FybS5oIChUQVJHRVRfTERSRCk6IERlZmluZS4KCShFWFRSQV9DT05TVFJBSU5UX1NUUl9BUk0pOiBBZGQgJ1V5Jy4KCSogY29uZmlnL2FybS9hcm0ubWQgKGFybV9tb3ZkaSk6IEFsbG93IGFsbCB2YWxpZCBtZW1vcnkgb3BlcmFuZHMuCglOZXcgc3BsaXR0ZXIgZm9yIGludmFsaWQgZG91Ymxld29yZCBsb2Fkcy4KCSogY29uZmlnL2FybS9pd21teHQubWQgKGl3bW14dF9hcm1fbW92ZGkpOiBVc2UgVXkgY29uc3RyYWludC4KCSogY29uZmlnL2FybS92ZnAubWQgKGFybV9tb3ZkaV92ZnApOiBBbGxvdyBhbGwgdmFsaWQgbWVtb3J5IG9wZXJhbmRzLgoJKiBkb2MvbWQudGV4aTogRG9jdW1lbnQgVXkgY29uc3RyYWludC4KCjIwMDQtMDUtMDUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBvcHQvMTQ5ODAKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfcmVtb3ZlX3VucmVhY2hhYmxlX25vZGVzKTogRGVhbCBwcm9wZXJseSB3aXRoCglpbmxpbmUgY2xvbmVzLgoKMjAwNC0wNS0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIHRhcmdldC8xNTI5MAoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfc3BsaXRfdG9fcGFydHMpOiBVc2UgcmVhbF90b190YXJnZXQKCWluc3RlYWQgb2YgUkVBTF9WQUxVRV9UT19UQVJHRVRfTE9OR19ET1VCTEUuCgoyMDA0LTA1LTA1ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4tYy5jIChhZGRfZnJhbWV3b3JrKTogQ29weSB0aGUgZGlyZWN0b3J5IG5hbWUgYXMgaXQKCWNhbiBiZSBmcmVlZCBsYXRlci4gIEFsc28sIGVuc3VyZSB3ZSBhbHdheXMgYWxsb2NhdGUgZW5vdWdoIHJvb20KCWZvciB0aGUgY2FjaGVkIGZyYW1ld29yayBpbmZvcm1hdGlvbi4KCShmaW5kX3N1YmZyYW1ld29ya19oZWFkZXIpOiBLZWVwIHRyYWNrIG9mIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlCglzdWJmcmFtZXdvcmsgaGVhZGVyIHdhcyBmb3VuZC4KCShmcmFtZXdvcmtfY29uc3RydWN0X3BhdGhuYW1lKTogU3BlZWQgdXAgYnkgbm90IHRyeWluZyB0byByZS1hZGQgYQoJZnJhbWV3b3JrLgoJKiBjcHBmaWxlcy5jIChzZWFyY2hfcGF0aF9leGhhdXN0ZWQpOiBBcnJhbmdlIGZvciB0aGUgbWlzc2luZwoJaGVhZGVyIGNhbGxiYWNrIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGhlYWRlcgoJd2FzIGZvdW5kLgoJKGNwcF9nZXRfZGlyKTogQWRkLgoJKiBjcHBsaWIuaCAobWlzc2luZ19oZWFkZXJfY2IpOiBBZGQgYSBwYXJhbWV0ZXIuCgkoY3BwX2dldF9kaXIpOiBBZGQuCgoyMDA0LTA1LTAzICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoRGlyZWN0b3J5IE9wdGlvbnMpOiBEb2N1bWVudCAtaXF1b3RlLgoJKiBkb2MvY3BwLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvY3Bwb3B0cy50ZXhpOiBMaWtld2lzZS4KCSogYy1vcHRzLmMgKGNfY29tbW9uX21pc3NpbmdfYXJndW1lbnQpOiBBZGQgLWlxdW90ZSBwcm9jZXNzaW5nLgoJKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBMaWtld2lzZS4KCSogYy5vcHQgKGlxdW90ZSk6IEFkZC4KCSogZ2NjLmggKERFRkFVTFRfV09SRF9TV0lUQ0hfVEFLRVNfQVJHKTogQWRkIC1pcXVvdGUuCgkqIGMtaW5jcGF0aC5jIChtZXJnZV9pbmNsdWRlX2NoYWlucyk6IFVwZGF0ZSBjb21tZW50IHRvIHVzZSAtaXF1b3RlLgoKCSogYy1vcHRzLmMgKGNhc2UgT1BUX0kpOiBEZXByZWNhdGUgLUktIHN1cHBvcnQuCgkqIGRvYy9pbnZva2UudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9jcHAudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9jcHBvcHRzLnRleGk6IExpa2V3aXNlLgoKMjAwNC0wNS0wNSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogYmFzaWMtYmxvY2suaCAoZnJlZV9iYXNpY19ibG9ja192YXJzKTogVXBkYXRlIHByb3RvdHlwZS4KCSogZmxvdy5jIChmcmVlX2Jhc2ljX2Jsb2NrX3ZhcnMpOiBSZW1vdmUgdGhlIGtlZXBfaGVhZF9lbmRfcAoJYXJndW1lbnQuCgkobGlmZV9hbmFseXNpcyk6IFVwZGF0ZSBjYWxsLgoJKiBpZmN2dC5jIChpZl9jb252ZXJ0KTogTGlrZXdpc2UuCgkqIHNpYmNhbGwuYyAob3B0aW1pemVfc2libGluZ19hbmRfdGFpbF9yZWN1cnNpdmVfY2FsbCk6IExpa2V3aXNlLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfZmluYWwpOiBMaWtld2lzZS4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCgkqIGVtaXQtcnRsLmMgKG5leHRfcmVhbF9pbnNuKTogVXNlIElOU05fUC4KCShwcmV2X3JlYWxfaW5zbik6IExpa2V3aXNlLgoKMjAwNC0wNS0wNSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBVcGRhdGUgdGhlIG1hZGQgZGVmaW5lX3NwbGl0IGZvciBuZXcgbWZsby9tZmhpCglyZXByZXNlbnRhdGlvbi4KCjIwMDQtMDUtMDUgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChidWlsZF9vcGFxdWVfdmVjdG9yX3R5cGUpOgoJTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMF9pbml0X2J1aWx0aW5zKTogVXNlIGl0LgoKMjAwNC0wNS0wNCAgQmVybmFyZCBHaXJvdWQgIDxiZ2lyb3VkMkBmcmVlLmZyPgoKCSogdm1zZGJnb3V0LmMgKHZtc19mdW5jX25vZGUsIHZtc19mdW5jX3JlZik6IE5ldy4KCShmdW5jX3RhYmxlKTogQ2hhbmdlIHR5cGUgZnJvbSBjaGFyICoqIHRvIHZtc19mdW5jX3JlZi4KCSh3cml0ZV9ydG5iZWcpOiBVcGRhdGUgdG8gcmVmbGVjdCBmdW5jX3RhYmxlIGNoYW5nZS4gIFVzZQoJZmRlLT5mdW5jZGVmX251bWJlciBpbnN0ZWFkIG9mIHJ0bm51bSBpbiBvdXRwdXQuCgkod3JpdGVfcnRuZW5kLCB2bXhkYmdvdXRfYmVnaW5fZnVuY3Rpb24sIHZtc2RiZ291dF9pbml0KTogTGlrZXdpc2UuCgoyMDA0LTA1LTA0ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE0ODk5CgoJKiBjLWNvbW1vbi5jICh2ZWN0b3JfdHlwZXNfY29udmVydGlibGVfcCk6IE5ldyBmdW5jdGlvbi4KCSogYy10eXBlY2suYyAoY29tcHR5cGVzKTogUmVjdXJzZSBvbiB2ZWN0b3IgdHlwZXMuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IFVzZSB2ZWN0b3JfdHlwZXNfY29udmVydGlibGVfcC4KCShkaWdlc3RfaW5pdCk6IFVzZSB2ZWN0b3JfdHlwZXNfY29udmVydGlibGVfcCB0byBjaGVjawoJdmFsaWRuZXNzIG9mIGNvbnN0YW50IHZlY3RvciBpbml0aWFsaXplcnM7IG90aGVyd2lzZSB0cmVhdAoJdGhlbSBhcyBzY2FsYXJzLgoJKiB0cmVlLmMgKG1ha2Vfb3JfcmV1c2VfdHlwZSk6IE5ldy4KCShidWlsZF9jb21tb25fdHJlZV9ub2Rlcyk6IFVzZSBpdC4KCSogY3AvY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkqIGNwL3R5cGVjay5jIChjb21wdHlwZXMpOiBSZWN1cnNlIG9uIHZlY3RvciB0eXBlcy4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogVXNlIHZlY3Rvcl90eXBlc19jb252ZXJ0aWJsZV9wLgoKMjAwNC0wNS0wNCAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQGJyb2FkY29tLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IERlZmF1bHQgdG8gbm8KCWdlbmVyYXRpb24gb2YgYnJhbmNoLWxpa2VseSBvcGVyYXRpb25zIHdoZW4gdHVuaW5nIGZvcgoJQ1BVcyB3aGVyZSB0aGV5IHRlbmQgdG8gaGF2ZSBhIG5lZ2F0aXZlIHBlcmZvcm1hbmNlIGltcGFjdAoJKGUuZy4sIFNCLTEpLgoKMjAwNC0wNS0wNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3JfZmllbGQpOiBEb24ndCBjYWxsIHN0b3JlX2NvbnN0cnVjdG9yCglpZiBiaXRzaXplIGlzIG5vdCBhIG11bHRpcGxlIG9mIGEgYnl0ZS4KCjIwMDQtMDUtMDQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAoaW5oZXJpdF9waWVjZW1lYWxfcCk6IE5ldyBmdW5jdGlvbi4KCShlbWl0X3JlbG9hZF9pbnNucyk6IFdoZW4gcmVsb2FkaW5nIGEgZ3JvdXAgb2YgaGFyZCByZWdpc3RlcnMsIHVzZQoJaW5oZXJpdF9waWVjZW1lYWxfcCB0byBkZWNpZGUgd2hldGhlciB0aGUgdmFsdWVzIG9mIGluZGl2aWR1YWwgaGFyZAoJcmVnaXN0ZXJzIGNhbiBiZSBpbmhlcml0ZWQuCgoyMDA0LTA1LTA0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaWE2NC90LWlhNjQgKExJQjJBRERFSCk6IFJlbW92ZSBndGhyLWduYXQuYy4KCSogY29uZmlnL3MzOTAvdC10cGYgKExJQjJBRERFSERFUCk6IExpa2V3aXNlLgoJKiBjb25maWcvdC1saW51eCAoTElCMkFEREVIREVQKTogTGlrZXdpc2UuCgoyMDA0LTA1LTA0ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9jcnRpLmFzbTogUHVzaCBhbiBldmVuIG51bWJlciBvZiByZWdpc3RlcnMuCgkqIGNvbmZpZy9hcm0vY3J0bi5hc206IEFuZCByZXN0b3JlIHRoZW0uICBMb2FkIHZpYSBzcC4KCjIwMDQtMDUtMDQgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBnZ2Mtem9uZS5jIChnZ2NfYWxsb2Nfem9uZV8xKTogQWRkIE1FTV9TVEFUX0RFQ0wgcGFyYW1ldGVyLgoJQ29sbGVjdCBvdmVyaGVhZCBpbmZvcm1hdGlvbi4KCShnZ2NfYWxsb2Nfc3RhdCk6IE5ldyBuYW1lIG9mIGdnY19hbGxvYy4gIEFkZCBNRU1fU1RBVF9ERUNMCglwYXJhbWV0ZXIgYW5kIHBhc3MgaXQgdGhyb3VnaC4KCShnZ2NfYWxsb2NfdHlwZWRfc3RhdCk6IE5ldyBuYW1lIG9mIGdnY19hbGxvY190eXBlZC4gIEFkZAoJTUVNX1NUQVRfREVDTCBwYXJhbWV0ZXIgYW5kIHBhc3MgaXQgdGhyb3VnaC4KCShnZ2NfYWxsb2Nfem9uZV9zdGF0KTogTmV3IG5hbWUgb2YgZ2djX2FsbG9jX3pvbmUuICBBZGQKCU1FTV9TVEFUX0RFQ0wgcGFyYW1ldGVyIGFuZCBwYXNzIGl0IHRocm91Z2guCgoyMDA0LTA1LTAzICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogUHJvdG9pemUgcnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3MuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaGFyZF9yZWdub19ucmVncyk6IE5ldy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEhBUkRfUkVHTk9fTlJFR1MpOiBDYWxsCglyczYwMDBfaGFyZF9yZWdub19ucmVncy4KCjIwMDQtMDUtMDMgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2VtaXRfcHJvbG9ndWUpOiBDYWxsIHVuc3BlYyB0cGYKCXByb2xvZ3VlIGluc24gaW5zdGVhZCBvZiBzZXR0aW5nIHVwIGNhbGwuCgkoczM5MF9lbWl0X2VwaWxvZ3VlKTogRGl0dG8uCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKHByb2xvZ3VlX3RwZiwgZXBpbG9ndWVfdHBmKTogTmV3IHBhdHRlcm5zLgoJKGRlZmluZV9jb25zdGFudHMpOiBBZGQgbnVtYmVycyBmb3IgYWJvdmUgcGF0dGVybnMuCgoyMDA0LTA1LTAzICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBNb3ZlIGJvZHkuLi4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2NvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlKTogLi4uaGVyZS4KCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaDogUHJvdG90eXBlLgoKMjAwNC0wNS0wMyAgSm9lIEJ1Y2sgPGpidWNrQHdlbHNoLWJ1Y2sub3JnPgoKCSogY3BwZmlsZXMuYyAocGNoZl9hZGRlcik6IEVsaW1pbmF0ZSB1c2Ugb2YgfD0gaW4gZC0+aGF2ZV9vbmNlX29ubHkKCWFzc2lnbm1lbnQuCgoyMDA0LTA1LTAzICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IEZpeCBicmFuY2ggbGVuZ3RoIGF0dHJpYnV0ZSBkZWZpbml0aW9uLgoKMjAwNC0wNS0wMyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYzogUmVtb3ZlIC0tZW5hYmxlLWFsdGl2ZWMgc3VwcG9ydC4KCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy1kZWZzLmg6IFJlbW92ZS4KCjIwMDQtMDUtMDMgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc3ZyNF9wcm9maWwpOiBEb24ndCBhcHBseSBvbiBJUklYIDUvNi4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDQtMDUtMDMgIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpmeWwyeF9zZnhmMywgKmZ5bDJ4X2RmeGYzKTogUmVtb3ZlIGluc24KCWRlZmluaXRpb24uCgkobG9nP2YyLCBsb2cxMD9mMiwgbG9nMj9mMik6IFJlaW1wbGVtZW50IGV4cGFuZGVycyB3aXRoCglmbG9hdF90cnVuY2F0ZSBpbnNuLgoJKCpmeHRyYWN0c2YzLCAqZnh0cmFjdGRmMyk6IFJlbW92ZSBpbnNuIGRlZmluaXRpb24uCgkobG9nYj9mMik6IFJlaW1wbGVtZW50IGV4cGFuZGVycyB3aXRoIGZsb2F0X3RydW5jYXRlIGluc24uCgoyMDA0LTA1LTAzICBHcmFoYW0gU3RvdHQgIDxncmFoYW0uc3RvdHRAYnRpbnRlcm5ldC5jb20+CgoJUFIgMTQ3MTgKCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9pbXBvcnRlZF9tb2R1bGVfb3JfZGVjbCk6IFVzZQoJZm9yY2VfdHlwZV9kaWUgZm9yIENPTlNUX0RFQ0wuCgoyMDA0LTA1LTAzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoJICAgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnLmdjYyAoc3BhcmM2NC0qLXNvbGFyaXMyKiwgc3BhcmN2OS0qLXNvbGFyaXMyKik6IEFkZAoJdG0tZHdhcmYyLmggdG8gdG1fZmlsZS4KCShzcGFyYy0qLXNvbGFyaXMyKik6IEFkZCB0bS1kd2FyZjIuaCB0byB0bV9maWxlIGZvciBTb2xhcmlzIDcrLgoJKiBjb25maWcvc3BhcmMvc29sMi1iaS5oIChQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUpOiBEZWxldGUuCgkoQVNNX0RFQlVHX1NQRUMpOiBEZWxldGUuCgoyMDA0LTA1LTAzICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX2V4cG0xLgoJKGV4cG0xX29wdGFiKTogRGVmaW5lIGNvcnJlc3BvbmRpbmcgbWFjcm8uCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgZXhwbTFfb3B0YWIuCgkqIGdlbm9waW5pdC5jIChvcHRhYnMpOiBJbXBsZW1lbnQgZXhwbTFfb3B0YWIgdXNpbmcgZXhwbTE/ZjIKCXBhdHRlcm5zLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tYXRoZm4pOiBIYW5kbGUgQlVJTFRfSU5fRVhQTTF7LEYsTH0KCXVzaW5nIGV4cG0xX29wdGFiLgoJKGV4cGFuZF9idWlsdGluKTogRXhwYW5kIEJVSUxUX0lOX0VYUE0xeyxGLEx9IHVzaW5nCglleHBhbmRfYnVpbHRpbl9tYXRoZm4gaWYgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zIGlzIHNldC4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGV4cG0xZGYyLCBleHBtMXNmMiwgZXhwbTF4ZjIpOiBOZXcgZXhwYW5kZXJzCgl0byBpbXBsZW1lbnQgZXhwbTEsIGV4cG0xZiBhbmQgZXhwbTFsIGJ1aWx0LWlucyBhcyBpbmxpbmUgeDg3CglpbnRyaW5zaWNzLgoKMjAwNC0wNS0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJMjAwMy0xMS0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiBjb25maWcvZnJ2L2Zydi5tZCAoKnJldHVybl90cnVlLCAqcmV0dXJuX2ZhbHNlKTogTmV3IHBhdHRlcm5zLgoKMjAwNC0wNS0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHJ0bC5oIChQSElfTk9ERV9QKTogUmVtb3ZlLgoKMjAwNC0wNS0wMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhY3QtZXVyb3BlLmZyPgoKCVBSIG1pZGRsZS1lbmQvMTQ5ODgKCSogZnVuY3Rpb24uYyAoYXNzaWduX3N0YWNrX2xvY2FsXzEpOiBVc2UgQklUU19QRVJfVU5JVCBhbGlnbm1lbnQKCXdoZW4gcGFzc2VkIC0yIGFzICdhbGlnbicuCgkocHV0X3Zhcl9pbnRvX3N0YWNrKTogVXNlICdib29sJyBhcyB0aGUgdHlwZSBmb3IgdGhlIHRocmVlIGxvY2FsCglwcmVkaWNhdGVzLiAgQWRqdXN0IGNhbGxzIHRvIHB1dF9yZWdfaW50b19zdGFjay4KCVdoZW4gcGFzc2VkIGEgQ09OQ0FULCBpbnN0cnVjdCBwdXRfcmVnX2ludG9fc3RhY2sgdG8gdXNlCglhIGNvbnNlY3V0aXZlIHN0YWNrIHNsb3QgZm9yIHRoZSBzZWNvbmQgcGFydC4KCShwdXRfcmVnX2ludG9fc3RhY2spOiBSZW1vdmUgJ3Byb21vdGVkX21vZGUnIHBhcmFtZXRlciwgYWRkCgknY29uc2VjdXRpdmVfcCcgcGFyYW1ldGVyLiAgVHVybiB0aGUgdGhyZWUgcHJlZGljYXRlcyBpbnRvICdib29sJwoJcGFyYW1ldGVycy4gIFJldHJpZXZlIHRoZSByZWdpc3RlciBtb2RlIGZyb20gJ3JlZycuCglXaGVuIGNvbnNlY3V0aXZlX3AgaXMgdHJ1ZSwgaW5zdHJ1Y3QgYXNzaWduX3N0YWNrX2xvY2FsXzEgdG8gdXNlCglCSVRTX1BFUl9VTklUIGFsaWdubWVudC4KCShwdXRfYWRkcmVzc29mX2ludG9fc3RhY2spOiBVc2UgJ2Jvb2wnIGFzIHRoZSB0eXBlIGZvciB0aGUgdHdvCglsb2NhbCBwcmVkaWNhdGVzLiBBZGp1c3QgY2FsbCB0byBwdXRfcmVnX2ludG9fc3RhY2suCgoyMDA0LTA1LTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfY29udmVydF9jb25zdCwgZm9sZCk6IEFkZCBtaXNzaW5nCglGSVhfUk9VTkRfRVhQUiBjYXNlLgoKMjAwNC0wNS0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMgKEZMRVgsIEJJU09OKTogT25seSB1c2UgdG9vbHMgZnJvbSB0aGUgYnVpbGQgdHJlZQoJaWYgYnVpbGQgZXF1YWxzIGhvc3QuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCgkqIGNvbmZpZy9mcnYvZnJ2LXByb3Rvcy5oIChmcnZfZXhwYW5kX2VwaWxvZ3VlLAoJZnJ2X2V4cGFuZF9mZHBpY19jYWxsKTogQWRkIGJvb2wgYXJndW1lbnQuCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6IE5ldy4KCShUQVJHRVRfRlVOQ1RJT05fT0tfRk9SX1NJQkNBTEwpOiBEZWZpbmUgdG8gaXQuCgkoZnJ2X2V4cGFuZF9lcGlsb2d1ZSk6IFVzZSBuZXcgYXJndW1lbnQgdG8gZGVjaWRlIHdoZXRoZXIgdG8gZW1pdAoJcmV0dXJuIGluc3RydWN0aW9uIG9yIGNvcHkgdGhlIHJldHVybiBhZGRyZXNzIHRvIExSLgoJKGZydl9leHBhbmRfZmRwaWNfY2FsbCk6IElubGluZSBQTFQgZW50cnkgd2hlbiBlbWl0dGluZyBkaXJlY3QKCXNpYmNhbGxzLgoJKHNpYmNhbGxfb3BlcmFuZCk6IE5ldy4KCSogY29uZmlnL2Zydi9mcnYuaCAoUFJFRElDQVRFX0NPREVTKTogY2FsbF9vcGVyYW5kIGRvZXNuJ3QgbWF0Y2gKCVBMVVMgbm9yIExBQkVMX1JFRi4gIEFkZCBzaWJjYWxsX29wZXJhbmQuCgkqIGNvbmZpZy9mcnYvZnJ2Lm1kIChjYWxsLCBjYWxsX3ZhbHVlKTogUGFzcyBmYWxzZSB0bwoJZnJ2X2V4cGFuZF9mZHBpY19jYWxsLgoJKGNhbGxfZmRwaWNkaSwgY2FsbF92YWx1ZV9mZHBpY2RpKTogSW5zZXJ0ICVpMCBpbiBjYWxsbC4KCShzaWJjYWxsLCBzaWJjYWxsX2ludGVybmFsLCBzaWJjYWxsX2ZkcGljZGksIHNpYmNhbGxfdmFsdWUsCglzaWJjYWxsX3ZhbHVlX2ludGVybmFsLCBzaWJjYWxsX3ZhbHVlX2ZkcGljZGkpOiBOZXcuCgkocmV0dXJuX3Vuc2lnbmVkX3RydWUsIHJldHVybl91bnNpZ25lZF9mYWxzZSk6IE5ldy4KCShlcGlsb2d1ZSk6IEFkanVzdCBjYWxsIHRvIGZydl9leHBhbmRfZXBpbG9ndWUuCgkoc2liY2FsbF9lcGlsb2d1ZSk6IE5ldy4KCgkqIGNvbmZpZy9mcnYvZnJ2LmggKEFTTV9TUEVDKTogUGFzcyAtbW5vLWZkcGljIGFzIC1tbm9waWMuCgkoQ1BQX1NQRUMsIENQUF9TSU1QTEVfU1BFQyk6IFVuZGVmaW5lIF9fRlJWX0FDQ19fIGFuZCBfX0ZSVl9GUFJfXwoJYmVmb3JlIHJlZGVmaW5pbmcgdGhlbS4KCjIwMDQtMDUtMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfZml4ZWRfbWF0aGZuKTogTmV3IGZ1bmN0aW9uLgoJKGZvbGRfYnVpbHRpbl9scm91bmQsIGZvbGRfYnVpbHRpbik6IFVzZSBpdC4KCjIwMDQtMDUtMDEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoVEFSR0VUX0RFRkFVTFQpOiBNYWtlIDY0LWJpdCBieSBkZWZhdWx0CglhbHNvIGZvciBUQVJHRVRfQ1BVX0RFRkFVTFQgPT0gVEFSR0VUX0NQVV91bHRyYXNwYXJjMy4KCjIwMDQtMDUtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvY3Jpcy9jcmlzLmg6IFJldmVydCBteSAiZml4IGNvbW1lbnQgdHlwb3MiIHBhdGNoLgoKMjAwNC0wNS0wMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChUVU5FX01BQ0NfQ0hBSU5TKTogRml4IGNvbW1lbnQuCgoyMDA0LTA1LTAxICBGYWxrIEh1ZWZmbmVyICA8ZmFsa0BkZWJpYW4ub3JnPgoKCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChidWlsdGluX2luc2JsLCBidWlsdGluX2luc3dsLAoJYnVpbHRpbl9pbnNsbCk6IERpc2FsbG93IDAgYXMgZmlyc3QgaW5wdXQgb3BlcmFuZC4KCjIwMDQtMDUtMDEgIEZhbGsgSHVlZmZuZXIgIDxmYWxrQGRlYmlhbi5vcmc+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfcnR4X2Nvc3RzKTogRml4IHNoaWZ0YWRkIGNvc3RzLgoKMjAwNC0wNS0wMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTUwNTQKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsKTogRG8gbm90IGNhbGwgcHJlc2VydmVfdGVtcF9zbG90cwoJb24gYSBUQVJHRVRfRVhQUiB0ZW1wLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fc3RhY2tfdGVtcF9mb3JfdHlwZSk6IFNldCAna2VlcCcgZmxhZyBmb3IKCVRBUkdFVF9FWFBSIHRlbXAgc2xvdHMuCgoyMDA0LTA1LTAxICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3Rlcm5hcnlfb3BlcmF0aW9uKTogV2hlbgoJY29udmVydGluZyBhbiBJRl9USEVOX0VMU0UgdG8gYSByZWxhdGlvbmFsIG9wLCByZXR1cm4KCWNvcnJlY3QgbW9kZS4KCjIwMDQtMDQtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9yb3VuZCk6IEZpeCBjb21tZW50IHR5cG8uCgkoZm9sZF9idWlsdGluX2xyb3VuZCk6IE5ldyBmdW5jdGlvbi4KCShmb2xkX2J1aWx0aW4pOiBVc2UgaXQuCgoyMDA0LTA0LTIwICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0YXJnZXQvMTE2MDgKCSogY29uZmlnL3NoL2VsZi5oIChEQlhfT1VUUFVUX01BSU5fU09VUkNFX0ZJTEVfRU5EKTogVXBkYXRlIGFuZCBtYWtlIGl0Cgltb3JlIGxpa2UgdGhlIG9uZSBpbiBjb25maWcvZGJ4ZWxmLmguCgoyMDA0LTA0LTMwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChTRVRfQVJSQVlfT1JfVkVDVE9SX0NIRUNLKTogUmVuYW1lIHRvIFNFVF9PUl9BUlJBWV9DSEVDSwoJYW5kIGFkanVzdCBkZWZpbml0aW9uIGFjY29yZGluZ2x5LgoJKFRZUEVfRE9NQUlOKTogQWxsb3cgb25seSBTRVRfVFlQRSBhbmQgQVJSQVlfVFlQRS4KCShUWVBFX0RFQlVHX1JFUFJFU0VOVEFUSU9OX1RZUEUpOiBBbGxvdyBvbmx5IFZFQ1RPUl9UWVBFLgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogRG8gbm90IGFjY2VzcyBUWVBFX0RPTUFJTiBvZiBhCglWRUNUT1JfVFlQRS4KCjIwMDQtMDQtMzAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8xNDU4NwoJKiBjb25maWcvaTM4Ni93aW5udC5jIChhc3NvY2lhdGVkX3R5cGUpOiBMb29rIGZvciBhdHRyaWJ1dGVzIG9uCgl0aGUgVFlQRV9NQUlOX1ZBUklBTlQgb2YgKnRoaXMuCgkqIGF0dHJpYnMuYyAoZGVjbF9hdHRyaWJ1dGVzKTogSWYgQVRUUl9GTEFHX1RZUEVfSU5fUExBQ0UsIGFsc28KCWFwcGx5IHRoZSBhdHRyaWJ1dGVzIHRvIHRoZSB2YXJpYW50cy4KCjIwMDQtMDQtMzAgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjOiBTaW1wbGlmeSBhcm0gLS13aXRoLXtjcHUsdHVuZX0gdGVzdC4KCSogY29uZmlnL2FybS9hcm0tY29yZXMuZGVmOiBEb2N1bWVudCB3aGl0ZXNwYWNlIHJlc3RyaWN0aW9ucy4KCjIwMDQtMDQtMzAgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCVBSIG90aGVyLzE5NjMKCSogY29uZmlnL2FscGhhL29zZi5oIChTV0lUQ0hFU19ORUVEX1NQQUNFUyk6IERlZmluZS4KCjIwMDQtMDQtMzAgIEJyaWFuIEZvcmQgIDxmb3JkQHZzcy5mc2kuY29tPgoJICAgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvY3lnbWluZy5oIFtIQVZFX0dBU19QRV9TRUNSRUwzMl9SRUxPQ10KCShEV0FSRjJfREVCVUdHSU5HX0lORk8pOiBEZWZpbmUgdG8gZW5hYmxlLgoJKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBEZWZpbmUgdG8gdXNlIHRoZSBzdnI0IHJlZ2lzdGVyIG1hcCBmb3IKCURXQVJGMi4KCSogY29uZmlndXJlLmFjIChUYXJnZXQtc3BlY2lmaWMgYXNzZW1ibGVyIGNoZWNrcykKCTxpWzM0NTY3XTg2LSotW2N5Z3dpbip8cGV8bWluZ3czMipdPjogTmV3IHRlc3QgZm9yIC5zZWNyZWwzMgoJcmVsb2NzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5pbjogTGlrZXdpc2UuCgoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmggW0hBVkVfR0FTX1BFX1NFQ1JFTDMyX1JFTE9DXQoJKEFTTV9PVVBVVF9EV0FSRl9PRkZTRVQpOiBEZWZpbmUuCgoyMDA0LTA0LTI5ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9lbWl0X2VwaWxvZ3VlKTogUGFyYW1ldGVyIGFkZGVkLgoJKHMzOTBfZW1pdF9jYWxsKTogTmV3IGZ1bmN0aW9uIHByb3RvdHlwZSBhZGRlZC4KCShzMzkwX3Rsc19nZXRfb2Zmc2V0KTogRnVuY3Rpb24gcmVtb3ZlZC4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsLAoJczM5MF9jYWxsX3NhdmVkX3JlZ2lzdGVyX3VzZWRfcCk6IE5ldyBmdW5jdGlvbnMuCgkoVEFSR0VUX0ZVTkNUSU9OX09LX0ZPUl9TSUJDQUxMKTogRGVmaW5pdGlvbiBvZiB0YXJnZXQgbWFjcm8gYWRkZWQuCgkoczM5MF90bHNfZ2V0X29mZnNldCk6IEZ1bmN0aW9uIG1lcmdlZCBpbnRvIHMzOTBfZW1pdF90bHNfY2FsbF9pbnNuLgoJKHMzOTBfZW1pdF90bHNfY2FsbF9pbnNuKTogTmV3IGZ1bmN0aW9uLgoJKGxlZ2l0aW1pemVfdGxzX2FkZHJlc3MpOiBDYWxsIHMzOTBfZW1pdF90bHNfY2FsbF9pbnNuIGluc3RlYWQgb2YKCWVtaXRfY2FsbF9pbnNuLgoJKHMzOTBfZW1pdF9wcm9sb2d1ZSk6IFVzZSBzMzkwX2VtaXRfY2FsbCBpbnN0ZWFkIG9mIGVtaXRfY2FsbF9pbnNuLgoJKHMzOTBfZW1pdF9lcGlsb2d1ZSk6IExpa2UgczM5MF9lbWl0X3Byb2xvZ3VlLiBQYXJhbWV0ZXIgZm9yIHNpYmNhbGxzCglhZGRlZC4KCSogY29uZmlnL3MzOTAvczM5MC5oIChTSUJDQUxMX1JFR05VTSk6IE5ldyBtYWNybyByZXByZXNlbnRpbmcgdGhlCglyZWdpc3RlciBudW1iZXIgdXNlZCB0byBob2xkIHRoZSB0YXJnZXQgYWRkcmVzcyBmb3Igc2liY2FsbHMuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJzaWJjYWxsIiwgInNpYmNhbGxfdmFsdWUiLCAic2liY2FsbF9lcGlsb2d1ZSIpOgoJTmV3IGV4cGFuZGVycy4KCSgiKnNpYmNhbGxfYnIiLCAiKnNpYmNhbGxfYnJjIiwgIipzaWJjYWxsX2JyY2wiLCAiKnNpYmNhbGxfdmFsdWVfYnIiLAoJIipzaWJjYWxsX3ZhbHVlX2JyYyIsICIqc2liY2FsbF92YWx1ZV9icmNsIik6IE5ldyBpbnNucy4KCSgiY2FsbF9leHAiLCAiY2FsbF92YWx1ZV9leHAiLCAiY2FsbF92YWx1ZV90bHMiLCAiY2FsbF92YWx1ZV90bHNfZXhwIik6CglFeHBhbmRlcnMgcmVtb3ZlZC4KCSgiY2FsbCIsICJjYWxsX3ZhbHVlIik6IENhbGwgczM5MF9lbWl0X2NhbGwgdG8gZW1pdCB0aGUgY2FsbCBwYXR0ZXJucy4KCSgiKmJyYXMiLCAiKmJyYXNsIiwgIipicmFzX3IiLCAiKmJyYXNsX3IiLCAiKmJyYXNfdGxzIiwgIipicmFzbF90bHMiLAoJIipiYXNyIiwgIipiYXNyX3IiLCAiKmJhc3JfdGxzIik6IEFkZGVkIGNvbnN0cmFpbnQ6ICFTSUJMSU5HX0NBTExfUC4KCSgiZXBpbG9ndWUiKTogQ2hhbmdlZCB0aGUgY2FsbCB0byBzMzkwX2VtaXRfZXBpbG9ndWUgdG8gdXNlIHRoZQoJbmV3IHBhcmFtZXRlci4KCjIwMDQtMDQtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBiYi1yZW9yZGVyLmMsIGMtb3B0cy5jLCBjZmdsYXlvdXQuYywgY2dyYXBoLmMsIGNncmFwaHVuaXQuYywKCWNwcGZpbGVzLmMsIGZvbGQtY29uc3QuYywgZ2djLXpvbmUuYywgbG9vcC1kb2xvb3AuYywgb3B0YWJzLmMsCglyZWctc3RhY2suYywgdmFyYXNtLmMsIGNvbmZpZy9hbHBoYS9ldjQubWQsCgljb25maWcvYWxwaGEvZXY1Lm1kLCBjb25maWcvYWxwaGEvZXY2Lm1kLCBjb25maWcvYXJtL2FybS5jLAoJY29uZmlnL2M0eC9jNHguYywgY29uZmlnL2M0eC9jNHgubWQsIGNvbmZpZy9jcmlzL2NyaXMuYywKCWNvbmZpZy9jcmlzL2NyaXMuaCwgY29uZmlnL2ZyMzAvZnIzMC5oLCBjb25maWcvZnJ2L2Zydi5jLAoJY29uZmlnL2Zydi9mcnYuaCwgY29uZmlnL2Zydi9mcnYubWQsIGNvbmZpZy9oODMwMC9oODMwMC5jLAoJY29uZmlnL2kzODYvaTM4Ni5jLCBjb25maWcvaTM4Ni9pMzg2Lm1kLCBjb25maWcvaTM4Ni93aW5udC5jLAoJY29uZmlnL2lhNjQvaXRhbml1bTIubWQsIGNvbmZpZy9pcDJrL2lwMmsuYywKCWNvbmZpZy9taXBzL21pcHMuYywgY29uZmlnL21pcHMvbWlwcy5oLCBjb25maWcvbWlwcy9zcjcxay5tZCwKCWNvbmZpZy9wYS9wYS5jLCBjb25maWcvczM5MC9zMzkwLmMsIGNvbmZpZy9zaC9zaC5jOiBGaXgKCWNvbW1lbnQgdHlwb3MuCgoyMDA0LTA0LTMwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYzogRGVmYXVsdCBlcDkzMTIgdG8gaGFyZC1mbG9hdC4KCSogY29uZmlnL2FybS9hcm0tY29yZXMuZGVmOiBBZGQgQVJDSCBmaWVsZC4KCSogY29uZmlnL2FybS9hcm0uYyAoRkxfRk9SX0FSQ0gqKTogRGVmaW5lLgoJKGFybV9hcmNoX2NpcnJ1cyk6IE5ldyB2YXJpYWJsZS4KCShhbGxfY29yZXMpOiBTZXQgYW5kIHVzZSBhcmNoLgoJKGFsbF9hcmNoaXRlY3R1cmVzKTogRGl0dG8uCgkoYXJtX2FyY2hfbmFtZSk6IE5ldyB2YXJpYWJsZS4KCShhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBpdC4gVXNlIFtTVUJdVEFSR0VUX0NQVV9ERUZBVUxULgoJU2V0IGFuZCB1c2UgYXJtX2FyY2hfY2lycnVzLgoJKiBjb25maWcvYXJtL2FybS5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IFNldCBhcmNoIGRlZmluZXMuCgkoZW51bSBwcm9jZXNzb3JfdHlwZSk6IFVwZGF0ZSBBUk1fQ09SRSBkZWZpbmUuCgkoZW51bSB0YXJnZXRfY3B1cyk6IEFkZC4gIFJlcGxhY2VzIFRBUkdFVF9DUFVfKiBkZWZpbmVzLgoJKENQUF9TUEVDKTogUmVtb3ZlICUoY3BwX2NwdV9hcmNoKS4KCShDUFBfQVJDSF9ERUZBVUxUX1NQRUMpOiBSZW1vdmUuCgkoQ1BQX0NQVV9BUkNIX1NQRUMpOiBSZW1vdmUuCgkoRVhUUkFfU1BFQ1MpOiBEb24ndCB1c2UgQ1BQXypBUkNIKl9TUEVDLgoJKEZQVVRZUEVfREVGQVVMVCk6IERvbid0IGRlZmluZSBoZXJlLgoKMjAwNC0wNC0zMCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9vbmVfaW5zbik6IENhbGwgbWFya19zZXRfcmVncyBmb3Igc3RhY2sgcG9pbnRlcgoJdXBkYXRlcyB0b28uCgoyMDA0LTA0LTMwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogYXJtLmMgKGFybV9uZWVkc19kb3VibGV3b3JkX2FsaWduKTogVXNlIG1vZGUgYWxpZ25tZW50LgoKMjAwNC0wNC0zMCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbmZpZy9hbHRpdmVjL2FsdGl2ZWMuaCBbX19jcGx1c3BsdXNdICh2ZWNfc3Vic3Vicyk6IFJlbmFtZSB0bwoJdmVjX3N1YnVicy4KCVtfX2NwbHVzcGx1c10gKHZlY19zdWJzdWhzKTogUmVuYW1lIHRvIHZlY19zdWJ1aHMsIHdpdGhvdXQKCWR1cGxpY2F0ZXMuCgoyMDA0LTA0LTMwICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChhdGFuc2YyLCBhdGFuZGYyLCBhdGFueGYyKTogTW92ZSBuZWFyCglhdGFuMj9mMyBleHBhbmRlcnMuCgoyMDA0LTA0LTI5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCUJ1ZyAxNDA5MwoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmggKHNoX3Byb21vdGVfcHJvdG90eXBlcyk6IERlY2xhcmUuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9wcm9tb3RlX3Byb3RvdHlwZXMpOiBSZW1vdmUgZGVjbGFyYXRpb24uCglEZWxldGUgc3RhdGljIGZyb20gZGVmaW5pdGlvbi4KCSogY29uZmlnL3NoL3NoLmggKEZVTkNUSU9OX1ZBTFVFKTogQWRkIHNoX3Byb21vdGVfcHJvdG90eXBlcyBjYWxsLgoKMjAwNC0wNC0zMCAgVXJvcyBCaXpqYWsgIDx1cm9zQGtzcy1sb2thLnNpPgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogPFVOU1BFQ19TSU4sIFVOU1BFQ19DT1MsCglVTlNQRUNfRlJORElOVCwgVU5TUEVDX0YyWE0xPjogYWJvcnQoKSBpZiBzcmMxIGRpZXMuCgk8VU5TUEVDX1NJTkNPU19DT1MsIFVOU1BFQ19UQU5fT05FLCBVTlNQRUNfWFRSQUNUX0ZSQUNUPjogU2FtZS4KCTxVTlNQRUNfU0lOQ09TX1NJTiwgVU5TUEVDX1RBTl9UQU4sIFVOU1BFQ19YVFJBQ1RfRVhQPjogU2FtZS4KCjIwMDQtMDQtMjkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyaWNoYXJkLmd1ZW50aGVyQHVuaS10dWViaW5nZW4uZGU+CgoJKiBjb21tb20ub3B0IChXZmF0YWwtZXJyb3JzKTogQWRkIGl0LgoJKiBkaWFnbm9zdGljLmMgKGZsYWdfZmF0YWxfZXJyb3JzKTogRGVmaW5lIGl0LgoJKGRpYWdub3N0aWNfYWN0aW9uX2FmdGVyX291dHB1dCk6IENoZWNrIGZvciBmbGFnX2ZhdGFsX2Vycm9ycy4KCSogZmxhZ3MuaCAoZmxhZ19mYXRhbF9lcnJvcnMpOiBEZWNsYXJlIGl0LgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogQWRkIE9QVF9XZmF0YWxfZXJyb3JzLgoJKiBkb2MvaW52b2tlLnRleGkgKFdhcm5pbmcgT3B0aW9ucyk6IERvY3VtZW50IC1XZmF0YWwtZXJyb3JzLgoKMjAwNC0wNC0zMCAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogZ2NzZS5jIChyZW1vdmVfcmVhY2hhYmxlX2VxdWl2X25vdGVzKTogRGVsZXRlIG5vdGVzIGFsc28gaW4KCWJsb2NrcyB3aGljaCBoYXZlIGtpbGwgZmxhZyBzZXQuCgoyMDA0LTA0LTI5ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLWFzKTogQWJvcnQgaWYgdXNlci1zdXBwbGllZCBhc3NlbWJsZXIKCWNhbm5vdCBiZSBleGVjdXRlZC4KCSgtLXdpdGgtbGQpOiBMaWtld2lzZSBmb3IgdGhlIGxpbmtlci4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wNC0yOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29udmVydC5jIChjb252ZXJ0X3RvX2ludGVnZXIpOiBFbnN1cmUgYGxvbmdfaW50ZWdlcl90eXBlX25vZGUnCglpc24ndCBOVUxMIGJlZm9yZSB1c2luZyBpdC4KCjIwMDQtMDQtMjkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTUxODkKCSogY29uZmlnL21pcHMvbWlwcy5tZCAobG9hZF9kZl9sb3cpOiBVc2UgZGVmYXVsdCBsZW5ndGguCgkobG9hZF9kZl9oaWdoLCBzdG9yZV9kZl9oaWdoKTogTGlrZXdpc2UuCgoyMDA0LTA0LTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCwgY29uZmlnL21pcHMvc2IxLm1kLAoJY29uZmlnL3JzNjAwMC9yczYwMDAuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTA0LTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYnVpbHRpbnMuYywgY2dyYXBoLmMsIGNncmFwaHVuaXQuYywgZmluYWwuYywgZm9sZC1jb25zdC5jOgoJRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTA0LTI5ICBEb3VnbGFzIEIgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBnY2MuYyAoREVMRVRFX0lGX09SRElOQVJZKTogTmV3IG1hY3JvIGRlZmF1bHQgZGVmaW5pdGlvbi4KCShkZWxldGVfaWZfb3JkaW5hcnkpOiBVc2UgYWJvdmUgbWFjcm8uCgkqIGNvbmZpZy9hbHBoYS94bS12bXMuaCAoREVMRVRFX0lGX09SRElOQVJZKTogTmV3IG1hY3JvIFZNUyBkZWZpbml0aW9uLgoJVXBkYXRlIGNvcHlyaWdodC4KCSogZG9jL2hvc3Rjb25maWcudGV4aSAoREVMRVRFX0lGX09SRElOQVJZKTogRG9jdW1lbnQgbmV3IG1hY3JvLgoKMjAwNC0wNC0yOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBjLWRlY2wuYyAoZ2V0X3Bhcm1faW5mbyk6IFVzZSB0aGUgY29ycmVjdCB0YWcga2V5d29yZHMgd2hlbgoJd2FybmluZyBhYm91dCB0eXBlIGRlY2xhcmF0aW9ucyBpbiBwcm90b3R5cGVzLgoKMjAwNC0wNC0yOSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2M6IFB1bGwgbGlzdCBvZiBjb3JlcyBmcm9tIGFybS1jb3Jlcy5kZWYuCgoyMDA0LTA0LTI5ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IEFkanVzdCBjYWxsIHRvIHVzZQoJc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24uICBEbyBub3QgdXNlIFNFTEVDVF9DQ19NT0RFCgl3aGVuIGEgY29tcGFyaXNvbiBhbHJlYWR5IGhhcyBhIE1PREVfQ0MgbW9kZS4KCjIwMDQtMDQtMjkgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKHNpbXBsaWZ5X3NldCk6IHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uIG1heSBub3cKCXJldHVybiBhbm90aGVyIHJlbGF0aW9uYWwgZXhwcmVzc2lvbi4KCSogY3NlLmMgKGZvbGRfcnR4KTogc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24gbm93Cgl0YWtlcyBvZiBjb21wdXRpbmcgdGhlIGNvbXBhcmlzb24gbW9kZS4KCSogZG9qdW1wLmMgKGNvbXBhcmVfZnJvbV9ydHgpOiBVc2Ugc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24sCglyZW1vdmUgZGVhZCBjb2RlLgoJKGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChzdWJzdF9jb25zdGFudHMpOiBzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbgoJbWF5IG5vdyByZXR1cm4gYW5vdGhlciByZWxhdGlvbmFsIGV4cHJlc3Npb24uCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9nZW5fcmVsYXRpb25hbCk6IE1vdmUgbW9zdCBjb2RlIHRvCgl0aGUgbmV3IHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uIGFuZAoJc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb25fMSBmdW5jdGlvbnMuCgkoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBSZXdyaXR0ZW4uCgkoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb25fMSk6IE5ldyBmdW5jdGlvbi4KCShzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6IHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uCgltYXkgbm93IHJldHVybiBhbm90aGVyIHJlbGF0aW9uYWwgZXhwcmVzc2lvbi4KCShzaW1wbGlmeV9ydHgpOiBSZW1vdmUgdW5uZWNlc3NhcnkgdGVtcCB2YXJpYWJsZS4KCjIwMDQtMDQtMjkgIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIHJlZy1zdGFjay5jIChzd2FwX3RvX3RvcCk6IE5ldyBmdW5jdGlvbi4KCShzdWJzdF9zdGFja19yZWdzX3BhdCk6IFVOU1BFQ19GUEFUQU4sIFVOU1BFQ19GWUwyWDogVXNlCglzd2FwX3RvX3RvcCgpLgoJKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogVU5TUEVDX0ZTQ0FMRTogUmVtb3ZlLgoJKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogSGFuZGxlIFVOU1BFQ19GU0NBTEVfRlJBQ1QgYW5kCglVTlNQRUNfRlNDQUxFX0VYUC4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKFVOU1BFQ19GU0NBTEUpOiBSZW1vdmUuCgkoKmZzY2FsZV9zZnhmMywgKmZzY2FsZV9kZnhmMywgKmZzY2FsZV94ZjMpOiBSZW1vdmUgaW5zbiBwYXR0ZXJuLgoJKFVOU1BFQ19GU0NBTEVfRlJBQ1QsIFVOU1BFQ19GU0NBTEVfRVhQKTogTmV3IHVuc3BlY3MgdG8gcmVwcmVzZW50Cgl4ODcncyBmc2NhbGUgaW5zbi4KCSgqZnNjYWxleGY0OiBEZWZpbmUgbmV3IGluc24gcGF0dGVybiB0byBpbXBsZW1lbnQgeDg3IGZzY2FsZSBpbnNuLgoJKGV4cD9mMiwgZXhwMTA/ZjIsIGV4cDI/ZjIpOiBVc2UgKmZzY2FsZXhmNCBhbmQgZmxvYXRfdHJ1bmNhdGUKCXBhdHRlcm5zLgoKMjAwNC0wNC0yOCAgU2VyZ2UgQmVseXNoZXYgIDwxMzE5QGJvdC5ydT4KCglQUiAxNDk0NAoJKiBjb3ZlcmFnZS5jIChyZWFkX2NvdW50c19maWxlKTogRml4IHVzYWdlIG9mIHdhcm5pbmcgKCkgY2FsbC4KCSogcHJldHR5LXByaW50LmMgKHBwX2Jhc2VfZm9ybWF0X3RleHQpOiBGaXggdHlwbyBpbiB0aGUgY29tbWVudC4KCjIwMDQtMDQtMjggIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChPYmplY3RpdmUtQyBEaWFsZWN0IE9wdGlvbnMpOiBEb24ndCBwcmVmaXgKCW9wdGlvbnMgd2l0aCAiLSIgaW4gdGhlIG9wdGlvbiBpbmRleC4KCShTUEFSQyBPcHRpb25zKTogTGlrZXdpc2UuCgkoTTMyUi9EIE9wdGlvbnMpOiBMaWtld2lzZS4KCjIwMDQtMDQtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogQ29udmVydCAobG9uZylyb3VuZCAtPiBscm91bmQsCglldGMuCgoyMDA0LTA0LTI4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJlZ2lzdGVyc19va19mb3JfcXVhZF9wZWVwKToKCVJldHVybiBmYWxzZSBpZiB3ZSBkbyBub3QgaGF2ZSBmcCByZWdpc3Rlci4KCShhZGRyc19va19mb3JfcXVhZF9wZWVwKTogUmVuYW1lIHRvIC4uLgoJKG1lbXNfb2tfZm9yX3F1YWRfcGVlcCk6IHRoaXMuCglBZGQgY2hlY2sgZm9yIHZvbGF0aWxlIG1lbW9yeS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKGFkZHJzX29rX2Zvcl9xdWFkX3BlZXApOgoJUmVuYW1lIHRvIC4uLgoJKG1lbXNfb2tfZm9yX3F1YWRfcGVlcCk6IHRoaXMuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBDaGFuZ2UgcGVlcGhvbGUncyBmb3IgbGZxL3N0cQoJdG8gcGVlcGhvbGUyJ3MuCgkobGZxX3Bvd2VyMik6IE5ldyBpbnN0cnVjdGlvbi4KCShzdGZxX3Bvd2VyMik6IExpa2V3aXNlLgoKMjAwNC0wNC0yOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIGMvMTUwMDQKCSogZnVuY3Rpb24uYyAoZG9fd2Fybl91bnVzZWRfcGFyYW1ldGVyKTogQnJlYWsgb3V0IGZvcm0gLi4uCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IC4uLiBoZXJlOyB3YXJuIG9ubHkgd2hlbiBub3QgdXNpbmcgY2dyYXBodW5pdC4KCSogZnVuY3Rpb24uaCAoZG9fd2Fybl91bnVzZWRfcGFyYW1ldGVyKTogRGVjbGFyZS4KCSogY2dyYXBodW5pdC5jOiBJbmNsdWRlIGZ1bmN0aW9uLmguCgkoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogRG8gdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nLgoJKiBNYWtlZmlsZS5pbiAoY2dyYXBodW5pdC5vKTogRGVwZW5kIG9uIGZ1bmN0aW9uLmgKCjIwMDQtMDQtMjggIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogTWFrZWZpbGUuaW4gKCQoREVTVERJUikkKGluZm9kaXIpLyUuaW5mbyk6IERvbid0IGNvbmRpdGlvbgoJY2FsbGluZyBpbnN0YWxsLWluZm8gb24gJChERVNURElSKSQoaW5mb2RpcikvZGlyIGFscmVhZHkgYmVpbmcKCXByZXNlbnQuCgoyMDA0LTA0LTI4ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHdhcmYyb3V0LmMgKG1lbV9sb2NfZGVzY3JpcHRvcik6IEhhbmRsZSBzaGlmdHMuCgoyMDA0LTA0LTI4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBnY3NlLmMgKGZpbmRfbW92ZWFibGVfc3RvcmUpOiBEbyBub3QgYWNjZXB0IHN0b3JlIGluc25zIHdpdGgKCVJFR19FSF9SRUdJT04gbm90ZS4KCjIwMDQtMDQtMjggIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxscy5jIChwcmVjb21wdXRlX2FyZ3VtZW50cyk6IFJlbW92ZSBQUk9NT1RFX0ZPUl9DQUxMX09OTFkuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl90ZW1wKTogRGl0dG8uCgkqIHN5c3RlbS5oIChQUk9NT1RFX0ZPUl9DQUxMX09OTFkpOiBQb2lzb24uCgoyMDA0LTA0LTI4ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtOiBSZWNvZ25pemUgYXJtdjV0ZWogYW5kIGFybXY2LgoKMjAwNC0wNC0yOCAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogdmFyLXRyYWNraW5nLmMgKHZhcmlhYmxlX2RpZmZlcmVudF9wKTogQWRkIGEgcGFyYW1ldGVyCgljb21wYXJlX2N1cnJlbnRfbG9jYXRpb24sIGNvbXBhcmUgY3VycmVudCBsb2NhdGlvbiBvZiB2YXJpYWJsZSBwYXJ0cwoJaWYgaXQgaXMgdHJ1ZS4KCShkYXRhZmxvd19zZXRfZGlmZmVyZW50XzEpOiBQYXNzIGNvbXBhcmVfY3VycmVudF9sb2NhdGlvbiA9PSBmYWxzZS4KCShkYXRhZmxvd19zZXRfZGlmZmVyZW50XzIpOiBQYXNzIGNvbXBhcmVfY3VycmVudF9sb2NhdGlvbiA9PSBmYWxzZS4KCShlbWl0X25vdGVzX2Zvcl9kaWZmZXJlbmNlc18xKTogUGFzcyBjb21wYXJlX2N1cnJlbnRfbG9jYXRpb24gPT0gdHJ1ZS4KCjIwMDQtMDQtMjggIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJjYXNlc2kiKTogTWFyayBqdW1wIHRhYmxlIGFjY2VzcyBhcwoJbm9uLXRyYXBwaW5nIGFuZCB1bmNoYW5naW5nLgoKMjAwNC0wNC0yNyAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBkZWJ1Zy8xNDgyOQoJKiBkd2FyZjJvdXQuYyAocmVnX251bWJlcik6IFJlbmFtZSB0byBkYnhfcmVnX251bWJlci4gIEFkanVzdCBhbGwKCWNhbGxlcnMuCgkobXVsdGlwbGVfcmVnX2xvY19kZXNjcmlwdG9yLCByZWdfbG9jX2Rlc2NyaXB0b3IpOiBVc2UgZ2NjIHJlZ2lzdGVyCgludW1iZXIgZm9yIGluZGV4aW5nIGhhcmRfcmVnbm9fbnJlZ3MgYXJyYXkuCgoyMDA0LTA0LTI3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uaCAoU1RBUlRGSUxFX1NQRUMpOiBVc2UgJXMgdG8gZmluZCBjcnQyLm8uCgkqIGNvbmZpZy9kYXJ3aW4tY3J0Mi5jOiBPbmx5IGhhdmUgY29udGVudHMgb24gX19wcGNfXy4KCjIwMDQtMDQtMjcgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jIChjYWxsX2luc25fb3BlcmFuZCk6IENoZWNrCglTWU1CT0xfUkVGX0VYVEVSTkFMX1AgaW4gYWRkaXRpb24gdG8gU1lNQk9MX1JFRl9MT0NBTF9QLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oIChMRUdJVElNQVRFX1BJQ19PUEVSQU5EKTogTGlrZXdpc2UuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLm1kIChjYWxsLCBjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgoyMDA0LTA0LTI3ICBXdSBZb25nd2VpICA8YWRhaEBzaDE2My5uZXQ+CgoJKiBndGhyLXdpbjMyLmggKF9fZ3RocmVhZF9tdXRleF90KTogQ2hhbmdlIHR5cGVkZWYgdG8gbmV3IHN0cnVjdHVyZS4KCShfX0dUSFJFQURfTVVURVhfSU5JVF9ERUZBVUxUKTogQWRqdXN0LgoJKF9fZ3RocmVhZF9tdXRleF9pbml0X2Z1bmN0aW9uKTogUmVwbGFjZSBDcmVhdGVNdXRleCB3aXRoCglpbml0aWFsaXphdGlvbiBvZiBjdXN0b20gbXV0ZXggdXNpbmcgQ3JlYXRlU2VtYXBob3JlLgoJKF9fZ3RocmVhZF9tdXRleF9sb2NrKTogVXNlIEludGVybG9ja2VkSW5jcmVtZW50LgoJKF9fZ3RocmVhZF9tdXRleF90cnlsb2NrKTogVXNlIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlLgoJKF9fZ3RocmVhZF9tdXRleF91bmxvY2spOiBVc2UgSW50ZXJsb2NrZWREZWNyZW1lbnQgYW5kCglSZWxlYXNlU2VtYXBob3JlIHRvIHVubG9jawoJKiBjb25maWcvaTM4Ni9ndGhyLXdpbjMyLmMgKF9fZ3RocmVhZF9tdXRleF9pbml0X2Z1bmN0aW9uLAoJX19ndGhyZWFkX211dGV4X2xvY2ssIF9fZ3RocmVhZF9tdXRleF90cnlsb2NrLAoJX19ndGhyZWFkX211dGV4X3VubG9jayk6IEFkanVzdCB0byBtYXRjaCBpbmxpbmUgdmVyc2lvbnMgaW4KCWd0aHItd2luMzIuaC4KCjIwMDQtMDQtMjcgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fcHJvbW90ZV9wcm90b3R5cGVzKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOiBVc2UgaXQuCgoyMDA0LTA0LTI3ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2V4cGFuZF9lcGlsb2d1ZSk6IENvdW50IGJsb2NrcyBvZiA0IHJlZ3MuCgoyMDA0LTA0LTI2ICBCZXJuYXJkIEdpcm91ZCAgPGJnaXJvdWRAZnJlZS5mcj4KCgkqIGNvbmZpZy9hbHBoYS5jIChhbHBoYV9lbmRfZnVuY3Rpb24pOiBGb3IgT3BlblZNUyBnYXMsCgljb3JyZWN0bHkgb3V0cHV0IC5wZGVzYyBkaXJlY3RpdmUgYmVmb3JlIC5lbmQuCgoyMDA0LTA0LTI2ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJQnVnIDE0OTI3CgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdnhmKTogTmV3IGxvY2FsIG9wMC4gIEhhbmRsZSBjYXNlIHdoZXJlCglvcGVyYW5kc1swXSBpcyBhIFNVQlJFRy4gIEhhbmRsZSBjYXNlIHdoZXJlIG9wZXJhbmRzWzFdIGlzIGEgR1IgcmVnLgoKMjAwNC0wNC0yNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2hwdXguaDogUHJlZGVmaW5lIF9fU1REQ1BQX18gd2hlbiBjb21waWxpbmcgQysrLgoJKiBjb25maWcvcGEvcGEtaHB1eDEwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEtaHB1eDExLmg6IExpa2V3aXNlLgoKMjAwNC0wNC0yNiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKE92ZXJhbGwgT3B0aW9ucyk6IERvY3VtZW50IGRlZmF1bHQgZm9yIC1vCglmb3IgUENIIGZpbGVzLgoKMjAwNC0wNC0yNiAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3VwZGF0ZV9zZXRqbXBfYnVmKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluLCBjYXNlIEJVSUxUX0lOX1VQREFURV9TRVRKTVBfQlVGKTogTmV3IGNhc2UuCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fVVBEQVRFX1NFVEpNUF9CVUYpOiBOZXcgY29kZS4KCjIwMDQtMDQtMjYgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fbGVnaXRpbWF0ZV9pbmRleF9wKTogQ29ycmVjdCBpd21teHQgb2Zmc2V0cy4KCjIwMDQtMDQtMjYgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fbGVnaXRpbWF0ZV9pbmRleF9wKTogQ29ycmVjdCBtYXZlcmljayBvZmZzZXRzLgoKMjAwNC0wNC0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBQcmVmZXIgZm9sZF9jb252ZXJ0IChuZWdhdGVfZXhwciAoLi4uKSkgdG8KCWZvbGQgKGJ1aWxkMSAoTkVHQVRFX0VYUFIsIC4uLikpLiAgT3B0aW1pemUgWCAvIC0xIGFzIC1YIGFuZAoJWCAlIC0xIGFzIDAuCgoyMDA0LTA0LTI2ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJUFIgYm9vdHN0cmFwLzE1MTQxCgkqIGV4Y2VwdC5jIChjb25uZWN0X3Bvc3RfbGFuZGluZ19wYWRzKTogRGVsZXRlIGluc25zIGFmdGVyIHRoZQoJYmFycmllciB3aGVuIGdlbmVyYXRpbmcgYSB1bndpbmRfcmVzdW1lX2xpYmZ1bmMgY2FsbC4KCjIwMDQtMDQtMjUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJUFIvYysrIDE1MTE5CgkqIHRyZWUuYyAoc3Vic3RpdHV0ZV9wbGFjZWhvbGRlcl9pbl9leHByLCBjYXNlIDQpOiBOZXcgY2FzZSwKCWZvciBUQVJHRVRfRVhQUi4KCjIwMDQtMDQtMjUgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGdjb3YtaW8uaCAoX19nY292X2ZvcmssIF9fZ2Nvdl9leGVjbCwgX19nY292X2V4ZWNscCwgX19nY292X2V4ZWNsZSwKCV9fZ2Nvdl9leGVjdiwgX19nY292X2V4ZWN2cCwgX19nY292X2V4ZWN2ZSk6IERvIG5vdCBkZWNsYXJlIHdoZW4KCWluaGliaXRfbGliYyBpcyBkZWZpbmVkLgoKMjAwNC0wNC0yNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19saW5rZWRfbWFjY19wKTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChUVU5FX01BQ0NfQ0hBSU5TKTogTmV3IG1hY3JvLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKFRBUkdFVF9TQ0hFRF9SRU9SREVSKTogRGVmaW5lLgoJKFRBUkdFVF9TQ0hFRF9WQVJJQUJMRV9JU1NVRSk6IERlZmluZS4KCShtaXBzX2FkanVzdF9jb3N0KTogTW92ZSBsYXRlciBpbiBmaWxlLCBuZXh0IHRvIG90aGVyIHNjaGVkIGhvb2tzLgoJKG1pcHNfbWFjY19jaGFpbnNfbGFzdF9oaWxvKTogTmV3IHZhcmlhYmxlLgoJKG1pcHNfbGlua2VkX21hZGRfcCwgbWlwc19tYWNjX2NoYWluc19yZWNvcmQsIG1pcHNfbWFjY19jaGFpbnNfcmVvcmRlcikKCShtaXBzX3Byb21vdGVfcmVhZHksIG1pcHNfc2NoZWRfcmVvcmRlciwgbWlwc192YXJpYWJsZV9pc3N1ZSk6IE5ldy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAobWF5X2Nsb2JiZXJfaGlsbyk6IE5ldyBhdHRyaWJ1dGUuCgoyMDA0LTA0LTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGFpeF9zeXN3YWl0XzIpOiBOZXcgZml4LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zeXMvd2FpdC5oOiBVcGRhdGUgZm9yIG5ldyB0ZXN0LgoKMjAwNC0wNC0yNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMTQ5NjAKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3N0YWNrX2luZm8pOiBSZW5hbWUgdG90YWxfcmF3X3NpemUKCXRvIG5vbl9maXhlZF9zaXplLCBhbmQgbGVhdmUgb3V0IGZpeGVkX3NpemUgZnJvbSB0aGUgc3VtLgoJKGdlbmVyYXRlX3NldF92cnNhdmUpOiBDb3JyZWN0IGNsb2JiZXJzLgoJKHJzNjAwMF9lbWl0X2VwaWxvZ3VlKTogVGVzdCBUQVJHRVRfQUxUSVZFQyB3aXRoIFRBUkdFVF9BTFRJVkVDX1NBVkUuCgkocnM2MDAwX2Z1bmN0aW9uX3ZhbHVlKTogVGVzdCBUQVJHRVRfQUxUSVZFQyBhbmQgVEFSR0VUX0FMVElWRUNfQUJJLgoJKHJzNjAwMF9saWJjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEZVTkNUSU9OX1ZBTFVFX1JFR05PX1ApOiBMaWtld2lzZS4KCShGVU5DVElPTl9BUkdfUkVHTk9fUCk6IExpa2V3aXNlLgoKMjAwNC0wNC0yNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogZXhwbWVkLmMgKGV4cGFuZF9tdWx0X2hpZ2hwYXJ0X2FkanVzdCk6IERvIG5vdCBhc3N1bWUgT1AxCglpcyBhIENPTlNUX0lOVC4KCShleHBhbmRfbXVsdF9oaWdocGFydF9vcHRhYik6IENhbGwgZXhwYW5kX211bHRfaGlnaHBhcnRfYWRqdXN0Cgl3aXRoIE5BUlJPV19PUDEgaW5zdGVhZCBvZiBPUDEuCgoyMDA0LTA0LTI0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvaG9zdC1saW51eC5jIChUUllfRU1QVFlfVk1fU1BBQ0UpOiBEZWZpbmUgZm9yIF9fczM5MF9fCglhbmQgX19zMzkweF9fIGhvc3RzLgoKMjAwNC0wMy0yMyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogTWFrZWZpbGUuaW4gKExJQkdDT1YpOiBBZGQgX2djb3ZfZm9yaywgX2djb3ZfZXhlY2wsIF9nY292X2V4ZWNscCwKCV9nY292X2V4ZWNsZSwgX2djb3ZfZXhlY3YsIF9nY292X2V4ZWN2cCwgX2djb3ZfZXhlY3ZlLgoJKiBidWlsdGluLXR5cGVzLmRlZiAoQlRfUElELCBCVF9QVFJfQ09OU1RfU1RSSU5HLCBCVF9GTl9QSUQsCglCVF9GTl9JTlRfQ09OU1RfU1RSSU5HX1BUUl9DT05TVF9TVFJJTkcsCglCVF9GTl9JTlRfQ09OU1RfU1RSSU5HX1BUUl9DT05TVF9TVFJJTkdfUFRSX0NPTlNUX1NUUklORyk6IE5ldy4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZm9ya19vcl9leGVjKTogTmV3LgoJKGV4cGFuZF9idWlsdGluKTogQ2FsbCBpdC4KCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9FWEVDTCwgQlVJTFRfSU5fRVhFQ0xQLEJVSUxUX0lOX0VYRUNMRSwKCUJVSUxUX0lOX0VYRUNWLCBCVUlMVF9JTl9FWEVDVlAsIEJVSUxUX0lOX0VYRUNWRSwgQlVJTFRfSU5fRk9SSyk6IE5ldy4KCSogYy1jb21tb24uYyAoUElEX1RZUEUpOiBOZXcgbWFjcm8uCgkoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogSW5pdGlhbGl6ZSBwaWRfdHlwZV9ub2RlLgoJKiBjYWxscy5jIChzcGVjaWFsX2Z1bmN0aW9uX3ApOiBEbyBub3QgaGFuZGxlIGZvcmsgYW5kIGV4ZWMuCgkoZXhwYW5kX2NhbGwpOiBEbyBub3QgaGFuZGxlIEVDRl9GT1JLX09SX0VYRUMuCgkqIGdjb3YtaW8uaCAoX19nY292X2ZvcmssIF9fZ2Nvdl9leGVjbCwgX19nY292X2V4ZWNscCwgX19nY292X2V4ZWNsZSwKCV9fZ2Nvdl9leGVjdiwgX19nY292X2V4ZWN2cCwgX19nY292X2V4ZWN2ZSk6IERlY2xhcmUuCgkqIGxpYmdjb3YuYyAoX19nY292X2ZvcmssIF9fZ2Nvdl9leGVjbCwgX19nY292X2V4ZWNscCwgX19nY292X2V4ZWNsZSwKCV9fZ2Nvdl9leGVjdiwgX19nY292X2V4ZWN2cCwgX19nY292X2V4ZWN2ZSk6IE5ldy4KCSogdHJlZS5oIChlbnVtIHRyZWVfaW5kZXgpOiBBZGQgVElfUElEX1RZUEUuCgkocGlkX3R5cGVfbm9kZSk6IE5ldyBtYWNyby4KCShFQ0ZfRk9SS19PUl9FWEVDKTogUmVtb3ZlZC4KCjIwMDQtMDQtMjMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzEzOTg1CgkqIGNmZ2xvb3BtYW5pcC5jIChmaXhfbG9vcF9wbGFjZW1lbnRzKTogTmV3IHByb3RvdHlwZS4KCUNhbGwgZml4X2JiX3BsYWNlbWVudHMgb24gdGhlIHByZWhlYWRlciBvZiBsb29wcyB0aGF0IGhhdmUKCWJlZW4gcmVwYXJlbnRlZC4KCShyZW1vdmVfcGF0aCk6IEFkanVzdCBjYWxsIHRvIGZpeF9sb29wX3BsYWNlbWVudHMuCgoyMDA0LTA0LTIzICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGNvbmZpZy9kYXJ3aW43Lmg6IE5ldyBmaWxlLgoJKiBjb25maWcuZ2NjICgqLSotZGFyd2luKik6IEFkZCBkYXJ3aW43LmggaWYgdGhlCgl2ZXJzaW9uIGlzIGdyZWF0ZXIgdGhhbiA2LgoJKiBjb25maWcvZGFyd2luLmggKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogRGVmaW5lLgoJKE1BVEhfTElCUkFSWSk6IFdyYXAgaW4gaWZkZWZzLgoKMjAwNC0wNC0yMyAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fb3V0cHV0X2VwaWxvZ3VlKTogUmV2ZXJzZSB0aGUgb3JkZXIgb2YKCWxvYWRpbmcgaVdNTVh0IHJlZ2lzdGVycyB3aXRoIGEgZnJhbWUgcG9pbnRlci4gIFVzZSBwb3N0LWluY3JlbWVudAoJd2l0aG91dCBhIGZyYW1lIHBvaW50ZXIuCgkoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IFJldmVyc2UgdGhlIG9yZGVyIG9mIHNhdmluZyBpV01NWHQgcmVnaXN0ZXJzLgoKMjAwNC0wNC0yMyAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW1pemUgT3B0aW9ucyk6IFJlZmVyIHRvICJ1bml0LWF0LWEtdGltZQoJbW9kZSIgcmF0aGVyIHRoYW4gIi1mdW5pdC1hdC1hLXRpbWUiIHNpbmNlIC1PMiBlbmFibGVzIGl0Cgl3aXRob3V0IHJlcXVpcmluZyAtZiogb3B0aW9ucy4JUmVmZXIgdG8gLWZwcm9maWxlLWdlbmVyYXRlIGFuZAoJLWZwcm9maWxlLXVzZSBjb3JyZWN0bHkuICBNb3ZlIC1mdW5pdC1hdC1hLXRpbWUgYW1vbmcgb3B0aW9ucwoJZW5hYmxlZCBieSAtTy4JQWRkIGluZm9ybWF0aW9uIGFib3V0IHVuaXQtYXQtYS10aW1lIGNhdmVhdHMuCgoyMDA0LTA0LTIyICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGxpbmUtbWFwLmggKHN0cnVjdCBsaW5lX21hcHMpOiBOZXcgZmllbGQgaGlnaGVzdF9saW5lLgoJKGxpbmVtYXBfcG9zaXRpb25fZm9yX2NvbHVtbik6IE1ha2Ugbm9uLWlubGluZSBmdW5jdGlvbi4KCShMSU5FTUFQX1BPU0lUSU9OX0ZPUl9DT0xVTU4pOiBOZXcgbWFjcm8uCgkqIGxpbmUtbWFwLmMgKGxpbmVtYXBfaW5pdCk6IENsZWFyIGhpZ2hlc3RfbGluZSBmaWVsZC4KCShsaW5lbWFwX2FkZCk6IFNldCBoaWdoZXN0X2xpbmUgZmllbGQuCgkobGluZW1hcF9saW5lX3N0YXJ0KTogTWlub3Igb3B0aW1pemF0aW9uIC0gdXNlIGhpZ2hlc3RfbGluZSBmaWVsZC4KCVJlZHVjZSBtYXhpbXVtIGNvbHVtbiBoaW50IHRvIDEwMDAwLiAgVXBkYXRlIGhpZ2hlc3RfbGluZSBmaWVsZC4KCShsaW5lbWFwX3Bvc2l0aW9uX2Zvcl9jb2x1bW4pOiBNb3ZlZCBmcm9tIGxpbmUtbWFwLmguICBPcHRpbWl6ZSBhIGJpdC4KCSogY3BwaGFzaC5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IFJlbW92ZSBsaW5lIGZpZWxkIC0gaW5zdGVhZCB1c2UKCWxpbmVfdGFibGUtPmhpZ2hlc3RfbGluZS4KCShzYXZlZF9saW5lKTogUmVtb3ZlIHVudXNlZCBmaWVsZC4KCShDUFBfSU5DUkVNRU5UX0ZJTEUpOiBEb24ndCBkbyBsaW5lbWFwX2xvb2t1cCAtIGp1c3QgdXNlIG5ld2VzdCBtYXAuCglVc2UgIGxpbmVfdGFibGUncyBoaWdoZXN0X2xpbmUgZmllbGQgaW5zdGVhZCBvZiBjcHBfcmVhZGVyJ3MgbGluZS4KCSogY3BwbGliLmMgKHN0YXJ0X2RpcmVjdGl2ZSk6IExpa2V3aXNlIHVzZSBoaWdoZXN0X2xpbmUgZmllbGQuCgkoZG9fbGluZSwgZG9fbGluZW1hcmtlcik6IExpa2V3aXNlIGp1c3QgdXNlIG5ld2VzdCBtYXAuCgkoX2NwcF9kb19maWxlX2NoYW5nZSk6IERvbid0IG5lZWQgdG8gc2V0IGNwcF9yZWFkZXIncyBsaW5lIGZpZWxkLgoJKiBjcHBlcnJvci5jIChjcHBfZXJyb3IpOiBMaWtld2lzZSB1c2UgaGlnaGVzdF9saW5lIGZpZWxkLgoJKiBjcHBmaWxlcy5jIChvcGVuX2ZpbGVfZmFpbGVkOiBMaWtld2lzZS4KCShjcHBfbWFrZV9zeXN0ZW1faGVhZGVyKTogTGlrZXdpc2UgdXNlIG5ld2VzdCBtYXAgYW5kIGhpZ2hlc3RfbGluZS4KCSogY3BwaW5pdC5jIChjcHBfY3JlYXRlX3JlYWRlcik6IERvbid0IGluaXRpYWxpemUgcmVtb3ZlZCBmaWVsZC4KCSogY3BwbGV4LmMgKF9jcHBfcHJvY2Vzc19saW5lX25vdGVzLCBfY3BwX3NraXBfYmxvY2tfY29tbWVudCwKCXNraXBfbGluZV9jb21tZW50LCBza2lwX3doaXRlc3BhY2UsIF9jcHBfZ2V0X2ZyZXNoX2xpbmUsCglfY3BwX2xleF9kaXJlY3QpOiBMaWtld2lzZSB1c2UgaGlnaGVzdF9saW5lLgoJKF9jcHBfbGV4X2RpcmVjdCk6IFVzZSBuZXcgTElORU1BUF9QT1NJVElPTl9GT1JfQ09MVU1OIG1hY3JvLgoJKiBjcHBtYWNyby5jIChfY3BwX2J1aWx0aW5fbWFjcm9fdGV4dCk6IExpa2V3aXNlIHVzZSBoaWdoZXN0X2xpbmUsCglhbmQgdXNlIG5ld2VzdCBtYXAuCgkqIGNwcHBjaC5jIChjcHBfcmVhZF9zdGF0ZSk6IERvbid0IHNhdmUrcmVzdG9yZSBjcHBfcmVhZGVyJ3MgbGluZS4KCSogY3BwdHJhZC5jIChfY3BwX292ZXJsYXlfYnVmZmVyKTogRG9uJ3Qgc2F2ZSBjcHBfcmVhZGVyJ3MgbGluZS4KCShjb3B5X2NvbW1lbnQsIF9jcHBfc2Nhbl9vdXRfbG9naWNhbF9saW5lKTogTGlrZXdpc2UgdXNlIGhpZ2hlc3RfbGluZS4KCjIwMDQtMDQtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgYm9vdHN0cmFwLzE0OTkyCgkqIGdjYy5jIChpbml0X2djY19zcGVjcyk6IFRlc3QgVVNFX0xEX0FTX05FRURFRCwgbm90IEhBVkVfTERfQVNfTkVFREVELgoJKiBjb25maWcvbGludXguaCAoVVNFX0xEX0FTX05FRURFRCk6IERlZmluZS4KCSogY29uZmlnL2FscGhhL2xpbnV4LmggKFVTRV9MRF9BU19ORUVERUQpOiBEZWZpbmUuCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKFVTRV9MRF9BU19ORUVERUQpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvbGludXguaCAoVVNFX0xEX0FTX05FRURFRCk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKFVTRV9MRF9BU19ORUVERUQpOiBEZWZpbmUuCgkqIGNvbmZpZy9zaC9saW51eC5oIChVU0VfTERfQVNfTkVFREVEKTogRGVmaW5lLgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoVVNFX0xEX0FTX05FRURFRCk6IERlZmluZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoVVNFX0xEX0FTX05FRURFRCk6IERlZmluZS4KCjIwMDQtMDQtMjIgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogY3BwaW5pdC5jIChjcHBfcmVhZF9tYWluX2ZpbGUpOiBSZXR1cm4gTlVMTCByYXRoZXIgdGhhbiBmYWxzZS4KCUZpeGVzIFBSIHByZXByb2Nlc3Nvci8xNTA2Ny4KCjIwMDQtMDQtMjMgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvaWE2NC9pYTY0aW50cmluLmg6IEFkZCBpbnRlcm1lZGlhdGUgY2FzdCB0byB2b2lkICogdG8KCWF2b2lkIGFsaWFzaW5nIHdhcm5pbmcuCgoyMDA0LTA0LTIyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkgICAgTW9zdGFmYSBIYWdvZyA8bXVzdGFmYUBpbC5pYm0uY29tPgoKCSogY2ZnbG9vcG1hbmlwLmMgKHNjYWxlX2Jic19mcmVxdWVuY2llcyk6IFVzZSBSRElWIG1hY3JvCgkqIGNmZ2xvb3BhbmFsLmMgKGV4cGVjdGVkX2xvb3BfaXRlcmF0aW9ucyk6IENoYW5nZSB0aGUgcmV0dXJuIHZhbHVlCgoyMDA0LTA0LTIyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNzZWxpYi5oIChzdHJ1Y3QgZWx0X2xvY19saXN0KTogUmVtb3ZlIGNhbm9uX2xvYyBmaWVsZC4KCSogY3NlbGliLmMgKG5ld19lbHRfbG9jX2xpc3QpOiBSZW1vdmUgY2Fub25fbG9jIGluaXRpYWxpemF0aW9uLgoJKGNzZWxpYl9pbnZhbGlkYXRlX21lbSk6IFJlbW92ZSBhbGwgY2Fub25fbG9jIGFuZCBjYW5vbl94Cgl0cmFjZXMuCgoyMDA0LTA0LTIyICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJUmV2ZXJ0CgkyMDA0LTA0LTIwICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJCSogdmFyLXRyYWNraW5nLmMgKHZhcmlhYmxlX3BhcnRfZGlmZmVyZW50X3ApOiBWYXJpYWJsZSBwYXJ0cwoJCWRpZmZlciB3aGVuIHRoZSBtb3N0IHJlY2VudCBsb2NhdGlvbnMgZGlmZmVyLgoKMjAwNC0wNC0yMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBSZW1vdmUgdGhlIE1JUFMgLW1lbWJlZGRlZC1waWMgb3B0aW9uLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChlbWJlZGRlZF9waWNfZm5hZGRyX3JlZyk6IERlbGV0ZS4KCShlbWJlZGRlZF9waWNfb2Zmc2V0KTogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1BU0tfRU1CRURERURfUElDKTogRGVsZXRlLiAgU2h1ZmZsZSBvdGhlcgoJTUFTS18qIGNvbnN0YW50cy4KCShUQVJHRVRfRU1CRURERURfUElDKTogRGVsZXRlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSAtbXtuby0sfWVtYmVkZGVkLXBpYy4KCShBU01fU1BFQyk6IFJlbW92ZSAtbWVtYmVkZGVkLXBpYy4KCShBU01fT1VUUFVUX0FERFJfRElGRl9FTFQpOiBSZW1vdmUgZW1iZWRkZWQtcGljIGhhbmRsaW5nLgoJKEFTTV9PVVRQVVRfQ0FTRV9MQUJFTCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy92eHdvcmtzLmggKEFTTV9TUEVDKTogUmVtb3ZlIC1tZW1iZWRkZWQtcGljLgoJKiBjb25maWcvbWlwcy93aW5kaXNzLmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBSZW1vdmUKCWVtYmVkZGVkX3BpY19mbmFkZHJfcnR4LgoJKFRBUkdFVF9FTkNPREVfU0VDVElPTl9JTkZPKTogUmVtb3ZlIG92ZXJyaWRlLgoJKGVtYmVkZGVkX3BpY19mbmFkZHJfcmVnLCBlbWJlZGRlZF9waWNfb2Zmc2V0KTogRGVsZXRlLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBSZW1vdmUgLW1lbWJlZGRlZC1waWMgaGFuZGxpbmcuCgkocHJpbnRfb3BlcmFuZCk6IFJlbW92ZSBoYW5kbGluZyBvZiAnJVMnLgoJKG1pcHNfc2VsZWN0X3NlY3Rpb246IFJlbW92ZSAtbWVtYmVkZGVkLXBpYyBoYW5kbGluZy4KCShtaXBzX2VuY29kZV9zZWN0aW9uX2luZm8pOiBEZWxldGUuCgkobWlwc19vdXRwdXRfY29uZGl0aW9uYWxfYnJhbmNoKTogUmVtb3ZlIG1lbnRpb24gb2YgLW1lbWJlZGRlZC1waWMuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGRlZmluZV9hdHRyIGxlbmd0aCwgbW92c2ksIG1vdmRpLCBqdW1wKTogUmVtb3ZlCgktbWVtYmVkZGVkLXBpYyBoYW5kbGluZy4KCShjYXNlc2ksIGNhc2VzaV9pbnRlcm5hbCwgY2FzZXNpX2ludGVybmFsX2RpLCBnZXRfZm5hZGRyKTogRGVsZXRlLgoKMjAwNC0wNC0yMiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIHZhci10cmFja2luZy5jIChmcmFtZV9iYXNlX2RlY2wpOiBSZW1vdmUgdXNlbGVzcyBHVFkuCgoyMDA0LTA0LTIxICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEVycm9yIHdoZW4KCXVzZXIgd2FudHMgYWx0aXZlYyBhbmQgZTUwMCBpbnN0cnVjdGlvbnMuCgoyMDA0LTA0LTIxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgdGFyZ2V0LzE0ODEzCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc206IE1vdmUgcG9pbnRlciB0byBfX2RvX2dsb2JhbF9jdG9yc19hdXgKCWluIC5pbml0X2FycmF5IHNlY3Rpb24gdG8gLi4uCgkqIGNvbmZpZy9pYTY0L2NydGJlZ2luLmFzbTogSGVyZS4KCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc206IE1hcmsgX19kb19nbG9iYWxfY3RvcnNfYXV4IGdsb2JhbAoJYW5kIGhpZGRlbiBpZiBIQVZFX0lOSVRGSU5JX0FSUkFZIGlzIGRlZmluZWQuCgoyMDA0LTA0LTIxICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChmcF9yZWdpc3Rlcl9vcGVyYW5kLCBsb19vcGVyYW5kKTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX211bHRpcGFzc19kZmFfbG9va2FoZWFkKTogRGVjbGFyZS4KCShUQVJHRVRfU0NIRURfRklSU1RfQ1lDTEVfTVVMVElQQVNTX0RGQV9MT09LQUhFQUQpOiBOZXcuCgkoZnBfcmVnaXN0ZXJfb3BlcmFuZCwgbG9fb3BlcmFuZCk6IE5ldy4KCShtaXBzX3J0eF9jb3N0cyk6IEFkZCBUVU5FX1NCMSBzdXBwb3J0LgoJKG1pcHNfaXNzdWVfcmF0ZSk6IEFkZCBjb21tZW50LiAgQWRkIFBST0NFU1NPUl9TQjEgc3VwcG9ydC4KCShtaXBzX3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlKTogQWRkIFBST0NFU1NPUl9TQjEgc3VwcG9ydC4KCShtaXBzX211bHRpcGFzc19kZmFfbG9va2FoZWFkKTogTmV3LgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1BU0tfRlBfRVhDRVBUSU9OUywgVEFSR0VUX0ZQX0VYQ0VQVElPTlMsCglUVU5FX1NCMSk6IE5ldy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1mcC1leGNlcHRpb25zIHN1cHBvcnQuCgkoVEFSR0VUX0ZQX0VYQ0VQVElPTlNfREVGQVVMVCk6IE5ldy4KCShCUkFOQ0hfQ09TVCk6IEZpeCB3aGl0ZXNwYWNlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBJbmNsdWRlIHNiMS5tZC4KCSogY29uZmlnL21pcHMvc2IxLm1kOiBOZXcgZmlsZS4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbWZwLWV4Y2VwdGlvbnMuCgoJKiBNYWtlZmlsZS5pbiAoZml4aW5jLnNoKTogRG9uJ3Qgc2V0IG9yIGV4cG9ydCBXQVJOX0NGTEFHUy4gIEZpeAoJY29tbWVudC4KCSogZml4aW5jL01ha2VmaWxlLmluIChGTF9MSVNUKTogRG9uJ3QgbWVudGlvbiBXQVJOX0NGTEFHUy4KCShmaXhpbmNsLm8td2Fybik6IERlbGV0ZS4KCjIwMDQtMDQtMjEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAgKHByaW50X29wZXJhbmQpIFsneiddOgoJQ2hhbmdlIGlmZGVmIG9mIFRBUkdFVF9NQUNITyB0byBpZiBUQVJHRVRfTUFDSE8uCgoyMDA0LTA0LTIxIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogY29uZmlnLmdjYzogU3VwcG9ydCAtLXdpdGgtYXJjaD1pd21teHQgZm9yIEFSTS4KCjIwMDQtMDQtMjEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHBtZWQuYyAoZXhwYW5kX211bHRfaGlnaHBhcnRfb3B0YWIpOiBVc2UgbmFycm93ZXIgdmVyc2lvbiBvZiBPUDEKCWluIHR3byBtb3JlIHBsYWNlczsgcmVtb3ZlIHVubmVlZGVkIGZvcmNlX3JlZwoKMjAwNC0wNC0yMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChzeW1ib2xfcmVmX29wZXJhbmQpOiBSZW1vdmUgaGFjawoJZm9yIFRBUkdFVF9NQUNITy4KCShwcmludF9vcGVyYW5kKTogRm9yIFRBUkdFVF9NQUNITyBjaGVjayB0byBzZWUgaWYgd2UgbmVlZCBhIHN0dWIKCWFuZCBvdXRwdXQgb25lIGlmIHdlIG5lZWQgaXQuCgoJUFIgZGVidWcvMTUwMzMKCSogZHdhcmYyb3V0LmMgKHJ0bF9mb3JfZGVjbF9sb2NhdGlvbik6IENoZWNrIGZvciBOVUxMCglydGwuCgoyMDA0LTA0LTIwICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChjYWxsX3ZhbHVlX25vZ3ApOiBBZGQgY29uc3RyYWludHMgZm9yIG9wMC4KCSh2YWxsX3ZhbHVlX2dwKTogTGlrZXdpc2UuCgoyMDA0LTA0LTIwICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChydGxfZm9yX2RlY2xfbG9jYXRpb24pOiBBZGp1c3QgcnRsIGZvciBieXRlCgl2YXJpYWJsZXMgc3RvcmVkIGluIHdvcmQgcmVnaXN0ZXJzLCB0aGVuIGluIG1lbW9yeS4KCjIwMDQtMDQtMjAgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY3AvcGFyc2VyLmMgKGNwX3BhcnNlcl9kZWNsYXJhdGlvbik6IE1vdmUgdHJhbnNsYXRlCgl1cCBiZWZvcmUgdG9rZW5zIGFyZSBsZXhlZC4KCjIwMDQtMDQtMjAgIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIG9wdGFicy5oIChlbnVtIG9wdGFiX2luZGV4KTogQWRkIG5ldyBPVElfYXNpbiBhbmQgT1RJX2Fjb3MuCgkoYXNpbl9vcHRhYiwgYWNvc19vcHRhYik6IERlZmluZSBjb3JyZXNwb25kaW5nIG1hY3Jvcy4KCSogb3B0YWJzLmMgKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSBhc2luX29wdGFiIGFuZCBhY29zX29wdGFiLgoJKiBnZW5vcGluaXQuYyAob3B0YWJzKTogSW1wbGVtZW50IGFzaW5fb3B0YWIgYW5kIGFjb3Nfb3B0YWIKCXVzaW5nIGFzaW4/ZjIgYW5kIGFjb3M/ZjIgcGF0dGVybnMuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6IEhhbmRsZSBCVUlMVF9JTl9BU0lOeyxGLEx9Cgl1c2luZyBhc2luX29wdGFiLCBhbmQgQlVJTFRfSU5fQUNPU3ssRixMfSB1c2luZyBhY29zX29wdGFiLgoJKGV4cGFuZF9idWlsdGluKTogRXhwYW5kIEJVSUxUX0lOX0FTSU57LEYsTH0gYW5kIEJVSUxUX0lOX0FDT1N7LEYsTH0KCXVzaW5nIGV4cGFuZF9idWlsdGluX21hdGhmbiBpZiBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgaXMgc2V0LgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoYXNpbmRmMiwgYXNpbnNmMiwgYXNpbnhmMiwgYWNvc2RmMiwKCWFjb3NzZjIsIGFjb3N4ZjIpOiBOZXcgZXhwYW5kZXJzIHRvIGltcGxlbWVudCBhc2luLCBhc2luZiwgYXNpbmwsCglhY29zLCBhY29zZiBhbmQgYWNvc2wgYnVpbHQtaW5zIGFzIGlubGluZSB4ODcgaW50cmluc2ljcy4KCjIwMDQtMDQtMjAgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBVc2UgcnR4X2VxdWFsX3AuCgoyMDA0LTA0LTIwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IEZpeCBzaXplIGNhbGN1bGF0aW9uLgoKMjAwNC0wNC0yMCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglSZXZlcnQgcGFydCBvZiAyMDA0LTA0LTE3IGNoYW5nZSB0aGF0IG1vdmVkIC1mcmVuYW1lLXJlZ2lzdGVycwoJdG8gLU8xLiAgLWZyZW5hbWUtcmVnaXN0ZXJzIGlzIGJ1Z2d5LgoKCSogdG9wbGV2LmMgKGZsYWdfcmVuYW1lX3JlZ2lzdGVycyk6IEluaXRpYWxpemUgdG8gMC4KCSogZG9jL2ludm9rZS50ZXhpIChPcHRpbWl6ZSBvcHRpb25zKTogTW92ZSAtZnJlbmFtZS1yZWdpc3RlcnMKCXRvICJOb3QgdHJpZ2dlcmVkIGJ5IGFueSAtTyBsZXZlbCIgc2VjdGlvbi4gIEFkanVzdCBjb21tZW50YXJ5CglhY2NvcmRpbmdseS4KCjIwMDQtMDQtMjAgIEFuaWwgUGFyYW5qcGUgPGFuaWxwMUBrcGl0Y3VtbWlucy5jb20+CgoJKiB0b3BsZXYuYyAoY29tcGlsZV9maWxlKTogTW92ZSB0YXJnZXRtLmFzbV9vdXQuZmlsZV9lbmQgY2FsbCB0byBlbmQuCgoyMDA0LTA0LTIwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfbGVnaXRpbWl6ZV9tb3ZlKTogR2VuZXJhdGUgc3BlY2lhbCBwYXR0ZXJucwoJZm9yIG1mbG8gYW5kIG1maGkgaW5zdHJ1Y3Rpb25zLgoJKG1pcHNfb3V0cHV0X21vdmUpOiBSZW1vdmUgbWZsbyBhbmQgbWZoaSBoYW5kbGluZy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoVU5TUEVDX01GSElMTyk6IE5ldyB1bnNwZWMuCgkoKm11bHNpZGkzXzY0Yml0KTogVXBkYXRlIGZvciBuZXcgbWZoaS9tZmxvIHJlcHJlc2VudGF0aW9uLgoJTGlrZXdpc2UgdmFyaW91cyBkZWZpbmVfcGVlcGhvbGUycy4KCSgqbW92ZGlfMzJiaXQsICptb3ZkaV82NGJpdCwgKm1vdnNpX2ludGVybmFsKTogTWVyZ2UgeDwtSiBhbmQgeDwtZAoJYWx0ZXJuYXRpdmVzLgoJKCptb3ZkaV82NGJpdCwgKm1vdmRpXzY0Yml0X21pcHMxNiwgKm1vdltzaHFdaV9pbnRlcm5hbCkKCSgqbW92W3NocV1pX21pcHMxNik6IFJlbW92ZSBtZmxvIGFuZCBtZmhpIGFsdGVybmF0aXZlcy4KCShtZmhpbG9fZGksIG1maGlsb19zaSk6IE5ldyBwYXR0ZXJucy4KCjIwMDQtMDQtMjAgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IEZvcmNlCglNRU1fRVhQUiAoREVDTF9JTkNPTUlOR19SVEwgKHBhcm0pKSA9PSBwYXJtLgoKMjAwNC0wNC0yMCAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogdmFyLXRyYWNraW5nLmMgKHZhcmlhYmxlX3BhcnRfZGlmZmVyZW50X3ApOiBWYXJpYWJsZSBwYXJ0cyBkaWZmZXIKCXdoZW4gdGhlIG1vc3QgcmVjZW50IGxvY2F0aW9ucyBkaWZmZXIuCgoyMDA0LTA0LTE5ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBydGwuaCAocmVnX3NldF9sYXN0KTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKiBydGxhbmFsLmMgKHJlZ19zZXRfbGFzdCk6IERlbGV0ZS4KCjIwMDQtMDQtMTkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbnZlcnQpOiBNYWtlIGZ1bmN0aW9uIGV4dGVybi9wdWJsaWMuCgkqIHRyZWUuaCAoZm9sZF9jb252ZXJ0KTogUHJvdG90eXBlIGhlcmUuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cnN0ciwgZXhwYW5kX2J1aWx0aW5fc3RyY2hyLAoJZXhwYW5kX2J1aWx0aW5fc3RycmNociwgZXhwYW5kX2J1aWx0aW5fc3RycGJyaywKCWV4cGFuZF9idWlsdGluX21lbXBjcHksIGV4cGFuZF9idWlsdGluX2Jjb3B5LAoJZXhwYW5kX2J1aWx0aW5fYnplcm8sIGV4cGFuZF9idWlsdGluX21lbWNtcCwKCWV4cGFuZF9idWlsdGluX3N0cmNtcCwgZXhwYW5kX2J1aWx0aW5fc3RybmNtcCwKCXN0YWJpbGl6ZV92YV9saXN0LCBleHBhbmRfYnVpbHRpbl9zcHJpbnRmLAoJZm9sZF90cnVuY190cmFuc3BhcmVudF9tYXRoZm4sIGZvbGRfYnVpbHRpbl9sb2dhcml0aG0sCglmb2xkX2J1aWx0aW5fZXhwb25lbnQsIGZvbGRfYnVpbHRpbl9tZW1wY3B5LAoJZm9sZF9idWlsdGluX3N0cmNweSwgZm9sZF9idWlsdGluX3N0cmNtcCwgZm9sZF9idWlsdGluX3N0cm5jbXAsCglmb2xkX2J1aWx0aW5fc2lnbmJpdCwgZm9sZF9idWlsdGluX2lzZGlnaXQsIGZvbGRfYnVpbHRpbik6IFByZWZlcgoJZm9sZF9jb252ZXJ0IHRvICJjb252ZXJ0IiBvciAiZm9sZCAoYnVpbGQxIChOT1BfRVhQUiwgLi4uKSkiLgoKMjAwNC0wNC0xOSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKFVOU1BFQ19NVl9DUl9HVCk6IE5ldyBjb25zdGFudC4KCShtb3ZlX2Zyb21fQ1JfZ3RfYml0KTogTmV3LgoJKGNjZXFfaW9yX2NvbXBhcmUpOiBOYW1lIHByZXZpb3VzbHkgdW5uYW1lZCBwYXR0ZXJuLiAgRGlzYWJsZSBmb3IKCUU1MDAuCgkoY2NlcV9yZXZfY29tcGFyZSk6IE5hbWUgcHJldmlvdXNseSB1bm5hbWVkIHBhdHRlcm4uICBBbGxvdyBmb3IKCUU1MDAuCgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAoY21wc2ZlcV9ncHIpOiBSZXdyaXRlIGFzIHVuc3BlYy4KCSh0c3RzZmVxX2dwcik6IFNhbWUuCgkoY21wc2ZndF9ncHIpOiBTYW1lLgoJKHRzdHNmZ3RfZ3ByKTogU2FtZS4KCShjbXBzZmx0X2dwcik6IFNhbWUuCgkodHN0c2ZsdF9ncHIpOiBTYW1lLgoJKGU1MDBfY2NlcV9pb3JfY29tcGFyZSk6IE5ldy4KCShlNTAwX2ZsaXBfZ3RfYml0KTogTmV3LgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoY2NyX2JpdCk6IFJlbW92ZSBFNTAwIHNwZWNpZmljIGNvZGUuCgkocHJpbnRfb3BlcmFuZCk6IEFkZCAnYycgYW5kICdEJy4KCShyczYwMDBfZ2VuZXJhdGVfY29tcGFyZSk6IFJld3JpdGUgdG8gZ2VuZXJhdGUgY29ycmVjdCBydGwuCgkocnM2MDAwX2VtaXRfc0NPTkQpOiBIYW5kbGUgRTUwMC4KCShvdXRwdXRfY2JyYW5jaCk6IEFkanVzdCBmb3IgY2hhbmdlcyBpbiByczYwMDBfZ2VuZXJhdGVfY29tcGFyZS4KCShvdXRwdXRfZTUwMF9mbGlwX2d0X2JpdCk6IE5ldy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChvdXRwdXRfZTUwMF9mbGlwX2d0X2JpdCk6CglQcm90b2l6ZS4KCjIwMDQtMDQtMTkgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChEV0FSRjJfQUREUl9TSVpFKTogTmV3LgoKMjAwNC0wNC0xOSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aSAoKi1pYm0tYWl4Kik6IEFkZCBBSVggNS4xIGFzc2VtYmxlciBhbmQgYXJjaGl2ZXIKCWZpeCBpbmZvcm1hdGlvbi4KCjIwMDQtMDQtMTkgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogZG9jL2luc3RhbGwudGV4aSAoU3BlY2lmaWMsIG1pcHMtc2dpLWlyaXg1KTogRml4IElSSVggNS4zIElETwoJZG93bmxvYWQgVVJMLgoKMjAwNC0wNC0xOSAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IENoZWNrIERFQ0xfUEFDS0VEIGJlZm9yZSBjYWxsaW5nCglBREpVU1RfRklFTERfQUxJR04uICBDaGVjayBtYXhpbXVtX2ZpZWxkX2FsaWdubWVudCBhZnRlci4KCjIwMDQtMDQtMTkgIEFuZHJldyBQSW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2NhYnMpOiBSZW1vdmUgZm5kZWNsIHBhcmFtZXRlci4KCShmb2xkX2J1aWx0aW4pOiBVcGRhdGUgY2FsbGVyIHRvIG1hdGNoLgoKCVBSIGJvb3RzdHJhcC8xNTAwOQoJKiBiYi1yZW9yZGVyLmMgKGZpeF91cF9mYWxsX3RocnVfZWRnZXMpOiBJbml0IGNvbmRfanVtcC4KCglQUiBib290c3RyYXAvMTQ5OTkKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2NhYnMpOiBNYXJrIGZuZGVjbCBhcyB1bnVzZWQuCgoyMDA0LTA0LTE5ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdmFyYXNtLmMgKGNvbXBhcmVfY29uc3RhbnQsIGNhc2UgVklFV19DT05WRVJUX0VYUFIpOiBBZGQgY2FzZS4KCgkqIGV4cG1lZC5jIChleHBhbmRfbXVsdF9oaWdocGFydF9hZGp1c3QpOiBNYWtlIE9QMSB2YWxpZCBmb3IgTU9ERS4KCShleHBhbmRfbXVsdF9oaWdocGFydF9vcHRhYik6IExpa2V3aXNlLgoJKGV4cGFuZF9tdWx0X2hpZ2hwYXJ0KTogTWFrZSBPUDEgdmFsaWQgZm9yIFdJREVSX01PREUsIG5vdCBNT0RFLgoKMjAwNC0wNC0xOSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChmaXh1bnNfdHJ1bmNzZnNpMiwgZml4dW5zX3RydW5jZGZzaTIsCglmbG9hdHVuc3Npc2YyLCBmbG9hdHVuc3NpZGYyKTogTmV3IHBhdHRlcm5zLgoKMjAwNC0wNC0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBvdGhlci8xNDkxOAoJKiBkb2MvaW52b2tlLnRleGkgKC1mcHJvZmlsZS1nZW5lcmF0ZSk6IERvY3VtZW50IHJlcXVpcmVtZW50IHRvCgl1c2UgLWZwcm9maWxlLWdlbmVyYXRlIHdoZW4gbGlua2luZy4KCgkqIGRvYy9leHRlbmQudGV4aSAoU3Ryb25nIFVzaW5nKTogV2FybiB1c2VycyBhZ2FpbnN0IHVzaW5nIHRoaXMKCWZlYXR1cmUuCgoyMDA0LTA0LTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtMTZfdXN5bThfNCwgbTE2X3VzeW01XzQpOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAobWlwc19lbnRyeSwgbWlwc19zdHJpbmdfbGVuZ3RoKTogRGVsZXRlLgoJKENPTlNUQU5UX1BPT0xfQkVGT1JFX0ZVTkNUSU9OLCBBU01fT1VUUFVUX1BPT0xfRVBJTE9HVUUpOiBVbmRlZmluZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChzdHJ1Y3QgbWlwczE2X2NvbnN0YW50KTogUmVuYW1lZCBmcm9tIHN0cnVjdAoJY29uc3RhbnQuICBQcm9wb2dhdGUgY2hhbmdlIHRocm91Z2hvdXQgZmlsZS4KCShzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IFJlbW92ZSBpbnNuc19sZW4uCgkobWlwc19zdHJpbmdfbGVuZ3RoLCBtaXBzMTZfc3RyaW5ncywgc3RyaW5nX2NvbnN0YW50cyk6IERlbGV0ZS4KCShtaXBzX2NsYXNzaWZ5X3N5bWJvbCk6IFJldHVybiBTWU1CT0xfQ09OU1RBTlRfUE9PTCBmb3IgTEFCRUxfUkVGcwoJd2hlbiBnZW5lcmF0aW5nIG1pcHMxNiBjb2RlLiAgUmVtb3ZlIHNwZWNpYWwgbWlwczE2IHRyZWF0bWVudCBvZgoJc3RyaW5nIGNvbnN0YW50cy4KCShtaXBzX3N5bWJvbGljX2NvbnN0YW50X3ApOiBBbGxvdyBtaXBzMTYgY29uc3RhbnQgcG9vbCBhY2Nlc3NlcwoJdG8gaGF2ZSB0aGUgZm9ybSBMQUJFTCtDT05TVEFOVC4KCShtaXBzX3N5bWJvbGljX2FkZHJlc3NfcCk6IEZpeCBjb21tZW50LgoJKG0xNl91c3ltOF80LCBtMTZfdXN5bTVfNCk6IERlbGV0ZS4KCShtaXBzX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IFJlbW92ZSBtaXBzMTYgc3RyaW5nIGhhbmRsaW5nLgoJKG1pcHNfb3V0cHV0X21pX3RodW5rKTogQ2FsbCBtaXBzMTZfbGF5X291dF9jb25zdGFudHMuCgkobWlwc19zZWxlY3Rfc2VjdGlvbiwgbWlwc19lbmNvZGVfc2VjdGlvbl9pbmZvKTogUmVtb3ZlIG1pcHMxNgoJc3RyaW5nIGhhbmRsaW5nLgoJKHN0cnVjdCBtaXBzMTZfY29uc3RhbnRfcG9vbCk6IE5ldy4KCShhZGRfY29uc3RhbnQpOiBUYWtlIGEgbWlwczE2X2NvbnN0YW50X3Bvb2wgc3RydWN0dXJlLiAgS2VlcCBwb29sCglzb3J0ZWQgaW50byBvcmRlciBvZiBhc2NlbmRpbmcgbW9kZSBzaXplLiAgS2VlcCB0cmFjayBvZiB0aGUgaGlnaGVzdAoJcG9zc2libGUgc3RhcnQgYWRkcmVzcywgdGFraW5nIHBhZGRpbmcgYW5kIHRoZSBtYXNraW5nIG9mIHRoZSBiYXNlIFBDCgl2YWx1ZSBpbnRvIGFjY291bnQuCgkoZHVtcF9jb25zdGFudHNfMSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gZHVtcF9jb25zdGFudHMuCglIYW5kbGUgdmVjdG9yIGNvbnN0YW50cy4gIFVzZSBnZW5fY29uc3R0YWJsZV97aW50LGZsb2F0fSByYXRoZXIgdGhhbgoJc2VwYXJhdGUgZnVuY3Rpb25zIGZvciBlYWNoIG1vZGUuCgkoZHVtcF9jb25zdGFudHMpOiBTaW1wbGlmeS4gIFVzZSBHRVRfTU9ERV9BTElHTk1FTlQuICBVc2UgZ2VuX2FsaWduCglyYXRoZXIgdGhhbiBzZXBhcmF0ZSBmdW5jdGlvbnMgZm9yIGVhY2ggYWxpZ25tZW50LgoJKG1pcHNfZmluZF9zeW1ib2wpOiBEZWxldGUuCgkobWlwczE2X2luc25fbGVuZ3RoKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJbWlwczE2X2xheV9vdXRfY29uc3RhbnRzLgoJKG1pcHMxNl9yZXdyaXRlX3Bvb2xfcmVmcyk6IE5ldyBmdW5jdGlvbi4KCShtaXBzMTZfbGF5X291dF9jb25zdGFudHMpOiBSZXdvcmsuIFJlbW92ZSBzdHJpbmcgaGFuZGxpbmcuCglBbHdheXMgY3JlYXRlIGFuIGlubGluZSBjb25zdGFudCBwb29sLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChVTlNQRUNfQ09OU1RUQUJMRV9JTlQsIFVOU1BFQ19DT05TVFRBQkxFX0ZMT0FUKQoJKFVOU1BFQ19BTElHTik6IE5ldyBjb25zdGFudHMuCgkoVU5TUEVDX0NPTlNUVEFCTEVfW1FIU0RdSSwgVU5TUEVDX0NPTlNUVEFCTEVfW1NEXUYpOiBEZWxldGUuCgkoVU5TUEVDX0FMSUdOX1syNDhdKTogRGVsZXRlLgoJKGNvbnN0dGFibGVfaW50LCBjb25zdHRhYmxlX2Zsb2F0LCBhbGlnbik6IE5ldyBwYXR0ZXJucy4KCShjb25zdHRhYmxlX1txaHNkXWksIGNvbnN0dGFibGVfW3NkXWYsIGFsaWduX1syNDhdKTogRGVsZXRlLgoKMjAwNC0wNC0xNyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLmggKHZlY19hbnlfbnVtZXJpYyk6IENvcnJlY3QgdHlwbyBpbgoJX191bm5fYXJnc19lcS4KCjIwMDQtMDQtMTcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0LzE0NzE1CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9zdGFja19pbmZvKTogTWFrZSBwYXJtX3NpemUgYWdyZWUKCXdpdGggU1RBUlRJTkdfRlJBTUVfT0ZGU0VULgoKMjAwNC0wNC0xNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgbWFjY19tc2FjX29wZXJhbmQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWFjY19tc2FjX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCptc2FjKTogTW92ZSBhZnRlciAqbWFjYy4KCSgqbXNhYzIpOiBOZXcuICBHZW5lcmFsaXplIG1hY2MtcmVsYXRlZCBwZWVwaG9sZXMgc28gdGhhdCB0aGV5IGFwcGx5Cgl0byBtc2FjIHRvby4KCjIwMDQtMDQtMTcgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBvcHRzLmMgKGRlY29kZV9vcHRpb25zKTogRG8gbm90IGVuYWJsZSBmbGFnX3JlbmFtZV9yZWdpc3RlcnMKCWFuZCBmbGFnX3dlYiBhdCAtTzMuCgkqIHRvcGxldi5jIChmbGFnX3JlbmFtZV9yZWdpc3RlcnMpOiBJbml0aWFsaXplCglmbGFnX3JlbmFtZV9yZWdpc3RlcnMgYW5kIGZsYWdfd2ViIHRvCglBVVRPREVURUNUX0ZMQUdfVkFSX1RSQUNLSU5HLgoJKGRlZmF1bHRfZGVidWdfaG9va3MpOiBOZXcgZ2xvYmFsLgoJKHByb2Nlc3Nfb3B0aW9ucyk6IEluaXRpYWxpemUgZGVmYXVsdF9kZWJ1Z19ob29rcy4gIFdhcm4gaWYKCS1mdmFyLXRyYWNraW5nIHNwZWNpZmllZCBidXQgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudAoJZGVidWcgZm9ybWF0LiAgRG8gbm90IHJ1biB2YXIgdHJhY2tpbmcgYXQgLU8wIG9yIGlmIG5vdAoJc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IGRlYnVnIGZvcm1hdCwgZXZlbiBpZgoJLWZ2YXItdHJhY2tpbmcgd2FzIGdpdmVuLiAgSWYgLWZuby1yZW5hbWUtcmVnaXN0ZXJzCglpcyBub3Qgc3BlY2lmaWVkLCBhbHdheXMgcnVuIHJlZ2lzdGVyIHJlbmFtaW5nIGlmIHZhcgoJdHJhY2tpbmcgaXMgc3VwcG9ydGVkIGJ5IHRoZSBkZWZhdWx0IGRlYnVnZ2luZyBpbmZvcm1hdGlvbgoJZm9ybWF0IGZvciB0aGUgdGFyZ2V0LCBhbmQgd2UgYXJlIGF0IC1PMSBvciBoaWdoZXI7IHNpbWlsYXJseQoJZm9yIC1md2ViLCBidXQgb25seSBhdCAtTzIgb3IgaGlnaGVyLgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGltaXplIE9wdGlvbnMpOiBEb2N1bWVudCB0aGlzLgoKMjAwNC0wNC0xNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjIChnY2NfY3ZfbGRfYXNfbmVlZGVkKTogVXNlIEFDX0NBQ0hFX0NIRUNLLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTA0LTE3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBnY2MuYyAodXNlZF9hcmcpOiBDaGVjayB3aGV0aGVyIGFuIG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkLgoKMjAwNC0wNC0xNyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotc29sYXJpczIqKTogRGVmYXVsdCB0byBEV0FSRi0yCglkZWJ1Z2dpbmcgb24gU29sYXJpcyA3IGFuZCB1cC4KCjIwMDQtMDQtMTYgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogZG9jL2luc3RhbGwudGV4aSAoU3BlY2lmaWMsIG1pcHMtc2dpLWlyaXg1KTogUmVmbGVjdCB3b3JraW5nCglJUklYIDUgcG9ydC4KCVJlbW92ZSAtc2F2ZS10ZW1wcyB3b3JrYXJvdW5kLCBoYW5kbGVkIGF1dG9tYXRpY2FsbHkuCglSZXF1aXJlIEdOVSBiaW51dGlscyAyLjE1IGZvciBkZWJ1Z2dpbmcuCglSZW1vdmUgU0dJIG1ha2Ugd2FybmluZ3Mgc2luY2UgR05VIG1ha2UgaXMgbm93IHJlcXVpcmVkLgoJKFNwZWNpZmljLCBtaXBzLXNnaS1pcml4Nik6IFNvbWUgbWFya3VwIGZpeGVzLgoJRGVzY3JpYmUgTUlQU3BybyBDIHByb2JsZW1zIGFuZCB3b3JrYXJvdW5kcy4KCU1lbnRpb24gd29ya2luZyBPMzIgQUJJIHN1cHBvcnQuCglSZWNvbW1lbmQgR05VIGFzIDIuMTUgZm9yIE8zMiB3aXRoIGRlYnVnZ2luZy4KCVJlbW92ZSBkZXNjcmlwdGlvbiBvZiBmaXhlZCBzdHJ1Y3R1cmUgcGFzcy9yZXR1cm4gYnVnLgoKMjAwNC0wNC0xNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBzZGJvdXQuYyAoc2Rib3V0X29uZV90eXBlKTogVXNlIFRZUEVfVkFMVUVTIGZvciBlbnVtcywgbm90CglUWVBFX0ZJRUxEUy4KCShzZGJvdXRfZmluaXNoKTogRG9uJ3QgZnJlZSBkZWZlcnJlZF9nbG9iYWxfZGVjbHM7IGl0J3MgR0MnZC4KCjIwMDQtMDQtMTYgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5tZDogUmVtb3ZlIHVubmVjZXNzYXJ5IGRlY2xhcmF0aW9ucyBmb3IgYXNtX291dF9maWxlLgoKCSogcGE2NC1yZWdzLmggKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBTaW1wbGlmeSBhbmQgY29ycmVjdCBtYXBwaW5nIG9mCglTQVIgcmVnaXN0ZXIuICBGaXggY29tbWVudC4KCShBRERJVElPTkFMX1JFR0lTVEVSX05BTUVTKTogQ29ycmVjdCByZWdpc3RlciBudW1iZXIgb2YgU0FSIHJlZ2lzdGVyCgkoJWNyMTEpLgoKCSogcGE2NC1ocHV4LmggKExJQl9TUEVDKTogRml4IGxpYnJhcnkgc3BlY2lmaWNhdGlvbiB1c2VkIHdpdGggR05VIGxkLgoKMjAwNC0wNC0xNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdmVycmlkZV9vcHRpb25zKTogUmV2ZXJ0IHByZXZpb3VzIHBhdGNoLgoJKiBjb25maWcvYXJtL3QteHNjYWxlLWVsZjogRGlzYWJsZSBpd21teHQgbXVsdGlsaWJzIHVudGlsIHRoZXkgY2FuCgliZSBzYWZlbHkgYnVpbHQuCgoyMDA0LTA0LTE2ICBLYXp1aGlybyBJbmFva2EgPGluYW9rYS5rYXp1aGlyb0ByZW5lc2FzLmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoQklHX0VORElBTl9CSVQpOiBEZWxldGVkIHRvIGZpeCBlbmRpYW4KCWJ1Zy4KCShUQVJHRVRfTElUVExFX0VORElBTiwgVEFSR0VUX0JJR19FTkRJQU4sCglUQVJHRVRfREVGQVVMVCk6IENoYW5nZWQuIERpdHRvLgoJKExJVFRMRV9FTkRJQU5fQklULCBUQVJHRVRfQ1BVX0RFRkFVTFQsCglUQVJHRVRfRU5ESUFOX0RFRkFVTFQpOiBBZGRlZC4gRGl0dG8uCgkqIGNvbmZpZy9tMzJyL2xpdHRsZS5oIChUQVJHRVRfTElUVExFX0VORElBTik6IERlbGV0ZWQuCgkoVEFSR0VUX0VORElBTl9ERUZBVUxUKTogQWRkZWQuCgoyMDA0LTA0LTE1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0lTRElHSVQsIEJVSUxUX0lOX0lTWERJR0lUKTogTWFyayB3aXRoCglBVFRSX0NPTlNUX05PVEhST1dfTElTVC4KCjIwMDQtMDQtMTUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCglQUi9taWRkbGUtZW5kIDE0OTE1CgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3NpZ25iaXQpOiBUZXN0IEJZVEVTX0JJR19FTkRJQU4sIG5vdAoJQklUU19CSUdfRU5ESUFOLgoKMjAwNC0wNC0xNSAgUGF0IEhhdWdlbiAgPHB0aGF1Z2VuQHVzLmlibS5jb20+CgoJKiByYS1kZWJ1Zy5jIChyYV9wcmludF9ydHgpOiBBZGQgYnJlYWsncyB0byBjYXNlIGxlZ3MuCgoyMDA0LTA0LTE0ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZml4aW5jLnNoKTogU2V0IFdBUk5fQ0ZMQUdTIHRvIGVtcHR5IHN0cmluZy4KCjIwMDQtMDQtMTQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogbGliYWRhLW1rLmluOiBOZXcgZmlsZS4KCSogY29uZmlndXJlLmFjOiBDcmVhdGUgbGliYWRhLW1rIGZyb20gbGliYWRhLW1rLmluLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTA0LTE0ICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX2xvZ2IgYW5kIE9USV9pbG9nYi4KCShsb2diX29wdGFiLCBpbG9nYl9vcHRhYik6IERlZmluZSBjb3JyZXNwb25kaW5nIG1hY3Jvcy4KCSogb3B0YWJzLmMgKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSBsb2diX29wdGFiIGFuZCBpbG9nYl9vcHRhYi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEltcGxlbWVudCBsb2diX29wdGFiIGFuZCBpbG9nYl9vcHRhYgoJdXNpbmcgbG9nYj9mMiBhbmQgaWxvZ2I/aTIgcGF0dGVybnMuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6IEhhbmRsZSBCVUlMVF9JTl9MT0dCeyxGLEx9Cgl1c2luZyBsb2diX29wdGFiLCBhbmQgQlVJTFRfSU5fSUxPR0J7LEYsTH0gdXNpbmcgaWxvZ2Jfb3B0YWIuCgkoZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgQlVJTFRfSU5fTE9HQnssRixMfSBhbmQgQlVJTFRfSU5fSUxPR0J7LEYsTH0KCXVzaW5nIGV4cGFuZF9idWlsdGluX21hdGhmbiBpZiBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgaXMgc2V0LgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogSGFuZGxlIFVOU1BFQ19YVFJBQ1RfRlJBQ1QKCWFuZCBVTlNQRUNfWFRSQUNUX0VYUC4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpmeHRyYWN0ZGYzLCAqZnh0cmFjdHNmMywgKmZ4dHJhY3R4ZjMpOiBOZXcKCXBhdHRlcm5zIHRvIGltcGxlbWVudCBmeHRyYWN0IHg4NyBpbnN0cnVjdGlvbi4KCShsb2diZGYyLCBsb2dic2YyLCBsb2dieGYyLCBpbG9nYnNpMik6IE5ldyBleHBhbmRlcnMgdG8gaW1wbGVtZW50Cglsb2diLCBsb2diZiwgbG9nYmwsIGlsb2diLCBpbG9nYmYgYW5kIGlsb2dibCBidWlsdC1pbnMgYXMgaW5saW5lIHg4NwoJaW50cmluc2ljcy4KCShVTlNQRUNfWFRSQUNUX0ZSQUNULCBVTlNQRUNfWFRSQUNUX0VYUCk6IE5ldyB1bnNwZWNzIHRvIHJlcHJlc2VudAoJeDg3J3MgZnh0cmFjdCBpbnNuLgoKMjAwNC0wNC0xNCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy90LWVsZjogRW5hYmxlIG11bHRpbGlicyBieSBkZWZhdWx0LgoKMjAwNC0wNC0xNCAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogYmItcmVvcmRlci5jIChmaXhfY3Jvc3NpbmdfY29uZGl0aW9uYWxfYnJhbmNoZXMpOiBBZGp1c3QgdGhlCglwcmV2aW91cyBmaXggdG8gY2hlY2sgSEFWRV9yZXR1cm4gYXQgcnVudGltZSB0b28uCgoyMDA0LTA0LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBJZiB0aGUgdXNlciBoYXMgbm90CglzcGVjaWZpZWQgYW4gQUJJLCB0aGVuIGRlZmF1bHQgdG8gQUFQQ1MgZm9yIHRoZSBpV01NWHQgcHJvY2Vzc29yLgoJKiBjb25maWcvYXJtL3QteHNjYWxlLWVsZjogUmVtb3ZlIHJlZHVuZGFudCBtdWx0aWxpYiBzcGVjaWZpY2F0aW9ucy4KCSogY29uZmlnL2FybS90LXhzY2FsZS1jb2ZmOiBMaWtld2lzZS4KCjIwMDQtMDQtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9pc2RpZ2l0KTogTmV3LgoJKGZvbGRfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9JU0RJR0lULgoJKiBkZWZhdWx0cy5oOiBBZGQgVEFSR0VUX0RJR0lUMCBhbmQgc29ydC4KCSogZG9jL3RtLnRleGk6IEFkZCBUQVJHRVRfQlMgYW5kIFRBUkdFVF9ESUdJVDAuCgoyMDA0LTA0LTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fY2FicywgZm9sZF9idWlsdGluKTogVXNlCglgbWF0aGZuX2J1aWx0X2luJyB0byBkZXRlcm1pbmUgdGhlIG5ldyBidWlsdGluLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBMaWtld2lzZS4KCjIwMDQtMDQtMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogUmVuYW1lIE1JUFMncyAtbWZpeC12cjQxMjItYnVncyB0byAtbWZpeC12cjQxMjAuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoTUFTS19GSVhfVlI0MTIwKTogUmVuYW1lZCBmcm9tIE1BU0tfRklYX1ZSNDEyMi4KCShUQVJHRVRfRklYX1ZSNDEyMCk6IExpa2V3aXNlIFRBUkdFVF9GSVhfVlI0MTIyLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IFJlcGxhY2UgLW1maXgtdnI0MTIyLWJ1Z3Mgd2l0aCAtbWZpeC12cjQxMjAuCgkoQVNNX1NQRUMpOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgkqIGNvbmZpZy9taXBzL21pcHMuYzogVXBkYXRlIGFmdGVyIGFib3ZlIHJlbmFtaW5nLgoJKiBjb25maWcvbWlwcy9taXBzLm1kLCBjb25maWcvbWlwcy90LXZyLCBjb25maWcvbWlwcy92ci5oOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvdnI0MTIwLWRpdi5TOiBSZW5hbWVkIGZyb20gdnI0MTIyLWRpdi5TLgoKMjAwNC0wNC0xMyAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogYy1vcHQuYyAoY19jb21tb25fcG9zdF9vcHRpb25zKTogSWYgdGhpc19pbnB1dF9maWxlbmFtZSBpcyBOVUxMLAoJaW5jcmVtZW50IGVycm9yY291bnQgYW5kIHJldHVybiBmYWxzZSBpbnN0ZWFkIG9mIHRydWUuCgoyMDA0LTA0LTEzICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+OgoKCSogb3B0YWJzLmMgKGV4cGFuZF90d292YWxfdW5vcCk6IFJlb3JkZXIgZnVuY3Rpb24gYXJndW1lbnRzLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tYXRoZm5fMyk6IFVwZGF0ZSBjYWxscyB0bwoJZXhwYW5kX3R3b3ZhbF91bm9wLgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogSGFuZGxlIFVOU1BFQ19UQU5fT05FCglhbmQgVU5TUEVDX1RBTl9UQU4uIEFkZCBtaXNzaW5nIGNvbW1lbnQuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqdGFuZGYzXzEsICp0YW5zZjNfMSwgKnRhbnhmM18xKTogTmV3CglwYXR0ZXJucyB0byBpbXBsZW1lbnQgZnB0YW4geDg3IGluc3RydWN0aW9uLgoJKHRhbmRmMiwgdGFuc2YyLCB0YW54ZjIpOiBOZXcgZXhwYW5kZXJzIHRvIGltcGxlbWVudCB0YW4sIHRhbmYKCWFuZCB0YW5sIGJ1aWx0LWlucyBhcyBpbmxpbmUgeDg3IGludHJpbnNpY3MuIERlZmluZSBjb3JyZXNwb25kaW5nCglwZWVwaG9sZTIgb3B0aW1pemVycyBmb3IgJ2ZwdGFuOyBmc3RwICVzdCgwKTsgZmxkMScgc2VxdWVuY2UuCgkoVU5TUEVDX1RBTl9PTkUsIFVOU1BFQ19UQU5fVEFOKTogTmV3IHVuc3BlY3MgdG8gcmVwcmVzZW50Cgl4ODcncyBmcHRhbiBpbnNuLgoKMjAwNC0wMy0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAoZml4X2Nyb3NzaW5nX3VuY29uZGl0aW9uYWxfYnJhbmNoZXMpOiBVc2UgUG1vZGUKCWZvciBMQUJFTF9SRUZzLgoKCSogZGVmYXVsdHMuaCAoSE9UX1RFWFRfU0VDVElPTl9OQU1FKTogQWRkIGxlYWRpbmcgZG90LgoJKFVOTElLRUxZX0VYRUNVVEVEX1RFWFRfU0VDVElPTl9OQU1FKTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogVXBkYXRlIHRvIG1hdGNoLgoKCSogdmFyYXNtLmMgKHVubGlrZWx5X3RleHRfc2VjdGlvbik6IFVzZSBhc3NlbWJsZV9hbGlnbiBpbnN0ZWFkIG9mCglBU01fT1VUUFVUX0FMSUdOLiAgVXNlIGl0IGluIHRoZSBjb3JyZWN0IHBsYWNlIHdpdGggYW4gYXBwcm94aW1hdGVseQoJY29ycmVjdCBhbGlnbm1lbnQgYXJndW1lbnQuCgoyMDA0LTA0LTEzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiByZWxvYWQxLmMgKGVtaXRfcmVsb2FkX2luc25zKTogU2V0IHJlZ19oYXNfb3V0cHV0X3JlbG9hZCB0byBvbmUKCWFmdGVyIHNldHRpbmcgcmVnX2xhc3RfcmVsb2FkX3JlZyBmb3Igb3B0aW9uYWwgb3V0cHV0IHJlbG9hZHMuCgoyMDA0LTA0LTEyICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5oICh2ZWNfbWVyZ2VoLCB2ZWNfbWVyZ2VsKToKCURlZmluaXRpb24gb2YgdGhlc2UgdHdvIG1hY3JvcyBhcmUgY29ycmVjdGVkIGJ5IGFkZGluZwoJbWF0Y2hpbmUgcmlnaHQgcGFyZW4uCgoyMDA0LTA0LTEyICBKb25hdGhhbiBMYXJtb3VyICA8amlmbEBlQ29zQ2VudHJpYy5jb20+CgoJKiBmaXgtaGVhZGVyLmM6IGtpbGwoKSwgcHV0ZW52KCkgYW5kIHR6c2V0KCkgYXJlIFBPU0lYIG5vdCBBTlNJLgoKMjAwNC0wNC0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG91dHB1dF8zODdfcmVnX21vdmUpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKG91dHB1dF8zODdfcmVnX21vdmUpOiBQcm90b3R5cGUgaGVyZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKm1vdnNmXzEsICptb3ZzZjFfbm9pbnRlcnVuaXQsCgkqbW92ZGZfbm9pbnRlZ2VyLCAqbW92ZGZfaW50ZWdlciwgKm1vdnhmX25vaW50ZWdlciwgKm1vdnhmX2ludGVnZXIsCgkqZXh0ZW5kc2ZkZjJfMSwgICpleHRlbmRzZnhmMl8xLCAqZXh0ZW5kZGZ4ZjJfMSwgdHJ1bmNkZnNmMl9ub29wLAoJdHJ1bmN4ZnNmMl9ub29wLCB0cnVuY3hmZGYyX25vb3ApOiBDYWxsIG91dHB1dF8zODdfcmVnX21vdmUuCgoyMDA0LTA0LTEyICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYy1kZWNsLmMgKGZpbmlzaF9kZWNsKTogTWFrZSBhIGRlY2xfc3RtdCBmb3IgYSB2YXJpYWJsZS1zaXplZAoJVFlQRV9ERUNMLgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfZGVjbF9zdG10KTogSGFuZGxlIFRZUEVfREVDTC4KCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IFJlbW92ZSByZWR1bmRhbnQgZXhwYW5zaW9uIG9mIFRZUEVfRE9NQUlOLgoJKiBzdG9yLWxheW91dC5jICh2YXJpYWJsZV9zaXplKTogRG9uJ3QgY2hlY2sgZm9yIE1JTlVTX0VYUFIuCglVc2Ugc2tpcF9zaW1wbGVfYXJpdGhtZXRpYyB0byBmaW5kIFNBVkVfRVhQUi4KCShmb3JjZV90eXBlX3NhdmVfZXhwcnMsIGZvcmNlX3R5cGVfc2F2ZV9leHByc18xKTogTmV3IGZ1bmN0aW9ucy4KCSogdHJlZS1pbmxpbmUuYyAocmVtYXBfdHlwZSwgY2FzZSBQT0lOVEVSX1RZUEUsIGNhc2UgUkVGRVJFTkNFX1RZUEUpOgoJUHJvcGVybHkgY2hhaW4gbXVsdGlwbGUgcG9pbnRlcnMuCgkoY29weV90cmVlX3IpOiBDb3B5IGEgVFlQRV9ERUNMLgoJKiB0cmVlLmMgKHZhcmlhYmx5X21vZGlmaWVkX3R5cGVfcCk6IEFkZCBzb21lIG1pc3NpbmcgdGVzdHMgYW5kCgltYWtlIHNvbWUgb3RoZXIgbWlub3IgY2hhbmdlcy4KCSogdHJlZS5oIChmb3JjZV90eXBlX3NhdmVfZXhwcnMpOiBOZXcgZGVjbGFyYXRpb24uCgoyMDA0LTA0LTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uKSA8VURJViwgRElWLCBVTU9ELCBNT0Q+OgoJUmVtb3ZlIGZhbGwgdGhyb3VnaHMuICBDb252ZXJ0IDAveCBhbmQgMCV4IGludG8geCYwIHdoZW4geCBoYXMKCXNpZGUtZWZmZWN0cy4gIERvbid0IGNvbnZlcnQgeC8xLjAgaW50byB4IGlmIHdlIGhvbm9yIHNpZ25hbGluZyBOYU5zLgoJQ29udmVydCB4Ly0xLjAgaW50byAteCBpZiB3ZSBkb24ndCBob25vciBzaWduYWxpbmcgTmFOcy4gIENvbnZlcnQKCXgvLTEgaW50byAteC4gIE9wdGltaXplIHglMSBpbnRvIHgmMCBpZiB4IGhhcyBzaWRlLWVmZmVjdHMuICBPcHRpbWl6ZQoJeCUtMSBpbnRvIDAgKG9yIHgmMCBpZiB4IGhhcyBzaWRlLWVmZmVjdHMpLgoKMjAwNC0wNC0xMSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IERvY3VtZW50IHdoeSBhIHBhdHRlcm4gaXMgbm90CglhdmFpbGFibGUuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9jbW92ZSk6IERpc2FibGUgY29tcGFyaXNvbnMKCW9mIGZsb2F0cyBvbiB0aGUgRTUwMC4KCShicmFuY2hfcG9zaXRpdmVfY29tcGFyaXNvbl9vcGVyYXRvcik6IERvIG5vdCBhbGxvdyBORSBldmVuIG9uIHRoZQoJRTUwMC4KCjIwMDQtMDQtMTEgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9hc3NlbWJsZV9pbnRlZ2VyKTogQ2hhbmdlCglpbl90ZXh0X3VubGlrZWx5X3NlY3Rpb24gdG8gaW5fdW5saWtlbHlfdGV4dF9zZWN0aW9uLgoKMjAwNC0wNC0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5X29wX3dpdGhfY29uZGl0aW9uYWxfYXJnKTogVHdlYWsKCWNhbGxpbmcgY29udmVudGlvbiB0byBhbGxvdyBhIE5VTExfVFJFRSB0byBiZSByZXR1cm5lZC4gIEZhY3RvcgoJc2FuaXR5IGNoZWNrcyBmcm9tIGNhbGxlcnMsIHJldHVybiBOVUxMX1RSRUUgd2hlbiBhcHByb3ByaWF0ZS4KCShmb2xkKTogSGFuZGxlIENPTVBPVU5EX0VYUFIgb3BlcmFuZHMgb2YgYmluYXJ5IGV4cHJlc3Npb25zCgliZWZvcmUgQ09ORF9FWFBSIG9wZXJhbmRzLiAgVXNlIHJlb3JkZXJfb3BlcmFuZHNfcChhLGIpIHRvIGNoZWNrCgl3aGV0aGVyIGEgb3AgKGIsYykgY2FuIGJlIHJld3JpdHRlbiBhcyAoYiwgYSBvcCBjKS4gIFNpbXBsaWZ5CgljYWxscyB0byBmb2xkX2JpbmFyeV9vcF93aXRoX2NvbmRpdGlvbmFsX2FyZy4KCjIwMDQtMDQtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKGN1cnJlbnRfc2VjdGlvbl9mbGFncyk6IEFkZAoJaW5fdW5saWtlbHlfZXhlY3V0ZWRfdGV4dCBhbmQgZGVmYXVsdCBjYXNlLgoKMjAwNC0wNC0xMSAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogYmItcmVvcmRlci5jIChmaXhfY3Jvc3NpbmdfY29uZGl0aW9uYWxfYnJhbmNoZXMpOiBGaXggYm9vdHN0cmFwCglmYWlsdXJlIG9uIHNvbGFyaXMuIFBsYWNlIGlmZGVmIEhBVkVfcmV0dXJuIGFyb3VuZCBnZW5fcmV0IGNhbGwuCgkqIGNmZ3J0bC5jIChmb3JjZV9ub25mYWxsdGhydV9hbmRfcmVkaXJlY3QpOiBSZW1vdmUgaWZkZWYKCUhBVkVfcmV0dXJuIGFuZCBwbGFjZSBpdCBhcm91bmQgdGhlIHBsYWNlIHdoZXJlIGl0IGlzIG5lZWRlZC4KCjIwMDQtMDQtMTEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogdmFyYXNtLmMgKHRleHRfc2VjdGlvbik6IFVzZSBURVhUX1NFQ1RJT05fQVNNX09QIGFuZAoJQVNNX09VVFBVVF9BTElHTiBpbnN0ZWFkIG9mIFNFQ1RJT05fRk9STUFUX1NUUklORwoJYW5kIE5PUk1BTF9URVhUX1NFQ1RJT05fTkFNRS4KCSh1bmxpa2VseV90ZXh0X3NlY3Rpb24pOiBDaGVjayB0YXJnZXRtLmhhdmVfbmFtZWRfc2VjdGlvbnMKCWluc3RlYWQgb2YgVEFSR0VUX0FTTV9OQU1FRF9TRUNUSU9OIGFuZCB1c2UgVEVYVF9TRUNUSU9OX0FTTV9PUAoJaW5zdGVhZCBvZiBTRUNUSU9OX0ZPUk1BVF9TVFJJTkcuCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKGN1cnJlbnRfc2VjdGlvbl9uYW1lKTogQWRkCglpbl91bmxpa2VseV9leGVjdXRlZF90ZXh0IGNhc2UgYW5kIG1vdmUgdGhlIGFib3J0IGludG8gdGhlIHN3aXRjaC4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChIT1RfVEVYVF9TRUNUSU9OX05BTUUpOiBSZW1vdmUuCgkoTk9STUFMX1RFWFRfU0VDVElPTl9OQU1FKTogUmVtb3ZlLgoJKFVOTElLRUxZX0VYRUNVVEVEX1RFWFRfU0VDVElPTl9OQU1FKTogUmVtb3ZlLgoJKFNFQ1RJT05fRk9STUFUX1NUUklORyk6IFJlbW92ZS4KCSogZGVmYXVsdHMuaCAoU0VDVElPTl9GT1JNQVRfU1RSSU5HKTogUmVtb3ZlLgoJKiB0bS50ZXhpIChOT1JNQUxfVEVYVF9TRUNUSU9OX05BTUUpOiBSZW1vdmUuCgkoU0VDVElPTl9GT1JNQVRfU1RSSU5HKTogUmVtb3ZlLgoKMjAwNC0wNC0xMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLXR5cGVjay5jIChjb21tb25fdHlwZSk6IFByZWZlciBsb25nIGxvbmcgdG8gbG9uZyB3aGVuIHNhbWUKCXByZWNpc2lvbi4KCjIwMDQtMDQtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgMTQ4ODcKCSogY29uZmlnL2lhNjQvaHB1eC5oIChNRU1CRVJfVFlQRV9GT1JDRVNfQkxLKTogTG9vayBvbmx5IGF0Cgltb2RlIGFyZ3VtZW50LgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfaHB1eF9maWxlX2VuZCk6IENoZWNrCglUUkVFX1NZTUJPTF9SRUZFUkVOQ0VEIG9uIERFQ0xfQVNTRU1CTEVSX05BTUUsIG5vdCBERUNMX05BTUUuCgoyMDA0LTA0LTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChtb2RlX3NpZ25iaXRfcCk6IE5ldyBmdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyCglhbiBSVFggaXMgYW4gaW1tZWRpYXRlIGNvbnN0YW50IHRoYXQgcmVwcmVzZW50cyB0aGUgbW9zdCBzaWduaWZpY2FudAoJYml0IG9mIGEgZ2l2ZW4gbWFjaGluZSBtb2RlLgoJKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbikgPE5PVD46IE9wdGltaXplIH4oWCtDKSBhcyBYIF4gfkMsIHdoZXJlCglDIGlzIHRoZSBzaWduIGJpdC4KCShzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uKSA8UExVUz46IE9wdGltaXplIChYXkMxKSArIEMyIGFzIFheKEMxXkMyKQoJd2hlbiBDMiBpcyB0aGUgc2lnbiBiaXQuCgkoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbikgPFhPUj46IENhbm9uaWNhbGl6ZSBYXkMgYXMgWCtDIHdoZW4gQwoJaXMgdGhlIHNpZ24gYml0LiAgT3B0aW1pemUgKFgrQzEpIF4gQzIgYXMgWF4oQzFeQzIpIHdoZW4gQzEgaXMgdGhlCglzaWduIGJpdC4KCjIwMDQtMDQtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKG1hdGhmbl9idWlsdF9pbik6IENoZWNrIFRZUEVfTUFJTl9WQVJJQU5ULCBub3QKCVRZUEVfTU9ERS4KCjIwMDQtMDQtMDkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogYy1jb21tb24uYyAoaGFuZGxlX25vcmV0dXJuX2F0dHJpYnV0ZSk6IFVzZSBUWVBFX1JFQURPTkxZIGluc3RlYWQKCW9mIFRSRUVfUkVBRE9OTFkgZm9yIHR5cGVzLgoKMjAwNC0wNC0wOSAgQ2Fyb2xpbmUgVGljZSAgPGN0aWNlQGFwcGxlLmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBlZGdlX2RlZik6IEFkZCBuZXcgZmllbGQsIGNyb3NzaW5nX2VkZ2UuCgkoc3RydWN0IGJhc2ljX2Jsb2NrX2RlZik6IEFkZCBuZXcgZmllbGQsIHBhcnRpdGlvbi4KCShVTlBBUlRJVElPTkVELCBIT1RfUEFSVElUSU9OLCBDT0xEX1BBUlRJVElPTik6IE5ldyBjb25zdGFudCBtYWNybwoJZGVmaW5pdGlvbnMuCgkocGFydGl0aW9uX2hvdF9jb2xkX2Jhc2ljX2Jsb2Nrcyk6IEFkZCBleHRlcm4gZnVuY3Rpb24KCWRlY2xhcmF0aW9uLgoJKiBiYi1yZW9yZGVyLmMgKGZ1bmN0aW9uLmgsIG9ic3RhY2suaCwgZXhwci5oLCByZWdzLmgpOiBBZGQgZm91ciBuZXcKCWluY2x1ZGUJc3RhdGVtZW50cy4KCShOX1JPVU5EUyk6IEluY3JlYXNlIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb3VuZHMgYnkgMS4KCShicmFuY2hfdGhyZXNob2xkKTogQWRkIGFycmF5IHZhbHVlIGZvciBuZXcgcm91bmQuCgkoZXhlY190aHJlc2hvbGQpOiBBZGQgYXJyYXkgdmFsdWUgZm9yIG5ldyByb3VuZC4KCShwdXNoX3RvX25leHRfcm91bmRfcCk6IE5ldyBmdW5jdGlvbi4KCShhZGRfdW5saWtlbHlfZXhlY3V0ZWRfbm90ZXMpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9yYXJlbHlfZXhlY3V0ZWRfYmFzaWNfYmxvY2tzX2FuZF9jcm9zc2luZ19lZGdlcyk6IE5ldyBmdW5jdGlvbi4KCShtYXJrX2JiX2Zvcl91bmxpa2VseV9leGVjdXRlZF9zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9sYWJlbHNfYW5kX21pc3NpbmdfanVtcHMpOiBOZXcgZnVuY3Rpb24uCgkoYWRkX3JlZ19jcm9zc2luZ19qdW1wX25vdGVzKTogTmV3IGZ1bmN0aW9uLgoJKGZpeF91cF9mYWxsX3RocnVfZWRnZXMpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9qdW1wX2Jsb2NrKTogTmV3IGZ1bmN0aW9uLgoJKGZpeF9jcm9zc2luZ19jb25kaXRpb25hbF9icmFuY2hlcyk6IE5ldyBmdW5jdGlvbi4KCShmaXhfY3Jvc3NpbmdfdW5jb25kaXRpb25hbF9icmFuY2hlcyk6IE5ldyBmdW5jdGlvbi4KCShmaXhfZWRnZXNfZm9yX3JhcmVseV9leGVjdXRlZF9jb2RlKTogTmV3IGZ1bmN0aW9uLgoJKHBhcnRpdGlvbl9ob3RfY29sZF9iYXNpY19ibG9ja3MpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF90cmFjZXMpOiBBZGQgYW4gZXh0cmEgcm91bmQgZm9yIHBhcnRpdGlvbmluZyBob3QvY29sZAoJYmFzaWMgYmxvY2tzLgoJKGZpbmRfdHJhY2VzXzFfcm91bmQpOiBBZGQgYSBwYXJhbWV0ZXIuICBNb2RpZnkgdG8gcHVzaCBhbGwgY29sZCBibG9ja3MsCglhbmQgb25seSBjb2xkIGJsb2NrcywgaW50byB0aGUgbGFzdCAoZXh0cmEpIHJvdW5kIG9mIGNvbGxlY3RpbmcgdHJhY2VzLgoJKGJldHRlcl9lZGdlX3ApOiBBZGQgYSBwYXJhbWV0ZXIuICBNb2RpZnkgdG8gZmF2b3Igbm9uLWNyb3NzaW5nIGVkZ2VzCglvdmVyIGNyb3NzaW5nIGVkZ2VzLgoJKGJiX3RvX2tleSk6IEFkZCBjb2RlIHRvIGNvcnJlY3RseSBpZGVudGlmeSBjb2xkIGJsb2NrcyB3aGVuCglkb2luZyBwYXJ0aXRpb25pbmcuCgkoY29ubmVjdF90cmFjZXMpOiBNb2RpZnkgdG8gY29ubmVjdCBhbGwgdGhlIG5vbi1jb2xkIHRyYWNlcyBmaXJzdCwgdGhlbgoJZ28gYmFjayBhbmQgY29ubmVjdCB1cCBhbGwgdGhlIGNvbGQgdHJhY2VzLgoJKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogQWRkIGNhbGwgdG8gYWRkX3VubGlrZWx5X2V4ZWN1dGVkX25vdGVzLgoJKiBjZmcuYyAoZW50cnlfZXhpdF9ibG9ja3MpOiBBZGQgaW5pdGlhbGl6YXRpb24gZm9yIHBhcnRpdGlvbiBmaWVsZCBpbgoJZW50cnkgYW5kIGV4aXQgYmxvY2tzLgoJKiBjZmdidWlsZC5jIChtYWtlX2VkZ2VzKTogVXBkYXRlIGN1cnJlbnRfZnVuY3Rpb25faGFzX2NvbXB1dGVkX2p1bXAKCWlmIHdlIGFyZSBkb2luZyBob3QvY29sZCBwYXJ0aXRpb25pbmcuCgkqIGNmZ2NsZWFudXAuYyAoY2ZnbGF5b3V0LmgpOiBBZGQgbmV3IGluY2x1ZGUgc3RhdGVtZW50LgoJKHRyeV9zaW1wbGlmeV9jb25kanVtcCk6IE1vZGlmeSB0byBub3QgYXR0ZW1wdCBvbiBibG9ja3Mgd2l0aCBqdW1wcwoJdGhhdCBjcm9zcyBzZWN0aW9uIGJvdW5kYXJpZXMuCgkodHJ5X2ZvcndhcmRfZWRnZXMpOiBMaWtld2lzZS4KCShtZXJnZV9ibG9ja3NfbW92ZV9wcmVkZWNlc3Nvcl9ub2p1bXBzKTogTGlrZXdpc2UuCgkobWVyZ2VfYmxvY2tzX21vdmVfc3VjY2Vzc29yX25vanVtcHMpOiBMaWtld2lzZS4KCShtZXJnZV9ibG9ja3NfbW92ZSk6IExpa2V3aXNlLgoJKHRyeV9jcm9zc2p1bXBfdG9fZWRnZSk6IE1vZGlmeSB0byBub3QgYXR0ZW1wdCBhZnRlciB3ZSBoYXZlIGRvbmUKCXRoZSBibG9jayBwYXJ0aXRpb25pbmcuCgkodHJ5X2Nyb3NzanVtcF9iYik6IE1vZGlmeSB0byBub3QgYXR0ZW1wdCBvbiBibG9ja3Mgd2l0aCBqdW1wcyB0aGF0Cgljcm9zcyBzZWN0aW9uIGJvdW5kYXJpZXMuCgkodHJ5X29wdGltaXplX2NmZyk6IExpa2V3aXNlLgoJKiBjZmdob29rcy5jICh0aWR5X2ZhbGx0aHJ1X2VkZ2VzKTogTW9kaWZ5IHRvIG5vdCByZW1vdmUgaW5kaXJlY3QKCWp1bXBzIHRoYXQgY3Jvc3Mgc2VjdGlvbiBib3VuZGFyaWVzLgoJKiBjZmdsYXlvdXQuYyAoZmxhZ3MuaCk6IEFkZCBuZXcgaW5jbHVkZSBzdGF0ZW1lbnQuCgkodXBkYXRlX3VubGlrZWx5X2V4ZWN1dGVkX25vdGVzKTogTmV3IGZ1bmN0aW9uLgoJKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBBZGQgY29kZSBzbyB3aGVuIGEgbmV3IGp1bXBpbmcgYmFzaWMgYmxvY2sgaXMKCWFkZGVkLCBpdCdzIFVOTElLRUxZX0VYRUNVVEVEX0NPREUgYW5kIFJFR19DUk9TU0lOR19KVU1QIG5vdGVzIGFyZQoJdXBkYXRlZCBhcHByb3ByaWF0ZWx5LgoJKGR1cGxpY2F0ZV9pbnNuX2NoYWluKTogQWRkIGNvZGUgdG8gZHVwbGljYXRlIHRoZSBuZXcgTk9URSBpbnNuCglpbnRyb2R1Y2VkIGJ5IHRoaXMgb3B0aW1pemF0aW9uLgoJKiBjZmdsYXlvdXQuaCAoc2Nhbl9haGVhZF9mb3JfdW5saWtlbHlfZXhlY3V0ZWRfbm90ZSk6IEFkZCBuZXcKCWV4dGVybiBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCSogY2ZncnRsLmMgKGNhbl9kZWxldGVfbm90ZV9wKTogQWRkIE5PVEVfSU5TTl9VTkxJS0VMWV9FWEVDVVRFRF9DT0RFIHRvCglsaXN0IG9mIG5vdGVzIHRoYXQgY2FuIGJlIGRlbGV0ZWQuCgkoY3JlYXRlX2Jhc2ljX2Jsb2NrX3N0cnVjdHVyZSk6IEFkZCBpbml0aWFsaXphdGlvbiBmb3IgcGFydGl0aW9uIGZpZWxkLgoJKHJ0bF9jYW5fbWVyZ2VfYmxvY2tzKTogTW9kaWZ5IHRvIHRlc3QgYmxvY2tzIGZvciBqdW1wcyB0aGF0IGNyb3NzCglzZWN0aW9uIGJvdW5kYXJpZXMuCgkodHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogTW9kaWZ5IHRvIG5vdCBhdHRlbXB0IG9uIGp1bXBzIHRoYXQKCWNyb3NzIHNlY3Rpb24gYm91bmRhcmllcy4KCShjb21taXRfb25lX2VkZ2VfaW5zZXJ0aW9uKTogQWRkIGNvZGUgc28gbmV3bHkgY3JlYXRlZCBiYXNpYyBibG9jawoJZW5kcyB1cCBpbiBjb3JyZWN0IChob3Qgb3IgY29sZCkgc2VjdGlvbi4gIE1vZGlmeSB0byBkaXNhbGxvdwoJaW5zZXJ0aW9ucyBiZWZvcmUgTk9URV9JTlNOX1VOTElLRUxZX0VYRUNVVEVEX0NPREUgbm90ZXMuCgkocnRsX3ZlcmlmeV9mbG93X2luZm9fMSk6IEFkZCBjb2RlIHRvIHZlcmlmeSB0aGF0IG5vIGZhbGxfdGhydSBlZGdlCgljcm9zc2VzIHNlY3Rpb24gYm91bmRhcmllcy4KCShjZmdfbGF5b3V0X2Nhbl9tZXJnZV9ibG9ja3NfcCk6IE1vZGlmeSB0byB0ZXN0IGJsb2NrcyBmb3IganVtcHMgdGhhdAoJY3Jvc3Mgc2VjdGlvbiBib3VuZGFyaWVzLgoJKGZvcmNlX25vbmZhbGx0aHJ1X2FuZF9yZWRpcmVjdCk6IE1vZGlmeSB0byBtYWtlIHN1cmUgbmV3IGJhc2ljIGJsb2NrCgllbmRzIHVwIGluIGNvcnJlY3Qgc2VjdGlvbiwgd2l0aCBjb3JyZWN0IG5vdGVzIGF0dGFjaGVkLgoJKiBjb21tb24ub3B0IChmcmVvcmRlci1ibG9ja3MtYW5kLXBhcnRpdGlvbik6IEFkZCBuZXcgZmxhZyBmb3IgdGhpcwoJb3B0aW1pemF0aW9uLgoJKiBkYnhvdXQuYyAoZGJ4X2Z1bmN0aW9uX2VuZCk6IEFkZCBjb2RlIHRvIG1ha2Ugc3VyZSBzY29wZSBsYWJlbHMgYXQKCXRoZSBlbmQgb2YgZnVuY3Rpb25zIGFyZSB3cml0dGVuIGludG8gdGhlIGNvcnJlY3QgKGhvdCBvciBjb2xkKQoJc2VjdGlvbi4KCShkYnhfc291cmNlX2ZpbGUpOiBBZGQgY29kZSBzbyB3cml0aW5nIGRlYnVnIGZpbGUgaW5mb3JtYXRpb24KCWRvZXNuJ3QgaW5jb3JyZWN0bHkgY2hhbmdlIHNlY3Rpb25zLgoJKiBkZWZhdWx0cy5oIChOT1JNQUxfVEVYVF9TRUNUSU9OX05BTUUpOiBOZXcgY29uc3RhbnQgbWFjcm8sIGZvciB1c2UKCWluIHBhcnRpdGlvbmluZyBob3QvY29sZCBiYXNpYyBibG9ja3MgaW50byBzZXBhcmF0ZSBzZWN0aW9ucy4KCShTRUNUSU9OX0ZPUk1BVF9TVFJJTkcpOiBOZXcgY29uc3RhbnQgbWFjcm8sIGZvciBsaW51eC9pMzg2IGhvdC9jb2xkCglzZWN0aW9uIHBhcnRpdGlvbmluZy4KCShIQVNfTE9OR19DT05EX0JSQU5DSCk6IE5ldyBjb25zdGFudCBtYWNybywgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdAoJY29uZGl0aW9uYWwgYnJhbmNoZXMgY2FuIHNwYW4gYWxsIG9mIG1lbW9yeS4KCShIQVNfTE9OR19VTkNPTkRfQlJBTkNIKTogTmV3IGNvbnN0YW50IG1hY3JvLCBpbmRpY2F0aW9uZyB3aGV0aGVyIG9yIG5vdAoJdW5jb25kaXRpb25hbCBicmFuY2hlcyBjYW4gc3BhbiBhbGwgb2YgbWVtb3J5LgoJKiBmaW5hbC5jIChzY2FuX2FoZWFkX2Zvcl91bmxpa2VseV9leGVjdXRlZF9ub3RlKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmFsX3NjYW5faW5zbik6IEFkZCBjb2RlIHRvIGNoZWNrIGZvciBOT1RFIGluc3RydWN0aW9uIGluZGljYXRpbmcKCXdoZXRoZXIgYmFzaWMgYmxvY2sgYmVsb25ncyBpbiBob3Qgb3IgY29sZCBzZWN0aW9uLCBhbmQgdG8gbWFrZSBzdXJlCgl0aGUgY3VycmVudCBiYXNpYyBibG9jayBpcyBiZWluZyB3cml0dGVuIHRvIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uLgoJQWxzbyBhZGRlZCBjb2RlIHRvIGVuc3VyZSB0aGF0IGp1bXAgdGFibGUgYmFzaWMgYmxvY2tzIGVuZCB1cCBpbiB0aGUKCWNvcnJlY3Qgc2VjdGlvbi4KCSogZmxhZ3MuaCAoZmxhZ19yZW9yZGVyX2Jsb2Nrc19hbmRfcGFydGl0aW9uKTogTmV3IGZsYWcuCgkqIGlmY3Z0LmMgKGZpbmRfaWZfY2FzZV8xKTogTW9kaWZ5IHRvIG5vdCBhdHRlbXB0IGlmIGNvbnZlcnNpb24gaWYKCW9uZSBvZiB0aGUgYnJhbmNoZXMgaGFzIGEganVtcCB0aGF0IGNyb3NzZXMgYmV0d2VlbiBzZWN0aW9ucy4KCShmaW5kX2lmX2Nhc2VfMik6IExpa2V3aXNlLgoJKGlmY3Z0KTogTW9kaWZ5IHRvIG5vdCBhdHRlbXB0IHRvIG1hcmsgbG9vcCBleGl0IGVkZ2VzIGFmdGVyCglob3QvY29sZCBwYXJ0aXRpb25pbmcgaGFzIG9jY3VycmVkLgoJKiBvcHRzLmMgKGRlY29kZV9vcHRpb25zKTogQ29kZSB0byBoYW5kbGUgbmV3IGZsYWcsCglmbGFnX3Jlb3JkZXJfYmxvY2tzX2FuZF9wYXJ0aXRpb247IGFsc28gdG8gdHVybiBpdCBvZmYgaWYKCWZsYWdfZXhjZXB0aW9ucyBpcyBvbi4KCShjb21tb25faGFuZGxlX29wdGlvbik6IENvZGUgdG8gaGFuZGxlIG5ldyBmbGFnLAoJZmxhZ19yZW9yZGVyX2Jsb2Nrc19hbmRfcGFydGl0aW9uLgoJKiBvdXRwdXQuaCAodW5saWtlbHlfdGV4dF9zZWN0aW9uKTogTmV3IGV4dGVybiBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCShpbl91bmxpa2VseV90ZXh0X3NlY3Rpb24pOiBOZXcgZXh0ZXJuIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbGVfc3RhY2tfcmVncyk6IEFkZAoJZmxhZ19yZW9yZGVyX2Jsb2Nrc19hbmRfcGFydGl0aW9uIGFzIGFuICdvcicgY29uZGl0aW9uIGZvciBjYWxsaW5nCglyZW9yZGVyX2Jhc2ljX2Jsb2Nrcy4KCShyZXN0X29mX2hhbmRsZV9yZW9yZGVyX2Jsb2Nrcyk6IEFkZCBmbGFnX3Jlb3JkZXJfYmxvY2tzX2FuZF9wYXJ0aXRpb24KCWFzIGFuICdvcicgY29uZGl0aW9uIGZvciBjYWxsaW5nIHJlb3JkZXJfYmFzaWNfYmxvY2tzLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBBZGQgY2FsbCB0byBwYXJ0aXRpb25faG90X2NvbGRfYmFzaWNfYmxvY2tzLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogQWRkIGNvZGUgZm9yIGhhbmRsaW5nIG5ldyBub3RlLAoJTk9URV9JTlNOX1VOTElLRUxZX0VYRUNVVEVEX0NPREUKCSogcnRsLmMgIChOT1RFX0lOU05fVU5MSUtFTFlfRVhFQ1VURURfQ09ERSk6IE5ldyBub3RlIGluc24gKHNlZSBiZWxvdykuCgkoUkVHX0NST1NTSU5HX0pVTVApOiBOZXcga2luZCBvZiByZWdfbm90ZSwgdG8gbWFyayBqdW1wcyB0aGF0Cgljcm9zcyBiZXR3ZWVuIHNlY3Rpb24gYm91bmRhcmllcy4KCSogcnRsLmggKE5PVEVfSU5TTl9VTkxJS0VMWV9FWEVDVVRFRF9DT0RFKTogTmV3IG5vdGUgaW5zdHJ1Y3Rpb24sCglpbmRpY2F0aW5nIHRoZSBiYXNpYyBibG9jayBjb250YWluaW5nIGl0IGJlbG9uZ3MgaW4gdGhlIGNvbGQgc2VjdGlvbi4KCShSRUdfQ1JPU1NJTkdfSlVNUCk6IE5ldyB0eXBlIG9mIHJlZ19ub3RlLCB0byBtYXJrIGp1bXBzIHRoYXQgY3Jvc3MKCWJldHdlZW4gaG90IGFuZCBjb2xkIHNlY3Rpb25zLgoJKiB0b3BsZXYuYyAoZmxhZ19yZW9yZGVyX2Jsb2Nrc19hbmRfcGFydGl0aW9uKTogQWRkIGNvZGUgdG8KCWluaXRpYWxpemUgdGhpcyBmbGFnLCBhbmQgdG8gdGllIGl0IHRvIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uCglmcmVvcmRlci1ibG9ja3MtYW5kLXBhcnRpdGlvbi4KCSogdmFyYXNtLmMgKGNmZ2xheW91dC5oKTogQWRkIG5ldyBpbmNsdWRlIHN0YXRlbWVudC4KCSh1bmxpa2VseV9zZWN0aW9uX2xhYmVsX3ByaW50ZWQpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLCB1c2VkIGZvcgoJZGV0ZXJtaW5pbmcgd2hlbiB0byBvdXRwdXQgc2VjdGlvbiBuYW1lIGxhYmVscyBmb3IgY29sZCBzZWN0aW9ucy4KCShpbl9zZWN0aW9uKTogQWRkIGluX3VubGlrZWx5X2V4ZWN1dGVkX3RleHQgdG8gZW51bSBkYXRhIHN0cnVjdHVyZS4KCSh0ZXh0X3NlY3Rpb24pOiBNb2RpZnkgY29kZSB0byB1c2UgU0VDVElPTl9GT1JNQVRfU1RSSU5HIGFuZAoJTk9STUFMX1RFWFRfU0VDVElPTl9OQU1FIG1hY3Jvcy4KCSh1bmxpa2VseV90ZXh0X3NlY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoaW5fdW5saWtlbHlfdGV4dF9zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGZ1bmN0aW9uX3NlY3Rpb24pOiBBZGQgY29kZSB0byBtYWtlIHN1cmUgYmVnaW5uaW5nIG9mIGZ1bmN0aW9uIGlzCgl3cml0dGVuIGludG8gY29ycmVjdCBzZWN0aW9uIChob3Qgb3IgY29sZCkuCgkoYXNzZW1ibGVfc3RhcnRfZnVuY3Rpb24pOiBBZGQgY29kZSB0byBtYWtlIHN1cmUgc3R1ZmYgaXMgd3JpdHRlbiB0bwoJdGhlIGNvcnJlY3Qgc2VjdGlvbi4KCShhc3NlbWJsZV96ZXJvcyk6IEFkZCBpbl91bmxpa2VseV90ZXh0X3NlY3Rpb24gYXMgYW4gJ29yJyBjb25kaXRpb24KCXRvIGFuIGlmIHN0YXRlbWVudCB0aGF0IHdhcyBjaGVja2luZyAnaW5fdGV4dF9zZWN0aW9uJy4KCShhc3NlbWJsZV92YXJpYWJsZSk6IEFkZCAnaW5fdW5saWtlbHlfdGV4dF9zZWN0aW9uJyBhcyBhbiAnb3InCgljb25kaXRpb24gdG8gYW4gaWYgc3RhdGVtZW50IHRoYXQgd2FzIGNoZWNraW5nICdpbl90ZXh0X3NlY3Rpb24nLgoJKGRlZmF1bHRfc2VjdGlvbl90eXBlX2ZsYWdzXzEpOiBBZGQgY2hlY2s6IGlmIGluIGNvbGQgc2VjdGlvbgoJZmxhZ3MgPSBTRUNUSU9OX0NPREUuCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZGFyd2luX2FzbV9uYW1lZF9zZWN0aW9uKTogTW9kaWZ5IHRvIHVzZQoJU0VDVElPTl9GT1JNQVRfU1RSSU5HIGlmIHdlIGFyZSBwYXJ0aXRpb25pbmcgaG90L2NvbGQgYmxvY2tzLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEhBU19MT05HX0NPTkRfQlJBTkNIKTogRGVmaW5lZCB0aGlzIG1hY3JvCglzcGVjaWZpY2FsbHkgZm9yIHRoZSBpMzg2LgoJKEhBU19MT05HX1VOQ09ORF9CUkFOQ0gpOiBEZWZpbmVkIHRoaXMgbWFjcm8gc3BlY2lmaWNhbGx5IGZvciB0aGUgaTM4Ni4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoVU5MSUtFTFlfRVhFQ1VURURfVEVYVF9TRUNUSU9OX05BTUUpOiBDaGFuZ2UKCXRleHQgc3RyaW5nIHRvIHNvbWV0aGluZyBtb3JlIGluZm9ybWF0aXZlLgoJKE5PUk1BTF9URVhUX1NFQ1RJT05fTkFNRSk6IEFkZCBuZXcgZGVmaW5pdGlvbi4KCShTRUNUSU9OX0ZPUk1BVF9TVFJJTkcpOiBBZGQgbmV3IGRlZmluaXRpb24uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9hc3NlbWJsZV9pbnRlZ2VyKTogQWRkCgknIWluX3VubGlrZWx5X3RleHRfc2VjdGlvbicgYXMgYW4gJ2FuZCcgY29uZGl0aW9uIHRvIGFuIGlmIHN0YXRlbWVudAoJdGhhdCB3YXMgYWxyZWFkeSBjaGVja2luZyAnIWluX3RleHRfc2VjdGlvbicuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoSE9UX1RFWFRfU0VDVElPTl9OQU1FLE5PUk1BTF9URVhUX1NFQ1RJT05fTkFNRSwKCVVOTElLRUxZX0VYRUNVVEVEX1RFWFRfU0VDVElPTl9OQU1FLFNFQ1RJT05fRk9STUFUX1NUUklORyk6IE1ha2UKCXN1cmUgdGhlc2UgYXJlIHByb3Blcmx5IGRlZmluZWQgZm9yIGxpbnV4IG9uIHBwYy4KCSogZG9jL2ludm9rZS50ZXhpICAoZnJlb3JkZXItYmxvY2tzLWFuZC1wYXJ0aXRpb24pOiBBZGQgZG9jdW1lbnRhdGlvbgoJZm9yIHRoaXMgbmV3IGZsYWcuCgkqIGRvYy9ydGwudGV4aSAoUkVHX0NST1NTSU5HX0pVTVApOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgbmV3CglyZWdfbm90ZS4KCSogZG9jL3RtLnRleGkgKE5PUk1BTF9URVhUX1NFQ1RJT05fTkFNRSwgU0VDVElPTl9GT1JNQVRfU1RSSU5HLAoJSEFTX0xPTkdfQ09ORF9CUkFOQ0gsIEhBU19MT05HX1VOQ09ORF9CUkFOQ0gpOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IKCXRoZXNlIG5ldyBtYWNyb3MuCgoyMDA0LTA0LTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGdlbl9tZW1fYWRkcmVzc29mKTogV2hlbiBjaGFuZ2luZyB0aGUgUlRYIGZyb20gYSBSRUcKCXRvIGEgTUVNLCBjbGVhciBNRU1fVk9MQVRJTEVfUCB3aGljaCB3YXMgZm9ybWVybHkgUkVHX1VTRVJWQVJfUC4KCjIwMDQtMDQtMDggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRhcmdldC8xNDg4OAoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh0cnVuY2Rmc2YyX25vb3AsIHRydW5jeGZzZjJfbm9vcCwKCXRydW5jeGZkZjJfbm9vcCk6IFByb3ZpZGUgZHVtbXkgImZtb3YiIGltcGxlbWVudGF0aW9ucy4KCjIwMDQtMDQtMDggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBnY2MuYyAoZGVmYXVsdF9jb21waWxlcnMpOiBBZGQgbWlzc2luZyBpbml0aWFsaXplcnMuCgoJKiBjb25maWcvcnM2MDAwL2hvc3QtZGFyd2luLmMgKGRhcndpbl9yczYwMDBfZ3RfcGNoX3VzZV9hZGRyZXNzKToKCVJldHVybiAxIGlmIGZpbGUgd2FzIHN1Y2Nlc3NmdWxseSBtYXBwZWQuCgoyMDA0LTA0LTA4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCglQUiBwY2gvMTM0MTkKCVBSIHBjaC8xNDEzNwoJUmFkYXIgIzogMzMxNTI4OAoJKiBkb2MvaW52b2tlLnRleGkgKFByZWNvbXBpbGVkIEhlYWRlcnMpOiBTdWdnZXN0IC1vCgl0byBwdXQgYW4gb3V0cHV0IGZpbGUgaW4gYSBwYXJ0aWN1bGFyIHBsYWNlLiAgQmUgbW9yZSBkZXRhaWxlZAoJYWJvdXQgd2hpY2ggb3B0aW9ucyBhZmZlY3QgUENIIHZhbGlkaXR5IGFuZCB3aGljaCBvcHRpb25zCgltaWdodCBub3Qgd29yay4KCSogYy1wY2guYyAocGNoX21hdGNoaW5nKTogTmV3LgoJKE1BVENIX1NJWkUpOiBOZXcuCgkoc3RydWN0IGNfcGNoX3ZhbGlkaXR5KTogTmV3IGZpZWxkICdtYXRjaCcuCgkocGNoX2luaXQpOiBIYW5kbGUgcGNoX21hdGNoaW5nLgoJKGNfY29tbW9uX3ZhbGlkX3BjaCk6IENoZWNrIHBjaF9tYXRjaGluZy4KCgkqIGV4cGxvdy5jOiBGaXggdHlwbyBkZWZpbmluZyBkZWZhdWx0IG9mIFBST01PVEVfRlVOQ1RJT05fTU9ERS4KCjIwMDQtMDQtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKFByZWNvbXBpbGVkIEhlYWRlcnMpOiBXYXJuIGFib3V0IGtub3duCglwcm9ibGVtcy4KCjIwMDQtMDQtMDggIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzE0ODA4CgkqIGRlZmF1bHRzLmggKFRBUkdFVF9VU0VfTE9DQUxfVEhVTktfQUxJQVNfUCk6IE5ldyBtYWNyby4gRGVmYXVsdAoJdG8gMSBpZiBBU01fT1VUUFVUX0RFRiBpcyBkZWZpbmVkLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1VTRV9MT0NBTF9USFVOS19BTElBU19QKTogRG9jdW1lbnQuCgkqIGNvbmZpZy9pMzg2L2N5Z21pbmcuaCAoVEFSR0VUX1VTRV9MT0NBTF9USFVOS19BTElBU19QKTogRGVmaW5lLgoJU2V0IHRvIG5vbi16ZXJvIGlmZiBub3QgYSBvbmVfb25seSBkZWNsLgoKMjAwNC0wNC0wOCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFybS5oIChDTEFTU19MSUtFTFlfU1BJTExFRF9QKTogRGVmaW5lLgoKMjAwNC0wNC0wOCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4cGxvdy5jIChwcm9tb3RlX21vZGUpOiBVc2UgUFJPTU9URV9GVU5DVElPTl9NT0RFIGluc3RlYWQgb2YKCVBST01PVEVfRk9SX0NBTExfT05MWS4KCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9mdW5jdGlvbl92YWx1ZSk6IERlY2xhcmUuCgkqIGNvbmZpZy9hcm0vYXJtLmggKFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1MpOiBEZWZpbmUuCgkoVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUyk6IFJldHVybiBmYWxzZS4KCShhcm1fZnVuY3Rpb25fdmFsdWUpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9hcm0vYXJtLmggKFBST01PVEVfRlVOQ1RJT05fTU9ERSk6IERlZmluZS4KCShGVU5DVElPTl9WQUxVRSk6IENhbGwgYXJtX2Z1bmN0aW9uX3ZhbHVlLgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKFBST01PVEVfTU9ERSk6IFJlbmFtZSAuLi4KCShQUk9NT1RFX0ZVTkNUSU9OX01PREUpOiAuLi4gdG8gdGhpcy4KCShQUk9NT1RFX0ZPUl9DQUxMX09OTFkpOiBSZW1vdmUuCgkqIGNvbmZpZy9tbWl4L21taXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmM6IFVwZGF0ZSBjb21tZW50cyBhYm91dCBQUk9NT1RFX01PREUuCgkqIGRvYy90bS50ZXhpIChQUk9NT1RFX0ZVTkNUSU9OX01PREUpOiBEb2N1bWVudC4KCShUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9NT0RFLCBUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4pOiBVcGRhdGUuCgkoUFJPTU9URV9GT1JfQ0FMTF9PTkxZKTogUmVtb3ZlLgoKMjAwNC0wNC0wOCAgSm9lbCBTaGVycmlsbCA8am9lbEBvYXJjb3JwLmNvbT4KCglQUiBhZGEvMTQ1MzgKCSogYWRhLzVyb3NpbnRlLmFkYjogUmVtb3ZlIGZha2UgbXByb3RlY3QoKSBib2R5LgoJKiBhZGEvNXJvc2ludGUuYWRzOiBBZGQgU0FfU0lHSU5GTy4KCSogYWRhLzVydHBvcHNwLmFkYjogUmV3cml0ZSB0byB1c2UgbmV3IGludGVyZmFjZS4KCSogYWRhL2luaXQuYzogUmVvcmRlciBzbyB0aGUgc2ltcGxlIHNpbmdsZSBPUyBjb25kaXRpb25hbCBfX3J0ZW1zX18KCWlzIHRlc3RlZCBiZWZvcmUgbW9yZSBjb21wbGV4IG9uZXMgd2hpY2ggbWl4IFVOSVggYW5kIGVtYmVkZGVkCglzeXN0ZW1zIGluIHRoZSBjb25kaXRpb25hbC4KCjIwMDQtMDQtMDggIEpvZWwgU2hlcnJpbGwgIDxqb2VsQG9hcmNvcnAuY29tPgoKCVBSIGFkYS8xNDY2NQoJKiBhZGEvb3NpbnQuYWRiIChGaW5kX1Byb2dyYW1fTmFtZSk6IFJld29yayB0byBwcm9wZXJseSBoYW5kbGUKCWZpbGVuYW1lcyB3aGljaCBlbmQgaW4gLmV4ZSBvciBoYXZlIHZlcnNpb25pbmcgc3VmZml4ZXMgbGlrZSBWTVMuCgoyMDA0LTA0LTA4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0YXJnZXQvMTAxMjkKCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fZW5jb2RlX3NlY3Rpb25faW5mbyk6IFdoZW4gdGhlIGRlY2wgaGFzCglhIERFQ0xfSU5JVElBTCwgaXQgaXMgb25seSBkZWZpbmVkIGFsc28gd2hlbiBpdCBpcyBub3QgYSBjb21tb24uCgoyMDA0LTA0LTA4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5faXNhc2NpaSwgZm9sZF9idWlsdGluX3RvYXNjaWkpOiBOZXcuCgkoZm9sZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX0lTQVNDSUkgYW5kIEJVSUxUX0lOX1RPQVNDSUkuCgoyMDA0LTA0LTA3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IERvbid0IHByb2QKCWdsb2JhbCByZWdpc3RlciB2YXJpYWJsZXMuCgoyMDA0LTA0LTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHJwY194ZHJfbHZhbHVlX2Nhc3RfYSwKCXJwY194ZHJfbHZhbHVlX2Nhc3RfYik6IE5ldyBmaXhlcy4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogZml4aW5jL3Rlc3RzL2Jhc2UvcnBjL3hkci5oOiBBZGQgbmV3IHRlc3RzLgoKMjAwNC0wNC0wNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJvY2Vzc29yX3RhcmdldF90YWJsZSk6IEFkZCBNQVNLX01GQ1JGCgl0byBwb3dlcjQgYW5kIHBvd2VyNSBlbnRyaWVzLgoKMjAwNC0wNC0wNiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjLWNvbW1vbi5oIChwZW5kaW5nX2xhbmdfY2hhbmdlKTogTWFyayBmb3IgUENILgoKMjAwNC0wNC0wNyAgQ2Fyb2xpbmUgVGljZSAgPGN0aWNlQGFwcGxlLmNvbT4KCgkqIGdjYy5jIChtYWluKTogTW92ZSAnYnJlYWsnIGluIG1haW4gbG9vcHMgKG9uIGFuIGVycm9yKQoJdG8gd2FpdCB1bnRpbCBlcnJvciBwcm9jZXNzaW5nIGhhcyBvY2N1cnJlZC4KCjIwMDQtMDQtMDYgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogU3RvcCBjaGFuZ2luZyBlbmFibGVfdGhyZWFkcyBtaWRzdHJlYW0uCglSZXBsYWNlIHVzZXMgb2YgZW5hYmxlX3RocmVhZHNfZmxhZyB3aXRoIGVuYWJsZV90aHJlYWRzLgoJKiBjb25maWd1cmUuYWM6IFJlcGxhY2UgdXNlcyBvZiBlbmFibGVfdGhyZWFkc19mbGFnIHdpdGgKCWVuYWJsZV90aHJlYWRzLiAgSW1wcm92ZSBhdXRvY29uZiBxdW90YXRpb24gaW4gb25lIHBsYWNlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTA0LTA2ICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBidWlsdGlucy5jOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igc2luY29zIGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluX21hdGhmbik6IFJlbW92ZSBCVUlMVF9JTl9TSU57LEYsTH0gYW5kCglCVUlMVF9JTl9DT1N7LEYsTH0uCgkoZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzMpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgQlVJTFRfSU5fU0lOeyxGLEx9IGFuZAoJQlVJTFRfSU5fQ09TeyxGLEx9IHVzaW5nIGV4cGFuZF9idWlsdGluX21hdGhmbl8zIGlmCglmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbiBpcyBzZXQuCgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX3NpbmNvcy4KCShzaW5jb3Nfb3B0YWIpOiBEZWZpbmUgY29ycmVzcG9uZGluZyBtYWNyby4KCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgc2luY29zX29wdGFiLgoJKGV4cGFuZF90d292YWxfdW5vcCk6IE5ldyBmdW5jdGlvbi4KCgkqIGdlbm9waW5pdC5jIChvcHRhYnMpOiBJbXBsZW1lbnQgc2luY29zX29wdGFiIHVzaW5nIHNpbmNvcz9mMwoJcGF0dGVybnMuCgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVnc19wYXQpOiBIYW5kbGUgVU5TUEVDX1NJTkNPU19DT1MKCWFuZCBVTlNQRUNfU0lOQ09TX1NJTi4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNpbmNvc2RmMywgc2luY29zc2YzLCAqc2luY29zZXh0ZW5kc2ZkZjMsCglzaW5jb3N4ZjMpOiBOZXcgcGF0dGVybnMgdG8gaW1wbGVtZW50IHNpbmNvcywgc2luY29zZiBhbmQgc2luY29zbAoJYnVpbHQtaW5zIGFzIGlubGluZSB4ODcgaW50cmluc2ljcy4gRGVmaW5lIHNwbGl0cyBmb3IKCXNpbmRmMiwgc2luc2YyLCAqc2luZXh0ZW5kc2ZkZjIsIHNpbnhmMiwgY29zZGYyLAoJY29zc2YyLCAqY29zZXh0ZW5kc2ZkZjIgYW5kIGNvc3hmMiBwYXR0ZXJucyBmcm9tIGNvcnJlc3BvbmRpbmcKCXNpbmNvcyBwYXR0ZXJucy4KCShzaW5kZjIsIHNpbnNmMiwgc2lueGYyKTogUmVuYW1lIHRvICpzaW5kZjIsICpzaW5zZjIsICpzaW54ZjIuCgkoY29zZGYyLCBjb3NzZjIsIGNvc3hmMik6IFJlbmFtZSB0byAqY29zZGYyLCAqY29zc2YyLCAqY29zeGYyLgoKCShVTlNQRUNfU0lOQ09TX1NJTiwgVU5TUEVDX1NJTkNPU19DT1MpOiBOZXcgdW5zcGVjcyB0byByZXByZXNlbnQKCXg4NydzIGZzaW5jb3MgaW5zbi4KCjIwMDQtMDQtMDYgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJUFIgMTQ0NjcKCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX0NPTU1BTkRfU1BFQyk6IFVzZSBjKytmaWx0IGluc3RlYWQgb2YgYysrZmlsdDMuCgoyMDA0LTA0LTA2ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogZG9jL2luc3RhbGwudGV4aTogVXBkYXRlIEhQLVVYIDExIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUuCgoyMDA0LTA0LTA2ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IFJlbW92ZSBvYnNvbGV0ZSBjb250cmFpbnQgb24gdGVzdGNhc2VzLgoKMjAwNC0wNC0wNSAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvc2guYyAocHJlcGFyZV9tb3ZlX29wZXJhbmRzKTogVXNlIGVtaXRfY2FsbF9pbnNuCgl3aGVuIHRoZSBUTFMgYWRkcmVzcyBpcyBnZW5lcmF0ZWQgYnkgYSBmdW5jdGlvbiBjYWxsLgoJKiBjb25maWcvc2gvc2gubWQgKHRsc19nbG9iYWxfZHluYW1pYyk6IFVzZSBhIGNhbGwgZXhwcmVzc2lvbi4KCSh0bHNfbG9jYWxfZHluYW1pYyk6IExpa2V3aXNlLgoKMjAwNC0wNC0wNSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB0cmVlLmMgKHJlY29uc3RydWN0X2NvbXBsZXhfdHlwZSk6IFVzZSBUWVBFX1JFQURPTkxZCglhbmQgVFlQRV9WT0xBVElMRS4KCjIwMDQtMDQtMDUgIENhcm9saW5lIFRpY2UgIDxjdGljZUBhcHBsZS5jb20+CgoJKiBnY2MuYyAoY29tYmluZV9mbGFnKTogTmV3IGdsb2JhbCB2YXJpYWJsZSwgZm9yIG5ldyBkcml2ZXIgb3B0aW9uLgoJKHN0cnVjdCBjb21waWxlcik6IEFkZCB0d28gbmV3IGZpZWxkcywgdG8gYmUgdXNlZCB3aGVuCgljb21iaW5pbmcgbXVsdGlwbGUgaW5wdXQgZmlsZXMgaW4gYSBzaW5nbGUgcGFzcyAoSU1BKS4KCShkZWZhdWx0X2NvbXBpbGVycyk6IEFkZCB2YWx1ZXMgZm9yIHRoZSBuZXcgZmllbGRzIHRvIGFsbAoJY29tcGlsZXIgZW50cmllcy4gTW9kaWZ5IHRoZSAiQGMiIGNvbXBpbGVyIGVudHJ5IGZvciBkb2luZyBJTUEKCXByb3Blcmx5IHdpdGggIi1zYXZlLXRlbXBzIiBhbmQgdGhlICJjb21iaW5lIiBmbGFnLgoJKG9wdGlvbl9tYXApOiBBZGQgbmV3IGRyaXZlciBvcHRpb24sICItLWNvbWJpbmUiLCB0byB0ZWxsIGRyaXZlcgoJdG8gcGFzcyBtdWx0aXBsZSBpbnB1dCBmaWxlcyB0byBjb21waWxlciBhdCBvbmUgdGltZS4KCShoYXZlX29fYXJnYnVmX2luZGV4KTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShzdG9yZV9hcmcpOiBNb2RpZnkgdG8gYXNzaWduIHZhbHVlIHRvIGhhdmVfb19hcmdidWZfaW5kZXguCgkoc3RydWN0IGluZmlsZSk6IEFkZCB0aHJlZSBuZXcgZmllbGRzLCB0byBoZWxwIHdpdGggSU1BLgoJKGRpc3BsYXlfaGVscCk6IEFkZCBoZWxwIGZvciBuZXcgImNvbWJpbmUiIG9wdGlvbi4KCShwcm9jZXNzX2NvbW1hbmQpOiBSZW1vdmUgbG9jYWwgdmFyaWFibGUgaGF2ZV9vOyBhZGQgY29kZSB0byBjaGVjawoJZm9yIG5ldyAiY29tYmluZSIgb3B0aW9uOyByZW1vdmUgYXNzaWdubWVudCB0byBjb21iaW5lX2lucHV0cy4KCShkb19zcGVjXzEpOiBNb2RpZnkgdG8gZGVhbCB3aXRoIElNQSBiZXR0ZXIuCgkobWFpbik6IE1ha2UgdmFyaWFibGUgJ2xhbmdfbl9pbmZpbGVzJyBsb2NhbCB0byBlbnRpcmUgZnVuY3Rpb24KCXJhdGhlciB0aGFuIHRvIGEgc2luZ2xlIGJsb2NrLiAgVXNlIGZsYWcgY29tYmluZV9mbGFnIHRvCglkZXRlcm1pbmUgd2hldGhlciB0byBkbyBJTUEgb3Igbm90OyBNb2RpZnkgbG9vcCBpbml0aWFsaXppbmcKCWluZmlsZXMgdG8gZGVhbCBwcm9wZXJseSB3aXRoIGxpbmtlciBmaWxlcy4KCUFkZCBjb2RlIGZvciBkb2luZyBwcmVwcm9jZXNzaW5nIGluIHByZXNlbmNlIG9mCglJTUEgd2l0aCAiLXNhdmUtdGVtcHMiIGZsYWcuICBNb2RpZnkgIm1haW4iIGxvb3AgdG8gaGFuZGxlCgltdWx0aXBsZSBpbnB1dCBmaWxlcywgaW4gbXVsdGlwbGUgbGFuZ3VhZ2VzLCB3aXRoIG9yIHdpdGhvdXQKCXByZXByb2Nlc3NpbmcsICBncmFjZWZ1bGx5LgoJKiB0b3BsZXYuYyAoc2V0X3NyY19wd2QpOiBNb2RpZnkgdG8gbm90IGNvbXBsYWluIGlmIGF0dGVtcHRpbmcgdG8KCXJlLXNldCBpdCB0byBzYW1lIGRpcmVjdG9yeSBpdCdzIHByZXZpb3VzbHkgYmVlbiBzZXQgdG8gKGF2b2lkCglpcnJpdGF0aW5nLCBtZWFuaW5nbGVzcyB3YXJuaW5nIG1lc3NhZ2VzIHdoZW4gZG9pbmcgSU1BIHdpdGgKCXNhdmUtdGVtcHMpLgoJKiBkb2MvaW52b2tlLnRleGk6IEFkZCAiLWNvbWJpbmUiIHRvIGxpc3Qgb2YgT3ZlcmFsbCBPcHRpb25zOwoJcmVtb3ZlIGRvY3VtZW50YXRpb24gYWJvdXQgSU1BIHRoYXQgaXMgbm8gbG9uZ2VyIGFjY3VyYXRlOyBBZGQKCWRvY3VtZW50YXRpb24gZXhwbGFpbmluZyB3aGF0ICItY29tYmluZSIgZG9lcy4KCSogYWRhL2xhbmctc3BlY3MuaDogQWRkIGluaXRpYWxpemF0aW9uIHZhbHVlcyBmb3IgbmV3IGZpZWxkcyBpbgoJInN0cnVjdCBjb21waWxlciIuCgkqIGNwL2xhbmctc3BlY3MuaDogTGlrZXdpc2UuCgkqIGYvbGFuZy1zcGVjcy5oOiBMaWtld2lzZS4KCSogamF2YS9sYW5nLXNwZWNzLmg6IExpa2V3aXNlLgoJKiBvYmpjL2xhbmctc3BlY3MuaDogTGlrZXdpc2UuCgkqIHRyZWVsYW5nL2xhbmctc3BlY3MuaDogTGlrZXdpc2UuCgoyMDA0LTA0LTA1ICBEYXZpZCBFZGVsc29obgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoVlRBQkxFX05BTUVfUCk6IEFkZCBfWlRJIHRvIHNwZWNpYWwKCXN5bWJvbCBoYW5kbGluZy4KCjIwMDQtMDQtMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoJICAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgb3B0aW1pemF0aW9uLzEzNDI0IChocHBhKSwgYm9vdHN0cmFwLzE0NDYyLCBjLzE0ODI4CgkqIHBhLm1kOiBVc2UgcmVwbGFjZV9lcXVpdl9hZGRyZXNzIHRvIHJldGFpbiB0aGUgYXR0cmlidXRlcyBvZiB0aGUKCW1lbW9yeSBvcGVyYW5kcyB1c2VkIGluIHRoZSBzcGxpdCBhbmQgcGVlcGhvbGUyIHBhdHRlcm5zIGZvciBvcHRpbWl6aW5nCgl0aGUgcHJlLXJlbG9hZCBtb3ZzdHJzaSwgbW92c3RyZGksIGNscnN0cnNpIGFuZCBjbHJzdHJkaSBwYXR0ZXJucy4KCjIwMDQtMDQtMDUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjLWRlY2wuYyAoYnVpbGRfY29tcG91bmRfbGl0ZXJhbCk6IFVzZSBUWVBFX1JFQURPTkxZLgoJKiBlbWl0LXJ0bC5jIChzZXRfbWVtX2F0dHJpYnV0ZXNfbWludXNfYml0cG9zKTogTGlrZXdpc2UuCgkqIG9iamMvb2JqYy1hY3QuYyAoYWRvcm5fZGVjbCwgZ2VuX2RlY2xzcGVjcyk6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChkZWNsX2NvbnN0YW50X3ZhbHVlKTogRG9uJ3QgYWNjZXNzIERFQ0xfSU5JVElBTCBvZiBhCglQQVJNX0RFQ0wuCgkqIGNhbGxzLmMgKGZsYWdzX2Zyb21fZGVjbF9vcl90eXBlKTogVXNlIFRZUEVfUkVBRE9OTFkgYW5kIGRvIHNvIG9ubHkKCWZvciBhIHR5cGUuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFByb3Blcmx5IGhhbmRsZSBzaWRlLWVmZmVjdHMsIHJlYWRvbmx5LAoJYW5kIGNvbnN0YW50IGZsYWdzLgoJKiB0cmVlLmMgKGJ1aWxkMV9zdGF0LCBidWlsZF9leHByX3dmbCk6IE9ubHkgbG9vayBhdCBUUkVFX1NJREVfRUZGRUNUUwoJYW5kIFRSRUVfQ09OU1RBTlQgaWYgbm90IGEgdHlwZS4KCSogdHJlZS5oIChJU19OT05fVFlQRV9DT0RFX0NMQVNTKTogTmV3IG1hY3JvLgoJKElTX0VYUFJfQ09ERV9DTEFTUyk6IFdyaXRlICdFJywgbm90ICdlJy4KCShOT05fVFlQRV9DSEVDSyk6IE5ldyBtYWNyby4KCShUUkVFX1NJREVfRUZGRUNULCBUUkVFX1JFQURPTkxZLCBUUkVFX0NPTlNUQU5UOiBBZGQgY2hlY2suCgoyMDA0LTA0LTA1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NvbDItYmkuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogU2V0Cgl0byBEV0FSRjJfREVCVUcgdW5jb25kaXRpb25hbGx5LgoJKEFTTV9ERUJVR19TUEVDKTogU2V0IHRoZSBkZWZhdWx0IHRvIC0tZ2R3YXJmMiB1bmNvbmRpdGlvbmFsbHkuCgoyMDA0LTA0LTA0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoJICAgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8xNDU0OAoJKiBjb25maWcuaG9zdDogU2V0IHRoZSBzaGVsbCB2YXJpYWJsZSBob3N0X2Nhbl91c2VfY29sbGVjdDIuCglTZXQgaXQgdG8geWVzIGJ5IGRlZmF1bHQsIGFuZCB0byBubyBmb3IgYWxwaGEqLWRlYy0qdm1zKiwKCWlbMzQ1NjddODYtKi1taW5ndzMyKiwgYW5kIHBvd2VycGMtKi1iZW9zKi4KCSogY29uZmlndXJlLmFjOiBTZXQgYW5kIHN1YnN0aXR1dGUgdGhlIHNoZWxsIHZhcmlhYmxlIGNvbGxlY3QyLgoJR2l2ZSBhbiBlcnJvciBpZiB1c2VfY29sbGVjdDIgaXMgeWVzIGFuZCBob3N0X2Nhbl91c2VfY29sbGVjdDIgaXMKCW5vLgoJKiBNYWtlZmlsZS5pbiAoQ09MTEVDVDIpOiBSZW5hbWUgZnJvbSBVU0VfQ09MTEVDVDIuICBDaGFuZ2UgYWxsCgl1c2VzLiAgSW5pdGlhbGl6ZSB0byBAY29sbGVjdDJALgoJKFNUQUdFU1RVRkYpOiBSZW1vdmUgJChVU0VfQ09MTEVDVDIpLgoJKiBjb25maWcvYWxwaGEveC12bXMgKFVTRV9DT0xMRUNUMik6IERvbid0IHNldC4KCSogY29uZmlnL2kzODYvdC1taW5ndzMyIChVU0VfQ09MTEVDVDIpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC90LWJlb3MgKFVTRV9DT0xMRUNUMik6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvdC1wYTY0OiBSZW1vdmUgY29tbWVudGVkIG91dCBVU0VfQ09MTEVDVDIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMDQtMDQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pOiBDb25zdGFudCBmb2xkCglESVYsIE1PRCwgVURJViBhbmQgVU1PRCB1c2luZyBkaXZfYW5kX3JvdW5kX2RvdWJsZS4KCjIwMDQtMDQtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE0ODA0CgkqIHZhcmFzbS5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogQWxsb3cgTk9QX0VYUFJzIHRvCglSRUNPUkRfVFlQRXMuCgoyMDA0LTA0LTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpICgtbWFiaT1vNjQpOiBDcmVhdGUgbGluayB0byBPNjQgQUJJCglkb2N1bWVudGF0aW9uLgoKMjAwNC0wNC0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjc2UuYyAoY3NlX2luc24pOiBDb3JyZWN0IHVzYWdlIG9mIHNpbXBsaWZ5X3JlcGxhY2VfcnR4IHdoZW4KCXVwZGF0aW5nIHRoZSBSRUdfRVFVQUwgbm90ZSBvbiBhbiBpbnNuJ3MgbGliY2FsbF9pbnNuLgoKMjAwNC0wNC0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZi5oOiBUaWR5IHVwIHdoaXRlc3BhY2UgaW4gdGhlIGRlZmluaXRpb25zIG9mIHRoZSBERl8gZmxhZ3MuCgoyMDA0LTA0LTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgPFBMVVNfRVhQUj46IEd1YXJkICgtQSkrQiAtPiBCLUEgdHJhbnNmb3JtYXRpb24KCXdpdGggcmVvcmRlcl9vcGVyYW5kc19wLgoKMjAwNC0wNC0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbWQudGV4aSAodmVjX3NldCwgdmVjX2V4dHJhY3QsIHZlY19pbml0KTogRG9jdW1lbnQuCgoyMDA0LTA0LTAyICBHYWJvciBMb2tpIDxsb2tpQGluZi51LXN6ZWdlZC5odT4KCgkqIG9wdHMuYyAoZGVjb2RlX29wdGlvbnMpOiBEbyBmdW5jdGlvbiBpbmxpbmluZyB3aXRoIHZlcnkgc21hbGwKCW1heC1pbmxpbmUtaW5zbnMtKiBwYXJhbWV0ZXJzIHdoZW4gb3B0aW1pemluZyBmb3Igc2l6ZS4KCjIwMDQtMDQtMDIgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfTk9DT05BKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogQWRkIGNvZGUgZm9yIE5vY29uYS4KCShwcm9jZXNzb3JfdHlwZSk6IEFkZCBQUk9DRVNTT1JfTk9DT05BLgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoY3B1KTogQWRkIG5vY29uYSB0byB0aGUgYXR0cmlidXRlIHZhbHVlcy4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobm9jb25hX2Nvc3QpOiBOZXcgdmFyaWFibGUuCgkobV9OT0NPTkEpOiBOZXcgbWFjcm8uCgkoeDg2X3B1c2hfbWVtb3J5LCB4ODZfbW92eCwgeDg2X2Ntb3ZlLCB4ODZfZGVlcF9icmFuY2gsCgl4ODZfYnJhbmNoX2hpbnRzLCB4ODZfdXNlX3NhaGYsIHg4Nl9zaW5nbGVfc3RyaW5nb3AsCgl4ODZfc3ViX2VzcF80LCB4ODZfc3ViX2VzcF84LCB4ODZfYWRkX2VzcF80LCB4ODZfYWRkX2VzcF84LAoJeDg2X2ludGVnZXJfREZtb2RlX21vdmVzLCB4ODZfcGFydGlhbF9yZWdfZGVwZW5kZW5jeSwKCXg4Nl9tZW1vcnlfbWlzbWF0Y2hfc3RhbGwsIHg4Nl9hY2N1bXVsYXRlX291dGdvaW5nX2FyZ3MsCgl4ODZfZGVjb21wb3NlX2xlYSwgeDg2X2FyY2hfYWx3YXlzX2ZhbmN5X21hdGhfMzg3LAoJeDg2X3NzZV9wYXJ0aWFsX3JlZ19kZXBlbmRlbmN5LCB4ODZfc3NlX2xvYWQwX2J5X3B4b3IsCgl4ODZfZXh0XzgwMzg3X2NvbnN0YW50cywgeDg2X2ZvdXJfanVtcF9saW1pdCk6Cgkob3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBub2NvbmFfY29zdCB0byBwcm9jZXNzb3JfdGFyZ2V0X3RhYmxlLgoJU2V0IHVwIFBST0NFU1NPUl9OT0NPTkEgZm9yIE5vY29uYSBlbnRyeSBpbiBwcm9jZXNzb3JfYWxpYXNfdGFibGUuCgkoaW5jZGVjX29wZXJhbmQpOiBQcmV2ZW50IGluYy9kZWMgZ2VuZXJhdGlvbiBmb3IgTm9jb25hIHRvby4KCShpeDg2X2lzc3VlX3JhdGUpOiBBZGQgUFJPQ0VTU09SX05PQ09OQS4KCjIwMDQtMDQtMDEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogcnRsYW5hbC5jIChmaW5kX3JlZ19ub3RlKTogTWFudWFsbHkKCXVuc3dpdGNoIHRoZSBsb29wLgoKMjAwNC0wNC0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbmVtaXQuYyAoZ2VuX3NwbGl0KTogQ2hhbmdlIHByb3RvdHlwZSBvZiBnZW5lcmF0ZWQgY29kZS4KCSogZ2VucmVjb2cuYyAod3JpdGVfYWN0aW9uKTogQWRqdXN0IHByb3RvdHlwZSBmb3IgYW5kIGNhbGxzIHRvCglnZW5fc3BsaXRfKi4KCSogZ2Vuc3VwcG9ydC5jIChzdHJ1Y3QgcXVldWVfZWxlbSk6IEFkZCBzcGxpdCBmaWVsZC4KCShxdWV1ZV9wYXR0ZXJuKTogUmV0dXJuIGEgdmFsdWUuICBDbGVhciB0aGUgc3BsaXQgZmllbGQuCgkocHJvY2Vzc19ydHgpOiBNYWludGFpbiBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGFuIGluc24gYW5kIHRoZQoJc3BsaXQgZ2VuZXJhdGVkIGZyb20gaXQgZm9yIGEgZGVmaW5lX2luc25fYW5kX3NwbGl0LgoJKHByb2Nlc3Nfb25lX2NvbmRfZXhlYyk6IEdlbmVyYXRlIGEgbmV3IHNwbGl0IGZvciBhCglkZWZpbmVfaW5zbl9hbmRfc3BsaXQuCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhcm1fc3BsaXRfY29uc3RhbnQpOiBBZGQgaW5zbgoJcGFyYW1ldGVyLgoJKGVtaXRfY29uc3RhbnRfaW5zbik6IE5ldyBmdW5jdGlvbi4KCShhcm1fZ2VuX2NvbnN0YW50KTogVXNlIGl0LgoJKiBjb25maWcvYXJtL2FybS5tZDogQWRqdXN0IGNhbGxzIHRvIGFybV9zcGxpdF9jb25zdGFudC4KCjIwMDQtMDQtMDIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5jOiBBZGQgb3ZlcmFsbCBjb21tZW50LgoJKGNncmFwaF9pbmxpbmVfaGFzaCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoY2dyYXBoX2NyZWF0ZV9ub2RlKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoY2dyYXBoX25vZGUpOiAuLi4gaGVyZS4KCShjZ3JhcGhfZWRnZSk6IE5ldyBmdW5jdGlvbi4KCShjZ3JhcGhfY3JlYXRlX2VkZ2UpOiBOZXcgQ0FMTF9FWFBSIGFyZ3VtZW50OyBzb21lIHNhbml0eSBjaGVja2luZy4KCShjZ3JhcGhfcmVtb3ZlX2VkZ2UpOiBBY2NlcHQgZWRnZSwgaW50ZWFkIG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uCgkoY2dyYXBoX3JlZGlyZWN0X2VkZ2VfY2FsbGVlKTogTmV3LgoJKGNncmFwaF9yZW1vdmVfbm9kZSk6IFVwZGF0ZSBhbGwgbmV3IGRhdGFzdHJ1Y3R1cmVzLgoJKGNncmFwaF9yZWNvcmRfY2FsbCwgY2dyYXBoX3JlbW92ZV9jYWxsKTogS2lsbC4KCShkdW1wX2NncmFwaF9ub2RlKTogQnJlYWsgb3V0IGZyb20gLi4uIDsgZHVtcCBuZXcgZGF0YXN0cnVjdHVyZXMuCgkoZHVtcF9jZ3JhcGgpOiAuLi4gaGVyZS4KCShjZ3JhcGhfZnVuY3Rpb25fcG9zc2libHlfaW5saW5lZF9wKTogVXNlIG5ldyBoYXNodGFibGUuCgkoY2dyYXBoX2Nsb25lX2VkZ2UsIGNncmFwaF9jbG9uZV9ub2RlKTogTmV3LgoJKiBjZ3JhcGguaDogSW5jbHVkZSBoYXNodGFiLmgKCShzdHJ1Y3QgY2dyYXBoX2dsb2JhbF9pbmZvKTogS2lsbCBjbG9uZWRfdGltZXMsIGlubGluZV9vbmNlLCB3aWxsX2JlX291dHB1dAoJZmllbGRzLCBhZGQgaW5saW5lZF90byBwb2ludGVyLgoJKGNncmFwaF9ub2RlKTogQWRkIHBvaW50ZXIgdG8gbmV4dF9jbG9uZS4KCShjZ3JhcGhfcmVtb3ZlX2VkZ2UsIGNncmFwaF9jcmVhdGVfZWRnZSk6IFVwZGF0ZSBwcm90b3R5cGUuCgkoY2dyYXBoX3JlbW92ZV9jYWxsLCBjZ3JhcGhfcmVjb3JkX2NhbGwpOiBLaWxsLgoJKGNncmFwaF9pbmxpbmVfaGFzaCk6IERlY2xhcmUuCgkoZHVtcF9jZ3JhcGhfbm9kZSwgY2dyYXBoX2VkZ2UsIGNnNHJhcGhfY2xvbmVfZWRnZSwgY2dyYXBoX2Nsb25lX25vZGUsCgljZ3JhcGhfcmVkaXJlY3RfZWRnZV9jYWxsZWUpOiBEZWNsYXJlLgoJKGNncmFwaF9jcmVhdGVfZWRnZXMsIGNncmFwaF9pbmxpbmVfcCk6IFVwZGF0ZSBwcm9yb3R5cGUuCgkoY2dyYXBoX3ByZXNlcnZlX2Z1bmN0aW9uX2JvZHlfcCwgdmVyaWZ5X2NncmFwaCwgdmVyaWZ5X2NncmFwaF9ub2RlLAoJY2dyYXBoX21hcmtfaW5saW5lX2VkZ2UsIGNncmFwaF9jbG9uZV9pbmxpbmVkX25vZGVzKTogRGVjbGFyZS4KCSogY2dyYXBodW5pdC5jOiBBZGQgb3ZlcmFsbCBjb21tZW50LgoJKGNncmFwaF9vcHRpbWl6ZV9mdW5jdGlvbik6IEtpbGwuCgkoY2dyYXBoX2Fzc2VtYmxlX3BlbmRpbmdfZnVuY3Rpb25zKTogRG8gbm90IGFzc2VtYmxlIGlubGluZSBjbG9uZXMuCgkoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogVXBkYXRlIGNhbGwgb2YgY2dyYXBoX3JlbW92ZV9ub2RlCgkocmVjb3JkX2NhbGxfMSk6IFJlY29yZCBjYWxsIHNpdGVzLgoJKGNncmFwaF9jcmVhdGVfZWRnZXMpOiBBY2NlcHQgbm9kZSBpbnN0ZWFkIG9mIGRlY2wgYXJndW1lbnQuCgkoZXJyb3JfZm91bmQpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHZlcmlmeV9jZ3JhcGhfbm9kZV8xLCB2ZXJpZnlfY2dyYXBoX25vZGUsIHZlcmlmeV9jZ3JhcGgpOiBOZXcgZnVuY3Rpb25zLgoJKGNncmFwaF9hbmFseXplX2Z1bmN0aW9uKTogVXBkYXRlIGZvciBuZXcgZGF0YXN0cnVjdHVyZXMuCgkoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiBQbHVnIG1lbW9yeSBsZWFrLgoJKGNncmFwaF9vcHRpbWl6ZV9mdW5jdGlvbik6IEtpbGwuCgkoY2dyYXBoX2V4cGFuZF9mdW5jdGlvbik6IERvIG5vdCB1c2UgY2dyYXBoX29wdGltaXplX2Z1bmN0aW9uLgoJKElOTElORURfVElNRVMsIFNFVF9JTkxJTkVEX1RJTUVTLCBjZ3JhcGhfaW5saW5lZF9pbnRvLAoJY2dyYXBoX2lubGluZWRfY2FsbGVlcyk6IEtpbGwuCgkoY2dyYXBoX3JlbW92ZV91bnJlYWNoYWJsZV9ub2Rlcyk6IFZlcmlmeSBjZ3JhcGg7IHVwZGF0ZSBoYW5kbGluZyBvZgoJY2xvbmVzLgoJKGVzdGltYXRlX2dyb3d0aCk6IFNpbXBsaWZ5LgoJKGNncmFwaF9jbG9uZV9pbmxpbmVkX25vZGVzKTogTmV3IGZ1bmN0aW9uLgoJKGNncmFwaF9tYXJrX2lubGluZV9lZGdlKTogUmUtaW1wbGVtZW50LgoJKGNncmFwaF9tYXJrX2lubGluZSk6IExpa2V3aXNlLgoJKGNncmFwaF9jaGVja19pbmxpbmVfbGltaXRzKTogU2ltcGxpZnkuCgkoY2dyYXBoX3JlY3Vyc2l2ZV9pbmxpbmluZ19wKTogTmV3LgoJKHVwZGF0ZV9jYWxsZWVfa2V5cyk6IEJyZWFrIG91dCBmcm9tIC4uLgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmdfb2Zfc21hbGxfZnVuY3Rpb25zKTogLi4uIGhlcmU7IHNpbXBsaWZ5LgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmcsIGNncmFwaF9kZWNpZGVfaW5saW5pbmdfaW5jcmVtZW50YWxseSk6CglMaWtld2lzZS4KCShjZ3JhcGhfZXhwYW5kX2FsbF9mdW5jdGlvbnMpOiBSZW1vdmUgaW5saW5lIGNsb25lcyBmcm9tIHRoZSBvcmRlcmVkCglsaXN0LgoJKGNncmFwaF9wcmVzZXJ2ZV9mdW5jdGlvbl9ib2R5X3ApOiBOZXcgcHJlZGljYXRlLgoJKGNncmFwaF9vcHRpbWl6ZSk6IFZlcmlmeSBjZ3JhcGguCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IEFkZCBmaWVsZHMgc2F2ZWRfdHJlZS9zYXZlZF9hcmdzLgoJKiB0aW1ldmFyLmRlZiAoVFZfQ0dSQVBIX1ZFUklGWSk6IFVzZSB2ZXJpZmllci4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEbyBub3QgZnJlZSBjZnVuLgoJKiB0cmVlLWlubGluZS5jOiBJbmNsdWRlIGZ1bmN0aW9uLmgKCShzdHJ1Y3QgaW5saW5lX2RhdGEpOiBBZGQgc2F2aW5nX3AgZmllbGQ7IHJlcGxhY2UgZGVjbC9jdXJyZW50X2RlY2wgYnkKCW5vZGUvY3VycmVudF9ub2RlLgoJKGluc2VydF9kZWNsX21hcCk6IE5ldyBmdW5jdGlvbi4KCShjb3B5X2JvZHlfcik6IEhhbmRsZSBzYXZpbmc7IHVwZGF0ZSBjZ3JhcGggZGF0YXN0cnVjdHVyZS4KCShjb3B5X2JvZHkpOiBIYW5kbGUgcmVjdXJzaXZlIGlubGluaW5nLgoJKGluaXRpYWxpemVfaW5saW5lZF9wYXJhbWV0ZXJzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogUHJvcGFnYXRlIG5vZGUgYXR0cmlidXRlczsgdXBkYXRlIGNncmFwaC4KCShvcHRpbWl6ZV9pbmxpbmVfY2FsbHMpOiBWZXJpZnkgdGhhdCBkYXRhc3RydWN0dXJlIHN0aWxsIG1hdGNoLgoJKHNhdmVfYm9keSk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS1pbmxpbmUuaCAoc2F2ZV9ib2R5KTogTmV3LgoJKiB0cmVlLW9wdGltaXplLmMgKHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbik6IHByZXNlcnZlIGZ1bmN0aW9uIGJvZHk7IGRvIGlubGluaW5nLgoJKiBsYW5naG9va3MtZGVmLmMgKExBTkdfSE9PS1NfVVBEQVRFX0RFQ0xfQUZURVJfU0FWSU5HKTogTmV3LgoJKiBsYW5naG9va3MuYyAobGFuZ19ob29rcyk6IEFkZCB1cGRhdGVfZGVjbF9hZnRlcl9zYXZpbmcuCgoyMDA0LTA0LTAxICBTZXJnZSBCZWx5c2hldiAgPDEzMTlAYm90LnJ1PgoKCVBSIHRhcmdldC8xNDcwMgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBmaXggc291cmNlIG9wZXJhbmQgY29uc3RyYWludHMgaW4KCW1teF9wc2h1ZncsIHNzZTJfcHNodWZkLCBzc2UyX3BzaHVmbHcsIHNzZTJfcHNodWZodwoKMjAwNC0wNC0wMSAgV2FsZGVrIEhlYmlzY2ggIDxoZWJpc2NoQG1hdGgudW5pLndyb2MucGw+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRhKTogUHJlc2VydmUgdHlwZXMgb2YgY29tcGFyaXNvbnMuCgoyMDA0LTA0LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdG9wbGV2LmMgKGJhY2tlbmRfaW5pdCk6IE1vdmUgaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzIGNhbGwgLi4uCgkobGFuZ19kZXBlbmRlbnRfaW5pdCk6IC4uLiBoZXJlLgoKMjAwNC0wNC0wMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGdjYy5jIChpbml0X2djY19zcGVjcyk6IElmIEhBVkVfTERfQVNfTkVFREVELCBsaW5rIHdpdGgKCS1sZ2NjIC0tYXMtbmVlZGVkIC1sZ2NjX3MgLS1uby1hcy1uZWVkZWQgYnkgZGVmYXVsdC4KCSogY29uZmlndXJlLmFjIChIQVZFX0xEX0FTX05FRURFRCk6IENoZWNrIGZvciBsZCAtLWFzLW5lZWRlZC4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBjb25maWcuaW46IFJlYnVpbHQuCgkqIE1ha2VmaWxlLmluIChzdGFnZTEtc3RhcnQpOiBDb3B5IGFsc28gbGliZ2NjX3MqJChTSExJQl9FWFQpLgoJKHN0YWdlMi1zdGFydCwgc3RhZ2UzLXN0YXJ0LCBzdGFnZTQtc3RhcnQpOiBMaWtld2lzZS4KCShzdGFnZXByb2ZpbGUtc3RhcnQsIHN0YWdlZmVlZGJhY2stc3RhcnQpOiBMaWtld2lzZS4KCjIwMDQtMDQtMDEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKERJVEZfQ09OVkVSU0lPTl9MSUJGVU5DUyk6IERlZmluZSB0byAwLgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoRElURl9DT05WRVJTSU9OX0xJQkZVTkNTKTogUmVkZWZpbmUgdG8gMS4KCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoRElURl9DT05WRVJTSU9OX0xJQkZVTkNTKTogUmVkZWZpbmUgdG8gMS4KCSogY29uZmlnL3NwYXJjL3NvbDIuaCAoRElURl9DT05WRVJTSU9OX0xJQkZVTkNTKTogUmVkZWZpbmUgdG8gMS4KCShTT0xBUklTX0NPTlZFUlNJT05fTElCRlVOQ1MpOiBSZW5hbWUgdG8gU1VOX0NPTlZFUlNJT05fTElCRlVOQ1MuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19pbml0X2xpYmZ1bmNzKTogSW5pdGlhbGl6ZSBvcHRhYnMKCXdpdGggX1FfcXRvbGwsIF9RX3F0b3VsbCBhbmQgX1FfbGx0b3EgaWYgRElURl9DT05WRVJTSU9OX0xJQkZVTkNTLgoJKiBjb25maWcuZ2NjIChzcGFyYy0qLWxpbnV4Kik6IFJldmVydCAyMDA0LTAzLTIzIGNoYW5nZS4KCSogY29uZmlnL3NwYXJjL3QtbGludXg2NCAoVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy90LWxpbnV4OiBSZW1vdmVkLgoKMjAwNC0wNC0wMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzE0NzU1CgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgPEVRX0VYUFI+OiBQcm9wZXJseSBjb21wdXRlIG5ld2NvbnN0IGluCgkiYml0ZmxkKysgPT0gY29uc3QiIHRvICIrK2JpdGZsZCA9PSBjb25zdCArIGluY3IiIHRyYW5zZm9ybWF0aW9ucy4KCjIwMDQtMDQtMDEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBVc2UgREVDTF9VTlNJR05FRCwgbm90IFRSRUVfVU5TSUdORUQuCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoZ2V0X25hcnJvd2VyKTogTGlrZXdpc2UgYW5kIGFsc28gdXNlIEJJVF9GSUVMRF9SRUZfVU5TSUdORUQuCgkqIGZvbGQtY29uc3QuYyAobWFrZV9iaXRfZmllbGRfcmVmKTogVXNlIEJJVF9GSUVMRF9SRUZfVU5TSUdORUQuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IEhhbmRsZSB2YXJpb3VzIHVzZWQgb2YgdW5zaWduZWRfZmxhZy4KCSogdHJlZS5kZWYgKEJJVF9GSUVMRF9SRUYpOiBVcGRhdGUgY29tbWVudC4KCSogdHJlZS5oIChUUkVFX1VOU0lHTkVEKTogRGVsZXRlZC4KCShERUNMX1VOU0lHTkVELCBCSVRfRklFTERfUkVGX1VOU0lHTkVEKTogTmV3IG1hY3Jvcy4KCjIwMDQtMDMtMzEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBidWlsdGlucy5jLCBjLWF1eC1pbmZvLmMsIGMtY29tbW9uLmMsIGMtY3BwYnVpbHRpbi5jLCBjLWRlY2wuYzoKCUNoYW5nZSBtb3N0IG9jY3VycmVuY2VzIG9mIFRSRUVfVU5TSUdORUQgdG8gVFlQRV9VTlNJR05FRC4KCSogYy1mb3JtYXQuYywgYy1vcHRzLmMsIGMtcHJldHR5LXByaW50LmMsIGMtdHlwZWNrLmM6IExpa2V3aXNlLgoJKiBjYWxscy5jLCBjb252ZXJ0LmMsIGRieG91dC5jLCBkb2p1bXAuYywgZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBleHBtZWQuYywgZXhwci5jLCBmb2xkLWNvbnN0LmMsIGZ1bmN0aW9uLmMsIGludGVncmF0ZS5jOiBMaWtld2lzZS4KCSogb3B0YWJzLmMsIHNkYm91dC5jLCBzdG10LmMsIHN0b3ItbGF5b3V0LmMsIHRyZWUtZHVtcC5jOiBMaWtld2lzZS4KCSogdHJlZS5jLCBjb25maWcvaXEyMDAwL2lxMjAwMC5jLCBjb25maWcvbTMyci9tMzJyLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMsIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmMsIGNvbmZpZy9zcGFyYy9zcGFyYy5jLCBvYmpjL29iamMtYWN0LmM6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSwgY2FzZSBDT01QTEVYX1RZUEUpOiBUZXN0IGZvcgoJUkVBTF9UWVBFLCBub3QgSU5URUdFUl9UWVBFLgoJKGxheW91dF90eXBlLCBjYXNlIFZFQ1RPUl9UWVBFKTogU2ltcGxpZnkgY29kZS4KCSogdHJlZS5jIChidWlsZF92ZWN0b3JfdHlwZV9mb3JfbW9kZSk6IFJlbW92ZSBkdXAgdW5zaWduZWQgc2V0dGluZy4KCSogdHJlZS5oOiBVcGRhdGUgY29tbWVudHMuCgkoU1RSSVBfTk9QUyk6IFVzZSBUWVBFX1VOU0lHTkVELgoJKFRZUEVfVU5TSUdORUQpOiBOZXcgbWFjcm8uCgkoVFlQRV9UUkFQX1NJR05FRCk6IFJlbW92ZSBub3cgcmVkdW5kYW50IGNoZWNrLgoJKFNBVkVfRVhQUl9OT1BMQUNFSE9MREVSKTogRG9uJ3QgdXNlIFRSRUVfVU5TSUdORUQuCgoyMDA0LTAzLTMxICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZnVuY3Rpb24uYyAocHV0X3Zhcl9pbnRvX3N0YWNrKTogUHJvcGVybHkgc2V0IG9yaWdfcmVnIGZvciBpbmRpcmVjdC4KCjIwMDQtMDMtMzEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL3JzNjAwMC90LWRhcndpbiAoTElCMkZVTkNTX1NUQVRJQ19FWFRSQSk6CglBZGQgZGFyd2luLWZwc2F2ZS5hc20sIGRhcndpbi12ZWNzYXZlLmFzbSwKCWFuZCBkYXJ3aW4td29ybGQuYXNtLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IEFkZCAtV2EsLWZvcmNlX2NwdXN1YnR5cGVfQUxMCglhcyB0aGUgYXNtIGZpbGVzIGNvbnRhaW4gYWx0aXZlYyBpbnN0cnVjdGlvbnMuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLWZwc2F2ZS5hc206IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi12ZWNzYXZlLmFzbTogTmV3IGZpbGUuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLXdvcmxkLmFzbTogTmV3IGZpbGUuCgoyMDA0LTAzLTMxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2VuZ3R5cGUteWFjYy55IChvcHRpb24sIHN0cmluZ3NlcSk6IEFkZCBtaXNzaW5nCgl0ZXJtaW5hdGluZyBzZW1pY29sb24uCgoyMDA0LTAzLTMwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAodGxzX2dkXzMyLCB0bHNfZ2RfNjQsCgl0bHNfbGRfMzIsIHRsc19sZF82NCwgdGxzX2R0cHJlbF8zMiwgdGxzX2R0cHJlbF82NCwKCXRsc19kdHByZWxfaGFfMzIsIHRsc19kdHByZWxfaGFfNjQsCgl0bHNfZHRwcmVsX2xvXzMyLCB0bHNfZHRwcmVsX2xvXzY0LAoJdGxzX2dvdF9kdHByZWxfNjQsIHRsc190cHJlbF8zMiwgdGxzX3RwcmVsXzY0LAoJdGxzX3RwcmVsX2hhXzMyLCB0bHNfdHByZWxfaGFfNjQsCgl0bHNfdHByZWxfbG9fMzIsIHRsc190cHJlbF9sb182NCwKCXRsc19nb3RfdHByZWxfMzIsIHRsc19nb3RfdHByZWxfNjQsCgl0bHNfdGxzXzMyLCB0bHNfdGxzXzY0KTogUmVwbGFjZSByZWdpc3Rlcl9vcGVyYW5kIHdpdGgKCWdwY19yZWdfb3BlcmFuZC4KCjIwMDQtMDMtMzAgIE1vc3RhZmEgSGFnb2cgIDxtdXN0YWZhQGlsLmlibS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoKmN0cnNpX2ludGVybmFsMSwgKmN0cnNpX2ludGVybmFsMiwKCSpjdHJkaV9pbnRlcm5hbDEsICpjdHJkaV9pbnRlcm5hbDIsICpjdHJzaV9pbnRlcm5hbDMsCgkqY3Ryc2lfaW50ZXJuYWw0LCAqY3RyZGlfaW50ZXJuYWwzLCAqY3RyZGlfaW50ZXJuYWw0LAoJKmN0cnNpX2ludGVybmFsNSwgKmN0cnNpX2ludGVybmFsNiwgKmN0cmRpX2ludGVybmFsNSwKCSpjdHJkaV9pbnRlcm5hbDYpOiBSZXBsYWNlIHJlZ2lzdGVyX29wZXJhbmQgd2l0aAoJbm9uaW1tZWRpYXRlX29wZXJhbmQuCgoyMDA0LTAzLTI5ICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IFJlYXNzb2NpYXRlIG11bHRpcGx5IGV4cHJlc3Npb24KCXdpdGggYW4gYWRqYWNlbnQgbm9uLW11bHRpcGx5IGV4cHJlc3Npb24gdG8gdXNlCglhcmNoaXRlY3R1cmUncyBtdWx0aXBseS1hZGQgaW5zdHJ1Y3Rpb24uCgoyMDA0LTAzLTMwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2VuZ3R5cGUuYyAoY3JlYXRlX29wdGlvbik6IE5ldyBmdW5jdGlvbi4KCSogZ2VuZ3R5cGUuaDogUHJvdG90eXBlIGl0LgoJKiBnZW5ndHlwZS15YWNjLnkgKHN0cmluZ3NlcSk6IE5ldyBydWxlLgoJKG9wdGlvbik6IFVzZSBjcmVhdGVfb3B0aW9uLiAgQWRkIG5ldyBiYXJlIElEIHByb2R1Y3Rpb24uICBVc2UKCXN0cmluZ3NlcSwgbm90IFNUUklORyBkaXJlY3RseS4KCgkqIGFsaWFzLmMsIGJpdG1hcC5jLCBjLWRlY2wuYywgY2dyYXBoLmgsIGNwcGxpYi5oLCBjc2VsaWIuaAoJKiBkd2FyZjJvdXQuYywgZW1pdC1ydGwuYywgZnVuY3Rpb24uaCwgbGlzdHMuYywgdHJlZS5oCgkqIHZhcnJheS5oLCBjb25maWcvYWxwaGEvYWxwaGEuYzoKCVVzZSBuZXcgc2hvcnRlciBmb3JtIG9mIEdUWSBtYXJrZXJzLgoKCSogZG9jL2d0eS50ZXhpOiBSZXdyaXRlLgoKMjAwNC0wMy0zMCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX2Z1bmN0aW9uX2Jhc2VfbmFtZSk6CglSZW1vdmUgY3VycmVudF9uYW1lIGFuZCBnZXR0aW5nIHRoZSBuYW1lIG9mIHRoZQoJY3VycmVudCBmdW5jdGlvbi4KCjIwMDQtMDMtMzAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAodGh1bWJfanVtcCk6IFJlZHVjZSB0aGUgYmFja3dhcmQgYnJhbmNoCglyYW5nZSwgYW5kIGluY3JlYXNlIHRoZSBmb3J3YXJkIGJyYW5jaCByYW5nZSwgdG8gYWxsb3cgZm9yCgl0aGUgZmFjdCB0aGF0IHRoZSBQQyB3aWxsIGJlIG9mZiBieSA0LgoKMjAwNC0wMy0zMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIC5jdnNpZ25vcmU6IEFkZCBHUEFUSCwgR1JUQUdTLCBHU1lNUyBhbmQgR1RBR1MgKEdOVSBHTE9CQUwpCgoyMDA0LTAzLTMwICBIYXJ0bXV0IFBlbm5lciAgPGhwZW5uZXJAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG91dHB1dF92ZWNfY29uc3RfbW92ZSk6CglGaW5kIGFsbCBjYXNlcyBvZiBFQVNZX1ZFQ1RPUl8xNV9BRERfU0VMRi4KCShlYXN5X3ZlY3Rvcl9jb25zdGFudF9hZGRfc2VsZik6IEFjY2VwdAoJYWxsIHZlY3RvciBjb25zdGFudCBsb2FkYWJsZSBieSB2c3BsdCogYW5kIHZhZGQqLgoJKGVhc3lfdmVjdG9yX3NhbWUpOiBVc2UgZWFzeV92ZWN0b3Jfc3BsYXRfY29uc3QuCgkoZWFzeV92ZWN0b3JfY29uc3QpOiBVc2UgZWFzeV92ZWN0b3Jfc3BsYXRfY29uc3QuCgkoZWFzeV92ZWN0b3Jfc3BsYXRfY29uc3QpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuX2Vhc3lfdmVjdG9yX2NvbnN0YW50X2FkZF9zZWxmKTogTmV3IGZ1bmN0aW9uLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmMgKGdlbl9lYXN5X3ZlY3Rvcl9jb25zdGFudF9hZGRfc2VsZik6CglOZXcgcHJvdG90eXBlLgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChtb3Z2NHNpIHNwbGl0dGVyKTogQ2hhbmdlIHRvCgllbWl0IG1vdmUgaW5zbiB3aXRoIGhhbGZlZCB2ZWN0b3IgY29uc3RhbnQuCgkoKm1vdnY4aGkgc3BsaXR0ZXIpOiBMaWtld2lzZS4KCSgqbW92djE2cWkgc3BsaXR0ZXIpOiBMaWtld2lzZS4KCjIwMDQtMDMtMzAgIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoKCVBSIDExNTkxCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3MpOgoJQWxsb3cgYW55IG9mZnNldCB0byBhcmd1bWVudCBwb2ludGVyIGluIG5vLXN0cmljdCBjYXNlLgoKMjAwNC0wMy0zMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdG9wbGV2LmMgKGJhY2tlbmRfaW5pdCk6IEFkZCBtaXNzaW5nIGNhbGwgdG8gaW5pbnRfb3B0aW1pemF0aW9uX3Bhc3Nlcy4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3NlcywgZmluaXNoX29wdGltaXphdGlvbl9wYXNzZXMpOiBPdXRwdXQgY2dyYXBoCglkdW1wIGZpbGUgaW4gbm9uLXVuaXQtYXQtYS10aW1lIG1vZGUuCgoyMDA0LTAzLTI5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGNvbmZpZy9jcmlzL2NyaXMuaDogQ29ycmVjdCAjaWZkZWYgdG8gdGVzdCBmb3IKCUhBVkVfQVNfTk9fTVVMX0JVR19BQk9SVF9PUFRJT04sIG5vdAoJSEFWRV9BU19NVUxfQlVHX0FCT1JUX09QVElPTi4KCjIwMDQtMDMtMjkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBmdW5jdGlvbi5jIChwdXRfdmFyX2ludG9fc3RhY2spOiBJZiBvbGQgUlRMIHdhcyBBRERSRVNTT0YsIHVwZGF0ZQoJdGhlIGFkZHJlc3MgaW5zaWRlIHRoZSBvbGQgUlRMLgoKMjAwNC0wMy0yOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jOiBWZXJpZnkgdGhhdCBDX1NJWkVPRl9TVFJVQ1RfTEFOR19JREVOVElGSUVSIGlzIGNvcnJlY3QuCgkoc3RydWN0IGNfYmluZGluZywgc3RydWN0IGNfc2NvcGUpOiBBZGQgY2hhaW5fbmV4dAoJYXR0cmlidXRlcyB0byBHVFkgbWFya2Vycy4KCShzdHJ1Y3QgbGFuZ19pZGVudGlmaWVyLCBzdHJ1Y3QgbGFuZ190cmVlX25vZGUpOiBEZWZpbmUKCWhlcmUuLi4KCSogYy10cmVlLmg6IC4uLiBub3QgaGVyZS4gIE5vIGxvbmdlciBuZWVkIHRvIGRlY2xhcmUgc3RydWN0CgljX2JpbmRpbmcgZWl0aGVyLiAgRG8gZGVmaW5lIENfU0laRU9GX1NUUlVDVF9MQU5HX0lERU5USUZJRVIuCgkqIGMtbGFuZy5jLCBvYmpjL29iamMtbGFuZy5jOiBTZXQgTEFOR19IT09LU19JREVOVElGSUVSX1NJWkUKCXRvIENfU0laRU9GX1NUUlVDVF9MQU5HX0lERU5USUZJRVIuCgoJUFIgMTQ3MzQsIDExOTQ0CgkqIGMtZGVjbC5jIChnZXRfcGFybV9pbmZvKTogSWYgZXJyb3JfbWFya19ub2RlIGlzIGVuY291bnRlcmVkCglpbiB0aGUgYmluZGluZ3MgY2hhaW4sIHVuYmluZCBhbmQgZGlzY2FyZCBpdDsgZG9uJ3QgYWJvcnQuCgoyMDA0LTAzLTI4ICBPbGdhIEdvbG92b25ldnNreSA8b2xnYUBpbC5pYm0uY29tPgoJICAgIERvcml0IE5haXNobG9zIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kOiAoYW5kdnYxNnFpMywgYW5kdjhoaTMsIG9uZV9jbXBsdjE2cWkyLAoJb25lX2NtcGx2OGhpMiwgb25lX2NtcGx2NHNpMiwgaW9ydjE2cWkzLCBpb3J2OGhpMywpOiBOZXcgbW9kZWxsaW5nLgoKMjAwNC0wMy0yOCAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLXByb3Rvcy5oIChtNjhoYzExX3BhZ2UwX3N5bWJvbF9wKTogRGVjbGFyZS4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9oYW5kbGVfcGFnZTBfYXR0cmlidXRlKTogTmV3LgoJKG02OGhjMTFfYXR0cmlidXRlX3RhYmxlKTogTmV3IGF0dHJpYnV0ZSAicGFnZTAiIHRvIG1hcmsgYSBnbG9iYWwKCXZhcmlhYmxlIGFzIGJlaW5nIGFsbG9jYXRlZCBmcm9tIHdpdGhpbiBwYWdlMCBzZWN0aW9uLgoJKG02OGhjMTFfZW5jb2RlX2xhYmVsKTogTmV3IGZ1bmN0aW9uLgoJKG02OGhjMTFfc3RyaXBfbmFtZV9lbmNvZGluZyk6IE5ldyBmdW5jdGlvbi4KCShtNjhoYzExX3BhZ2UwX3N5bWJvbF9wKTogTmV3IGZ1bmN0aW9uLgoJKG02OGhjMTFfaW5kaXJlY3RfcCk6IEFjY2VwdCBnbG9iYWwgdmFyaWFibGVzIG1hcmtlZCBpbiBwYWdlMC4KCShtNjhoYzExX2VuY29kZV9zZWN0aW9uX2luZm8pOiBMb29rdXAgInBhZ2UwIiBhdHRyaWJ1dGUuCgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmggKEVYVFJBX0NPTlNUUkFJTlQpOiAnUicgY29uc3RyYWludCBhbHNvCglyZXByZXNlbnRzIGFjY2VzcyB0byBwYWdlMCB2YXJpYWJsZXMuCgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLm1kICgiKmxvZ2ljYWxzaTNfemV4dGhpIik6IFVzZSBnZW5fcnR4X1JFRy4KCSgiKmxvZ2ljYWxzaTNfc2lsc2hsMTZfemV4dCIpOiBMaWtld2lzZS4KCSgiKmFzaGxkaTNfY29uc3QzMiIpOiBMaWtld2lzZS4KCShwZWVwaG9sZTIgYXNoaWZ0KTogTGlrZXdpc2UuCgoyMDA0LTAzLTI4ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtdHJlZS5oIChDX0RFQ0xfUkVHSVNURVIpOiBOZXcuCgkqIGMtYXV4LWluZm8uYyAoZ2VuX2RlY2wpLCBjLWRlY2wuYyAob2JqY19tYXJrX2xvY2Fsc192b2xhdGlsZSwKCWZpbmlzaF9kZWNsLCBncm9rZGVjbGFyYXRvciwgZ2V0X3Bhcm1faW5mbyksIGMtdHlwZWNrLmMKCShidWlsZF9hcnJheV9yZWYsIGNfbWFya19hZGRyZXNzYWJsZSk6IFNldCBhbmQgdXNlIGl0LgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpLCBjLXR5cGVjay5jIChjX21hcmtfYWRkcmVzc2FibGUpOgoJQWxsb3cgc3RydWN0dXJlcyB3aXRoIHZvbGF0aWxlIGZpZWxkcyB0byBiZSBkZWNsYXJlZCByZWdpc3Rlci4KCURvbid0IGNoZWNrIFRSRUVfQUREUkVTU0FCTEUgYmVmb3JlIHdhcm5pbmcgYWJvdXQgdGFraW5nIGFkZHJlc3MKCW9mIHJlZ2lzdGVyLgoJKiBjLWRlY2wuYyAoZmluaXNoX2RlY2wpOiBEb24ndCBhbGxvdyBzdHJ1Y3R1cmVzIHdpdGggdm9sYXRpbGUKCWZpZWxkcyB0byBiZSBwbGFjZWQgaW4gbmFtZWQgcmVnaXN0ZXIuCgkqIGRvYy90cm91YmxlLnRleGk6IFJlbW92ZSByZWZlcmVuY2UgdG8gc3RydWN0dXJlcyB3aXRoIHZvbGF0aWxlCglmaWVsZHMgaW4gcmVnaXN0ZXJzLgoKMjAwNC0wMy0yNyAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZSk6IE1vdmUKCU5PVEVfSU5TTl9GVU5DVElPTl9FTkQgYW5kIE5PVEVfSU5TTl9GVU5DVElPTl9CRUcgbm90ZXMKCWJlZm9yZSB0aGUgZXBpbG9ndWUuCgoyMDA0LTAzLTI3ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogVXNlIGdlbl9pbnRfbW9kZSB0byBjb3JyZWN0bHkKCXNpZ24tZXh0ZW5kIENPTlNUX0lOVCB2YWx1ZS4KCjIwMDQtMDMtMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChCVF9XSU5ULCBCVF9GTl9JTlRfV0lOVCwgQlRfRk5fV0lOVF9XSU5UKTogTmV3LgoJKiBidWlsdGlucy5kZWYgKERFRl9DOTRfQlVJTFRJTik6IE5ldy4gIEFkZCB3Y3R5cGUgYnVpbHRpbnMuCgkqIGRvYy9leHRlbmQudGV4aTogTGlrZXdpc2UuCgoyMDA0LTAzLTI2ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIGMtdHlwZWNrLmMgKGNvbXB0eXBlcyk6IFJlcGxhY2UgY2FsbHMgdG8gVFlQRV9ET01BSU4KCSAgd2l0aCBUWVBFX09SSUdfU0laRV9UWVBFLgoKMjAwNC0wMy0yNSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSIDE0MjE5CgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IERvIG5vdCBhbGxvdyBjb21wYXJpc29ucyBvZgoJdmVjdG9ycy4KCjIwMDQtMDMtMjYgIEphbWVzIEEuIE1vcnJpc29uICA8amEybW9ycmlAdXdhdGVybG9vLmNhPgoKCSogY29uZmlnLmdjYzogUmVtb3ZlIHNwYXJjLXR0aS0qLgoJKiBjb25maWcvc3BhcmMvcGJkLmg6IERlbGV0ZS4KCgkqIGNvbmZpZy9zcGFyYy9zb2wyLmg6IFJlbW92ZSBub3RlIGFib3V0IFN1biBPUyA0LnguCgkqIGNvbmZpZy9zcGFyYy9hb3V0Lmg6IExpa2V3aXNlLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmg6IFJlbW92ZSBpZiAwJ2QgY29kZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChjYWxsKTogUmVtb3ZlIGlmIDAnZCBjb2RlLgoJKGNhbGxfdmFsdWUpOiBMaWtld2lzZS4KCShub25sb2NhbF9nb3RvKTogTGlrZXdpc2UuCgkodW5pbXBfaW5zbik6IERlbGV0ZS4KCjIwMDQtMDMtMjUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IEhhbmRsZSBCSVRfWE9SX0VYUFIgbGlrZQoJQklUX0lPUl9FWFBSOyBBXkIgaXMgbm9ubmVnYXRpdmUgd2hlbiBBIGFuZCBCIGFyZSBub25uZWdhdGl2ZS4KCjIwMDQtMDMtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgMTE1MjcKCSogYy10eXBlY2suYyAocG9wX2luaXRfbGV2ZWwpOiBFbWl0IHBlbmRpbmcgaW5pdCBlbGVtZW50cyBlYXJsaWVyCglyYXRoZXIgdGhhbiBsYXRlci4KCjIwMDQtMDMtMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbik6IEZpeCBlcnJvciBpbiBsYXN0IGNoYW5nZS4KCjIwMDQtMDMtMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaDogRm9ybWF0dGluZyBmaXguCgoyMDA0LTAzLTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5kZWY6IEFkZCBjdHlwZSBidWlsdGlucy4KCSogZG9jL2V4dGVuZC50ZXhpOiBMaWtld2lzZS4KCjIwMDQtMDMtMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbik6IEFkZCBuZXcgYnVpbHRpbiBvcHRpbWl6YXRpb25zIGZvcgoJc3FydCBhbmQvb3IgY2JydC4KCSogZm9sZC1jb25zdC5jIChmb2xkKTogTGlrZXdpc2UuCgoyMDA0LTAzLTI1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfYWx3YXlzX2hpbnQpOiBOZXcgdmFyaWFibGUuCgkocnM2MDAwX3NjaGVkX2dyb3Vwcyk6IE5ldyB2YXJpYWJsZS4KCShwcm9jZXNzb3JfdGFyZ2V0X3RhYmxlKTogQWRkIHBvd2VyNS4KCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCByczYwMDBfc2NoZWRfaW5zZXJ0X25vcHMsCglyczYwMDBfc2NoZWRfY29zdGx5X2RlcCBhbmQgcnM2MDAwX3NjaGVkX3Jlc3RyaWN0ZWRfaW5zbnNfcHJpb3JpdHkKCWZyb20gcnM2MDAwX3NjaGVkX2dyb3Vwcy4KCShvdXRwdXRfY2JyYW5jaCk6IFVzZSByczYwMDBfYWx3YXlzX2hpbnQuCgkocnM2MDAwX3ZhcmlhYmxlX2lzc3VlKTogVXNlIHJzNjAwMF9zY2hlZF9ncm91cHMuCgkocnM2MDAwX2FkanVzdF9jb3N0KTogQWRkIENQVV9QT1dFUjUuCgkoaXNfbWljcm9jb2RlZF9pbnNuKTogVXNlIHJzNjAwMF9zY2hlZF9ncm91cHMuCgkoaXNfZGlzcGF0Y2hfc2xvdF9yZXN0cmljdGVkKTogVXNlIHJzNjAwMF9zY2hlZF9ncm91cHMuCglSZXR1cm4gMiBmb3IgUE9XRVI1IGNyYWNrZWQgaW5zdHJ1Y3Rpb25zLgoJKGlzX2NyYWNrZWRfaW5zbik6IFVzZSByczYwMDBfc2NoZWRfZ3JvdXBzLgoJKGlzX2JyYW5jaF9zbG90X2luc24pOiBVc2UgcnM2MDAwX3NjaGVkX2dyb3Vwcy4KCShyczYwMDBfaXNzdWVfcmF0ZSk6IEFkZCBDUFVfUE9XRVI1LgoJKHJzNjAwMF9zY2hlZF9maW5pc2gpOiBVc2UgcnM2MDAwX3NjaGVkX2dyb3Vwcy4KCShyczYwMDBfcnR4X2Nvc3RzKTogQWRkIFBST0NFU1NPUl9QT1dFUjUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKHByb2Nlc3Nvcl90eXBlKTogQWRkIFBST0NFU1NPUl9QT1dFUjUuCgkoREVGQVVMVF9TQ0hFRF9DT1NUTFlfREVQKTogRGVsZXRlLgoJKERFRkFVTFRfUkVTVFJJQ1RFRF9JTlNOU19QUklPUklUWSk6IERlbGV0ZS4KCShERUZBVUxUX1NDSEVEX0ZJTklTSF9OT1BfSU5TRVJUSU9OX1NDSEVNRSk6IERlbGV0ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGRlZmluZV9hdHRyICJjcHUiKTogQWRkIHBvd2VyNS4KCSogY29uZmlnL3JzNjAwMC9wb3dlcjUubWQ6IE5ldyBmaWxlLgoJKiBkb2MvaW52b2tlLnRleGk6IEFkZCBwb3dlcjUgb3B0aW9uLgoKMjAwNC0wMy0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNmZ3J0bC5jLCBkYnhvdXQuYywgdHJlZS5kZWYsIGNvbmZpZy9kYXJ3aW4uaCwKCWNvbmZpZy9hcm0vYXJtLmMsIG9iamMvb2JqYy1hY3QuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGRvYy9pbnZva2UudGV4aTogRml4IGEgdHlwby4KCjIwMDQtMDMtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgb3B0aW1pemF0aW9uLzk3MDcuCgkqIHN0bXQuYyAoZW1pdF9jYXNlX25vZGVzKTogRW1pdCBlcXVhbGl0eSBjb21wYXJpc29ucyBpbnN0ZWFkCglvZiByZWN1cnNpbmcgaWYgYm90aCBjaGlsZHJlbiBhcmUgc2luZ2xlLXZhbHVlZCBjYXNlcyB3aXRoIG5vCgljaGlsZHJlbi4KCjIwMDQtMDMtMjUgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jICh2ZnBfcHJpbnRfbXVsdGkpOiBSZW1vdmUuCgkoYXJtX291dHB1dF9mbGRteCk6IE5ldyBmdW5jdGlvbi4KCSh2ZnBfZW1pdF9mc3RteCk6IFJldHVybiBibG9jayBzaXplLCBub3QgaW5zbi4gQWRkIEFSTTEwIFZGUHIxIGJ1Z2ZpeC4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogVXBkYXRlIHRvIG1hdGNoLgoJKGFybV9nZXRfdmZwX3NhdmVkX3NpemUpOiBOZXcgRnVuY3Rpb24uCgkoYXJtX2dldF9mcmFtZV9vZmZzZXRzKTogVXNlIGl0LgoJKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBVc2UgbmV3IGZ1bmN0aW9ucy4KCjIwMDQtMDMtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBhbGlhcy5jIChhbGlhc19pbnZhcmlhbnQsIGFsaWFzX2ludmFyaWFudF9zaXplKTogTWFyayBHVFkuCgkocmVnX2tub3duX3ZhbHVlLCByZWdfa25vd25fdmFsdWVfc2l6ZSk6IExpa2V3aXNlOyBtYWtlIHN0YXRpYy4KCShyZWdfa25vd25fZXF1aXZfcCk6IE1ha2Ugc3RhdGljLgoJKGNsZWFyX3JlZ19hbGlhc19pbmZvKTogVXBkYXRlIGZvciBuZXcgaW5kZXhpbmcuCgkoZ2V0X3JlZ19rbm93bl92YWx1ZSwgc2V0X3JlZ19rbm93bl92YWx1ZSk6IE5ldy4KCShnZXRfcmVnX2tub3duX2VxdWl2X3AsIHNldF9yZWdfa25vd25fZXF1aXZfcCk6IE5ldy4KCShjYW5vbl9ydHgpOiBVc2UgdGhlbS4KCShpbml0X2FsaWFzX2FuYWx5c2lzKTogTGlrZXdpc2UuICBBbGxvY2F0ZSByZWdfa25vd25fdmFsdWUgd2l0aCBnYy4KCURvbid0IHBsYXkgcXVlZXIgb2Zmc2V0dGluZyBnYW1lcyB3aXRoIHJlZ19rbm93bl92YWx1ZSBhbmQKCXJlZ19rbm93bl9lcXVpdl9wLgoJKGVuZF9hbGlhc19hbmFseXNpcyk6IEZyZWUgcmVnX2tub3duX3ZhbHVlIHdpdGggZ2MuCgkqIHJ0bC5oIChnZXRfcmVnX2tub3duX3ZhbHVlLCBnZXRfcmVnX2tub3duX2VxdWl2X3ApOiBEZWNsYXJlLgoJKiBzY2hlZC1kZXBzLmMgKHJlZ19rbm93bl9lcXVpdl9wLCByZWdfa25vd25fdmFsdWUpOiBSZW1vdmUuCgkoZGVwc19tYXlfdHJhcF9wLCBzY2hlZF9hbmFseXplXzEsIHNjaGVkX2FuYWx5emVfMik6IFVzZSB0aGUgbmV3CglmdW5jdGlvbnMgaW5zdGVhZC4KCjIwMDQtMDMtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkd2FyZjJhc20uYywgbG9vcC5oLCBwcmV0dHktcHJpbnQuYywgcHJldHR5LXByaW50LmgsCgljb25maWcvaTM4Ni9tbWludHJpbi5oOiBVcGRhdGUgY29weXJpZ2h0LgoKMjAwNC0wMy0yNCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuYWM6IEFkZCAtLWVuYWJsZS13ZXJyb3ItYWx3YXlzIChmb3IgdG9wIGxldmVsIGJvb3RzdHJhcAoJc3VwcG9ydCkuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMDMtMjQgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMvb2JqYy1hY3QuYyAob2JqY19jb21wdHlwZXMpOiBUcmVhdCBjb21wYXJpc29ucwoJYmV0d2VlbiAnQ2xhc3MnIGFuZCAnPGNsYXNzPiAqJyBhcyBleHBsaWNpdGx5IGludmFsaWQuCgoyMDA0LTAzLTI0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1mcmVuYW1lLXJlZ2lzdGVycyk6IEFkZCBlbmFibGVkIGF0IC1PMy4KCSgtZnByb2ZpbGUtdmFsdWVzKTogQWRkIGVuYWJsZWQgd2l0aCBwcm9maWxlLXtnZW5lcmF0ZSx1c2V9LgoJKC1mdnB0KTogU2FtZS4KCSgtZnRyYWNlcik6IEFkZCBlbmFibGVkIHdpdGggcHJvZmlsZS11c2UuCgkoLWZ1bml0LWF0LWEtdGltZSk6IEFkZCBlbmFibGVkIGF0IC1PMiwtTzMuCgkoLWZ1bnJvbGwtbG9vcHMpOiBBZGQgZW5hYmxlZCB3aXRoIHByb2ZpbGUtdXNlLgoJKC1mdW5zd2l0Y2gtbG9vcHMpOiBBZGQgZW5hYmxlZCB3aXRoIHByb2ZpbGUtdXNlLiAgUmVtb3ZlIGR1cGxpY2F0ZXMuCgkobWF4LWdjc2UtcGFzc2VzKTogTWVudGlvbiBkZWZhdWx0LgoJKG1heC1jc2UtcGF0aC1sZW5ndGgpOiBNZW50aW9uIGRlZmF1bHQuCgoyMDA0LTAzLTI0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChTVFJJQ1QyX1dBUk4pOiBSZW9yZGVyLgoJKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciAtV29sZC1zdHlsZS1kZWZpbml0aW9uLCBhbmQgdXNlIGl0CglpbiBzdHJpY3QxX3dhcm4gaWYgaXQncyBhdmFpbGFibGUuCgkqIGNvbmZpZ3VyZTogUmVnbmVyYXRlLgoKMjAwNC0wMy0yNCAgUGF1bCBCcm9vayAgPHBhdWxAbm93dC5vcmc+CgoJKiBjb25maWcuZ2NjIDxhcm0+OiBBZGQgLS13aXRoLWFiaT0KCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9nZXRfZnJhbWVfc2l6ZSwgdGh1bWJfZ2V0X2ZyYW1lX3NpemUsCgl0aHVtYl9mYXJfanVtcF91c2VkKTogUmVtb3ZlIHByb3RvdHlwZXMuCgkoYXJtX25lZWRzX2RvdWJsZXdvcmRfYWxpZ24pOiBBZGQgcHJvdG90eXBlLgoJKHRodW1iX2NvbXB1dGVfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBEaXR0by4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2dldF9mcmFtZV9vZmZzZXRzKTogTmV3IGZ1bmN0aW9uLgoJKHVzZV9yZXR1cm5faW5zbiwgb3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbiwgYXJtX291dHB1dF9lcGlsb2d1ZSwKCWFybV9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUsIGFybV9jb21wdXRlX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0LAoJYXJtX2V4cGFuZF9wcm9sb2d1ZSwgdGh1bWJfZXhwYW5kX2VwaWxvZ3VlKTogVXNlIGl0LgoJKGFybV9hYmksIHRhcmdldF9hYmlfbmFtZSwgYWxsX2FybV9hYmlzKTogTmV3IHZhcmlhYmxlcy4KCShhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCB0aGVtLiAgU2V0IHN0cnVjdHVyZSBwYWRkaW5nIGZvciBBQVBDUy4KCShhcm1fcmV0dXJuX2luX21lbW9yeSk6IFVwZGF0ZSBBQkkgY2hlY2suCgkoYXJtX2luaXRfY3VtdWxhdGl2ZV9hcmdzKTogSW5pdGlhbGl6ZSBjYW5fc3BsaXQuCgkoYXJtX25lZWRzX2RvdWJsZXdvcmRfYWxpZ24pOiBOZXcgZnVuY3Rpb24uCgkoYXJtX2Z1bmN0aW9uX2FyZyk6IERvbid0IHNwbGl0IGFyZ3MgYWZ0ZXIgcHVzaGluZyB0byBzdGFjay4gSGFuZGxlCglkb3VibGV3b3JkL2V2ZW4gcmVnIGFsaWdubWVudC4KCShhcm1fdmFfYXJnKTogSGFuZGxlIGFsbCBkb3VibGV3b3JkIGFsaWduZWQgYXJncy4KCShhZGRfbWlucG9vbGZvcndhcmQgcmVmLCBkdW1wX21pbnBvb2wsIHB1c2hfbWlucG9vbF9maXgpOiBBbGlnbiBiYXNlZAoJb24gQUJJLCBub3QgQ1BVLgoJKGFybV9jb21wdXRlX3NhdmVfcmVnMF9yZWcxMl9tYXNrKTogRml4IGNvbW1lbnQuCgkodGh1bWJfZ2V0X2ZyYW1lX3NpemUsIHRodW1iX2dldF9mcmFtZV9zaXplKTogUmVtb3ZlLgoJKHRodW1iX2p1bXBfZmFyX3VzZWRfcCk6IFJlbW92ZSBzdXBlcmZsdW91cyBhcmd1bWVudC4gIFJldHVybiBzYXZlCgl2YWx1ZSBmb3IgYWxpZ25tZW50LgoJKHRodW1iX3VuZXhwYW5kZWRfZXBpbG9ndWUsIHRodW1iX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IENoYW5nZQoJdG8gbWF0Y2guCgkodGh1bWJfY29tcHV0ZV9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IE5ldyBmdW5jdGlvbi4KCSh0aHVtYl9leHBhbmRfcHJvbG9ndWUpOiBVc2UgYXJtX2dldF9mcmFtZV9vZmZzZXRzLiAgUmVtb3ZlCgl1bm5lY2Nlc3Nhcnkgcm91bmRpbmcuCgkqIGNvbmZpZy9hcm0vYXJtLmggKHRhcmdldF9hYmlfbmFtZSk6IERlY2xhcmUuCgkoQVJNX0RPVUJMRVdPUkRfQUxJR04sIERPVUJMRVdPUkRfQUxJR05NRU5ULCBUQVJHRVRfSVdNTVhUX0FCSSwKCWFybV9hYmlfdHlwZSwgQVJNX0RFRkFVTFRfQUJJKTogRGVmaW5lLgoJKEFSTV9GTEFHX0FUUENTKTogUmVtb3ZlLgoJKFRBUkdFVF9PUFRJT05TLCBPUFRJT05fREVGQVVMVF9TUEVDUyk6IEFkZCAtbWFiaT0uCgkoQklHR0VTVF9BTElHTk1FTlQsIFBSRUZFUlJFRF9TVEFDS19CT1VOREFSWSwgU1RBQ0tfQk9VTkRBUlkpOiBVc2UgaXQuCgkoQURKVVNUX0ZJRUxEX0FMSUdOLCBEQVRBX0FMSUdOTUVOVCwgTE9DQUxfQUxJR05NRU5ULAoJVFlQRV9ORUVEU19JV01NWFRfQUxJR05NRU5UKTogUmVtb3ZlLgoJKExJQkNBTExfVkFMVUUsIEZVTkNUSU9OX1ZBTFVFX1JFR05PX1AsIEZVTkNUSU9OX0FSR19SRUdOT19QKToKCUNvbnRpdGlvbmFsaXplIG9uIEFCSSwgbm90IENQVS4KCShzdHJ1Y3QgYXJtX3N0YWNrX29mZnNldHMpOiBEZWZpbmUuCgkoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgc3RhY2tfb2Zmc2V0cy4gIFJlbW92ZSBmcmFtZV9zaXplLgoJKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogRG9uJ3Qgc3BsaXQgaWYgcHJldmlvdXMgYXJncyBoYXZlIGJlZW4KCXB1c2hlZC4KCShGVU5DVElPTl9BUkdfQURWQU5DRSwgRlVOQ1RJT05fQVJHX0JPVU5EQVJZKTogSGFuZGxlIGdlbmVyYWwKCWRvdWJsZXdvcmQgYWxpZ25tZW50LgoJKFRIVU1CX0lOSVRJQUxfRUxJTUlOQVRJT05fT0ZGU0VULAoJQVJNX0lOSVRJQUxfRUxJTUlOQVRJT05fT0ZGU0VUKTogUmVtb3ZlLgoJKElOSVRJQUxfRUxJTUlOQVRJT05fT0ZGU0VUKTogQ2FsbCBmdW5jdGlvbnMgZGlyZWN0bHkuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChhbGlnbl84KTogRW5hYmxlIGZvciBhbGwgdGFyZ2V0cy4KCSogY29uZmlnL2FybS9uZXRic2QtZWxmLmggKFRBUkdFVF9ERUZBVUxUKTogUmVtb3ZlIFRBUkdFVF9BVFBDUy4KCShBUk1fREVGQVVMVF9BQkkpOiBEZWZpbmUuCgkqIGRvYy9pbnZva2UudGV4aSA8QVJNPjogRG9jdW1lbnQgLW1hYmk9LiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IKCS1tc3RydWN0dXJlLXNpemUtYm91bmRhcnkuCgoyMDA0LTAzLTI0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIC1Xbm8tdmFyaWFkaWMtbWFjcm9zOyBkb24ndCB1c2UKCS1wZWRhbnRpYyAoaW4gc3RhZ2UgMSBvciBhIHNpbXBsZSAnbWFrZSBhbGwnKSB1bmxlc3MgaXQncyBhdmFpbGFibGUsCglhbmQgaWYgaXQncyBhdmFpbGFibGUsIHVzZSBpdC4gIEFsc28sIGNsZWFuIHVwIGNoZWNrIGZvcgoJLVduby1sb25nLWxvbmcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMDMtMjQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKG1pcHM2NHZyLSotZWxmKiwgbWlwczY0dnJlbC0qLWVsZiopOiBSZW1vdmUgdG1fZGVmaW5lcy4KCSogY29uZmlnL21pcHMvdnIuaCAoREVGQVVMVF9WUl9BUkNIKTogTmV3IG1hY3JvLCBkZWZpbmVkIHRvIHZyNDEzMC4KCShNVUxUSUxJQl9ERUZBVUxUUyk6IFVzZSBpdC4KCShNSVBTX0NQVV9TVFJJTkdfREVGQVVMVCk6IFJlbW92ZS4KCShNSVBTX0FCSV9ERUZBVUxULCBNSVBTX01BUkNIX0NPTlRST0xTX1NPRlRfRkxPQVQpOiBEZWZpbmUuCgkoRFJJVkVSX1NFTEZfU1BFQ1MpOiBNYWtlIC1tZml4LXZyNDEyMi1idWdzIGltcGx5IC1tYXJjaD12cjQxMjAuICBNYWtlCglFQUJJNjQgLW1sb25nMzIgdGhlIGRlZmF1bHQgQUJJLiAgRW5mb3JjZSB0aGUgZGVmYXVsdCBhcmNoaXRlY3R1cmUuCgkqIGNvbmZpZy9taXBzL3QtdnIgKE1VTFRJTElCX09QVElPTlMpOiBBZGQgbWZpeC12cjQxMjItYnVncywKCW1hcmNoPXZyNDEzMCwgbWFyY2g9dnI0MzAwLCBtYXJjaD12cjUwMDAgYW5kIG1hcmNoPXZyNTUwMC4KCShNVUxUSUxJQl9NQVRDSEVTKTogVXNlIC1tZml4LXZyNDEyMi1idWdzIG11bHRpbGlicyBmb3IgLW1hcmNoPXZyNDEyMC4KCShNVUxUSUxJQl9FWENFUFRJT05TKTogQ2hhbmdlIGNob2ljZSBvZiBtdWx0aWxpYnMuICBVcGRhdGUgY29tbWVudHMKCWFjY29yZGluZ2x5LgoKMjAwNC0wMy0yNCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgkgICAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChNQVNLX0ZJWF9WUjQxMjIsIFRBUkdFVF9GSVhfVlI0MTIyKTogTmV3IG1hY3Jvcy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1maXgtdnI0MTIyLWJ1Z3MgYW5kIC1tbm8tZml4LXZyNDEyMi1idWdzLgoJKEFTTV9TUEVDKTogUGFzcyBkb3duIC1tZml4LXZyNDEyMi1idWdzLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfYXZvaWRfaGF6YXJkcyk6IERvbid0IGVtaXQgd2hvbGUgZnVuY3Rpb25zCglpbiAuc2V0IG5vcmVvcmRlciBhbmQgLnNldCBub21hY3JvIGlmIFRBUkdFVF9GSVhfVlI0MTIyLgoJKG1pcHNfaW5pdF9saWJmdW5jcyk6IFVzZSBzcGVjaWFsIGZ1bmN0aW9ucyBmb3IgZGl2c2kzIGFuZCBtb2RzaTMKCWlmIFRBUkdFVF9GSVhfVlI0MTIyLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChkZWZpbmVfYXR0ciBsZW5ndGgpOiBBY2NvdW50IGZvciBub3BzIGluc2VydGVkCglhZnRlciBtYWNjIGFuZCBkbXVsdCB3aGVuIHVzaW5nIC1tZml4LXZyNDEyMi1idWdzLgoJKHVtdWxkaTNfaGlnaHBhcnQsIGRpdm1vZHNpNCwgZGl2bW9kZGk0KTogRGlzYWJsZSBpZiBUQVJHRVRfRklYX1ZSNDEyMi4KCSogY29uZmlnL21pcHMvdC12ciAoTElCMkZVTkNTX1NUQVRJQ19FWFRSQSk6IERlZmluZSBpbnN0ZWFkIG9mCglMSUIyRlVOQ1NfRVhUUkEuICBBZGQgY29uZmlnL21pcHMvdnI0MTIyLWRpdi5TLgoJKiBjb25maWcvbWlwcy92cjQxMjItZGl2LlM6IE5ldyBmaWxlLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1tZml4LXZyNDEyMi1idWdzLgoKMjAwNC0wMy0yNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChQUk9DRVNTT1JfUjQxMzApOiBOZXcgcHJvY2Vzc29yX3R5cGUuCgkoVEFSR0VUX01JUFM0MTMwKTogTmV3IG1hY3JvLgoJKElTQV9IQVNfTUFDQyk6IFJldHVybiB0cnVlIGlmIFRBUkdFVF9NSVBTNDEzMCAmJiAhVEFSR0VUX01JUFMxNi4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2NwdV9pbmZvX3RhYmxlKTogQWRkIGEgdnI0MTMwIGVudHJ5LgoJKG92ZXJyaWRlX29wdGlvbnMpOiBFeHRlbmQgTUlQU19NQVJDSF9DT05UUk9MU19TT0ZUX0ZMT0FUIHRvIGRlYWwKCXdpdGggUFJPQ0VTU09SX1I0MTMwLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChkZWZpbmVfYXR0ciBjcHUpOiBBZGQgcjQxMzAuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgdnI0MTMwIGFzIGEgc3VwcG9ydGVkIE1JUFMgYXJjaGl0ZWN0dXJlLgoKMjAwNC0wMy0yNCAgTWFjaWVqIFcuIFJvenlja2kgIDxtYWNyb0BkczIucGcuZ2RhLnBsPgoJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogQXBwbHkgbWlzc2VkIGh1bmsgZnJvbSAyMDA0LTAzLTAzIGNoYW5nZS4KCjIwMDQtMDMtMjQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIHByZXByb2Nlc3Nvci8xNDQzOAoJKiBjcHBsaWIuYyAoZG9fcHJhZ21hKTogUmVtb3ZlIGxpbmVfY2hhbmdlIGNhbGwgYWZ0ZXIgcHJhZ21hCgloYW5kbGVyLgoKMjAwNC0wMy0yMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoQVJNIEJ1aWx0LWluIEZ1bmN0aW9ucyk6IFJlcGxhY2Ugd2l0aCBjb3JyZWN0CglkZWNsYXJhdGlvbnMuCgoyMDA0LTAzLTIzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHJlZy1zdGFjay5jIChnZXRfdHJ1ZV9yZWcpOiBIYW5kbGUgRkxPQVRfVFJVTkNBVEUgbGlrZSBGTE9BVF9FWFRFTkQKCWlmIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucy4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAodHJ1bmNkZnNmMik6IElmIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucwoJYW5kIFRBUkdFVF84MDM4NyBleHBhbmQgdXNpbmcgdHJ1bmNkZnNmMl9ub29wIHBhdHRlcm4uCgkodHJ1bmN4ZnNmMik6IExpa2V3aXNlIHVzaW5nIHRydW5jeGZzZjJfbm9vcC4KCSh0cnVuY3hmZGYyKTogTGlrZXdpc2UgdXNpbmcgdHJ1bmN4ZmRmMl9ub29wLgoJKHRydW5jZGZzZjJfbm9vcCwgdHJ1bmN4ZnNmMl9ub29wLCB0cnVuY3hmZGYyX25vb3ApOiBOZXcgcGF0dGVybnMuCgoyMDA0LTAzLTIzICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBob29rcy5jIChob29rX2NvbnN0Y2hhcnB0cl90cmVlX251bGwpOiBOZXcgaG9vay4KCSogaG9va3MuaCAoaG9va19jb25zdGNoYXJwdHJfdHJlZV9udWxsKTogTmV3IHByb3RvdHlwZS4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfTUFOR0xFX0ZVTkRBTUVOVEFMX1RZUEUpOiBOZXcgdGFyZ2V0IGhvb2suCgkqIHRhcmdldC5oIChtYW5nbGVfZnVuZGFtZW50YWxfdHlwZSk6IE5ldyB0YXJnZXQgaG9vay4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoVEFSR0VUX01BTkdMRV9GVU5EQU1FTlRBTF9UWVBFKTogUG9pbnQKCXRhcmdldCBob29rIGF0IHJzNjAwMF9tYW5nbGVfZnVuZGFtZW50YWxfdHlwZS4KCShyczYwMDBfbWFuZ2xlX2Z1bmRhbWVudGFsX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfTUFOR0xFX0ZVTkRBTUVOVEFMX1RZUEUpOiBEb2N1bWVudC4KCjIwMDQtMDMtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgMTIyNjcsIDEyMzkxLCAxMjU2MCwgMTMxMjksIDE0MTE0LCAxNDEzMwoJKiBjLXRyZWUuaDogRm9yd2FyZCBkZWNsYXJlIHN0cnVjdCBjX2JpbmRpbmcuICBEZWNsYXJlCgljX292ZXJyaWRlX2JpbmRpbmdzX3RvX2ZhbHNlLiAgVXBkYXRlIHByb3RvdHlwZXMuCgkoc3RydWN0IGxhbmdfaWRlbnRpZmllcik6IFVwZGF0ZSBjb21tZW50cy4gIENoYW5nZSBmaWVsZHMgdG8gYmUKCXN0cnVjdCBjX2JpbmRpbmcgKi4KCShJREVOVElGSUVSX1NZTUJPTF9WQUxVRSwgSURFTlRJRklFUl9UQUdfVkFMVUUpCgkoSURFTlRJRklFUl9MQUJFTF9WQUxVRSwgQ19ERUNMX0lOVklTSUJMRSkKCShLRUVQX05PLCBLRUVQX1lFUywgS0VFUF9NQVlCRSk6IERlbGV0ZS4KCShDX0RFQ0xfSU5fRVhURVJOQUxfU0NPUEUsIENfREVDTF9ERUNMQVJFRF9CVUlMVElOKTogTmV3LgoJKiBjLWNvbW1vbi5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogYy1kZWNsLmMgKHN0cnVjdCBjX3Njb3BlKTogVXBkYXRlIGNvbW1lbnRhcnkuICBSZW1vdmUgbmFtZXMsCgluYW1lc19sYXN0LCBwYXJtcywgcGFybXNfbGFzdCwgdGFncywgYW5kIHNoYWRvd2VkIGZpZWxkcy4gIEFkZAoJYmluZGluZ3MgYW5kIGRlcHRoIGZpZWxkcy4KCShzY29wZV9mcmVlbGlzdCk6IE1vdmUgdG8gbW9yZSBhcHByb3ByaWF0ZSBsb2NhdGlvbi4KCShjX3ByaW50X2lkZW50aWZpZXIpOiBVcGRhdGUgZm9yIGNoYW5nZXMgdG8gc3RydWN0IGxhbmdfaWRlbnRpZmllci4KCShvYmpjX21hcmtfbG9jYWxzX3ZvbGF0aWxlKTogVXBkYXRlIGZvciBuZXcgYmluZGluZ3Mgc3RydWN0dXJlcy4KCShnbG9iYWxfYmluZGluZ3NfcCk6IEhvbm9yIGNfb3ZlcnJpZGVfZ2xvYmFsX2JpbmRpbmdzX3RvX2ZhbHNlLgoJKHB1c2hsZXZlbCk6IFJlbmFtZSB0byBwdXNoX3Njb3BlOyB0YWtlIG5vIGFyZ3VtZW50czsgdXNlIHRoZQoJc2NvcGVfZnJlZWxpc3Q7IGluaXRpYWxpemUgc2NvcGUtPmRlcHRoIGFuZCBjaGVjayBmb3Igb3ZlcmZsb3cuCgkocG9wbGV2ZWwpOiBSZW5hbWUgdG8gcG9wX3Njb3BlOyB0b3RhbGx5IHJld3JpdHRlbiBmb3IgbmV3IGJpbmRpbmdzCglzdHJ1Y3R1cmVzLgoJKGRpYWdub3NlX21pc21hdGNoZWRfZGVjbHMpOiBVc2UgQ19ERUNMX0RFQ0xBUkVEX0JVSUxUSU4sIG5vdAoJQ19ERUNMX0lOVklTSUJMRSwgZm9yIGNlcnRhaW4gZGVjaXNpb25zLiAgQWRqdXN0IHNvbWUgZGlhZ25vc3RpY3MuCglJbXByb3ZlIHNvbWUgY29tbWVudGFyeS4gIEFkanVzdCBoYW5kbGluZyBvZiBmb3J3YXJkIHBhcm0gZGVjbHMuCgkobWVyZ2VfZGVjbHMpOiBTZXQgQ19ERUNMX0RFQ0xBUkVEX0JVSUxUSU4gd2hlbiBhcHByb3ByaWF0ZS4KCVByZXNlcnZlIENfREVDTF9JTl9FWFRFUk5BTF9TQ09QRS4KCSh3YXJuX2lmX3NoYWRvd2luZyk6IENvcnJlY3QgaW5kZW50YXRpb24uICBJbXByb3ZlIGRpYWdub3N0aWNzLgoJKHB1c2hkZWNsKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGFzc2VydGlvbi4gIFNob3J0LWNpcmN1aXQgYW5vbnltb3VzCglkZWNscy4gIFJld3JpdGUgZm9yIG5ldyBiaW5kaW5ncyBzdHJ1Y3R1cmVzLiAgSW1wcm92ZSBjb21tZW50YXJ5LgoJRWxpbWluYXRlIHRoZSBjb3B5X25vZGUgY2FsbC4KCShpbXBsaWNpdF9kZWNsX3dhcm5pbmcpOiBVc2UgdGhlICJkaWFnIiBpZGlvbSAoYXMgc2VlbiBpbgoJbG9jYXRlX29sZF9kZWNsKSB0byByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbjsgY2FsbCBsb2NhdGVfb2xkX2RlY2wKCWlmIGFwcHJvcHJpYXRlLiAgUmVsb2NhdGUgdG8gcmVtb3ZlIG5lZWQgZm9yIGZvcndhcmQgZGVjbGFyYXRpb24uCgkoaW1wbGljaXRseV9kZWNsYXJlKTogQWRqdXN0IGZvciBuZXcgYmluZGluZ3Mgc3RydWN0dXJlcy4gIEtsdWRnZQoJYXJvdW5kIE9iamVjdGl2ZS1DIG5vdC1yZWFsbHktYnVpbHRpbiBmdW5jdGlvbnMuCgkodW5kZWNsYXJlZF92YXJpYWJsZSk6IEltcHJvdmUgZGlhZ25vc3RpY3MuICBJZiBjdXJyZW50X2Z1bmN0aW9uX2RlY2wKCWlzIG5vbm51bGwgYnV0IGN1cnJlbnRfZnVuY3Rpb25fc2NvcGUgaXMgbnVsbCwgdXNlIGN1cnJlbnRfc2NvcGUuCglVc2UgYmluZC4KCShsb29rdXBfdGFnKTogQWRqdXN0IGZvciBuZXcgYmluZGluZ3Mgc3RydWN0dXJlcy4gIEtsdWRnZSBhcm91bmQKCU9iamVjdGl2ZS1DJ3MgdGFnIGRlY2xhcmF0aW9ucyB0aGF0IHdpbmQgdXAgaW4gdGhlIGV4dGVybmFsIHNjb3BlLgoJKGxvb2t1cF9uYW1lKTogQWRqdXN0IGZvciBuZXcgYmluZGluZ3Mgc3RydWN0dXJlcy4gIEtsdWRnZSBhcm91bmQKCWMtY29tbW9uLmMncyBwc2V1ZG8tdHlwZWRlZnMgdGhhdCB3aW5kIHVwIGluIHRoZSBleHRlcm5hbCBzY29wZS4KCShsb29rdXBfbmFtZV9jdXJyZW50X2xldmVsKTogUmVuYW1lIGxvb2t1cF9uYW1lX2luX3Njb3BlOyB0YWtlIGEKCXNlY29uZCBhcmd1bWVudCBpbmRpY2F0aW5nIHRoZSBzY29wZSB0byBleGFtaW5lOyByZXdyaXRlIGZvcgoJbmV3IGJpbmRpbmdzIHN0cnVjdHVyZXMuCgkoY19pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkanVzdCBmb3IgcmVuYW1lZCBmdW5jdGlvbnMuICBEbyBub3QKCWluaXRpYWxpemUgY3VycmVudF9maWxlX2RlY2wsIGZpcnN0X2J1aWx0aW5fZGVjbCwgbGFzdF9idWlsdGluX2RlY2wuCglGaXJzdCBzY29wZSBwdXNoZWQgaXMgdGhlIGV4dGVybmFsIHNjb3BlLCBub3QgdGhlIGdsb2JhbCBzY29wZS4KCShidWlsdGluX2Z1bmN0aW9uKTogVXNlIGJpbmQsIG5vdCBwdXNoZGVjbC4gIEFkanVzdCBvdGhlciBiaXRzCglmb3IgbmV3IGRhdGEgc3RydWN0dXJlcy4gIEtlZXAgdHJhY2sgb2YgYnVpbHRpbnMgdGhhdCBzaG91bGQgYmUKCW1hZGUgdmlzaWJsZSBhdXRvbWF0aWNhbGx5LgoJKHN0YXJ0X2RlY2wpOiBBZGp1c3QgZGlhZ25vc3RpY3MuICBSZW1vdmUgdW5uZWNlc3NhcnkgY2FsbCB0bwoJZXhwYW5kX2RlY2wuCgkoZ3Jva3Bhcm1zKTogUmV0dXJuIDAgaWYgYXJnX3R5cGVzIGlzIGVycm9yX21hcmtfbm9kZS4KCShnZXRfcGFybV9pbmZvKTogUmVuYW1lICJ2b2lkX2F0X2VuZCIgYXJndW1lbnQgdG8gImVsbGlwc2lzIiwgd2l0aAoJcmV2ZXJzZWQgc2Vuc2UuICBSZXdyaXRlIGZvciBuZXcgYmluZGluZ3Mgc3RydWN0dXJlcy4gIERvIG5vdAoJbGVhdmUgYW55IGRlY2xzIGluIHRoZSBzY29wZSwgdG8gcHJldmVudCBwb3Bfc2NvcGUgZnJvbSBkb2luZwoJY29udHJhZGljdG9yeSB0aGluZ3Mgd2l0aCB0aGVtLgoJKGZpbmlzaF9zdHJ1Y3QsIGZpbmlzaF9lbnVtKTogUmVtb3ZlIHJlZHVuZGFudCBkaWFnbm9zdGljcy4KCShidWlsZF9lbnVtZXJhdG9yKTogRG9uJ3QgY2FzY2FkZSBkaWFnbm9zdGljcyBmb3IgZXJyb3JfbWFya19ub2RlLgoJTWFyayBsb2NhdGlvbiB3aGVyZSAtcGVkYW50aWMgY2hhbmdlcyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS4KCShzdG9yZV9wYXJtX2RlY2xzX25ld3N0eWxlLCBzdG9yZV9wYXJtX2RlY2xzX29sZHN0eWxlKTogTG9hZCB0aGUKCXBhcmFtZXRlciBkZWNscyBpbnRvIHRoZSBmdW5jdGlvbidzIHNjb3BlIHN0cnVjdHVyZSB1c2luZyBiaW5kLgoJV2FybiBoZXJlIGFib3V0IGZ1bmN0aW9uIGRlZmluaXRpb25zIGluIHRoZSB3cm9uZyBzdHlsZS4KCUFkanVzdCBkaWFnbm9zdGljcy4KCShzdG9yZV9wYXJtX2RlY2xzKTogQ29ycmVjdCB0aGUgZGV0ZXJtaW5hdGlvbiBvZiB3aGV0aGVyIGEKCWZ1bmN0aW9uIHdhcyBkZWZpbmVkIHdpdGggYSBwcm90b3R5cGUuCgkoY193cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zKTogT3BlcmF0ZSBvbiBhbGwgZmlsZSBkZWNscyBhbmQgb24KCXRoZSBleHRlcm5hbCBzY29wZS4gIFNwbGl0IGJvZHkgb2YgdGhlIGxvb3AgdG8uLi4KCShjX3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnNfMSk6IC4uLiB0aGlzIG5ldyBmdW5jdGlvbiwgdG8gYXZvaWQKCWNvZGUgZHVwbGljYXRpb24uCgkodHJ1bHlfbG9jYWxfZXh0ZXJuYWxzLCBmaXJzdF9idWlsdGluX2RlY2wsIGxhc3RfYnVpbHRpbl9kZWNsKQoJKG1ha2Vfc2NvcGUsIHBvcF9zY29wZSwgaW5fcGFybV9sZXZlbF9wLCBzZXRfYmxvY2spCgkoYW55X2V4dGVybmFsX2RlY2wsIHJlY29yZF9leHRlcm5hbF9kZWNsLCBiaW5kX2xhYmVsLCBnZXRkZWNscykKCShsaW5rX2hhc2hfaGFzaCwgbGlua19oYXNoX2VxLCBtZXJnZV90cmFuc2xhdGlvbl91bml0X2RlY2xzKQoJKGNfcmVzZXRfc3RhdGUpOiBEZWxldGUuCgkodmlzaWJsZV9idWlsdGlucywgY19vdmVycmlkZV9nbG9iYWxfYmluZGluZ3NfdG9fZmFsc2UpCgkoY19iaW5kaW5nLCBJX1NZTUJPTF9CSU5ESU5HLCBJX1NZTUJPTF9ERUNMLCBJX1RBR19CSU5ESU5HKQoJKElfVEFHX0RFQ0wsIElfTEFCRUxfQklORElORywgSV9MQUJFTF9ERUNMLCBmaWxlX3Njb3BlKQoJKGV4dGVybmFsX3Njb3BlLCBiaW5kaW5nX2ZyZWVsaXN0LCBiaW5kLCBmcmVlX2JpbmRpbmdfYW5kX2FkdmFuY2UpCgkocHVzaF9maWxlX3Njb3BlLCBwb3BfZmlsZV9zY29wZSk6IE5ldy4KCShwdXNodGFnLCBwdXNoZGVjbF90b3BfbGV2ZWwsIGxvb2t1cF9sYWJlbCwgZGVjbGFyZV9sYWJlbCkKCShkZWZpbmVfbGFiZWwsIGNfbWFrZV9mbmFtZV9kZWNsLCBmaW5pc2hfZGVjbCkKCShtYXJrX2ZvcndhcmRfcGFybV9kZWNscywgYnVpbGRfY29tcG91bmRfbGl0ZXJhbCkKCShncm9rZGVjbGFyYXRvciwgc3RhcnRfZnVuY3Rpb24sIGNoZWNrX2Zvcl9sb29wX2RlY2xzKQoJKGlkZW50aWZpZXJfZ2xvYmFsX3ZhbHVlLCByZWNvcmRfYnVpbHRpbl90eXBlKTogTWlub3IgYWRqdXN0bWVudHMKCWZvciBuZXcgYmluZGluZ3Mgc3RydWN0dXJlcy4gIEltcHJvdmUgZGlhZ25vc3RpY3MgYW5kIGNvbW1lbnRhcnkuCgkqIGMtb2JqYy1jb21tb24uYyAoc3RhcnRfY2R0b3IsIGZpbmlzaF9jZHRvcik6IEFkanVzdCBjYWxscyB0bwoJcHVzaGxldmVsL3BvcGxldmVsIHJlc3BlY3RpdmVseS4KCShjX29iamNfY29tbW9uX2ZpbmlzaF9maWxlKTogRG9uJ3QgY2FsbCBtZXJnZV90cmFuc2xhdGlvbl91bml0X2RlY2xzLgoJKiBjLW9wdHMuYyAoY19jb21tb25fcGFyc2VfZmlsZSk6IFJlbW92ZSBzcHVyaW91cyBBVFRSSUJVVEVfVU5VU0VELgoJV2FybiBhYm91dCBZWURFQlVHIG5vdCBiZWluZyBkZWZpbmVkIG9ubHkgaWYgLWR5LiAgUmVtb3ZlIG5vLWxvbmdlci0KCWNvcnJlY3QgbG9vcCBvdmVyIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzOyBjYWxsIGZhdGFsX2Vycm9yIGlmCglyZXF1ZXN0ZWQgdG8gY29tcGlsZSBtb3JlIHRoYW4gb25lIGZpbGUgYXQgb25jZS4gIChUaGlzIGRpc2FibGVzCglJTUEgdGVtcG9yYXJpbHkgLSBhbiB1cC1mcm9udCBlcnJvciBiZWluZyBwcmVmZXJhYmxlIHRvIGEgY3Jhc2guKQoJKiBjLXBhcnNlLmluIChwdXNobGV2ZWwsIHBvcGxldmVsIHJ1bGVzKTogUmVuYW1lIHB1c2hfc2NvcGUsIHBvcF9zY29wZS4KCShhbGwgYWN0aW9ucyk6IEFkanVzdCBjYWxscyB0byBwdXNobGV2ZWwvcG9wbGV2ZWwuCgkocGFyc2luZ19pc29fZnVuY3Rpb25fc2lnbmF0dXJlKTogRGVsZXRlLgoJKGV4dGRlZl8xKTogRm9sZCBpbnRvIGV4dGRlZi4KCShvbGRfc3R5bGVfcGFybV9kZWNsc18xKTogRm9sZCBpbnRvIG9sZF9zdHlsZV9wYXJtX2RlY2xzLiAgRG9uJ3QKCXdhcm4gaGVyZSBhYm91dCBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiB0aGUgd3Jvbmcgc3R5bGUuCgkoYWZ0ZXJfdHlsZV9kZWNsYXJhdG9yLCBwYXJtX2RlY2xhcmF0b3Jfc3RhcnR0eXBlbmFtZSkKCShwYXJtX2RlY2xhcmF0b3Jfbm9zdGFydHR5cGVuYW1lLCBub3R5cGVfZGVjbGFyYXRvcik6IFJlbW92ZQoJY29tbWVudGVkLW91dCBwcm9kdWN0aW9ucy4KCShwYXJtbGlzdF8xLCBwYXJtbGlzdF8yKTogVXNlIG1ha2Vfbm9kZSwgbm90IHRyZWVfY29ucywgdG8gY3JlYXRlCglhbiBlbXB0eSBUUkVFX0xJU1Qgbm9kZS4gIEFkanVzdCBjYWxscyB0byBnZXRfcGFybV9pbmZvLgoJKHBhcm1saXN0XzIgOiBFTExJUFNJUyk6IFRhZyB0aGUgYXJnLWluZm8gYmxvY2sgd2l0aCBlcnJvcl9tYXJrX25vZGUKCXRvIHN1cHByZXNzIC1Xb2xkLXN0eWxlLWRlZmluaXRpb24gYWZ0ZXIgdGhpcyBlcnJvci4KCShjX3BhcnNlX2ZpbGUpOiBEb24ndCBjbGVhciB0aGUgYmluZGluZyBzdGFjayBvciBjYWxsCglmaW5pc2hfZm5hbWVfZGVjbHMgaGVyZS4gIENvcnJlY3QgY29tbWVudC4KCSogYy10eXBlY2suYyAoc2FtZV90cmFuc2xhdGlvbl91bml0X3ApOiBFeHBvcnQuCgkoY29tbW9uX3R5cGUpOiBVc2UgY19vdmVycmlkZV9nbG9iYWxfYmluZGluZ3NfdG9fZmFsc2UsIG5vdAoJcHVzaGxldmVsL3BvcGxldmVsL2RlY2xhcmVfcGFybV9sZXZlbC4KCSogYy1sYW5nLmM6IE92ZXJyaWRlIExBTkdfSE9PS1NfQ0xFQVJfQklORElOR19TVEFDSywKCUxBTkdfSE9PS1NfUFVTSExFVkVMLCBMQU5HX0hPT0tTX1BPUExFVkVMLCBMQU5HX0hPT0tTX1NFVF9CTE9DSywKCWFuZCBMQU5HX0hPT0tTX0dFVERFQ0xTIHdpdGggZG8tbm90aGluZyBzdHVicy4KCSogb2JqYy9vYmpjLWxhbmcuYzogTGlrZXdpc2UuCgkqIG9iamMvb2JqYy1hY3QuYzogQWRqdXN0IGFsbCBjYWxscyB0byBwdXNobGV2ZWwsIHBvcGxldmVsLAoJZ2V0X3Bhcm1faW5mby4KCShPQkpDX1ZPSURfQVRfRU5EKTogRGVsZXRlOyByZXBsYWNlIGFsbCB1c2VzCgl3aXRoIHZvaWRfbGlzdF9ub2RlLgoJKGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25fdG9fc3RyaW5nX3RhYmxlKTogRGVsZXRlLgoJKiBvYmpjL29iamMtYWN0LmggKE9DVElfU1RSR19ERUNMLCBVT0JKQ19TVFJJTkdTX2RlY2wpOiBEZWxldGUuCgoJKiBjb3ZlcmFnZS5jIChjcmVhdGVfY292ZXJhZ2UpOiBEb24ndCBwdXNoZGVjbCBhbnl0aGluZy4KCSogbGFuZ2hvb2tzLmMgKGxoZF9jbGVhcl9iaW5kaW5nX3N0YWNrKTogQ2FsbAoJbGFuZ19ob29rcy5kZWNscy5wb3BsZXZlbCwgbm90IHBvcGxldmVsLgoJKiB0cmVlLmMgKGxpc3RfbGVuZ3RoKTogSWYgRU5BQkxFX1RSRUVfQ0hFQ0tJTkcsIGFib3J0IG9uIGEKCWNpcmN1bGFyIGxpc3QgcmF0aGVyIHRoYW4gZ29pbmcgaW50byBhbiBpbmZpbml0ZSBsb29wLgoKMjAwNC0wMy0yMyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogb3B0YWJzLmMgKGV4cGFuZF9iaW5vcCk6IFdoZW4gc3ludGhlc2l6aW5nIGRvdWJsZSB3b3JkIHJvdGF0ZXMKCWZyb20gc2luZ2xlIHdvcmQgc2hpZnRzLCB1c2UgYSBuZXcgcmVnaXN0ZXIgdGFyZ2V0IGlmIHRoZSBwcm92aWRlZAoJdGFyZ2V0IGlzIG5vdCBhIFJFRyBhbHJlYWR5LgoKMjAwNC0wMy0yMyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFsaWFzLmMgKGdldF9hbGlhc19zZXQpOiBBZGQgc3VwcG9ydCBmb3IgVFlQRV9SRUZfQ0FOX0FMSUFTX0FMTC4KCSogYy1jb21tb24uYyAoaGFuZGxlX21vZGVfYXR0cmlidXRlKTogQWRkIGV4dHJhIGFyZyB0bwoJYnVpbGRfcG9pbnRlcl90eXBlX2Zvcl9tb2RlIGFuZCBidWlsZF9yZWZlcmVuY2VfdHlwZV9mb3JfbW9kZS4KCSogYy10eXBlY2suYyAoYnVpbGRfY19jYXN0KTogT25seSBsb29rIGF0IFRSRUVfQ09OU1RBTlRfT1ZFUkZMT1cKCWZvciBJTlRFR0VSX0NTVC4KCSogdHJlZS5jIChidWlsZF9wb2ludGVyX3R5cGVfZm9yX21vZGUpOiBBZGQgYXJnIENBTl9BTElBU19BTEwuCglDaGFpbiBwb2ludGVycyB2aWEgVFlQRV9ORVhUX1BUUl9UTy4KCShidWlsZF9yZWZlcmVuY2VfdHlwZV9mb3JfbW9kZSk6IFNpbWlsYXJseS4KCShidWlsZF90eXBlX25vX3F1YWxzKTogQWRkIGV4dHJhIGFyZyB0byBidWlsZF9wb2ludGVyX3R5cGVfZm9yX21vZGUKCWFuZCBidWlsZF9yZWZlcmVuY2VfdHlwZV9mb3JfbW9kZS4KCSh0cmVlX2NoZWNrNF9mYWlsZWQpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuaCAoVFJFRV9DSEVDSzQsIFBUUl9PUl9SRUZfQ0hFQ0spOiBOZXcgbWFjcm9zLgoJKFRZUEVfUkVGX0NBTl9BTElBU19BTEwsIFRZUEVfTkVYVF9QVFJfVE8sIFRZUEVfTkVYVF9SRUZfVE8pOiBMaWtld2lzZS4KCShUUkVFX05PX1VOU1VFRF9XQVJOSU5HLCBUUkVFX1ZJQV9WSVJUVUFMLCBUUkVFX0NPTlNUQU5UX09WRVJGTE9XKToKCUFkZCBjaGVjay4KCjIwMDQtMDMtMjMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IEEmQiBpcyBub25uZWdhdGl2ZSB3aGVuCglBIGlzIG5vbm5lZ2F0aXZlIG9yIEIgaXMgbm9ubmVnYXRpdmUuICBTaW1pbGFybHkgQXxCIGlzIG5vbm5lZ2F0aXZlCgl3aGVuIGJvdGggQSBhbmQgQiBhcmUgbm9ubmVnYXRpdmUuCgkodHJlZV9leHByX25vbnplcm9fcCk6IEF8QiBpcyBub256ZXJvIHdoZW4gQSBpcyBub256ZXJvIG9yIEIgaXMKCW5vbnplcm8uCgoyMDA0LTAzLTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogUmVtb3ZlIGNhc2VzIGZvciBJTlRFR0VSX0NTVCwgUkVBTF9DU1QsCglWRUNUT1JfQ1NULCBTVFJJTkdfQ1NULCBDT01QTEVYX0NTVCwgYW5kIENPTlNUUlVDVE9SLgoKMjAwNC0wMy0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglQUiBvcHRpbWl6YXRpb24vMTQ2NjkKCSogZm9sZC1jb25zdC5jIChmb2xkKTogT25seSB1bndpZGVuIGludGVnZXIgY29tcGFyaXNvbnMgZm9yIGVxdWFsaXR5CglhbmQgaW5lcXVhbGl0eSBvcGVyYXRvcnMsIG9yIHdoZW4gdGhlIHNpZ25lZG5lc3MgZG9lc24ndCBjaGFuZ2UuCgoyMDA0LTAzLTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKHNwYXJjLSotbGludXgqKTogQWRkIHNwYXJjL3QtbGludXggdG8gdG1ha2VfZmlsZS4KCSogY29uZmlnL3NwYXJjL3QtbGludXg2NCAoVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTKTogU2V0LgoJKiBjb25maWcvc3BhcmMvdC1saW51eDogTmV3IGZpbGUuCgoyMDA0LTAzLTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBnY3NlLmMgKGNhbl9hc3NpZ25fdG9fcmVnX3ApOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tLi4uCgkod2FudF90b19nY3NlX3ApOiAuLi5oZXJlLgoJKGNvbXB1dGVfbGRfbW90aW9uX21lbXMpOiBVc2UgY2FuX2Fzc2lnbl90b19yZWdfcCB0byB2YWxpZGF0ZQoJdGhlIHJocyBvZiBhIHN0b3JlLgoKMjAwNC0wMy0yMiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBjLXR5cGVjay5jIChzYW1lX3RyYW5zbGF0aW9uX3VuaXRfcCk6IEZpeCBwYXN0by4KCjIwMDQtMDMtMjIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHBhcmFtcy5kZWYgKFBBUkFNX01BWF9TQ0hFRF9SRUdJT05fQkxPQ0tTKTogTmV3LgoJKFBBUkFNX01BWF9TQ0hFRF9SRUdJT05fSU5TTlMpOiBOZXcuCgkqIHNjaGVkLXJnbi5jOiBJbmNsdWRlIHBhcmFtcy5oCgkoTUFYX1JHTl9CTE9DS1MpOiBEZWxldGUuCgkoTUFYX1JHTl9JTlNOUyk6IERlbGV0ZS4KCSh0b29fbGFyZ2UpOiBSZXR1cm4gYm9vbC4gIENvbnZlcnQgdG8gUEFSQU1fVkFMVUUuCgkqIE1ha2VmaWxlLmluIChzY2hlZC1yZ24ubyk6IERlcGVuZCBvbiAkKFBBUkFNU19IKS4KCSogZG9jL2ludm9rZS50ZXhpIChwYXJhbSk6IERvY3VtZW50IG1heC1zY2hlZC1yZWdpb24tYmxvY2tzIGFuZAoJbWF4LXNjaGVkLXJlZ2lvbi1pbnNucy4KCjIwMDQtMDMtMjIgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGlzX3N1YnJhbmdlX3R5cGUpOiBEbyBub3QgZW1pdCBhIHN1YnJhbmdlX3R5cGUgRElFCglmb3IgYmFzZSB0eXBlcy4KCjIwMDQtMDMtMjIgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGlzX3N1YnJhbmdlX3R5cGUpOiBNaW5vciBjb2RlIHJld29yay4gTm8gYmVoYXZpb3IKCWNoYW5nZS4KCjIwMDQtMDMtMjIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMvMTQwNjkKCSogYy1kZWNsLmMgKGZpbmlzaF9zdHJ1Y3QpOiBDaGFuZ2UgdHlwZSBvZiBpbmNvcnJlY3QgZmxleGlibGUgYXJyYXkKCWZpZWxkIGludG8gZXJyb3JfbWFya19ub2RlLgoKMjAwNC0wMy0yMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzE0NTgwCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHN5bWJvbF9yZWZfb3BlcmFuZCk6IFJlamVjdCBzeW1ib2xzCgl3aG8gYXJlIG5vdCBsb2NhbCBmb3IgRGFyd2luIFBJQy4KCjIwMDQtMDMtMjIgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChyZWdyZW5hbWVfb3B0aW1pemUpOiBTZXQgcmVnc19ldmVyX2xpdmUgZm9yIGFsbAoJcmVnaXN0ZXJzIGludHJvZHVjZWQgYXMgcmVwbGFjZW1lbnQuCgoyMDA0LTAzLTIyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG1pZGRsZS1lbmQvMTQ0NzAKCSogZXhwci5jIChtYXJrX3F1ZXVlKTogTmV3IGZ1bmN0aW9uLgoJKGVtaXRfaW5zbnNfZW5xdWV1ZWRfYWZ0ZXJfbWFyayk6IE5ldyBmdW5jdGlvbiByZXBsYWNpbmcKCWVtaXRfcXVldWUuICBDbGVhciB0aGUgYm9keSBvZiBlbWl0dGVkIHF1ZXVlZCBpbnNucy4KCShlbWl0X3F1ZXVlKTogQ2FsbCBlbWl0X2luc25zX2VucXVldWVkX2FmdGVyX21hcmsuCgkoc3RvcmVfZXhwcik6IE1hcmsgdGhlIGluY3JlbWVudCBxdWV1ZSBvbiBlbnRyeS4gIEVtaXQKCW9ubHkgdGhlIGluY3JlbWVudGF0aW9ucyBxdWV1ZWQgd2hlbiBleHBhbmRpbmcgdGhlIHNvdXJjZS4KCjIwMDQtMDMtMjIgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmFjOiBBbGxvdyAtLWRpc2FibGUtY292ZXJhZ2UtZmxhZ3MgKGZvciB0aGUgZnV0dXJlIGJlbmVmaXQKCW9mIHRvcCBsZXZlbCBib290c3RyYXAsIGFuZCBjb25zaXN0ZW5jeSkuICBSZWluZGVudC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wMy0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGJ0LWxvYWQuYywgYnVpbHRpbnMuYywgY2ZnaG9va3MuYywgY2ZncnRsLmMsIGdjc2UuYywKCWdnYy1wYWdlLmMsIGludGVncmF0ZS5jLCB2YXItdHJhY2tpbmcuYywgd2ViLmM6IFJlbW92ZQoJdW5uZWNlc3NhcnkgY2FzdHMuCgoyMDA0LTAzLTIyICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIHRhcmdldC8xNDI5MQoJKiBnY292LWlvLmggKGdjb3ZfdHJ1bmNhdGUpOiBEZWZpbmUgZnRydW5jYXRlIGFzIF9jaHNpemUgZm9yCglfX01JTkdXMzJfXy4KCjIwMDQtMDMtMjEgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqZG9sb29wX3NpIik6IENoYW5nZSBwcmVkaWNhdGUgZm9yIG9wZXJhbmQgMgoJdG8gbm9uaW1tZWRpYXRlX29wZXJhbmQuCgkoIipkb2xvb3BfZGkiKTogTGlrZXdpc2UuCgoyMDA0LTAzLTIxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHJlYWwuaCAoc3RydWN0IHJlYWxfdmFsdWUpOiBVc2UgdGhlIHNhbWUgdHlwZSBmb3IgYWxsCgliaXRmaWVsZHMuICBSZW5hbWUgZXhwIHRvIHVleHAuCgkoUkVBTF9FWFAsIFNFVF9SRUFMX0VYUCk6IE5ldyBhY2Nlc3NvciBtYWNyb3MgZm9yIHVleHAuCglBZGp1c3QgYWxsIHVzZXMgb2YgZXhwLi4uCgkqIGJ1aWx0aW5zLmM6IC4uLiBoZXJlLCAuLi4KCSogZW1pdC1ydGwuYzogLi4uIGhlcmUsIGFuZCAuLi4KCSogcmVhbC5jOiAuLi4gYW5kIGhlcmUuCgoyMDA0LTAzLTIxICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHByZXR0eS1wcmludC5jIChwcF9iYXNlX21heWJlX3NwYWNlKTogTmV3IGZ1bmN0aW9uLgoJKiBwcmV0dHktcHJpbnQuaCAocHBfYmFzZV9tYXliZV9zcGFjZSk6IERlY2xhcmUuCgkocHBfbWF5YmVfc3BhY2UpOiBOZXcgbWFjcm8uCgoyMDA0LTAzLTIxICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiYWRkdGkzIiwgInN1YnRpMyIpOiBOZXcgaW5zbnMgYW5kIHNwbGl0dGVycy4KCjIwMDQtMDMtMjEgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGV4cG1lZC5jIChjaG9vc2VfbXVsdF92YXJpYW50KTogUGFzcyBNVUxUX0NPU1QgYXMgYXJndW1lbnQgaW5zdGVhZAoJb2YgdXNpbmcgcmVnaXN0ZXIgbXVsdGlwbGljYXRpb24gY29zdC4KCShleHBhbmRfbXVsdCk6IEFkYXB0IGNob29zZV9tdWx0X3ZhcmlhbnQgY2FsbC4KCShleHBhbmRfbXVsdF9oaWdocGFydCk6IENhbGwgY2hvb3NlX211bHRfdmFyaWFudCB3aXRoIFdJREVSX01PREUKCW9mIE1PREU7IHBhc3MgYXBwcm9wcmlhdGUgY29zdCBib3VuZC4gIEFkanVzdCByZXN1bHQgd2hlbgoJcGVyZm9ybWluZyBzaWduZWQgbXVsdGlwbGljYXRpb24gYnkgYSBuZWdhdGl2ZSBjb25zdGFudC4KCURvbid0IHVzZSBpbnRlcm1lZGlhdGUgbW9kZXMgbGFyZ2VyIHRoYW4gd29yZF9tb2RlLgoKMjAwNC0wMy0yMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFsaWFzLmMgKGdldF9hbGlhc19zZXQpOiBSZW1vdmUgaGFuZGxpbmcgb2YgUExBQ0VIT0xERVJfRVhQUi4KCSogZW1pdC1ydGwuYyAoY29tcG9uZW50X3JlZl9mb3JfbWVtX2V4cHIpOiBMaWtld2lzZS4KCShzZXRfbWVtX2F0dHJpYnV0ZXNfbWludXNfYml0cG9zKTogQ2FsbCBTVUJTVElUVVRFX1BMQUNFSE9MREVSX0lOX0VYUFIuCgkqIGV4cGxvdy5jIChleHByX3NpemUpOiBMaWtld2lzZS4KCSogZXhwci5oIChwbGFjZWhvbGRlcl9saXN0LCBmaW5kX3BsYWNlaG9sZGVyKTogRGVsZXRlZC4KCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBMaWtld2lzZS4gIEFsc28gZG9uJ3QgY2FsbCBmaW5kX3BsYWNlaG9sZGVyLgoJKHBsYWNlaG9sZGVyX2xpc3QsIGZpbmRfcGxhY2Vob2xkZXIpOiBEZWxldGVkLgoJKGlzX2FsaWduaW5nX29mZnNldCk6IERvbid0IGhhbmRsZSBXSVRIX1JFQ09SRF9FWFBSLCBQTEFDRUhPTERFUl9FWFBSLgoJKGV4cGFuZF9leHByX3JlYWwsIGNhc2VzIFBMQUNFSE9MREVSX0VYUFIsIFdJVEhfUkVDT1JEX0VYUFIpOiBMaWtld2lzZS4KCShoaWdoZXN0X3BvdzJfZmFjdG9yLCBjYXNlIFdJVEhfUkVDT1JEX0VYUFIpOiBSZW1vdmUuCgkqIGRvanVtcC5jIChkb19qdW1wLCBjYXNlIFdJVEhfUkVDT1JEX0VYUFIpOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSwgY2FzZSBXSVRIX1JFQ09SRF9FWFBSKToKCUxpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKGludmVydF90cnV0aHZhbHVlLCBjYXNlIFdJVEhfUkVDT1JEX0VYUFIpOiBMaWtld2lzZS4KCShleHRyYWN0X211bGRpdiwgY2FzZSBXSVRIX1JFQ09SRF9FWFBSKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoZXhwcl9hbGlnbiwgY2FzZSBXSVRIX1JFQ09SRF9FWFBSKTogTGlrZXdpc2UuCgkoY29udGFpbnNfcGxhY2Vob2xkZXJfcCk6IERvbid0IGhhbmRsZSBXSVRIX1JFQ09SRF9FWFBSLgoJQ2xlYW4gdXAgYnkgdXNpbmcgZmlyc3RfcnRsX29wLgoJKHN1YnN0aXR1dGVfaW5fZXhwcik6IFVzZSBTVUJTVElUVVRFX0lOX0VYUFIgZm9yIHJlY3Vyc2l2ZSBjYWxsLgoJKHN1YnN0aXR1dGVfcGxhY2Vob2xkZXJfaW5fZXhwcik6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5kZWYgKFdJVEhfUkVDT1JEX0VYUFIpOiBEZWxldGVkLgoJKiB0cmVlLmggKFNVQlNUSVRVVEVfSU5fRVhQUiwgU1VCU1RJVFVURV9QTEFDRUhPTERFUl9JTl9FWFBSKTogTmV3LgoJKHN1YnN0aXR1dGVfcGxhY2Vob2xkZXJfaW5fZXhwcik6IE5ldy4KCjIwMDQtMDMtMjEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdjYy5nbnUub3JnPgoKCSogZG9qdW1wLmMgKHByZWZlcl9hbmRfYml0X3Rlc3QpOiBGaXggd2hpY2ggcGFydCBvZgoJdGhlIGFuZF90ZXN0IGlzIHJlcGxhY2VkLgoKMjAwNC0wMy0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBmcm9udGVuZHMudGV4aTogQWRkIG1pc3NpbmcgbGluZS4KCjIwMDQtMDMtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgQ2hyaXMgRGV2ZXJzICA8Y2RldmVyc0Bwb2JveC5jb20+CgkgICAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvZnJvbnRlbmRzLnRleGk6IFJld3JpdGUuCgkqIGRvYy9nY2MudGV4aTogVXBkYXRlIGxhc3QgbW9kaWZpY2F0aW9uIGRhdGUuCgoyMDA0LTAzLTIxICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBjZmdydGwuYyAoY2ZnX2xheW91dF9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gpOiBQcmludCB0aGUgZGVidWcKCW1lc3NhZ2UgYmVmb3JlIHJlZGlyZWN0aW5nIHRoZSBlZGdlLgoKMjAwNC0wMy0yMCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZW1pdC1ydGwuYyAoc2V0X21lbV9hdHRyaWJ1dGVzX21pbnVzX2JpdHBvcyk6IFNldCBNRU1fUE9JTlRFUgoJZmxhZy4KCSogZXhwbG93LmMgKGZvcmNlX25vdF9tZW0pOiBTZXQgUkVHX1BPSU5URVIgZmxhZyBhY2NvcmRpbmcgdG8KCU1FTV9QT0lOVEVSIG9uZS4KCSogcnRsLmggKE1FTV9QT0lOVEVSKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBydHhfZGVmKTogVXNlIGludGVncmF0ZWQgZm9yIE1FTV9TQ0FMQVJfUCBhbmQgZnJhbWVfcmVsYXRlZAoJZm9yIE1FTV9QT0lOVEVSLgoKMjAwNC0wMy0yMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgdGFyZ2V0LzEzODg5CgkqIGNzZS5jIChmb2xkX3J0eCk6IEF2b2lkIHN1YnN0aXR1dGluZyBjb25zdGFudHMgaW50byB1bmFyeQoJY29udmVyc2lvbiBvcGVyYXRpb25zLgoKMjAwNC0wMy0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IFJlcGxhY2UgImV4cHIiIHdpdGggInQiLgoKMjAwNC0wMy0yMCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCglQUiBjLzEyMzczCgkqIGMtdHlwZWNrLmMgKHRhZ2dlZF90eXBlc190dV9jb21wYXRpYmxlX3ApOiBEb24ndCB1c2UKCURFQ0xfT1JJR0lOQUxfVFlQRSBpZiB0aGVyZSBpc24ndCBvbmUuCgoyMDA0LTAzLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogUmVwbGFjZSAiZmluYWxfdHlwZSIgd2l0aCAidHlwZSIuCglSZW1vdmUgdmFyaWFibGUgImZpbmFsX3R5cGUiLgoKMjAwNC0wMy0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IENvbnN0aWZ5ICJ0eXBlIi4KCVJlcGxhY2UgIlRSRUVfVFlQRSAodCkiIHdpdGggInR5cGUiLgoKMjAwNC0wMy0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGJiLXJlb3JkZXIuYywgYnQtbG9hZC5jLCBjLWRlY2wuYywgY2ZnY2xlYW51cC5jLCBjb3ZlcmFnZS5jLAoJZHdhcmYyYXNtLmMsIGlmY3Z0LmMsIHN0b3ItbGF5b3V0LmMsIHZhcmFzbS5jOiBSZXBsYWNlIGNhbGxzCgl2aWEgKCp0YXJnZXRtLmZvbykgKCkgd2l0aCB0YXJnZXRtLmZvbyAoKS4KCjIwMDQtMDMtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIG90aGVyLzE0NjMwCgkqIGRvYy9pbnN0YWxsLnRleGk6IEFkZCBpbmZvIGRpcmVjdG9yeSBjYXRlZ29yeSBhbmQgZW50cnkuCgoyMDA0LTAzLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogUmVwbGFjZSAidCIgd2l0aCAidGVtIiB3aGVyZSBpdCBpcyB1c2VkCglhcyBhIHRlbXBvcmFyeSB2YXJpYWJsZS4gIFJlbW92ZSAib3JpZ190IiBhbmQgYWxsIG9mIGl0cyB1c2VzLgoKMjAwNC0wMy0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IFJlbW92ZSB2YXJpYWJsZSAiaW52ZXJ0Ii4KCU1vdmUgdGhlIGhhbmRsaW5nIG9mIHJlbGF0aW9uYWwgZXhwcmVzc2lvbnMgdGhhdCBjYW4gYmUgZm9sZGVkCgl0byBhIGNvbnN0YW50IC4uLgoJKGZvbGRfcmVsYXRpb25hbF9jb25zdCk6IC4uLiBoZXJlLgoJKHRyZWVfZXhwcl9ub256ZXJvX3ApOiBOZXcuCgoyMDA0LTAzLTIwICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzE0NjM1CgkqIGJ1aWx0aW5zLmRlZiAobmFuLCBuYW5mLCBuYW5sLCBuYW5zLCBuYW5zZiwgbmFuc2wpOiBDaGFuZ2UgdG8KCURFRl9HQ0NfQlVJTFRJTi4KCjIwMDQtMDMtMjAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChkb2p1bXAubyk6IERlcGVuZCBvbiAkKEdHQ19IKSBhbmQgZG9qdW1wLmguCgkoR1RGSUxFUyk6IEFkZCAkKHNyY2RpcikvZG9qdW1wLmguCgkoZ3QtZG9qdW1wLmgpOiBOZXcgZGVwZW5kZW5jeS4KCSogZG9qdW1wLmMgKGFuZF9yZWcsIGFuZF90ZXN0LCBzaGlmdF90ZXN0KTogTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkocHJlZmVyX2FuZF9iaXRfdGVzdCk6IE5ldyBmdW5jdGlvbi4KCShkb19qdW1wKTogVXNlIGl0IHRvIGNob29zZSBiZXR3ZWVuIChYICYgKDEgPDwgQykpIGFuZCAoWCA+PiBDKSAmIDEuCgoyMDA0LTAzLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1jb21tb24uYywgY2ZnY2xlYW51cC5jLCBjZ3JhcGh1bml0LmMsIGMtcHJldHR5LXByaW50LmMsCglleHBtZWQuYywgZ2djLWNvbW1vbi5jLCBqdW1wLmMsIHBhc3Nlcy5jLCByZWNvZy5jLCByZWdtb3ZlLmMsCglyZW9yZy5jLCB0cmVlLmg6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNC0wMy0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGFsaWFzLmMsIGF0dHJpYnMuYywgYnQtbG9hZC5jLCBidWlsdGlucy5jLCBjLWNvbW1vbi5jLAoJYy1kZWNsLmMsIGMtb2JqYy1jb21tb24uYywgYy10eXBlY2suYywgY2FsbHMuYywgY2ZnbGF5b3V0LmMsCgljc2UuYywgZGJ4b3V0LmMsIGR3YXJmMm91dC5jLCBleGNlcHQuYywgZmluYWwuYywKCWhhaWZhLXNjaGVkLmMsIGludGVncmF0ZS5jLCBwYXNzZXMuYywgcnRsYW5hbC5jLCBzY2hlZC1yZ24uYywKCXNjaGVkLXZpcy5jLCBzaW1wbGlmeS1ydHguYywgc3Rvci1sYXlvdXQuYywgdHJlZS5jLCB2YXJhc20uYywKCXZtc2RiZ291dC5jOiBSZXBsYWNlIGNhbGxzIHZpYSAoKnRhcmdldG0uZm9vKSAoKSB3aXRoCgl0YXJnZXRtLmZvbyAoKS4KCjIwMDQtMDMtMTkgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5oICh2ZWNfZHN0LCB2ZWNfZHN0c3QsIHZlY19kc3RzdHQsCgl2ZWNfZHN0dCwgdmVjX3NsZCwgdmVjX3NwbGF0KTogQWRkIHByb3RvdHlwZXMsIG1hcmtlZCB3aXRoCglhbHdheXNfaW5saW5lIGF0dHJpYnV0ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoYWx0aXZlY19leHBhbmRfZHN0X2J1aWx0aW4pOgoJVHJlYXQgZXhwYW5zaW9uIGFzIGNvbXBsZXRlZCBldmVuIGlmIGxpdGVyYWwgYXJndW1lbnQgaXMKCWludmFsaWQgKHNvIHRoYXQgb3RoZXIgZXhwYW5zaW9ucyBhcmUgbm90IHRyaWVkIGluIHZhaW4pLgoKMjAwNC0wMy0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGxvb3AtZG9sb29wLmMgKGFkZF90ZXN0KTogUmVwbGFjZSBHRU5fSU5UICgwKSB3aXRoCgljb25zdDBfcnR4LgoKMjAwNC0wMy0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgPEFCU19FWFBSPjogTW92ZSB0aGUgaGFuZGxpbmcgb2YgY29uc3RhbnRzCgkuLi4KCShmb2xkX2Fic19jb25zdCk6IC4uLiBoZXJlLgoKMjAwNC0wMy0xOSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuaCAoVFlQRV9BUlJBWV9NQVhfU0laRSk6IFVzZSB0eXBlLm1heHZhbCBkaXJlY3RseS4KCjIwMDQtMDMtMTkgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJUFIgdGFyZ2V0LzExNTIwCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgiY2FsbF9pbnNuIik6IEhhbmRsZSBleHBsaWNpdCBpbnRlZ2VyCglzcGVjaWFsbHkuCgkoY2FsbF92YWx1ZV9pbnNuKTogTGlrZXdpc2UuCgoyMDA0LTAzLTE5ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS5jIChzdWJzdGl0dXRlX2luX2V4cHIpOiBSZXdyaXRlIHRvIHNpbXBsaWZ5IGFuZCBiZSBtb3JlIGdlbmVyaWMuCgoyMDA0LTAzLTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZm9sZC1jb25zdC5jIChuZWdhdGVfZXhwcik6IE1vdmUgdGhlIGhhbmRsaW5nIG9mIGNvbnN0YW50cwoJLi4uCgkoZm9sZF9uZWdhdGVfY29uc3QpOiAuLi4gaGVyZS4KCjIwMDQtMDMtMTkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfSEFTSF9UWVBFUyk6IE5ldyBtYWNybyBhbmQgaG9vay4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzX2Zvcl90eXBlcyk6IE5ldyBmaWVsZCBoYXNoX3R5cGVzLgoJKiB0cmVlLmMgKGRlYnVnX25vX3R5cGVfaGFzaCk6IERlbGV0ZWQuCgkodHlwZV9oYXNoX2Nhbm9uKTogQWJvcnQgaWYgcGFzc2VkIGEgdmFyaWFudC4KCUNoZWNrIGxhbmdfaG9va3MudHlwZXMuaGFzaF90eXBlcy4KCShidWlsZF90eXBlX25vX3F1YWxzKTogQ29weSBtb2RlIG9mIFBPSU5URVJfVFlQRSBhbmQgUkVGRVJFTkNFX1RZUEUuCgkoYnVpbGRfYXJyYXlfdHlwZSk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9uIG9mIHBvaW50ZXIgdHlwZS4KCShidWlsZF9jb21wbGV4X3R5cGUpOiBQcm9wZXJseSBxdWFsaWZ5IHJlc3VsdGluZyB0eXBlLgoKMjAwNC0wMy0xOSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9pbml0X2J1aWx0aW5zKTogRml4IHR5cG8uCgoyMDA0LTAzLTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBleHBtZWQuYyAoY2hvb3NlX211bHRfdmFyaWFudCwgZXhwYW5kX211bHRfY29uc3QpOiBOZXcsIHNwbGl0IGZyb20uLi4KCShleHBhbmRfbXVsdCk6IC4uLmhlcmUuCgkoZXh0cmFjdF9oaWdoX2hhbGYpOiBOZXcsIHNwbGl0IG91dCBmcm9tIGV4cGFuZF9tdWx0X2hpZ2hwYXJ0LgoJKGV4cGFuZF9oaWdocGFydF9vcHRhYik6IExpa2V3aXNlLiAgRG9uJ3QgY2xvYmJlciB0YXJnZXQgcHJlbWF0dXJlbHkuCgkoZXhwYW5kX2hpZ2hwYXJ0KTogRXZhbHVhdGUgdGhlIGNvc3Qgb2YgYSBzaGlmdC9hZGQgc2VxdWVuY2UsCgl0aGVuIHNlZSBpZiBhbnkgb2YgdGhlIHNwZWNpYWxpemVkIG9wdGFicyBhcmUgY2hlYXBlci4KCjIwMDQtMDMtMTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBta2xpYmdjYy5pbjogUmVtb3ZlIG9ic29sZXRlIE1BWUJFX1VTRV9DT0xMRUNUMi4KCjIwMDQtMDMtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19yZWFsKTogQWRkIG1vcmUgbWF0aCBidWlsdGlucy4KCjIwMDQtMDMtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19yZWFsKTogUmVmb3JtYXQgdXNpbmcgc3dpdGNoIHN0bXQuCgoyMDA0LTAzLTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYyAocG9pbnRlcl9pbnRfc3VtKTogRG8gbm90IGNvbXBsYWluIGFib3V0IHVzaW5nCglwb2ludGVycyB0byBwb2ludGVycy10by1tZW1iZXJzLgoKMjAwNC0wMy0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHN5c3RlbS5oIChNRF9BU01fQ0xPQkJFUlMpOiBNb3ZlIHRvICJPbGQgdGFyZ2V0IG1hY3JvcyB0aGF0CgloYXZlIG1vdmVkIHRvIHRoZSB0YXJnZXQgaG9va3Mgc3RydWN0dXJlIi4KCjIwMDQtMDMtMTggIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKHR5cGUpOiBTcGxpdCBtb3ZlIGludG8gYXJpdGggYW5kIGZtb3ZlLiAgU3BsaXQKCWhpbG8gaW50byBtdGhpbG8gYW5kIG1maGlsby4gIEFkZCB0cmFwLiAgRGVsZXRlIGljbXAuICBGaXggYWxsIHVzZXMuCgkqIGNvbmZpZy9taXBzLzU0MDAubWQgKGlyX3ZyNTRfaGlsbywgaXJfdnI1NF9hcml0aCwgaXJfdnI1NF9mYWJzKToKCUxpa2V3aXNlLgoJKiBjb25maWcvbWlwcy81NTAwLm1kIChpcl92cjU1X2hpbG8sIGlyX3ZyNTVfYXJpdGgsIGlyX3ZyNTVfZmFicyk6CglMaWtld2lzZS4KCSogY29uZmlnL21pcHMvNzAwMC5tZCAocm03X2ludF9vdGhlciwgcm03X210aGlsbywgcm03X21maGlsbywKCXJtN19mcF9xdWljayk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy85MDAwLm1kIChybTlrX2ludCwgcm05a19tZmhpbG8sIHJtOWtfbXRoaWxvLAoJcm05a19mcXVpY2spOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvc3I3MWsubWQgKGlyX3NyNzBfaGlsbywgaXJfc3I3MF9hcml0aCwgaXJfc3I3MF9mYWJzKToKCUxpa2V3aXNlLgoJKGlyX3NyNzBfaWNtcCk6IERlbGV0ZS4KCjIwMDQtMDMtMTggIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmggKFRSRUVfQ0hFQ0syLCBUUkVFX0NIRUNLMywgVFJFRV9DSEVDSzUpOiBOZXcgbWFjcm9zLgoJKHRyZWVfY2hlY2syX2ZhaWxlZCwgdHJlZV9jaGVjazNfZmFpbGVkLCB0cmVlX2NoZWNrNV9mYWlsZWQpOiBOZXcgZGVjbC4KCShGVU5DX09SX01FVEhPRF9DSEVDSywgU0VUX0FSUkFZX09SX1ZFQ1RPUl9DSEVDSyk6IE5ldyBtYWNyb3MuCgkoUkVDX09SX1VOSU9OX0NIRUNLLCBOVU1FUklDQUxfVFlQRV9DSEVDSyk6IExpa2V3aXNlLgoJKFRZUEVfVkFMVUVTLCBUWVBFX0RPTUFJTiwgVFlQRV9GSUVMRFMsIFRZUEVfTUVUSE9EUywgVFlQRV9WRklFTEQpOgoJUHJvdGVjdCB3aXRoIHByb3BlciBjaGVjay4KCShUWVBFX0FSR19UWVBFUywgVFlQRV9NRVRIT0RfQkFTRVRZUEUsIFRZUEVfT0ZGU0VUX0JBU0VUWVBFKTogTGlrZXdpc2UuCgkoVFlQRV9NSU5fVkFMVUUsIFRZUEVfTUFYX1ZBTFVFKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAodHlwZV9oYXNoX2VxKTogUmV3cml0ZSB0byBhY2Nlc3MgcHJvcGVyIGZpZWxkcyBmb3IgZWFjaCB0eXBlLgoJKHRyZWVfY2hlY2syX2ZhaWxlZCwgdHJlZV9jaGVjazNfZmFpbGVkLCB0cmVlX2NoZWNrNV9mYWlsZWQpOiBOZXcuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2FycmF5X3JlZik6IFVzZSBUWVBFX0RPTUFJTiwgbm90IFRZUEVfVkFMVUVTLgoJKiBkd2FyZjJvdXQuYyAoZ2VuX2VudW1lcmF0aW9uX3R5cGVfZGllKTogVXNlIFRZUEVfVkFMVUVTLAoJbm90IFRZUEVfRklFTERTLgoJKiBzdG9yLWxheW91dC5jIChzZXRfc2l6ZXR5cGUpOiBVc2UgVFlQRV9PUklHX1NJWkVfVFlQRS4KCjIwMDQtMDMtMTggIE1vc3RhZmEgSGFnb2cgIDxtdXN0YWZhQGlsLmlibS5jb20+CgoJKiBnY3NlLmMgKGVsaW1pbmF0ZV9wYXJ0aWFsbHlfcmVkdW5kYW50X2xvYWRzKTogUmVqZWN0IGNoYW5nZSBpZgoJZGVzdCBpcyBzZXQgYmV0d2VlbiBiZWdpbm5pbmcgYW5kIGN1cnJlbnQgaW5zbi4KCjIwMDQtMDMtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEbyBub3QgY29tcGxhaW4gYWJvdXQgcmVkZWNsYXJpbmcKCXZpc2libGUgInN0YXRpYyIgaWRlbnRpZmllcnMgImV4dGVybiIgaW4gYSBsb2NhbCBzY29wZS4KCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSk6IEhhbmRsZSBwcmUtIGFuZAoJcG9zdC1pbmNyZW1lbnRzL2RlY3JlbWVudHMuCgoyMDA0LTAzLTE4ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoY3VycmVudF9mdW5jdGlvbl9hcmdfd29yZHMpOiBEZWxldGUuCgkoeHRlbnNhX2J1aWx0aW5fc2F2ZXJlZ3MpOiBVc2UgY3VycmVudF9mdW5jdGlvbl9hcmdzX2luZm8uYXJnX3dvcmRzLgoJKHh0ZW5zYV92YV9zdGFydCk6IFJlbW92ZSBhc3NpZ25tZW50IHRvIGN1cnJlbnRfZnVuY3Rpb25fYXJnX3dvcmRzLgoKMjAwNC0wMy0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogYWxpYXMuYyAocmVjb3JkX3NldCk6IERldGVjdCB0aGUgY2FzZSB3aGVyZSBhIHJlZ2lzdGVyIGlzIGFzc2lnbmVkCglhIG5ldyB2YWx1ZSB0aGF0IGhhcyB0aGUgc2FtZSBiYXNlIHRlcm0gYXMgdGhlIG9sZCBvbmUuCgoyMDA0LTAzLTE4ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBkb2xvb3AuYzogUmVtb3ZlZC4KCSogbG9vcC1kb2xvb3AuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChkb2xvb3Aubyk6IFJlbW92ZS4KCShsb29wLWRvbG9vcC5vKTogTmV3LgoJKiBjZmdsb29wLmggKGdldF9sb29wX2xldmVsLCBkb2xvb3Bfb3B0aW1pemVfbG9vcHMpOiBEZWNsYXJlLgoJKiBjZmdsb29wYW5hbC5jIChnZXRfbG9vcF9sZXZlbCk6IE5ldyBmdW5jdGlvbi4KCSogbG9vcC1pdi5jIChpdl9udW1iZXJfb2ZfaXRlcmF0aW9ucyk6IEhhbmRsZSBjYXNlIHdoZW4gbG9vcAoJaXMgbGVhdmVkIGltbWVkaWF0ZWxseS4KCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBEbyBub3QgY2FsbCBkb2xvb3Agb3B0aW1pemF0aW9uLgoJKiBsb29wLmggKExPT1BfQkNUKTogUmVtb3ZlZC4KCSogcGFzc2VzLmMgKHJlc3Rfb2ZfaGFuZGxlX2xvb3Bfb3B0aW1pemUpOiBEbyBub3QgdXNlIExPT1BfQkNULgoJKHJlc3Rfb2ZfaGFuZGxlX2xvb3AyKTogQ2FsbCBkb2xvb3Bfb3B0aW1pemVfbG9vcHMuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IFRlc3QgZm9yIG9wdGltaXphdGlvbnMgbW92ZWQgdG8KCXJlc3Rfb2ZfaGFuZGxlX2xvb3AyLgoKMjAwNC0wMy0xNyAgRmFyaWJvcnogSmFoYW5pYW4gPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc3RhY2tfaW5mbyk6IGNvcnJlY3QgcmVnX3NpemUKCWZvciBtaXhlZCBtb2RlLgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogRGl0dG8uCgkocnM2MDAwX2VtaXRfZXBpbG9ndWUpOiBEaXR0by4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogRGVmaW5pdGlvbiBvZiBEV0FSRl9DSUVfREFUQV9BTElHTk1FTlQKCW1hY3JvIGZvciBtaXhlZCBtb2RlLgoKMjAwNC0wMy0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcHJlZGljdC5jIChwcm9wYWdhdGVfZnJlcSk6IENvbXB1dGUgY29ycmVjdGx5IGZyZXF1ZW5jeSBvZgoJRVhJVF9CTE9DSy4KCjIwMDQtMDMtMTcgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoYXBwbHlfYXJnc19zaXplKTogVXNlIHJlZ19yYXdfbW9kZS4KCShhcHBseV9yZXN1bHRfc2l6ZSk6IERpdHRvLgoKMjAwNC0wMy0xNyAgUmFsZiBDb3JzZXBpdXMgPGNvcnNlcGl1QGZhdy51bmktdWxtLmRlPgoKCVBSIHRhcmdldC8xNDYyMAoJKiBjb25maWcvcnRlbXMuaDogQWRkIFNURF9MSUJfU1BFQyBhbmQgTElCX1NQRUMuCgoyMDA0LTAzLTE3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvdC1saW51eDY0IChiaXNwZWNzKTogRG9uJ3QgYWRkIC1tbG9uZy1kb3VibGUtMTI4IGZvcgoJMzItYml0IGJ1aWxkcyB3aGVuIGRlZmF1bHRpbmcgdG8gMzItYml0LgoKMjAwNC0wMy0xNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2ZncnRsLmMgKHJ0bF9jcmVhdGVfYmFzaWNfYmxvY2spOiBQcmUtYWxsb2NhdGUgYmFzaWNfYmxvY2tfaW5mbwoJYXJyYXkuCgoyMDA0LTAzLTE3ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICh6ZXJvX2V4dGVuZHNpZGkyKTogQWRkIGxlbmd0aCBhdHRyaWJ1dGUuCgkoaGF6YXJkX25vcCk6IENoYW5nZSB0eXBlIHRvIG5vcC4KCSh0eXBlKTogU3BsaXQgYXJpdGggaW50byBhcml0aCwgc2hpZnQsIHNsdCwgY2x6LiAgRGVsZXRlIGRhcml0aC4KCUZpeCBhbGwgdXNlcy4gIENoYW5nZSBhcml0aCB0byBtdWx0aSBpZiBtb3JlIHRoYW4gb25lIGluc24gZW1pdHRlZC4KCSogY29uZmlnL21pcHMvNTQwMC5tZCAoaXJfdnI1NF9hcml0aCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy81NTAwLm1kIChpcl92cjU1X2FyaXRoKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzLzcwMDAubWQgKHJtN19pbnRfb3RoZXIpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvOTAwMC5tZCAocm05a19pbnQpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvc3I3MWsubWQgKGlyX3NyNzBfYXJpdGgpOiBMaWtld2lzZS4KCjIwMDQtMDMtMTcgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKHN1YnJhbmdlX3R5cGVfZGllKTogRGVmaW5lIG5ldyB2YXJpYWJsZSAic3VidHlwZSIKCXRvIGhvbGQgdGhlIHN1YnR5cGUgdHJlZSBpbnN0ZWFkIG9mIHJlY29tcHV0aW5nIGl0IHNldmVyYWwgdGltZXMuCgoyMDA0LTAzLTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChub3RpY2VfdXBkYXRlX2NjKTogRG9uJ3QgaGFuZGxlCglDQ19JTlZFUlQuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKGNjKTogUmVtb3ZlICJpbnZlcnQiLgoKMjAwNC0wMy0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoaW50ZWdlcl92YWx1ZWRfcmVhbF9wKTogQWRkIGJ1aWx0aW4gcmludC4KCShmb2xkX2J1aWx0aW4pOiBMaWtld2lzZS4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX3JlYWwpOiBMaWtld2lzZS4KCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19yZWFsKTogRml4IHR5cG9zIGluIGBsb25nIGRvdWJsZScKCWJ1aWx0aW5zLgoKMjAwNC0wMy0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTQ0ODEKCSogZm9sZC1jb25zdC5jIChmb2xkKTogU2V0IFRSRUVfTk9fVU5VU0VEX1dBUk5JTkcgb24gaW1wbGljaXRseQoJZ2VuZXJhdGVkIENPTVBPVU5EX0VYUFJzLgoKMjAwNC0wMy0xNiAgUmFsZiBDb3JzZXBpdXMgPGNvcnNlcGl1QGZhdy51bmktdWxtLmRlPgoKCSogY29uZmlnL2g4MzAwL3QtcnRlbXMgKGg4MzAwLSotcnRlbXMqKTogTmV3LgoKMjAwNC0wMy0xNiAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBkb2MvY3Bwb3B0cy50ZXhpKGZ3aWRlLWV4ZWMtY2hhcnNldCk6IEZpeCB0eXBvLgoKMjAwNC0wMy0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmg6IEFkZCBhIHByb3RvdHlwZSBmb3IKCWl4ODZfcmV2ZXJzZV9jb25kaXRpb24uCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9yZXZlcnNlX2NvbmRpdGlvbik6IE5ldy4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChSRVZFUlNFX0NPTkRJVElPTik6IFVzZQoJaXg4Nl9yZXZlcnNlX2NvbmRpdGlvbi4KCSogY29uZmlnL2kzODYvaTM4Ni5tZDogVXNlIGl4ODZfcmV2ZXJzZV9jb25kaXRpb24gaW5zdGVhZCBvZgoJUkVWRVJTRV9DT05ESVRJT04uCgoyMDA0LTAzLTE2ICBKLiBCcm9iZWNrZXIgIDxicm9iZWNrZXJAZ25hdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAobG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlKTogQWRkIGhhbmRsaW5nIGZvciBNSU5fRVhQUi4KCjIwMDQtMDMtMTYgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCVBSIGJvb3RzdHJhcC8xMjk3NAoJKiBNYWtlZmlsZS5pbjogUGFzcyAkKElOQ0xVREVTKSBkb3duIHRvIGxpYmdjYy5tayBleHBsaWNpdGx5LgoKMjAwNC0wMy0xNiAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3R5cGVfZm9yX21vZGUpOiBCdWlsZCB2ZWN0b3IgdHlwZXMgb24KCWRlbWFuZC4KCShoYW5kbGVfbW9kZV9hdHRyaWJ1dGUpOiBEZXByZWNhdGUgdXNpbmcgdGhlIG1vZGUgYXR0cmlidXRlCgl0byBjcmVhdGUgdmVjdG9yIHR5cGVzLiAgRml4IGluZGVudGF0aW9uLgoJKHZlY3Rvcl90eXBlX25vZGVfbGlzdCk6IFJlbW92ZS4KCShoYW5kbGVfdmVjdG9yX3NpemVfYXR0cmlidXRlKTogQ3JlYXRlIHZlY3RvciB0eXBlcyBvbiBkZW1hbmQuCglTdHJpcCBhIE5PTl9MVkFMVUVfRVhQUiBmcm9tIHRoZSBhdHRyaWJ1dGUgaWYgdGhlcmUgaXMgb25lLgoJKiBjLXR5cGVjay5jIChjb21wdHlwZXMpOiBNYWtlIHZlY3RvciB0eXBlcyBjb21wYXRpYmxlIGlmIHRoZXkKCWhhdmUgdGhlIHNhbWUgdW5kZXJseWluZyBtb2RlLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBVc2UgY29tcHR5cGVzIHRvIGNvbnZlcnQgYmV0d2VlbgoJdmVjdG9yIHR5cGVzLgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBEbyBub3QgY3JlYXRlIHZlY3RvciB0eXBlcy4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2luaXRfaXdtbXh0X2J1aWx0aW5zKTogQ3JlYXRlIG5lY2Vzc2FyeQoJdmVjdG9yIHR5cGVzLgoJKiB0cmVlLmg6IFJlbW92ZSB2ZWN0b3IgdHlwZXMuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaTM4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2luaXRfYnVpbHRpbnMpOiBMaWtld2lzZS4KCShWMTZRSV90eXBlX25vZGUsIFYyU0lfdHlwZV9ub2RlLCBWMlNGX3R5cGVfbm9kZSwgVjRISV90eXBlX25vZGUsCglWNFNJX3R5cGVfbm9kZSwgVjRTRl90eXBlX25vZGUsIFY4SElfdHlwZV9ub2RlKTogTmV3IGdsb2JhbHMuCgkqIGRvYy9leHRlbmQudGV4aSAoVmVjdG9yIFR5cGVzKTogRG9jdW1lbnQgaG93IHRvIHVzZSB0aGUKCXZlY3Rvcl9zaXplIGF0dHJpYnV0ZSB0byBjcmVhdGUgdmVjdG9ycywgcmF0aGVyIHRoYW4gbW9kZS4KCgkqIGNvbmZpZy9hcm0vbW1pbnRyaW4uaDogVXNlIHZlY3Rvcl9zaXplIGF0dHJpYnV0ZSwgbm90IG1vZGUuCgkqIGNvbmZpZy9pMzg2L2VtbWludHJpbi5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvbW1pbnRyaW4uaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3htbWludHJpbi5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3VzaG1lZGlhLmg6IExpa2V3aXNlLgoKMjAwNC0wMy0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9mcmVlYnNkLXNwZWMuaCwgY29uZmlnL2FyYy9hcmMtcHJvdG9zLmgsCgljb25maWcvYXJtL2FvdXQuaCwgY29uZmlnL2FybS9lbGYuaCwgY29uZmlnL2FybS9mcmVlYnNkLmgsCgljb25maWcvYXJtL2xpbnV4LWdhcy5oLCBjb25maWcvYXJtL3NlbWkuaCwKCWNvbmZpZy9jcmlzL2NyaXMtcHJvdG9zLmgsIGNvbmZpZy9pMzg2L3htLWRqZ3BwLmgsCgljb25maWcvaWE2NC9mcmVlYnNkLmgsIGNvbmZpZy9taXBzLzcwMDAubWQsCgljb25maWcvbWlwcy85MDAwLm1kLCBjb25maWcvbnMzMmsvbnMzMmstcHJvdG9zLmgsCgljb25maWcvc3BhcmMvcGJkLmg6IFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA0LTAzLTE2ICBSYWxmIENvcnNlcGl1cyA8Y29yc2VwaXVAZmF3LnVuaS11bG0uZGU+CgoJUFIgdGFyZ2V0LzE0NTc3CgkqIGNvbmZpZy5nY2M6IFN3aXRjaCBzaC0qLXJ0ZW1zKiB0byBFTEYuICBBZGQgc2gtKi1ydGVtc2NvZmYuCgoyMDA0LTAzLTE2ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IFJlbW92ZSB0aGUgImxhc3QiCglwYXJhbWV0ZXIgYW5kIGl0cyBkb2N1bWVudGF0aW9uLiAgQWRqdXN0IHJlY3Vyc2l2ZSBjYWxscy4KCShzaW1wbGlmeV9sb2dpY2FsKTogQWx3YXlzIHBlcmZvcm0gdGhlIG9ubHkgc2ltcGxpZmljYXRpb24KCWNvbnRyb2xsZWQgYnkgImxhc3QiLCBpZiB0aGUgc2ltcGxpZmllZCBleHByZXNzaW9uIGlzCglhY3R1YWxseSBkaWZmZXJlbnQuCgkodHJ5X2NvbWJpbmUpOiBEbyBub3QgcGFzcyB0aGUgImxhc3QiIHBhcmFtZXRlciB0bwoJY29tYmluZV9zaW1wbGlmeV9ydHguCgoyMDA0LTAzLTE2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE0NTk5CgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFVOU1BFQ19HUCk6IE5ldyBjb25zdGFudC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChDT05TVF9HUF9QKTogRXhwZWN0IHRoZSBDT05TVCB0byBjb250YWluCglhbiBVTlNQRUMgaW5zdGVhZCBvZiAocmVnICRncCkuCgkobWlwczE2X2dwX3BzZXVkb19yZWcpOiBDaGFuZ2UgYWNjb3JkaW5nbHkuCgkocHJpbnRfb3BlcmFuZCk6IFByaW50ICRncCBkaXJlY3RseSB3aGVuIGhhbmRsaW5nIENPTlNUX0dQX1AuCgoyMDA0LTAzLTE2ICBSaWNoYXJkIFppZGxpY2t5ICA8cnpAbGludXgtbTY4ay5vcmc+CgoJKiBjb25maWcuZ2NjLCBjb25maWcvbTY4ay9saW51eC5oOiBJbXBsZW1lbnQgd2l0aC1jcHUgZm9yIG02OGstbGludXguCgkqIGxvbmdsb25nLmg6IE1ha2UgY29kZSA2ODA2MCBjbGVhbiB3aGVuIGNvbXBpbGluZyBmb3IgbTY4MDYwLgoKMjAwNC0wMy0xNiAgUmljaGFyZCBaaWRsaWNreSAgPHJ6QGxpbnV4LW02OGsub3JnPgoKCSogY29uZmlnL202OGsvbTY4ay5tZDogRml4IGNvbnN0cmFpbnRzIGZvciBiaXRmaWVsZCBpbnN0cnVjdGlvbnMuCgkqIGRvYy9tZC50ZXhpOiBDbGFyaWZ5IGRlc2NyaXB0aW9uIG9mICJpIiBjb25zdHJhaW50LgoKMjAwNC0wMy0xNSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAodHlwZSk6IFNwbGl0IGxvYWQgaW50byBsb2FkLCBmcGxvYWQsIGZwaWR4bG9hZC4KCVNwbGl0IHN0b3JlIGludG8gc3RvcmUsIGZwc3RvcmUsIGZwaWR4c3RvcmUuICBGaXggYWxsIHVzZXMuCgkqIGNvbmZpZy9taXBzLzU0MDAubWQgKGlyX3ZyNTRfbG9hZCwgaXJfdnI1NF9zdG9yZSwgaXJfdnI1NF9mc3RvcmUpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzLzU1MDAubWQgKGlyX3ZyNTVfbG9hZCwgaTVfdnI1NV9zdG9yZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy83MDAwLm1kIChybTdfbGQsIHJtN19zdCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy85MDAwLm1kIChybTlrX2xvYWQsIHJtOWtfc3RvcmUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvc3I3MWsubWQgKGlyX3NyNzBfbG9hZCwgaXJfc3I3MF9zdG9yZSwgaXJfc3I3MF9mbG9hZCwKCWlyX3NyNzBfZnN0b3JlKTogTGlrZXdpc2UuCgoyMDA0LTAzLTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTQ1MzUKCSogZXhjZXB0LmMgKGNvbGxlY3Rfb25lX2FjdGlvbl9jaGFpbik6IFJlY29yZCBhY3Rpb24gZm9yIGNsZWFudXAKCW91dGVyIG9mIGV4Y2VwdGlvbiBzcGVjLgoKMjAwNC0wMy0xNSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvaG9zdC1kYXJ3aW4uYyAoZGFyd2luX3JzNjAwMF9ndF9wY2hfdXNlX2FkZHJlc3MpOgoJRml4IHRoZSBjaGVjayBmb3IgYWJvcnQgYW5kIG9ubHkgZG8gdGhlIG1tYXAgaWYgd2UgY2FuLgoKMjAwNC0wMy0xNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhY3QtZXVyb3BlLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmg6IFJld29yayBjb21tZW50cyBhYm91dCB0aGUgY29kZSBtb2RlbAoJaW4gNjQtYml0IGVudmlyb25tZW50IGFuZCB0aGUgbW9kZSAnUG1vZGUnLgoJKiBkb2MvaW52b2tlLnRleGkgKFNQQVJDIG9wdGlvbnMpOiBSZXdvcmsgZGVzY3JpcHRpb24gb2YgdGhlCglkaWZmZXJlbnQgY29kZSBtb2RlbHMgc3VwcG9ydGVkIGluIDY0LWJpdCBlbnZpcm9ubWVudC4KCjIwMDQtMDMtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkZWZhdWx0cy5oIChSRVZFUlNJQkxFX0NDX01PREUpOiBEZWZpbmUuCgkqIGp1bXAuYyAocmV2ZXJzZWRfY29tcGFyaXNvbl9jb2RlX3BhcnRzKTogRG9uJ3QgY2hlY2sgaWYKCVJFVkVSU0lCTEVfQ0NfTU9ERSBpcyBkZWZpbmVkLgoKMjAwNC0wMy0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGMtaW5jcGF0aC5jLCBjLWluY3BhdGguaCwgYy1wY2guYywgYy5vcHQsIGNwcGV4cC5jLAoJZXQtZm9yZXN0LmgsIGdlbmF0dHIuYywgZ2djLW5vbmUuYywgaG9zdGhvb2tzLWRlZi5oLAoJaG9zdGhvb2tzLmgsIHBhcmFtcy5oLCByYS1jb2xvcml6ZS5jLCB3ZWIuYywKCWNvbmZpZy9kYXJ3aW4tYy5jLCBjb25maWcvYWxwaGEvZnJlZWJzZC5oLCBjb25maWcvYXJtL3BlLmMsCgljb25maWcvYXZyL2F2ci1wcm90b3MuaCwgY29uZmlnL2F2ci9hdnIubWQsCgljb25maWcvZnIzMC9mcjMwLXByb3Rvcy5oLCBjb25maWcvZnIzMC9mcjMwLm1kLAoJY29uZmlnL2g4MzAwL2ZpeHVuc3Nmc2kuYywgY29uZmlnL2kzODYvZGFyd2luLmgsCgljb25maWcvaTM4Ni9mcmVlYnNkLmgsIGNvbmZpZy9pMzg2L2ZyZWVic2Q2NC5oLAoJY29uZmlnL2lhNjQvaHB1eC5oLCBjb25maWcvaWE2NC91bndpbmQtaWE2NC5jLAoJY29uZmlnL2lwMmsvbGliZ2NjLlMsIGNvbmZpZy9tMzJyL3htLW0zMnIuaCwKCWNvbmZpZy9tbWl4L21taXgtbW9kZXMuZGVmLCBjb25maWcvbnMzMmsvbmV0YnNkLmgsCgljb25maWcvbnMzMmsvbnMzMmsubWQsIGNvbmZpZy9wYS9wYTY0LWhwdXguaCwKCWNvbmZpZy9wYS9wYTY0LXJlZ3MuaCwgY29uZmlnL3JzNjAwMC9haXg0MS5oLAoJY29uZmlnL3JzNjAwMC9haXg0My5oLCBjb25maWcvcnM2MDAwL2hvc3QtZGFyd2luLmMsCgljb25maWcvc3BhcmMvYW91dC5oLCBjb25maWcvc3BhcmMvZnJlZWJzZC5oLAoJY29uZmlnL3NwYXJjL2xpdGVjb2ZmLmgsIGNvbmZpZy92YXgvdmF4LXByb3Rvcy5oLAoJZG9jL2hvc3Rjb25maWcudGV4aSwgZG9jL2luY2x1ZGUvZ2NjLWNvbW1vbi50ZXhpOiBVcGRhdGUKCWNvcHlyaWdodC4KCjIwMDQtMDMtMTUgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jICh0aHVtYl9leHBhbmRfcHJvbG9ndWUpOiBUaWUgcHJvbG9ndWUgaW5zbnMgdG8gZnAuCgoyMDA0LTAzLTE1ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2Nfc2VtaWNvbG9uKTogRml4IGZvcm1hdHRpbmcuCgkocHBfY19jdl9xdWFsaWZpZXIpOiBEb2N1bWVudC4KCShwcF9jX3NwYWNlX2Zvcl9wb2ludGVyX29wZXJhdG9yKTogTGlrZXdpc2UuCgkocHBfY19pbnRlZ2VyX2NvbnN0YW50KTogTGlrZXdpc2UuCgkocHBfY19pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkocHBfY19pbml0X2RlY2xhcmF0b3IpOiBEb24ndCBwcmludCBmdW5jdGlvbiBib2R5LgoKMjAwNC0wMy0xNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvY29udHJpYi50ZXhpLCBkb2MvZXh0ZW5kLnRleGksIGRvYy9nY292LnRleGksCglkb2MvaW5zdGFsbC50ZXhpLCBkb2MvaW52b2tlLnRleGksIGRvYy9tYWtlZmlsZS50ZXhpLAoJZG9jL3NvdXJjZWJ1aWxkLnRleGksIGRvYy90bS50ZXhpLCBkb2MvdHJvdWJsZS50ZXhpOiBDYXBpdGFsaXplCgkiZ2NjIiwgImcrKyIgYW5kICJnNzciIG9yIG1hcmsgdXAgd2l0aCBhcHByb3ByaWF0ZSBtYXJrdXAuICBBZGp1c3QKCXdvcmRpbmcgYW5kIGdyYW1tYXIuCgoyMDA0LTAzLTE0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGFsaWFzLmMgKGdldF9hbGlhc19zZXQpOiBSZXBsYWNlIGNhbGxzIHZpYSAoKmxhbmdfaG9va3MuZm9vKSAoKQoJd2l0aCBsYW5nX2hvb2tzLmZvbyAoKS4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fdmFfYXJnKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmMgKGZuYW1lX2FzX3N0cmluZywgY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uLAoJY19jb21tb25fdHlwZV9mb3JfbW9kZSwgY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zLAoJaGFuZGxlX21vZGVfYXR0cmlidXRlLCBoYW5kbGVfdmVjdG9yX3NpemVfYXR0cmlidXRlKTogTGlrZXdpc2UuCgkqIGMtY29udmVydC5jIChjb252ZXJ0KTogTGlrZXdpc2UuCgkqIGMtZm9ybWF0LmMgKGNoZWNrX2Zvcm1hdF90eXBlcyk6IExpa2V3aXNlLgoJKiBjLW9iamMtY29tbW9uLmMgKGNfdHJlZV9wcmludGVyKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wLCBidWlsZF9jb25kaXRpb25hbF9leHByLAoJYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKHRyeV90b19pbnRlZ3JhdGUsIGV4cGFuZF9jYWxsLAoJZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IExpa2V3aXNlLgoJKiBjZ3JhcGguYyAoY2dyYXBoX25vZGVfbmFtZSwgY2dyYXBoX2Z1bmN0aW9uX3Bvc3NpYmx5X2lubGluZWRfcCk6CglMaWtld2lzZS4KCSogY2dyYXBodW5pdC5jIChyZWNvcmRfY2FsbF8xLCBjZ3JhcGhfYW5hbHl6ZV9mdW5jdGlvbiwKCWNncmFwaF9leHBhbmRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX3BvaW50ZXIsIGNvbnZlcnRfdG9faW50ZWdlcik6IExpa2V3aXNlLgoJKiBjb3ZlcmFnZS5jIChidWlsZF9mbl9pbmZvX3R5cGUsIGJ1aWxkX2N0cl9pbmZvX3R5cGUsCglidWlsZF9nY292X2luZm8sIGNyZWF0ZV9jb3ZlcmFnZSk6IExpa2V3aXNlLgoJKiBkYnhvdXQuYyAoZGJ4b3V0X2luaXQpOiBMaWtld2lzZS4KCSogZGlhZ25vc3RpYy5jIChkaWFnbm9zdGljX3JlcG9ydF9jdXJyZW50X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGRvanVtcC5jIChkb19qdW1wKTogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jIChkd2FyZjJfbmFtZSk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoaW5pdF9laCk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAoZXhwcl9zaXplLCBpbnRfZXhwcl9zaXplKTogTGlrZXdpc2UuCgkqIGV4cG1lZC5jIChtYWtlX3RyZWUsIGNvbnN0X211bHRfYWRkX292ZXJmbG93X3AsIGV4cGFuZF9tdWx0X2FkZCk6CglMaWtld2lzZS4KCSogZXhwci5jIChzdG9yZV9leHByLCBzdG9yZV9jb25zdHJ1Y3Rvciwgc2FmZV9mcm9tX3AsCglleHBhbmRfZXhwcl9yZWFsLCBkb19zdG9yZV9mbGFnLCB0cnlfY2FzZXNpKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHB1c2hfZnVuY3Rpb25fY29udGV4dF90bywgcG9wX2Z1bmN0aW9uX2NvbnRleHRfZnJvbSwKCWZyZWVfYWZ0ZXJfcGFyc2luZywgYXNzaWduX3N0YWNrX2xvY2FsXzEsIGFzc2lnbl9zdGFja190ZW1wX2Zvcl90eXBlLAoJcHV0X3Zhcl9pbnRvX3N0YWNrLCBhbGxvY2F0ZV9zdHJ1Y3RfZnVuY3Rpb24sIGN1cnJlbnRfZnVuY3Rpb25fbmFtZSk6CglMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGNvcHlfZGVjbF9mb3JfaW5saW5pbmcsIGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24pOgoJTGlrZXdpc2UuCgkqIGxhbmdob29rcy5jIChsaGRfY2xlYXJfYmluZGluZ19zdGFjaywgd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucywKCWxoZF9wcmludF9lcnJvcl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBvcHRzLmMgKGhhbmRsZV9vcHRpb24sIGRlY29kZV9vcHRpb25zKTogTGlrZXdpc2UuCgkqIHBhc3Nlcy5jIChvcGVuX2R1bXBfZmlsZSk6IExpa2V3aXNlLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfZml4dXAsIGZpeHVwX2dvdG9zLCBleHBhbmRfYXNtX29wZXJhbmRzLAoJZXhwYW5kX2RlY2xfY2xlYW51cCwgZW1pdF9jYXNlX25vZGVzKTogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmMgKHZhcmlhYmxlX3NpemUpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKGFubm91bmNlX2Z1bmN0aW9uLCB3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9ucywKCWNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbnMsIGNvbXBpbGVfZmlsZSwgZGVmYXVsdF90cmVlX3ByaW50ZXIsCglwcm9jZXNzX29wdGlvbnMsIGxhbmdfZGVwZW5kZW50X2luaXQsIGZpbmFsaXplKTogTGlrZXdpc2UuCgkqIHRyZWUtZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmMgKHJlbWFwX2RlY2wsIHJlbWFwX2Jsb2NrLCBjb3B5X2JvZHlfciwKCWluaXRpYWxpemVfaW5saW5lZF9wYXJhbWV0ZXJzLCBkZWNsYXJlX3JldHVybl92YXJpYWJsZSwKCWlubGluYWJsZV9mdW5jdGlvbl9wLCBleHBhbmRfY2FsbF9pbmxpbmUsIG9wdGltaXplX2lubGluZV9jYWxscywKCXdhbGtfdHJlZSwgY29weV90cmVlX3IpOiBMaWtld2lzZS4KCSogdHJlZS1vcHRpbWl6ZS5jICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCSogdHJlZS5jIChkZWNsX2Fzc2VtYmxlcl9uYW1lLCB0cmVlX3NpemUsIHNpemVfaW5fYnl0ZXMsIHN0YXRpY3AsCgl1bnNhZmVfZm9yX3JlZXZhbCwgZ2V0X3Vud2lkZW5lZCwgZ2V0X25hcnJvd2VyLCBnZXRfY2FsbGVlX2ZuZGVjbCwKCXZhcmlhYmx5X21vZGlmaWVkX3R5cGVfcCwgZHVtcF90cmVlX3N0YXRpc3RpY3MpOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlLCBjb21wYXJlX2NvbnN0YW50LCBjb3B5X2NvbnN0YW50LAoJZm9yY2VfY29uc3RfbWVtLCBjb21wdXRlX3JlbG9jX2Zvcl9jb25zdGFudCwgb3V0cHV0X2NvbnN0YW50LAoJb3V0cHV0X2FkZHJlc3NlZF9jb25zdGFudHMsIGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBMaWtld2lzZS4KCjIwMDQtMDMtMTQgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBNYWtlIGF1dG9jb25mIDIuMTMgdGhlIGV4Y2VwdGlvbiwgbm90IHRoZSBydWxlLgoKMjAwNC0wMy0xNCAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogZG9jL2luc3RhbGwudGV4aTogUmVmbGVjdCBhdXRvY29uZiBhbmQgYXV0b21ha2UgdmVyc2lvbiBmb3IKCWxpYmZmaS4gVXBkYXRlIGF1dG9jb25mIHZlcnNpb24gdG8gMi41OS4KCjIwMDQtMDMtMTMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChuZWdhdGVfZXhwciwgb3BlcmFuZF9lcXVhbF9mb3JfY29tcGFyaXNvbl9wLAoJb3B0aW1pemVfYml0X2ZpZWxkX2NvbXBhcmUsIGRlY29kZV9maWVsZF9yZWZlcmVuY2UsIGFsbF9vbmVzX21hc2tfcCwKCW1ha2VfcmFuZ2UsIGJ1aWxkX3JhbmdlX2NoZWNrLCBmb2xkX3JhbmdlX3Rlc3QsIHVuZXh0ZW5kLAoJY29uc3RhbnRfYm9vbGVhbl9ub2RlLCBmb2xkX2JpbmFyeV9vcF93aXRoX2NvbmRpdGlvbmFsX2FyZywKCWZvbGRfdHJ1dGhvcCwgZm9sZF9tYXRoZm5fY29tcGFyZSwgZm9sZF9pbmZfY29tcGFyZSwKCWZvbGRfc2luZ2xlX2JpdF90ZXN0LCBmb2xkKTogUmVwbGFjZSBjYWxscyB2aWEgKCpsYW5nX2hvb2tzLmZvbykgKCkKCXdpdGggbGFuZ19ob29rcy5mb28gKCkuCgoyMDA0LTAzLTE0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5oIChFWFRSQV9DT05TVFJBSU5UX1NUUl9BUk0pOiBVcGRhdGUgY29tbWVudC4KCjIwMDQtMDMtMTMgIERhcmEgSGF6ZWdoaSAgPGRoYXplZ2hpQHlhaG9vLmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IE5vdGUgc3RhdHVzIG9mIC1mbmV3LXJhLgoKMjAwNC0wMy0xMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBtaWRkbGUtZW5kLzE0NDcwCgkqIGV4cHIuYyAoc3RvcmVfZXhwcik6IENhbGwgZW1pdF9xdWV1ZSBiZWZvcmUgZ2VuZXJhdGluZyB0aGUgbW92ZQoJZnJvbSB0aGUgdGVtcG9yYXJ5IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuICBQcm90ZWN0IHRoZSB0ZW1wb3JhcnkKCWZyb20gZW1pdF9xdWV1ZS4KCjIwMDQtMDMtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNDUzMwoJKiBjb25maWcvczM5MC9zMzkwLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBEb24ndCBhYm9ydCBvbiBVTlNQRUMKCW90aGVyIHRoYW4gVU5TUEVDX0dPVE9GRi4KCjIwMDQtMDMtMTMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFybV9sZWdpdGltYXRlX2FkZHJlc3NfcCk6IE5ldyBhcmd1bWVudCwgT1VURVIuICBQYXNzIHRocm91Z2gKCXRvIGFybV9sZWdpdGltYXRlX2luZGV4X3AuICBVcGRhdGUgYWxsIGNhbGxlcnMgd2l0aCBTRVQgYXMgZGVmYXVsdAoJdmFsdWUuCgkoYXJtX2xlZ2l0aW1hdGVfaW5kZXhfcCk6IE5ldyBhcmd1bWVudCwgT1VURVIuICBSZXN0cmljdCB0aGUgaW5kZXgKCXJhbmdlIGlmIE9VVEVSIGlzIGEgc2lnbi1leHRlbmQgb3BlcmF0aW9uIG9uIFFJbW9kZS4gIENvcnJlY3RseQoJcmVqZWN0IHNoaWZ0IG9wZXJhdGlvbnMgb24gc2lnbi1leHRlbmRlZCBRSW1vZGUgYWRkcmVzc2VzLgoJKGJhZF9zaWduZWRfYnl0ZV9vcGVyYW5kKTogRGVsZXRlLgoJKGFybV9leHRlbmRxaXNpX21lbV9vcCk6IE5ldyBmdW5jdGlvbi4KCSogYXJtLmggKEVYVFJBX0NPTlNUUkFJTlRfQVJNKTogRGVsZXRlLiAgUmVwbGFjZSB3aXRoLi4uCgkoRVhUUkFfQ09OU1RSQUlOVF9TVFJfQVJNKTogLi4uIHRoaXMuICBIYW5kbGUgZXh0ZW5kZWQgYWRkcmVzcwoJY29uc3RyYWludHMuCgkoQ09OU1RSQUlOVF9MRU4pOiBOZXcuCgkoRVhUUkFfQ09OU1RSQUlOVCk6IERlbGV0ZS4gIFJlcGxhY2Ugd2l0aC4uLgoJKEVYVFJBX0NPTlNUUkFJTlRfU1RSKTogLi4uIHRoaXMuCgkoUFJFRElDQVRFX0NPREVTKTogUmVtb3ZlIGJhZF9zaWduZWRfYnl0ZV9vcGVyYW5kLgoJKiBhcm0ubWQgKGV4dGVuZHFpaGlfaW5zbik6IFVzZSBuZXcgY29uc3RyYWludCBVcS4gIFJld29yay4gIExlbmd0aAoJaXMgbm93IGFsd2F5cyBkZWZhdWx0LgoJKGRlZmluZV9zcGxpdHMgZm9yIGJhZCBzaWduLWV4dGVuZCBsb2Fkcyk6IERlbGV0ZS4KCShhcm1fZXh0ZW5kcWlzaSwgYXJtX2V4dGVuZHFpc2lfdjUpOiBMaWtld2lzZS4KCSogYXJtL3ZmcC5tZCAoYXJtX21vdnNpX3ZmcCwgYXJtX21vdmRpX3ZmcCwgbW92c2ZfdmZwLCBtb3ZkZl92ZnApOgoJUmV3b3JrICdVJyBjb25zdHJhaW50IHRvICdVdicuCgkqIGFybS1wcm90b3MuaDogUmVtb3ZlIGJhZF9zaWduZWRfYnl0ZV9vcGVyYW5kLiAgQWRkCglhcm1fZXh0ZW5kcWlzaV9tZW1fb3AuCgkqIGRvYy9tZC50ZXhpIChBUk0gY29uc3RyYWludHMpOiBSZW5hbWUgVkZQIGNvbnN0cmFpbnQgKG5vdyBVdikuCglBZGQgVXEgY29uc3RyYWludC4KCjIwMDQtMDMtMTMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdmFfYXJnKTogUmVwbGFjZSBTUExJVF9DT01QTEVYX0FSR1MKCXdpdGggdGFyZ2V0bSB2ZXJzaW9uLgoKCVBSIHRhcmdldC8xNDU2NwoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChVTklUU19QRVJfQVJHLCBSUzYwMDBfQVJHX1NJWkUpOiBEZWxldGUuCgkoSEFSRF9SRUdOT19NT0RFX09LKTogRGlzYWxsb3cgVEZtb2RlIGZvciBmcDMxLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfYXJnX3NpemUpOiBOZXcgZnVuY3Rpb24uCglVcGRhdGUgYWxsIHVzZXJzIG9mIFJTNjAwMF9BUkdfU0laRS4KCShmdW5jdGlvbl9hcmdfYWR2YW5jZSk6IENvdW50IGZyZWdubyB1c2luZyBtb2RlIHNpemUuCgkoZnVuY3Rpb25fYXJnKTogSGFuZGxlIGxvbmcgZG91YmxlIHNwbGl0IG92ZXIgcmVncyBhbmQgbWVtb3J5LgoJKGZ1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzKTogTGlrZXdpc2UuCgkocnM2MDAwX3ZhX2FyZyk6IFJlcGFja2FnZSBjb21wbGV4IGFyZ3MuCgoyMDA0LTAzLTEzICBEZWFuIEZlcnJleXJhIDxkZmVycmV5cmFAaWdjLm9yZz4KCglQUiB0YXJnZXQvMTQwNDcKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX3Byb2dtZW1fcCk6IEFkZCAiYXR0cmlidXRlcyIgcGFyYW1ldGVyLgoJKGF2cl9pbnNlcnRfYXR0cmlidXRlcyk6IFBhc3MgImF0dHJpYnV0ZXMiIHRvIGF2cl9wcm9nbWVtX3AuCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oIChhdnJfcHJvZ21lbV9wKTogQ2hhbmdlIHByb3RvdHlwZS4KCjIwMDQtMDMtMTIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKHJzNjAwMF9vdXRwdXRfZHdhcmZfZHRwcmVsKTogQWRkCglwcm90b3R5cGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9vdXRwdXRfZHdhcmZfZHRwcmVsKTogTmV3LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBU01fT1VUUFVUX0RXQVJGX0RUUFJFTCk6IERlZmluZS4KCjIwMDQtMDMtMTIgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvaG9zdC1kYXJ3aW4uYyAoZGFyd2luX3JzNjAwMF9ndF9wY2hfdXNlX2FkZHJlc3MpOgoJVXNlIHJldCBpbnN0ZWFkIG9mIHJlc3VsdC4gVXNlIGFkZHIgaW5zdGVhZCBvZiBiYXNlLgoKMjAwNC0wMy0xMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aSAoKi1pYm0tYWl4Kik6IERvY3VtZW50IGFzc2VtYmxlciBhbmQgYWNoaXZlcgoJZml4ZXMgcmVxdWlyZWQgYnkgbGlic3RkYysrIGFuZCB1cGRhdGUgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucwoJZm9yIGxpYnN0ZGMrKy5hLgoKMjAwNC0wMy0xMiAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNvbmZpZy9pMzg2L3dpbm50LmMgKGkzODZfcGVfc3RyaXBfbmFtZV9lbmNvZGluZ19mdWxsKTogU3RyaXAKCWxlYWRpbmcgJ0AnIG9uIGZhc3RjYWxsIHN5bWJvbHMgYmVmb3JlIHN0cmlwcGluZyBzdWZmaXguCgoyMDA0LTAzLTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbWJpbmUuYyAodW5tZW50aW9uZWRfcmVnX3ApOiBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlciBhbgoJZXhwcmVzc2lvbiBpcyBhICJzcGVjaWFsaXphdGlvbiIgb2YgYW5vdGhlciwgaS5lLiB0aGF0IHRoZXJlIGFyZQoJbm8gcmVnaXN0ZXJzIG9yIG1lbW9yeSByZWZlcmVuY2VzIG1lbnRpb25lZCBpbiB0aGUgZmlyc3QgdGhhdCBkb24ndAoJYXBwZWFyIGluIHRoZSBzZWNvbmQuCgkodW5tZW50aW9uZWRfcmVnX3BfMSk6IE5ldyBoZWxwZXIgc3Vicm91dGluZSBvZiB1bm1lbnRpb25lZF9yZWdfcC4KCShjb21iaW5lX2luc3RydWN0aW9ucyk6IEFsc28gdHJ5IGNvbWJpbmluZyBpbnN0cnVjdGlvbnMgdXNpbmcgdGhlCglSRUdfRVFVQUwgbm90ZSBmcm9tIGEgcHJlY2VkaW5nIGxvZy1saW5rZWQgaW5zdHJ1Y3Rpb24uCgoyMDA0LTAzLTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9zcGxpdF9hc2hyZGkpOiBPcHRpbWl6ZSBzaGlmdCBieSA2My4KCjIwMDQtMDMtMTIgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogTmV3IHRhcmdldCBob29rLCB1bndpbmRfbGFiZWwuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0FTTV9FTUlUX1VOV0lORF9MQUJFTCk6IE5ldyBob29rLgoJKiBvdXRwdXQuaCAoZGVmYXVsdF9lbWl0X3Vud2luZF9sYWJlbCk6IE5ldyBmdW5jdGlvbi4KCSogZGVmYXVsdC5oIChUQVJHRVRfRVhQTElDSVRfSU5TVEFOVElBVElPTlNfT05FX09OTFkpOiBOZXcgbWFjcm8uCgkoVEFSR0VUX1VTRVNfV0VBS19VTldJTkRfSU5GTyk6IE5ldyB0YXJnZXQgbWFjcm8uCgkoVEFSR0VUX1NVUFBPUlRTX0hJRERFTik6IE5ldyB0YXJnZXQgbWFjcm8uCgkqIGR3YXJmMm91dC5jIChzdHJ1Y3QgZHdfZmRlX3N0cnVjdCk6IEFkZCBmaWVsZCBmb3IgZnVuY3Rpb24gZGVjbAoJdGhhdCBjb3JyZXNwb25kcyB0byB0aGlzIEZERS4KCShGUkFNRV9CRUdJTl9MQUJFTCk6IEFsbG93IHRhcmdldCB0byBvdmVycmlkZSBkZWZhdWx0IGxhYmVsLgoJKG91dHB1dF9jYWxsX2ZyYW1lX2luZm8pOiBJZiBGREVzIGFyZSBsaW5rbm9uY2UsIHRoZW4gdXNlIGV4dHJhCglpbmRpcmVjdGlvbiBmb3IgRkRFIGVuY29kaW5nLCBvdXRwdXQgYSBsYWJlbCBmb3IgZWFjaCBGREUsIGFuZAoJb3V0cHV0IGFuIGVtcHR5IGxhYmVsIGZvciBlYWNoIGZ1bmN0aW9uIHdpdGhvdXQgYW4gRkRFLgoJKGR3YXJmMm91dF9iZWdpbl9wcm9sb2d1ZSk6IFNldCB1cCBkZWNsIGZpZWxkIHdoZW4gY3JlYXRpbmcgYW4gRkRFLgoJKiB2YXJhc20uYyAoZ2xvYmFsaXplX2RlY2wpOiBDYWxsIEFTTV9NQUtFX0xBQkVMX0xJTktPTkNFIGZvcgoJZGVjbHMgd2l0aCBERUNMX09ORV9PTkxZIHNldCwgaWYgdGhhdCBtYWNybyBpcyBkZWZpbmVkLgoJKG1ha2VfZGVjbF9vbmVfb25seSk6IERvbid0IHVzZSBERUNMX0NPTU1PTiBpZiB3ZSdyZSBjb21waWxpbmcKCWZvciBhIFNVUFBPUlRTX09ORV9PTkxZIHRhcmdldC4KCSogY29uZmlnL2Rhcndpbi1wcm90b3MuaCAoZGFyd2luX3VuaXF1ZV9zZWN0aW9uKTogRGVjbGFyZS4KCShkYXJ3aW5fYXNtX25hbWVkX3NlY3Rpb24pOiBMaWtld2lzZS4KCShkYXJ3aW5fc2VjdGlvbl90eXBlX2ZsYWdzKTogTGlrZXdpc2UuCgkoZGFyd2luX25vbl9sYXp5X3BjcmVsKTogTGlrZXdpc2UuCgkoZGFyd2luX2VtaXRfdW53aW5kX2xhYmVsKTogTGlrZXdpc2UuCgkoZGFyd2luX21ha2VfZGVjbF9vbmVfb25seSk6IExpa2V3aXNlLgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX2ZpbmlzaCk6IEdldCByaWQgb2YgdHdlYWsgdGhhdAoJZWxpbWluYXRlIHN0dWJzIGZvciBzeW1ib2xzIHRoYXQgYXJlIGRlZmluZWQuCgkoZGFyd2luX2VuY29kZV9zZWN0aW9uX2luZm8pOiBEb24ndCB0cmVhdCB3ZWFrIGZ1bmN0aW9ucyBhcyBkZWZpbmVkLgoJKGRhcndpbl9tYWtlX2RlY2xfb25lX29ubHkpOiBEZWZpbmUuCgkoZGFyd2luX2FzbV9uYW1lZF9zZWN0aW9uKTogTGlrZXdpc2UuCgkoZGFyd2luX3NlY3Rpb25fdHlwZV9mbGFncyk6IExpa2V3aXNlLgoJKGRhcndpbl91bmlxdWVfc2VjdGlvbik6IExpa2V3aXNlLgoJKGRhcndpbl9lbWl0X3Vud2luZF9sYWJlbCk6IExpa2V3aXNlLgoJKGRhcndpbl9ub25fbGF6eV9wY3JlbCk6IExpa2V3aXNlLgoJKGRhcndpbl9hc21fb3V0cHV0X2R3YXJmX2RlbHRhKTogRGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBsYWJlbHMgaXMKCWxvY2FsIG9ubHkgaWYgYm90aCBsYWJlbHMgYXJlIGxvY2FsLgoJKiBjb25maWcvZGFyd2luLmggKE1BS0VfREVDTF9PTkVfT05MWSk6IERlZmluZS4KCShBU01fTUFLRV9MQUJFTF9MSU5LT05DRSk6IExpa2V3aXNlLgoJKFRBUkdFVF9TVVBQT1JUU19ISURERU4pOiBMaWtld2lzZS4KCShUQVJHRVRfVVNFU19XRUFLX1VOV0lORF9JTkZPKTogTGlrZXdpc2UuCgkoVEFSR0VUX0VYUExJQ0lUX0lOU1RBTlRJQVRJT05TX09ORV9PTkxZKTogTGlrZXdpc2UuCgkoRlJBTUVfQkVHSU5fTEFCRUwpOiBMaWtld2lzZS4KCShBU01fREVDTEFSRV9PQkpFQ1RfTkFNRSk6IE1ha2UgcmVmZXJlbmNlcyB0byB3ZWFrIHN5bWJvbHMgaW5kaXJlY3QuCgkoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IExpa2V3aXNlLgoJKGRhcndpbl9laF9mcmFtZV9zZWN0aW9uKTogR2l2ZSBfX2VoX2ZyYW1lIHNlY3Rpb24gdGhlIGNvYWxlc2NlZCBmbGFnLgoJKFRBUkdFVF9BU01fVU5JUVVFX1NFQ1RJT04pOiBEZWZpbmUuCgkoRUhfRlJBTUVfU0VDVElPTl9OQU1FKTogRGVmaW5lLgoJKEVIX0ZSQU1FX1NFQ1RJT05fQVRUUik6IExpa2V3aXNlLgoJKEFTTV9NQVlCRV9PVVRQVVRfRU5DT0RFRF9BRERSX1JUWCk6IExpa2V3aXNlLgoJKFRBUkdFVF9BU01fTkFNRURfU0VDVElPTik6IExpa2V3aXNlLgoJKFRBUkdFVF9TRUNUSU9OX1RZUEVfRkxBR1MpOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGk6IERvY3VtZW50IFRBUkdFVF9VU0VTX1dFQUtfVU5XSU5EX0lORk8sCglUQVJHRVRfRVhQTElDSVRfSU5TVEFOVElBVElPTlNfT05FX09OTFksIFRBUkdFVF9TVVBQT1JUU19ISURERU4sCglUQVJHRVRfQVNNX0VNSVRfVU5XSU5EX0xBQkVMLgoKMjAwNC0wMy0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWF0aGZuKTogQWRkIHBvdzEwKiB0byB0aGUKCWV4aXN0aW5nIGV4cDEwKiBjYXNlLgoJKGV4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgoyMDA0LTAzLTEyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL3RtLnRleGkgKHJlZ2lzdGVycykgPFZhbHVlcyBpbiBSZWdpc3RlcnM+OiBBZGQKCWVudHJ5IGZvciBSRUdNT0RFX05BVFVSQUxfU0laRS4KCjIwMDQtMDMtMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE0NTQ3CgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IE1vdmUgY2FsbHMgc3Vic3RydWN0dXJlIGJlZm9yZQoJYm9vbGVhbnMuICBBZGQgc3BsaXRfY29tcGxleF9hcmcuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcywgc3BsaXRfY29tcGxleF9hcmdzKTogVXNlIGl0LgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IExpa2V3aXNlLgoJKHNwbGl0X2NvbXBsZXhfdmFsdWVzKTogTGlrZXdpc2UuICBDaGVjayBmb3Igc3BsaXR0YWJsZSB0eXBlcwoJYmVmb3JlIGFsbG9jYXRpbmcgbWVtb3J5LgoJKHNwbGl0X2NvbXBsZXhfdHlwZXMpOiBMaWtld2lzZS4KCSogc3lzdGVtLmggKFNQTElUX0NPTVBMRVhfQVJHUyk6IFBvaXNvbi4KCSogZXhwci5oIChTUExJVF9DT01QTEVYX0FSR1MpOiBSZW1vdmUuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX1NQTElUX0NPTVBMRVhfQVJHKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfc3BsaXRfY29tcGxleF9hcmcpOiBOZXcuCgkoVEFSR0VUX1NQTElUX0NPTVBMRVhfQVJHKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoU1BMSVRfQ09NUExFWF9BUkdTKTogUmVtb3ZlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChUQVJHRVRfU1BMSVRfQ09NUExFWF9BUkcpOiBOZXcuCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBaYXAgaXQgZm9yIG5vbi1BSVguCgkocnM2MDAwX2Z1bmN0aW9uX3ZhbHVlKTogVXNlIHRhcmdldG0uY2FsbHMuc3BsaXRfY29tcGxleF9hcmcuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFNQTElUX0NPTVBMRVhfQVJHUyk6IFJlbW92ZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoVEFSR0VUX1NQTElUX0NPTVBMRVhfQVJHKTogTmV3LgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oIChTUExJVF9DT01QTEVYX0FSR1MpOiBSZW1vdmUuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfU1BMSVRfQ09NUExFWF9BUkcpOiBNb2RpZnkgZnJvbSBvbGQKCVNQTElUX0NPTVBMRVhfQVJHUyBlbnRyeS4KCjIwMDQtMDMtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoeGZsb2F0aW5nX29wcywgdmF4X2N2dF9vcHMpOiBOZXcuCgkoYWxwaGFfbG9va3VwX3hmbG9hdGluZ19saWJfZnVuYyk6IFVzZSB0aGVtLCByZXR1cm4gcnR4LgoJKGFscGhhX2VtaXRfeGZsb2F0aW5nX2FyaXRoKTogVXBkYXRlIHRvIG1hdGNoLgoJKGFscGhhX2VtaXRfeGZsb2F0aW5nX2NvbXBhcmUpOiBMaWtld2lzZS4KCShhbHBoYV9lbWl0X3hmbG9hdGluZ19jdnQpOiBMaWtld2lzZS4KCShhbHBoYV9lbWl0X3hmbG9hdGluZ19saWJjYWxsKTogVGFrZSBhbHJlYWR5IGJ1aWx0IHN5bWJvbCwKCW1hcmsgY2FsbCBjb25zdC4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChleHRlbmRzZnRmMiwgZXh0ZW5kZGZ0ZjIpOiBUYWtlCglvcDEgaW4gYSByZWdpc3Rlci4KCjIwMDQtMDMtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE0NTM5CgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChTVEFDS19CT1VOREFSWSk6IFNldCB0byAxMjguCgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBGaXggdHlwby4KCjIwMDQtMDMtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNDQ3NwoJKiBleGNlcHQuYyAocmVtb3ZlX3VucmVhY2hhYmxlX3JlZ2lvbnMpOiBMb29rIHRocnUgQ0FMTF9QTEFDRUhPTERFUi4KCjIwMDQtMDMtMTEgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCglQUiB0YXJnZXQvMTQyNjIKCSogY2FsbHMuYyAobG9hZF9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogSWYgQkxPQ0tfUkVHX1BBRERJTkcgaXMgbm90CglkZWZpbmVkLCBwYXNzIHNtYWxsIEJMS21vZGUgdmFsdWVzIGluIHJlZ2lzdGVycyBpbiB0aGUgbG93LW9yZGVyIHBhcnQuCgoyMDA0LTAzLTExICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb21iaW5lLmMgKGlmX3RoZW5fZWxzZV9jb25kKTogQ2hlY2sgZm9yIE5VTEwgcmV0dXJuIHZhbHVlIG9mCglzaW1wbGlmeV9nZW5fc3VicmVnLgoKMjAwNC0wMy0xMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNDQ5NgoJKiBjb25maWcvbWlwcy9taXBzLmggKFVOSVRTX1BFUl9GUFZBTFVFKTogRml4IHZhbHVlIGZvcgoJVEFSR0VUX1NJTkdMRV9GTE9BVC4KCjIwMDQtMDMtMTEgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaHB1eC5oIChUQVJHRVRfSU5JVF9MSUJGVU5DUyk6IEFkZCB1bmRlZi4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChUQVJHRVRfSU5JVF9MSUJGVU5DUyk6IEFkZCBkZWZpbmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9pbml0X2xpYmZ1bmNzKTogTmV3LgoJKGlhNjRfaHB1eF9pbml0X2xpYmZ1bmNzKTogQWRkIGNhbGwgdG8gaWE2NF9pbml0X2xpYmZ1bmNzLgoKMjAwNC0wMy0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKG5lZ2F0ZV9leHByX3ApIDxSU0hJRlRfRVhQUj46IFdlIGNhbiBvcHRpbWl6ZQoJLSgoaW50KVg+PkMpIHdoZXJlIEMgaXMgYW4gaW50ZWdlciBjb25zdGFudCBvbmUgYml0IGxlc3MgdGhhbiB0aGUKCXNpemUgb2YgWCBpbnRvICh1bnNpZ25lZClYPj5DLiAgU2ltaWxhcmx5IGZvciB1bnNpZ25lZC0+c2lnbmVkLgoJKG5lZ2F0ZV9leHByKSA8UlNISUZUX0VYUFI+OiBJbXBsZW1lbnQgdGhlIGFib3ZlIHRyYW5zZm9ybWF0aW9ucy4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24pOiBBbHNvIGltcGxlbWVudCB0aGUKCWFib3ZlIHRyYW5zZm9ybWF0aW9ucyBhdCB0aGUgUlRMIGxldmVsLgoKMjAwNC0wMy0xMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIHJlYWwuYyAoZW5jb2RlX2libV9leHRlbmRlZCk6IERvIHJvdW5kIGxvdyB3b3JkLgoKMjAwNC0wMy0xMSAgQmVuIEVsbGlzdG9uICA8YmplQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKGlzX3hzY2FsZSk6IENvbW1lbnQgdGhpcyBhdHRyaWJ1dGUgYW5kIG1vdmUKCWl0IGEgYml0IGZ1cnRoZXIgdXAgaW4gdGhlIGZpbGUsIGNsb3NlciB0byByZWxhdGVkIGF0dHJpYnV0ZXMuCgoyMDA0LTAzLTExICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL2hvc3Qtc29sYXJpcy5jIChzb2xfZ3RfcGNoX3VzZV9hZGRyZXNzKTogQWRkCgltaXNzaW5nIHRlcm1pbmF0aW5nIG1hcmtlciB0byBjb21tZW50LgoKMjAwNC0wMy0xMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZDogVXNlIG1vdmVfb3BlcmFuZCBpbiBzcGxpdHRlcnMgZm9yIDY0LWJpdCBtb3Zlcy4KCShtb3ZkaSwgbW92c2ksIG1vdmhpLCBtb3ZxaSwgbW92c2YsIG1vdmRmKTogUmVtb3ZlIHByZWRpY2F0ZXMuCgkoKm1vdmRpXzMyYml0X21pcHMxNiwgKm1vdnNpX21pcHMxNiwgKm1vdmhpX21pcHMxNiwgKm1vdnFpX21pcHMxNikKCSgqbW92c2ZfbWlwczE2LCAqbW92ZGZfbWlwczE2KTogTmFtZSB1bm5hbWVkIHBhdHRlcm5zLiAgVXNlCgltb3ZlX29wZXJhbmQgYXMgc291cmNlIHByZWRpY2F0ZSBpbiBhbGwgY2FzZXMuCgkoKm1vdmRpXzMyYml0KTogUmVuYW1lZCBmcm9tIG1vdmRpX2ludGVybmFsLiAgUmVtb3ZlICdGJyBjb25zdHJhaW50LgoJVGVzdCByZWdfb3JfMF9vcGVyYW5kLiAgVXNlIG1vdmVfb3BlcmFuZCBhcyBzb3VyY2UgcHJlZGljYXRlLgoJKCptb3ZkaV82NGJpdCk6IFJlbmFtZWQgZnJvbSBtb3ZkaV9pbnRlcm5hbDIuICBUZXN0IHJlZ19vcl8wX29wZXJhbmQuCgkoKm1vdmRpXzY0Yml0X21pcHMxNik6IFJlbmFtZWQgZnJvbSBtb3ZkaV9pbnRlcm5hbDJfbWlwczE2LgoJKCptb3ZzaV9pbnRlcm5hbCk6IFJlbmFtZWQgZnJvbSBtb3ZzaV9pbnRlcm5hbC4gIFRlc3QgcmVnX29yXzBfb3BlcmFuZC4KCShtb3ZoaSwgbW92cWksIG1vdnNmLCBtb3ZkZik6IFVzZSBtaXBzX2xlZ2l0aW1pemVfbW92ZS4KCSgqbW92aGlfaW50ZXJuYWwpOiBSZW5hbWVkIGZyb20gbW92aGlfaW50ZXJuYWwuICBUZXN0IHJlZ19vcl8wX29wZXJhbmQuCglVc2UgbW92ZV9vcGVyYW5kIGFzIHNvdXJjZSBwcmVkaWNhdGUuICBSZW1vdmUgJ0snIGNvbnN0cmFpbnQuCgkoKm1vdnFpX2ludGVybmFsKTogTGlrZXdpc2UgbW92cWlfaW50ZXJuYWwuCgkoKm1vdnNmX2hhcmRmbG9hdCk6IFJlbmFtZWQgZnJvbSBtb3ZzZl9pbnRlcm5hbDEuICBUZXN0CglyZWdfb3JfMF9vcGVyYW5kLiAgVXNlIG1vdmVfb3BlcmFuZCBhcyBzb3VyY2UgcHJlZGljYXRlLgoJKCptb3ZzZl9zb2Z0ZmxvYXQpOiBMaWtld2lzZSBtb3ZzZl9pbnRlcm5hbDIuCgkoKm1vdmRmX2hhcmRmbG9hdF82NGJpdCk6IExpa2V3aXNlIG1vdnNmX2ludGVybmFsMWEuCgkoKm1vdmRmX2hhcmRmbG9hdF8zMmJpdCk6IExpa2V3aXNlIG1vdnNmX2ludGVybmFsMWIuCgkoKm1vdmRmX3NvZnRmbG9hdCk6IExpa2V3aXNlIG1vdmRmX2ludGVybmFsMi4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtb3ZlX29wZXJhbmQpOiBNYXRjaCBhcmJpdHJhcnkgQ09OU1RfSU5UcwoJZm9yIERJbW9kZSBpZiAhVEFSR0VUXzY0QklULgoJKG1pcHNfbGVnaXRpbWl6ZV9tb3ZlKTogU2ltcGxpZnkgYWNjb3JkaW5nbHkuCgoyMDA0LTAzLTExICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJUFIvMTQzNjIKCSogdmFyLXRyYWNraW5nLmMgKHN0cnVjdCB2YXJpYWJsZV9kZWYpOiBBZGRlZCBmaWVsZCByZWZjb3VudC4KCSh2YXJpYWJsZV9odGFiX2ZyZWUpOiBEZWNyZWFzZSB0aGUgcmVmY291bnQgYW5kIGRlbGV0ZSB2YXJpYWJsZQoJb25seSBpZiB0aGVyZSBhcmUgbm8gbW9yZSByZWZlcmVuY2VzLgoJKHVuc2hhcmVfdmFyaWFibGUpOiBOZXcgZnVuY3Rpb24uCgkodmFyc19jb3B5XzEpOiBJbmNyZWFzZSByZWZjb3VudCBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIHZhcmlhYmxlLgoJKHZhcmlhYmxlX3VuaW9uKTogU2hhcmUgdGhlIHZhcmlhYmxlcyB3aGVyZSBwb3NzaWJsZSwgdW5zaGFyZQoJdGhlIHZhcmlhYmxlcyBpZiBuZWVkZWQuCgkodmFyaWFibGVfZGlmZmVyZW50X3ApOiBSZXR1cm4gZmFsc2UgaWYgdmFyMSBhbmQgdmFyMiBhcmUKCXRoZSBzYW1lIHN0cnVjdHVyZS4KCSh2YXJpYWJsZV93YXNfY2hhbmdlZCk6IEluaXQgdGhlIHJlZmNvdW50IG9mIG5ldyB2YXJpYWJsZS4KCShzZXRfZnJhbWVfYmFzZV9sb2NhdGlvbik6IFVuc2hhcmUgdmFyaWFibGUgaWYgbmVlZGVkLgoJKHNldF92YXJpYWJsZV9wYXJ0KTogSW5pdCB0aGUgcmVmY291bnQgb2YgbmV3IHZhcmlhYmxlLgoJVW5zaGFyZSB0aGUgdmFyaWFibGVzIGlmIG5lZWRlZC4KCShkZWxldGVfdmFyaWFibGVfcGFydCk6IFVuc2hhcmUgdGhlIHZhcmlhYmxlcyBpZiBuZWVkZWQuCgkoZW1pdF9ub3Rlc19mb3JfZGlmZmVyZW5jZXNfMSk6IEluaXQgdGhlIHJlZmNvdW50IG9mIG5ldyB2YXJpYWJsZS4KCSh2dF9hZGRfZnVuY3Rpb25fcGFyYW1ldGVycyk6IERvIG5vdCBhZGQgZnVuY3Rpb24gcGFyYW1ldGVycyB0bwoJSU4gc2V0IG9mIEVOVFJZX0JMT0NLX1BUUiBiZWNhdXNlIGl0IGlzIHVudXNlZCBhbnl3YXkuCgkodnRfaW5pdGlhbGl6ZSk6IERvIG5vdCBhZGQgZnJhbWVfYmFzZV9kZWNsIHRvIElOIHNldCBvZgoJRU5UUllfQkxPQ0tfUFRSIGJlY2F1c2UgaXQgaXMgdW51c2VkIGFueXdheS4KCjIwMDQtMDMtMTEgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIHZhci10cmFja2luZy5jICh2YXJzX2NvcHlfMSk6IENsZWFudXAgYW5kIHNwZWVkdXAgY2hhaW4gb3BlcmF0aW9ucy4KCSh2YXJzX2NvcHkpOiBMaWtld2lzZS4KCSh2YXJpYWJsZV91bmlvbik6IExpa2V3aXNlLgoJKHNldF92YXJpYWJsZV9wYXJ0KTogTGlrZXdpc2UuCgkoZGVsZXRlX3ZhcmlhYmxlX3BhcnQpOiBMaWtld2lzZS4KCjIwMDQtMDMtMTEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLXR5cGVjay5jLCBjb21iaW5lLmMsIGNzZS5jLCBkb21pbmFuY2UuYywgZXQtZm9yZXN0LmgsCglnZ2MtcGFnZS5jLCB2YXItdHJhY2tpbmcuYywgY29uZmlnL2ZwLWJpdC5jLCBjb25maWcvYzR4L2M0eC5jLAoJY29uZmlnL2NyaXMvY3Jpcy5jLCBjb25maWcvaTM4Ni9wcHJvLm1kLCBjb25maWcvaTg2MC9pODYwLmMsCgljb25maWcvaTg2MC9pODYwLmgsIGNvbmZpZy9tMzJyL20zMnIuaCwgY29uZmlnL20zMnIveG0tbTMyci5oLAoJY29uZmlnL202OGhjMTEvbTY4aGMxMS5oLCBjb25maWcvbTY4aGMxMS9tNjhoYzExLm1kLAoJY29uZmlnL21pcHMvbWlwcy5jLCBjb25maWcvbW1peC9tbWl4LmMsIGNvbmZpZy9uczMyay9uczMyay5oLAoJY29uZmlnL3BhL3BhLmMsIGNvbmZpZy9wYS9wYTMyLXJlZ3MuaCwgY29uZmlnL3BhL3BhNjQtcmVncy5oLAoJY29uZmlnL3BkcDExL3BkcDExLmgsIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMsCgljb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYzogRml4IGNvbW1lbnQgdHlwb3MgYW5kIGZvcm1hdHRpbmcuCgoyMDA0LTAzLTExICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZSwgc2luY2UgSSBmb3Jnb3QgdG8gd2hpbGUgY29tbWl0dGluZyBQYW9sbydzCgljaGFuZ2VzLgoKMjAwNC0wMy0wOCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiBhZGEvMTQxMzEKCU1vdmUgbGFuZ3VhZ2UgZGV0ZWN0aW9uIHRvIHRoZSB0b3AgbGV2ZWwuCgkqIGNvbmZpZ3VyZS5hYzogUmVtb3ZlIGNvZGUgdG8gZGV0ZWN0IGxhbmd1YWdlcywKCWl0IG5vdyBsaXZlcyBleGNsdXNpdmVseSBpbiB0aGUgdG9wIGxldmVsLgoJKiBhY2xvY2FsLm00IChnY2NfQUNfUFJPR19HTkFUKTogTW92ZWQgdG8gdGhlCgl0b3AgbGV2ZWwsIHJlbmFtZWQgdG8gQUNYX1BST0dfR05BVC4KCjIwMDQtMDMtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLXBjaC5jIChjX2NvbW1vbl9ub19tb3JlX3BjaCk6IFVwZGF0ZSBmb3IgZ3RfcGNoX3VzZV9hZGRyZXNzCglleHRyYSBhcmd1bWVudHMuCgkqIGNvbmZpZy5ob3N0ICgqLSotc29sYXJpczIqLCAqLSotbGludXgqKTogQWRkIG91dF9ob3N0X2hvb2tfb2JqCglhbmQgaG9zdF94bWFrZV9maWxlIGZyYWdtZW50cy4KCSogZ2djLWNvbW1vbi5jIChndF9wY2hfc2F2ZSk6IFVwZGF0ZSBmb3IgZ3RfcGNoX2dldF9hZGRyZXNzIGNoYW5nZS4KCShndF9wY2hfcmVzdG9yZSk6IFNpbWlsYXJseSBmb3IgZ3RfcGNoX3VzZV9hZGRyZXNzLgoJKGRlZmF1bHRfZ3RfcGNoX2dldF9hZGRyZXNzKTogTmV3LgoJKG1tYXBfZ3RfcGNoX2dldF9hZGRyZXNzKTogU3BsaXQgb3V0IG9mIGd0X3BjaF9zYXZlLgoJKGRlZmF1bHRfZ3RfcGNoX3VzZV9hZGRyZXNzKTogU3BsaXQgb3V0IG9mIGd0X3BjaF9yZXN0b3JlLgoJKG1tYXBfZ3RfcGNoX3VzZV9hZGRyZXNzKTogTGlrZXdpc2UuCgkqIGhvb2tzLmMgKGhvb2tfdm9pZHBfc2l6ZV90X251bGwpOiBSZW1vdmUuCgkoaG9va19ib29sX3ZvaWRwX3NpemVfdF9mYWxzZSk6IFJlbW92ZS4KCSogaG9va3MuaDogTGlrZXdpc2UuCgkqIGhvc3Rob29rcy1kZWYuaCAoSE9TVF9IT09LU19HVF9QQ0hfR0VUX0FERFJFU1MpOiBVc2Ugb25lIG9mIHRoZQoJZGVmYXVsdF8gb3IgbW1hcF8gZGVmaW5pdGlvbnMuCgkoSE9TVF9IT09LU19HVF9QQ0hfVVNFX0FERFJFU1MpOiBMaWtld2lzZS4KCSogaG9zdGhvb2tzLmggKHN0cnVjdCBob3N0X2hvb2tzKTogVXBkYXRlIGd0X3BjaF9nZXRfYWRkcmVzcwoJYW5kIGd0X3BjaF91c2VfYWRkcmVzcy4KCSogY29uZmlnL2hvc3QtbGludXguYywgY29uZmlnL2hvc3Qtc29sYXJpcy5jOiBOZXcgZmlsZXMuCgkqIGNvbmZpZy94LWxpbnV4LCBjb25maWcveC1zb2xhcmlzOiBOZXcgZmlsZXMuCgkqIGNvbmZpZy9yczYwMDAvaG9zdC1kYXJ3aW4uYyAoZGFyd2luX3JzNjAwMF9ndF9wY2hfZ2V0X2FkZHJlc3MpOgoJVXBkYXRlIGZvciBjaGFuZ2VkIGRlZmluaXRpb24uCgkoZGFyd2luX3JzNjAwMF9ndF9wY2hfdXNlX2FkZHJlc3MpOiBMaWtld2lzZS4KCSogZG9jL2hvc3Rjb25maWcudGV4aTogVXBkYXRlIGRvY3MuCgoyMDA0LTAzLTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMvMTQ1MTcKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3Qgd2FybiBmb3IgZHVwbGljYXRlIHF1YWxpZmllcnMKCWV4Y2VwdCBmb3IgcGVkYW50aWMgYzkwIG1vZGUuCgoyMDA0LTAzLTEwICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmFjOiBCdW1wIEFDX1BSRVJFUSB0byAyLjU5LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTAzLTEwICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX2V4cDEwIGFuZCBPVElfZXhwMi4KCShleHAxMF9vcHRhYiwgZXhwMl9vcHRhYik6IERlZmluZSBjb3JyZXNwb25kaW5nIG1hY3Jvcy4KCSogb3B0YWJzLmMgKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSBleHAxMF9vcHRhYiBhbmQgZXhwMl9vcHRhYi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEltcGxlbWVudCBleHAxMF9vcHRhYiBhbmQgZXhwMl9vcHRhYgoJdXNpbmcgZXhwMTA/ZjIgYW5kIGV4cDI/ZjIgcGF0dGVybnMuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6IEhhbmRsZSBCVUlMVF9JTl9FWFAxMHssRixMfQoJdXNpbmcgZXhwMTBfb3B0YWIsIGFuZCBCVUlMVF9JTl9FWFAyeyxGLEx9IHVzaW5nIGV4cDJfb3B0YWIuCgkoZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgQlVJTFRfSU5fRVhQMTB7LEYsTH0gYW5kIEJVSUxUX0lOX0VYUDJ7LEYsTH0KCXVzaW5nIGV4cGFuZF9idWlsdGluX21hdGhmbiBpZiBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgaXMgc2V0LgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZXhwMTBzZjIsIGV4cDEwZGYyLCBleHAxMHhmMiwgZXhwMnNmMiwKCWV4cDJkZjIsIGV4cDJ4ZjIpOiBOZXcgcGF0dGVybnMgdG8gaW1wbGVtZW50IGV4cDEwLCBleHAxMGYsIGV4cDEwbCwKCWV4cDIsIGV4cDJmIGFuZCBleHAybCBidWlsdC1pbnMgYXMgaW5saW5lIHg4NyBpbnRyaW5zaWNzLgoKMjAwNC0wMy0xMCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKEFSTSBPcHRpb25zKTogRml4IC1tcGZ1IHR5cG8uCgoyMDA0LTAzLTEwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL2FpeC5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogUmVuYW1lIHRvIC4uLgoJKFRBUkdFVF9PU19BSVhfQ1BQX0JVSUxUSU5TKTogdGhpcy4gIENvbmRpdGlvbmFsbHkgZGVmaW5lCglfX0xPTkdET1VCTEUxMjguCgkqIGNvbmZpZy9yczYwMDAvYWl4NDEuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFVzZQoJVEFSR0VUX09TX0FJWF9DUFBfQlVJTFRJTlMuCgkqIGNvbmZpZy9yczYwMDAvYWl4NDMuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFNhbWUuCgkqIGNvbmZpZy9yczYwMDAvYWl4NTEuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFNhbWUuCgkqIGNvbmZpZy9yczYwMDAvYWl4NTIuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFNhbWUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLWMuYyAocnM2MDAwX2NwdV9jcHBfYnVpbHRpbnMpOiBSZXZlcnQKCXByZXZpb3VzIGNoYW5nZS4KCjIwMDQtMDMtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBBZGQgbW9yZSBidWlsdGluIGNhc2VzLgoKMjAwNC0wMy0xMCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtYy5jIChyczYwMDBfY3B1X2NwcF9idWlsdGlucyk6IERlZmluZQoJX19MT05HRE9VQkxFMTI4IG9uIEFJWC4KCjIwMDQtMDMtMTAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIG9wdGltaXphdGlvbi8xNDM4MQoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogRW1pdCBhIGJsb2NrYWdlIGluc24gYmVmb3JlCgl0aGUgZXBpbG9ndWUgd2hlbiAtZm5vbi1jYWxsLWV4Y2VwdGlvbnMgaXMgdXNlZC4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfYWxsX2NhdGNoKTogTWFrZSBjb21tZW50IG1vcmUgYWNjdXJhdGUuCgoyMDA0LTAzLTA4ICBKb2VsIFNoZXJyaWxsICA8am9lbEBvYXJjb3JwLmNvbT4KCglQUiB0YXJnZXQvMTQ0ODAKCSogY29uZmlnL3JzNjAwMC90LXJ0ZW1zOiBBZGQgbWlzc2luZyBmaWxlIG9uIGJyYW5jaC4KCjIwMDQtMDMtMTAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfc3ltYm9sX2xvY2F0aW9uKTogRG8gbm90IG91dHB1dCByZWZlcmVuY2VzCgl0byBvcHRpbWl6ZWQtb3V0IGNvbnN0YW50IHBvb2wgc3ltYm9scy4KCjIwMDQtMDMtMTAgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChkaXZzaTMsIHVkaXZzaTMpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCgl0d29uMzRfci4KCjIwMDQtMDMtMDkgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGFsaWFzLmMgKGFsaWFzX3NldHNfbWlnaHRfY29uZmxpY3RfcCk6IE5ldy4KCSogYy10eXBlY2suYyAoYnVpbGRfY19jYXN0KTogQ2FsbCBpdCBpZiB3YXJuX3N0cmljdF9hbGlhc2luZyA+IDEuCgkqIGNvbW1vbi5vcHQgKFdzdHJpY3QtYWxpYXNpbmc9KTogTmV3LgoJKiBmbGFncy5oICh3YXJuX3N0cmljdF9hbGlhc2luZyk6IENoYW5nZSB0eXBlIHRvIGludC4KCSogb3B0cy5jICh3YXJuX3N0cmljdF9hbGlhc2luZyk6IENoYW5nZSB0eXBlIHRvIGludC4KCShjb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSBPUFRfV3N0cmljdF9hbGlhc2luZ18uCgkqIHRyZWUuaCAoYWxpYXNfc2V0c19taWdodF9jb25mbGljdF9wKTogRGVjbGFyZSBpdC4KCSogZG9jL2ludm9rZS50ZXggKC1Xc3RyaWN0LWFsaWFzaW5nPTIpOiBEb2N1bWVudCBpdC4KCjIwMDQtMDMtMTAgIFJvbWFuIFppcHBlbCAgPHppcHBlbEBsaW51eC1tNjhrLm9yZz4KCglQUiBib290c3RyYXAvMTIzNzEKCSogY29uZmlnL202OGsvbTY4ay5oIChGSVhFRF9SRUdJU1RFUlMpOiBBZGQgYXJnIHBvaW50ZXIuCgkoQ0FMTF9VU0VEX1JFR0lTVEVSUyk6IExpa2V3aXNlLgoJKFJFR19DTEFTU19DT05URU5UUyk6IExpa2V3aXNlLgoJKFJFR19BTExPQ19PUkRFUik6IE5ldy4KCShSRUdOT19SRUdfQ0xBU1MpOiBVc2UgcmVnbm9fcmVnX2NsYXNzLgoJKiBjb25maWcvbTY4ay9tNjhrLmM6IEFkZCByZWdub19yZWdfY2xhc3MgYXJyYXkuCgoyMDA0LTAzLTA5ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGRpdnNpMyk6IEZpeCBhbGdvcml0aG0uCgkgICh1ZGl2c2kzKTogRGl0dG8uCgkgIChzZXRmX2V4cF94Zik6IFJlbW92ZSAnKicgZnJvbSBuYW1lLgoJKiB0ZXN0c3VpdGUvZ2NjLmRnLzIwMDQwMzA5LTEuYzogTmV3IHRlc3QuCgoyMDA0LTAzLTA5ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogc3lzdGVtLmggKFNVTk9TNF9TSEFSRURfTElCUkFSSUVTKTogUG9pc29uLgoJKiBjb2xsZWN0Mi5jOiBSZW1vdmUgU1VOT1M0X1NIQVJFRF9MSUJSQVJJRVMgY29kZS4KCSogY29uZmlnL3NwYXJjL2FvdXQuaCAoVEFSR0VUX0FTTV9TRUxFQ1RfU0VDVElPTik6IERvbid0IGRlZmluZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2FvdXRfc2VsZWN0X3NlY3Rpb24pOiBSZW1vdmUuCgkoc3BhcmNfYW91dF9zZWxlY3RfcnR4X3NlY3Rpb24pOiBEb24ndCBjaGVjawoJU1VOT1M0X1NIQVJFRF9MSUJSQVJJRVMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChTVU5PUzRfU0hBUkVEX0xJQlJBUklFUyk6IERvbid0IGRlZmluZS4KCjIwMDQtMDMtMTAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCVBSIG90aGVyLzE0NDc0CgkqIGRvYy9tZC50ZXhpIChQYXR0ZXJuIE9yZGVyaW5nLCBEZXBlbmRlbnQgUGF0dGVybnMpCgkoSnVtcCBQYXR0ZXJucywgTG9vcGluZyBQYXR0ZXJucyk6IFdyYXAgaW4gc2VwYXJhdGUgIkBpZnNldAoJSU5URVJOQUxTIi4KCjIwMDQtMDMtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaWE2NC9ocHV4LmggKE1VTFRJTElCX0RFRkFVTFRTKTogRGVmaW5lLgoJKExJQkdDQ19TUEVDKTogVXBkYXRlIHRvIG1hdGNoLgoKMjAwNC0wMy0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChsYXN0X2Z1bmN0aW9uX3Bhcm1zLCBsYXN0X2Z1bmN0aW9uX3Bhcm1fdGFncykKCShsYXN0X2Z1bmN0aW9uX3Bhcm1fb3RoZXJzLCBjdXJyZW50X2Z1bmN0aW9uX3Bhcm1zKQoJKGN1cnJlbnRfZnVuY3Rpb25fcGFybV90YWdzLCBjdXJyZW50X2Z1bmN0aW9uX3Bhcm1fb3RoZXJzKToKCURlbGV0ZS4KCShBUkdfSU5GT19QQVJNUywgQVJHX0lORk9fVEFHUywgQVJHX0lORk9fVFlQRVMsIEFSR19JTkZPX09USEVSUyk6CglOZXcgbWFjcm9zLgoJKGdyb2tkZWNsYXJhdG9yKTogRm9yIGZ1bmN0aW9uIGRlZmluaXRpb25zLCBzYXZlIHRoZSBhcmctaW5mbwoJYmxvY2sgZnJvbSB0aGUgZGVjbGFyYXRvciBpbiBERUNMX0FSR1VNRU5UUy4KCShncm9rcGFybXMpOiBEbyBub3Qgd3JpdGUgdG8gbGFzdF9mdW5jdGlvbl9wYXJtKi4gIFVzZSBBUkdfSU5GT18qCgltYWNyb3MgdG8gb3BlcmF0ZSBvbiBhcmctaW5mbyBibG9jay4gIENhbiBhc3N1bWUgQVJHX0lORk9fUEFSTVMKCWNvbnRhaW5zIG9ubHkgUEFSTV9ERUNMcy4gIEltcHJvdmUgZGlhZ25vc3RpY3MuCgkoZ2V0X3Bhcm1faW5mbyk6IFVzZSBBUkdfSU5GT18qIG1hY3Jvcy4gIEltcHJvdmUgY29tbWVudHMgYW5kCglkaWFnbm9zdGljcy4gIERpc2FibGUgc29tZSBleHBlbnNpdmUgY2hlY2tzIGlmIG5vdCBFTkFCTEVfQ0hFQ0tJTkcuCgkoc3RvcmVfcGFybV9kZWNsc19uZXdzdHlsZSk6IFRha2UgdGhlIGZ1bmN0aW9uIHRvIG9wZXJhdGUgb24sCglhbmQgYW4gYXJnLWluZm8gYmxvY2ssIGFzIGFyZ3VtZW50czsgZG9uJ3QgZ2V0IGFueXRoaW5nIGZyb20KCWN1cnJlbnRfZnVuY3Rpb25fKiBnbG9iYWxzLgoJKHN0b3JlX3Bhcm1fZGVjbHNfb2xkc3R5bGUpOiBMaWtld2lzZS4KCShzdG9yZV9wYXJtX2RlY2xzKTogUGFzcyBmbmRlY2wgYW5kIGl0cyBhcmctaW5mbyBibG9jayBkb3duIHRvCglzdG9yZV9wYXJtX2RlY2xzX25ld3N0eWxlL29sZHN0eWxlLiAgU2VuZCBmdW5jdGlvbnMgd2l0aCBlbXB0eQoJYXJndW1lbnQgbGlzdHMgdGhyb3VnaCBzdG9yZV9wYXJtX2RlY2xzX25ld3N0eWxlIHRvIHJlZHVjZQoJb3ZlcmhlYWQuCgkocHVzaGRlY2wpOiBDb21tZW50IG9uIHRoZSBwcm9ibGVtcyB3aXRoIHRoZSBjYWxsIHRvIGNvcHlfbm9kZS4KCUNsZWFyIERFQ0xfQVJHVU1FTlRTIG9mIHRoZSBvbGQgbm9kZSBhZnRlciBjb3B5aW5nIGl0LCBpZiBpdAoJaXMgYW4gYXJnLWluZm8gYmxvY2sgaW5zdGVhZCBvZiBhIGNoYWluIG9mIGRlY2xzLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRG8gbm90IG1hbmlwdWxhdGUgY3VycmVudF9mdW5jdGlvbl9wYXJtKiBvcgoJbGFzdF9mdW5jdGlvbl9wYXJtKi4KCjIwMDQtMDMtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogaWZjdnQuYyAobm9jZV90cnlfc2lnbl9tYXNrKTogTmV3IGZ1bmN0aW9uIHRvIHRyYW5zZm9ybQoJInggPSAoeSA8IDApID8geiA6IDAiIGludG8gdGhlIGVxdWl2YWxlbnQgInggPSAoeSA+PiBDKSAmIHoiLgoJKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IENhbGwgbm9jZV90cnlfc2lnbl9tYXNrLgoKMjAwNC0wMy0wOSAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogYy10eXBlY2suYyAodGFnZ2VkX3R5cGVzX3R1X2NvbXBhdGlibGVfcCk6CglGaXggdHlwby4KCjIwMDQtMDMtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2NvbnN0X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogTmV3IGZ1bmN0aW9uCglyZW5hbWVkIGZyb20gc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24uCgkoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBDaGFuZ2UgcHJvdG90eXBlIHRvIGFjY2VwdCBhbgoJYWRkaXRpb25hbCBtb2RlIGFyZ3VtZW50LiAgQ2FsbCBzaW1wbGlmeV9jb25zdF9yZWxhdGlvbmFsX29wZXJhdGlvbi4KCShzaW1wbGlmeV9nZW5fcmVsYXRpb25hbCk6IFVwZGF0ZSBzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbiBjYWxsLgoJKHNpbXBsaWZ5X3Rlcm5hcnlfb3BlcmF0aW9uKTogVXBkYXRlIHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uCglzdWJyb3V0aW5lIGNhbGwgdG8gdXNlIHNpbXBsaWZ5X2NvbnN0X3JlbGF0aW9uYWxfb3BlcmF0aW9uIGluc3RlYWQuCgoJKiBydGwuaCAoc2ltcGxpZnlfY29uc3RfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBQcm90b3R5cGUgaGVyZS4KCShzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbik6IEFkZCBhZGR0aW9uYWwgbW9kZSBhcmd1bWVudC4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBVcGRhdGUgY2FsbHMgdG8KCXNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uLgoJKHNpbXBsaWZ5X3NldCk6IExpa2V3aXNlLgoJKGdlbl9iaW5hcnkpOiBMaWtld2lzZS4KCSogY3NlLmMgKGZvbGRfcnR4KTogTGlrZXdpc2UuCgkqIGRvanVtcC5jIChjb21wYXJlX2Zyb21fcnR4KTogTGlrZXdpc2UuCgkoZG9fY29tcGFyZV9ydHhfYW5kX2p1bXApOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKHN1YnN0X2NvbnN0YW50cyk6IExpa2V3aXNlLgoJKiB1bnJvbGwuYyAoc2ltcGxpZnlfY21wX2FuZF9qdW1wX2luc25zKTogTGlrZXdpc2UuCgoyMDA0LTAzLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL20zMnIvbTMyci5tZDogUmVtb3ZlIGFsbCBkZWZpbmVfcGVlcGhvbGUncy4KCjIwMDQtMDMtMDkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogUmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UuCgoyMDA0LTAzLTA4ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChzaXRlLmV4cCk6IEFkZCBsaWJpY29udiB2YXJpYWJsZSBkZWZpbml0aW9uLgoKMjAwNC0wMy0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUgZm9yIGNvbmZpZy9hY2Nyb3NzLm00IGNvcnJlY3Rpb24uCgoyMDA0LTAzLTA4ICBKb2VsIFNoZXJyaWxsICA8am9lbEBvYXJjb3JwLmNvbT4KCglQUiB0YXJnZXQvMTQ0ODAKCSogY29uZmlnL3JzNjAwMC90LXJ0ZW1zOiBBZGQgbWlzc2luZyBmaWxlIG9uIGJyYW5jaC4KCjIwMDQtMDMtMDggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTQyODkKCSogYy10eXBlY2suYyAoY19tYXJrX2FkZHJlc3NhYmxlKTogQSByZWdpc3RlciB2YXJpYWJsZSBzaG91bGQKCWJlIGNvbnNpZGVyZWQgZ2xvYmFsIGlmIGl0cyBub3QgYXV0b21hdGljLCBpLmUuIFRSRUVfUFVCTElDLAoJVFJFRV9TVEFUSUMgb3IgREVDTF9FWFRFUk5BTC4KCSogZnVuY3Rpb24uYyAocHV0X3Zhcl9pbnRvX3N0YWNrKTogQ2FsbCBhYm9ydCB3aGVuIHBsYWNpbmcgYQoJaGFyZCByZWdpc3RlciBpbnRvIHRoZSBzdGFjaywgaWYgeF9wYXJtX3JlZ19zdGFja19sb2MgaXMgTlVMTC4KCjIwMDQtMDMtMDggIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqZXh0ZW5kcWlkaTJfc2hvcnRfZGlzcGwiKTogQWRkIENDIGNsb2JiZXIuCgkoIipleHRlbmRxaXNpMl9zaG9ydF9kaXNwbCIpOiBMaWtld2lzZS4KCjIwMDQtMDMtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvcGRwMTEvcGRwMTEuYyAoY29tcGFyaXNvbl9vcGVyYXRvcl9pbmRleCk6IFJlbW92ZS4KCShjb21wX29wZXJhdG9yKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS1wcm90b3MuaDogUmVtb3ZlIGNvcnJlc3BvbmRpbmcKCXByb3RvdHlwZXMuCgoyMDA0LTAzLTA4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJKiBleHByLmMgKGhpZ2hlc3RfcG93Ml9mYWN0b3JfZm9yX3R5cGUpOiBSZW5hbWUgaW50bwoJaGlnaGVzdF9wb3cyX2ZhY3Rvcl9mb3JfdGFyZ2V0LiAgVXNlIERFQ0xfQUxJR04gaW5zdGVhZCBvZgoJVFlQRV9BTElHTiB3aGVuIHRoZSB0YXJnZXQgaXMgYSBDT01QT05FTlRfUkVGLgoJKGV4cGFuZF9hc3NpZ25tZW50KTogQWp1c3QgY2FsbCB0byBoaWdoZXN0X3BvdzJfZmFjdG9yX2Zvcl90eXBlLgoKMjAwNC0wMy0wOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IEZvcm1hdHRpbmcgZml4LgoJKGxlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCk6IENvcnJlY3Qgb2Zmc2V0IHJhbmdlIGNoZWNrLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBEb24ndCBvdmVycmlkZQoJLW1zb2Z0LWZsb2F0IGJ5IC1tY3B1LiAgQ29uc29saWRhdGUgc2ltaWxhciBjb2RlIGZvciBNQVNLX01VTFRJUExFCglhbmQgTUFTS19TVFJJTkcuCgoyMDA0LTAzLTA3ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoYXNocmRpMyk6IERvIG5vdCBjYWxsIGFzaHJkaTNfbm9fcG93ZXIKCWZvciBsaXR0bGUgZW5kaWFuLgoJKCJhc2hyZGkzX25vX3Bvd2VyIik6IERpc2FibGUgZm9yIGxpdHRsZSBlbmRpYW4uCgkoYXNocmRpMyk6IFNhbWUuCgoyMDA0LTAzLTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogUmVmb3JtYXQgY2hlY2tzIGZvcgoJYnVpbHRpbnMuCgoyMDA0LTAzLTA4ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCglQUiB0YXJnZXQvMTQ0NzEKCSogY29uZmlndXJlLmFjIChUYXJnZXQtc3BlY2lmaWMgYXNzZW1ibGVyIGNoZWNrcykgPGNyaXMtKi0qPjogTmV3CgljYXNlLCBjaGVja2luZyBmb3IgLW5vLW11bC1idWctYWJvcnQgb3B0aW9uLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogZG9jL2ludm9rZS50ZXhpIChDUklTIE9wdGlvbnMpOiBEb2N1bWVudCAtbW11bC1idWctd29ya2Fyb3VuZAoJYW5kIC1tbm8tbXVsLWJ1Zy13b3JrYXJvdW5kLgoJKiBjb25maWcvY3Jpcy9jcmlzLm1kICgic211bHNpM19oaWdocGFydCIsICJ1bXVsc2kzX2hpZ2hwYXJ0IikKCSgibXVsc2lkaTMiLCAidW11bHNpZGkzIik6IFByZWZpeCBvdXRwdXQgdGVtcGxhdGUgd2l0aCAiJSEiLgoJKCJ1bXVsaGlzaTMiLCAidW11bHFpaGkzIiwgIm11bHNpMyIsICJtdWxxaWhpMyIsICJtdWxoaXNpMyIpOgoJRGl0dG8uICBNYWtlIGF0dHJpYnV0ZSAic2xvdHRhYmxlIiBkZXBlbmRlbnQgb24gVEFSR0VUX01VTF9CVUcuCgkqIGNvbmZpZy9jcmlzL211bHNpMy5hc20gKF9fTXVsKSBbX19DUklTX2FyY2hfdmVyc2lvbiA+PSAxMF06IE1ha2UKCXN1cmUgbXVsdS5kIGlzIG5vdCBsYXN0IG9uIGNhY2hlLWxpbmUuCgkqIGNvbmZpZy9jcmlzL2NyaXMuaCAoQVNNX1NQRUMpOiBUcmFuc2xhdGUgLW1uby1tdWwtYnVnLXdvcmthcm91bmQKCWludG8gLW5vLW11bC1idWctYWJvcnQgZGVwZW5kaW5nIG9uIEhBVkVfQVNfTVVMX0JVR19BQk9SVF9PUFRJT04uCgkoVEFSR0VUX01BU0tfTVVMX0JVRywgVEFSR0VUX01VTF9CVUcpOiBOZXcgbWFjcm9zLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IE5ldyBvcHRpb25zIC1tbXVsLWJ1Zy13b3JrYXJvdW5kIGFuZAoJLW1uby1tdWwtYnVnLXdvcmthcm91bmQuCgkoVEFSR0VUX0RFRkFVTFQpOiBJbmNsdWRlIFRBUkdFVF9NQVNLX01VTF9CVUcuCgkoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogSW5jbHVkZSAnIScuCgkqIGNvbmZpZy9jcmlzL2NyaXMuYyAoY3Jpc19vcGVyYW5kX2V4dGVuZF9vcGVyYXRvcik6IENsYXJpZnkKCXJlbGF0aW9uIHRvIE1VTFQgaW4gaGVhZCBjb21tZW50LgoJKGNyaXNfb3Bfc3RyKTogQWJvcnQgZm9yIE1VTFQuCgkoY3Jpc19wcmludF9vcGVyYW5kKSA8Y2FzZSAnISc+OiBOZXcgY2FzZS4KCjIwMDQtMDMtMDggIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgZGVidWcvMTE5ODMKCSogZHdhcmYyb3V0LmMgKGVudW0gZHdfdmFsX2NsYXNzKTogUmVuYW1lIGR3X3ZhbF9jbGFzc19mbG9hdCB0bwoJZHdfdmFsX2NsYXNzX3ZlYy4gIFJlcGxhY2UgdXNlIHRocm91Z2hvdXQgZmlsZS4KCShkd19mbG9hdF9jb25zdCk6IERlbGV0ZS4KCShkd192ZWNfY29uc3QpOiBOZXcuCgkoZHdfdmFsX3N0cnVjdF91bmlvbik6IFJlbmFtZSB2YWxfZmxvYXQgdG8gdmFsX3ZlYy4gIFJlcGxhY2UgdXNlCgl0aHJvdWdob3V0IGZpbGUuCgkoYWRkX0FUX3ZlYyk6IFJlbmFtZSBmcm9tIGFkZF9BVF9mbG9hdC4gIEFkZCBlbHRfc2l6ZSBwYXJhbS4KCShzYW1lX2R3X3ZhbF9wKTogQWRqdXN0IHZlYyBjb21wYXJpc29uLiAgVXNlIG1lbWNtcC4KCShzaXplX29mX2RpZSk6IEFkanVzdCBkd192YWxfY2xhc3NfdmVjIHNpemluZy4KCShvdXRwdXRfZGllKTogT3V0cHV0IGR3X3ZhbF9jbGFzc192ZWMuCgkoaW5zZXJ0X2ludCwgZXh0cmFjdF9pbnQsIGluc2VydF9mbG9hdCk6IE5ldyBmdW5jdGlvbnMuCgkoYWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IFVzZSBpbnNlcnRfZmxvYXQgZm9yIENPTlNUX0RPVUJMRS4KCUhhbmRsZSBDT05TVF9WRUNUT1IuCgkoYWRkX2xvY2F0aW9uX29yX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IEhhbmRsZSBDT05TVF9WRUNUT1IuCgoyMDA0LTAzLTA3ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfcGFyc2VfYWJpX29wdGlvbnMpOiBTUEUgYW5kCglBbHRpVmVjIGFiaSBjYW5ub3QgY28tZXhpc3QuCgoJKiBjb25maWcvcnM2MDAwL2VhYmlzcGUuaCAoU1VCU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBTYW1lLgoKMjAwNC0wMy0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZXhjZXB0LmMgKGVtaXRfdG9fbmV3X2JiX2JlZm9yZSk6IEJyZWFrIGZhbGx0aHJ1IGVkZ2VzLgoKMjAwNC0wMy0wNyAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLm1kICgiKmxzaHJzaTNfY29uc3QiKTogRGlzYWJsZSBmb3IgNjhIQzEyLgoJKCIqbHNocnNpMyIpOiBBbHNvIGFjY2VwdCBhbiBpbW1lZGlhdGUgZm9yIDY4SEMxMi4KCSgiKmFzaHJzaTNfY29uc3QiKTogTGlrZXdpc2UuCgkoIiphc2hyc2kzIik6IExpa2V3aXNlLgoJKCIqYXNobHNpM19jb25zdCIpOiBMaWtld2lzZS4KCSgiKmFzaGxzaTMiKTogTGlrZXdpc2UuCgkoImNtcGhpXzFfaGMxMiIpOiBDb21wYXJlIHR3byBoYXJkIHJlZ2lzdGVyIGJ5IHB1c2hpbmcgdGhlbSBhbmQKCWNvbXBhcmluZyB3aXRoIGEgcG9wOyBkb24ndCB1c2UgYSBzcGxpdCBmb3IgdGhhdC4KCSgiY21waGkgc3BsaXQiKTogRGlzYWJsZSBjb21wYXJlIHNwbGl0IGZvciA2OEhDMTIuCgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKG02OGhjMTFfbm90aWNlX3VwZGF0ZV9jYyk6IEludmFsaWRhdGUKCXRoZSBzdGF0dXMgb3BlcmFuZHMgaWYgdGhleSBoYXZlIHNpZGUgZWZmZWN0cy4KCjIwMDQtMDMtMDcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkZWZhdWx0cy5oIChMRUdJVElNSVpFX0FERFJFU1MpOiBQcm92aWRlIGEgZGVmYXVsdAoJZGVmaW5pdGlvbi4KCSogY29uZmlnL2FyYy9hcmMuaCwgY29uZmlnL2ZyMzAvZnIzMC5oLCBjb25maWcvZnJ2L2Zydi5oLAoJY29uZmlnL2g4MzAwL2g4MzAwLmgsIGNvbmZpZy9pYTY0L2lhNjQuaCwKCWNvbmZpZy9tY29yZS9tY29yZS5oLCBjb25maWcvbW1peC9tbWl4LmgsCgljb25maWcvbnMzMmsvbnMzMmsuaCwgY29uZmlnL3BkcDExL3BkcDExLmgsCgljb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaCwgY29uZmlnL3Y4NTAvdjg1MC5oLAoJY29uZmlnL3ZheC92YXguaCAoTEVHSVRJTUlaRV9BRERSRVNTKTogUmVtb3ZlLgoJKiBkb2MvdG0udGV4aSAoTEVHSVRJTUlaRV9BRERSRVNTKTogTWVudGlvbiB0aGUgZGVmYXVsdAoJZGVmaW5pdGlvbi4KCjIwMDQtMDMtMDcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKSA8SU9SX0VYUFI+OiBGb2xkIHggfCB4IGFzIHguCgk8WE9SX0VYUFI+OiBGb2xkIHggXiB4IGFzIHplcm8uCgk8QU5EX0VYUFI+OiBGb2xkIHggJiB4IGFzIHguCgoyMDA0LTAzLTA3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgPEVRX0VYUFI+OiBSZXdyaXRlIG9wdGltaXphdGlvbiB0byB0cmFuc2Zvcm0KCSJmb28rKyA9PSBjb25zdCIgaW50byAiKytmb28gPT0gY29uc3QraW5jciIuCgoyMDA0LTAzLTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfaW5fc21hbGxfZGF0YV9wKTogUmV0dXJuIGZhbHNlIGlmCglUQVJHRVRfQUJJQ0FMTFMuCgoyMDA0LTAzLTA2ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9nZW5fbW92aGkpOiBVc2UgMiwtc3AgdG8gcHVzaAoJdGhlIHN0YWNrIHJlZ2lzdGVyLgoJKGV4cGFuZF9wcm9sb2d1ZSk6IERvbid0IG1ha2UgYW4gaW50ZXJydXB0IG9yIGEgdHJhcCBoYW5kbGVyIGEgZmFyCglzeW1ib2wuCgkobTY4aGMxMV9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IExpa2V3aXNlLgoKMjAwNC0wMy0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9pbl9zbWFsbF9kYXRhX3ApOiBGYWxzZSBmb3IgZnVuY3Rpb25zLgoKMjAwNC0wMy0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9uczMyay9uczMyay1wcm90b3MuaDogQWRkIGEgcHJvdG90eXBlIGZvcgoJbnMzMmtfbm90aWNlX3VwZGF0ZV9jYy4KCSogY29uZmlnL25zMzJrL25zMzJrLmMgKG5zMzJrX25vdGljZV91cGRhdGVfY2MpOiBOZXcuCgkqIGNvbmZpZy9uczMyay9uczMyay5oIChOT1RJQ0VfVVBEQVRFX0NDKTogQ2FsbAoJbnMzMmtfbm90aWNlX3VwZGF0ZV9jYy4KCjIwMDQtMDMtMDYgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJsb2FkX211bHRpcGxlIiwgIipsb2FkX211bHRpcGxlX2RpIiwKCSIqbG9hZF9tdWx0aXBsZV9zaSIpOiBBbGxvdyBvbmx5IGlmIHJlbG9hZF9jb21wbGV0ZWQuCgkoInN0b3JlX211bHRpcGxlIiwgIipzdG9yZV9tdWx0aXBsZV9kaSIsICIqc3RvcmVfbXVsdGlwbGVfc2kiKToKCUxpa2V3aXNlLgoKMjAwNC0wMy0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy92YXgvdmF4LXByb3Rvcy5oOiBBZGQgYSBwcm90b3R5cGUgZm9yCgl2YXhfbm90aWNlX3VwZGF0ZV9jYy4KCSogY29uZmlnL3ZheC92YXguYyAodmF4X25vdGljZV91cGRhdGVfY2MpOiBOZXcuCgkqIGNvbmZpZy92YXgvdmF4LmggKE5PVElDRV9VUERBVEVfQ0MpOiBDYWxsCgl2YXhfbm90aWNlX3VwZGF0ZV9jYy4KCjIwMDQtMDMtMDYgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBPbmx5IGV4cG9ydCBpbml0ZnVuYyBhbmQgZmluaWZ1bmMgaWYKCUxEX0lOSVRfU1dJVENIIG5vdCBkZWZpbmVkLgoJKHNjYW5fcHJvZ19maWxlKTogT25seSBleHBvcnQgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBpZgoJTERfSU5JVF9TV0lUQ0ggbm90IGRlZmluZWQuICBPbmx5IGV4cG9ydCBzeW1ib2xzIG5vdCBmb3VuZCBpbgoJc2hhcmVkIG9iamVjdHMuCgoyMDA0LTAzLTA2ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEubWQgKGljYWNoZWZsdXNoKTogUmVvcmRlciBvcGVyYW5kcyB0byBtYWtlIG1hdGNoX3NjcmF0Y2ggb3BlcmFuZAoJbGFzdC4KCSogcGEuaCAoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNjcmF0Y2ggYXJndW1lbnQKCWZyb20gY2FsbHMgdG8gZ2VuX2ljYWNoZWZsdXNoLgoKMjAwNC0wMy0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChNQVNLX0xPTkdfRE9VQkxFXzEyOCk6IE5ldy4KCShUQVJHRVRfTE9OR19ET1VCTEVfMTI4KTogTmV3LgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBsb25nLWRvdWJsZS17MTI4LDY0fS4KCShUQVJHRVRfSEFTX1hGTE9BVElOR19MSUJTKTogRGVmYXVsdCB0byBUQVJHRVRfTE9OR19ET1VCTEVfMTI4LgoJKExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IEhvbm9yIFRBUkdFVF9MT05HX0RPVUJMRV8xMjguCgkoTElCR0NDMl9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBOZXcuCgkoV0lERVNUX0hBUkRXQVJFX0ZQX1NJWkUpOiBOZXcuCgkoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX19MT05HX0RPVUJMRV8xMjhfXy4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBDbGVhciBNQVNLX0xPTkdfRE9VQkxFXzEyOAoJaWYgVEFSR0VUX1ZBWF9GTE9BVC4KCSogY29uZmlnL2FscGhhL29zZjUuaCAoTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogUmVtb3ZlLgoJKFRBUkdFVF9ERUZBVUxUKTogU2V0IE1BU0tfTE9OR19ET1VCTEVfMTI4LgoKMjAwNC0wMy0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9zd2FwcGVkX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBGaXgKCWJvdGNoZWQgcnR4IGNsYXNzIGNvbnZlcnNpb24uCgoyMDA0LTAzLTA2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0cmVlLmggKEJVSUxUSU5fRVhQMTBfUCwgQlVJTFRJTl9FWFBPTkVOVF9QLCBCVUlMVElOX1NRUlRfUCwKCUJVSUxUSU5fQ0JSVF9QLCBCVUlMVElOX1JPT1RfUCk6IE5ldyBtYWNyb3MuCgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fbG9nYXJpdGhtLCBmb2xkX2J1aWx0aW4pOiBVc2UgbmV3CgltYWNyb3MuCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9tYXRoZm5fY29tcGFyZSwgZm9sZCk6IExpa2V3aXNlLgoKMjAwNC0wMy0wNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTQzNDMKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAobW92djJkaV9pbnRlcm5hbCk6IENvbmRpdGlvbmFsaXplIG9uCglUQVJHRVRfU1NFLCBub3QgVEFSR0VUX1NTRTIuCgoyMDA0LTAzLTA1ICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAYnJvYWRjb20uY29tPgoKCSogY29uZmlnLmdjYyAobWlwczY0b3Jpb24tKi1lbGYqLCBtaXBzNjRvcmlvbmVsLSotZWxmKik6IERlbGV0ZQoJZHVwbGljYXRlZCBsaW5lLgoKMjAwNC0wMy0wNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYzogQ29uc2lzdGVudGx5IHVzZSBsb2dOIG5vdCBsb2cqIGluIGNvbW1lbnRzLgoKMjAwNC0wMy0wNSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIHJ0bC5oIChtZW1fZXhwcl9lcXVhbF9wKTogRnVuY3Rpb24gcHJvdG90eXBlIGFkZGVkLgoJKiBjZmdjbGVhbnVwLmMgKG1lcmdlX21lbWF0dHJzKTogTmV3IGZ1bmN0aW9uLgoJKGZsb3dfZmluZF9jcm9zc19qdW1wKTogQ2FsbCBtZXJnZV9tZW1hdHRycyBmb3IgbWF0Y2hpbmcgaW5zbnMuCgkqIGVtaXQtcnRsLmMgKG1lbV9leHByX2VxdWFsX3ApOiBOZXcgZnVuY3Rpb24uCgoyMDA0LTAzLTA1ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBvYmpjL29iamMtYWN0LmMgKHN5bnRoX21vZHVsZV9wcm9sb2d1ZSk6IENvbnN0LXF1YWxpZnkKCW9iamNfc2VsZWN0b3IgdHlwZSBpZiB1c2luZyB0aGUgR05VIHJ1bnRpbWU7IGZpeCBnZW5lcmF0ZWQKCXNpZ25hdHVyZXMgZm9yIG9iamNfbXNnX2xvb2t1cCBhbmQgb2JqY19tc2dfbG9va3VwX3N1cGVyCgl0byBtYXRjaCB3aGF0IEdOVSBPYmpDIGhlYWRlcnMgcHJvdmlkZTsgcmVmb3JtYXQgYW5kIGNsZWFuIHVwLgoJKHN5bnRoX3NlbGZfYW5kX3VjbWRfYXJncyk6IFVzZSBwcmV2aW91c2x5IGNvbnN0cnVjdGVkIChhbmQKCWhlbmNlIHBvc3NpYmx5IGNvbnN0LXF1YWxpZmllZCkgb2JqY19zZWxlY3RvciB0eXBlLgoKMjAwNC0wMy0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy90bS50ZXhpIChIQVJEX1JFR05PX1JFTkFNRV9PSyk6IERvY3VtZW50LgoKMjAwNC0wMy0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiB0cmVlLmggKFRZUEVfSEFTSCk6IFVzZSBUWVBFX1VJRC4KCShUUkVFX0hBU0gpOiBOZXcgbWFjcm8gd2l0aCBvbGQgZGVmaW5pdGlvbiBvZiBUWVBFX0hBU0guCgkqIHRyZWUuYyAoYnVpbGRfdHlwZV9hdHRyaWJ1dGVfdmFyaWFudCk6IFVzZSBpdGVyYXRpdmVfaGFzaF9vYmplY3QuCgkoYnVpbGRfYXJyYXlfdHlwZSwgYnVpbGRfZnVuY3Rpb25fdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX21ldGhvZF90eXBlX2RpcmVjdGx5KTogTGlrZXdpc2UuCgkoYnVpbGRfb2Zmc2V0X3R5cGUsIGJ1aWxkX2NvbXBsZXhfdHlwZSk6IExpa2V3aXNlLgoJKHR5cGVfaGFzaF9saXN0LCBhdHRyaWJ1dGVfaGFzaF9saXN0KTogTGlrZXdpc2UuIE5vdyBzdGF0aWMuCgkqIGV4Y2VwdC5jOiBzL1RZUEVfSEFTSC9UUkVFX0hBU0gvLgoKMjAwNC0wMy0wNSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKGZ1bmN0aW9uX2FyZyk6IEhhbmRsZSAxNi1ieXRlIGFsaWduZWQgYXJncy4KCSh4dGVuc2FfdmFfc3RhcnQpOiBJbml0aWFsaXplIF9fdmFfc3RrIHRvICgkYXJnX3B0ciAtIDMyKS4gIEFkanVzdAoJX192YV9uZHggYnkgMiB3b3JkcyB3aGVuIHJlZmVyZW5jaW5nIGFuIGFyZ3VtZW50IG9uIHRoZSBzdGFjay4KCSh4dGVuc2FfdmFfYXJnKTogSGFuZGxlIDE2LWJ5dGUgYWxpZ25lZCBhcmdzLiAgQWRqdXN0IF9fdmFfbmR4IGJ5IDIKCXdvcmRzIHdoZW4gYW4gYXJnIG9uIHRoZSBzdGFjayBpcyBmaXJzdCBzZWVuLgoKMjAwNC0wMy0wNSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFybS5oIChBUk1fRkxBR19WRlApOiBSZW1vdmUuCgkoQVJNX0ZMQUdfQVRQQ1MsIENJUlJVU19GSVhfSU5WQUxJRF9JTlNOUyk6IFJlbnVtYmVyLgoJKiBuZXRic2QtZWxmLmggKEFSTV9GTEFHX1ZGUCk6IFJlbW92ZS4KCjIwMDQtMDMtMDUgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBJbmNsdWRlIHByZXRlbmQgYWxpZ25tZW50IG9mZnNldC4KCjIwMDQtMDMtMDUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSwgY2FzZSBGVU5DVElPTl9UWVBFKTogTWFrZSBzaXplCglGVU5DVElPTl9CT1VOREFSWSwgbm90IFBPSU5URVJfU0laRSAqIDIuCgoyMDA0LTAzLTA1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlndXJlLmFjOiBXaGVuIHBhc3NpbmcgLS1lbmFibGUtbGFuZ3VhZ2VzIHRvIHN1YmRpcgoJY29uZmlndXJlIHdoZW4gaG9zdCAhPSBidWlsZCwgbWFrZSBzdXJlIHdlIGRvbid0IHBhc3MgYW4gZW1wdHkKCXZhbHVlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTAzLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIDEzNTc3CgkqIGdjYy5jIChjYzFfb3B0aW9ucyk6IFJvYnVzdGlmeSAtYXV4YmFzZS1zdHJpcCBmcm9tIG11bHRpcGxlIC1vCglvcHRpb25zLgoKMjAwNC0wMy0wNSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbik6IElmCglmbGFnX3dyYXB2IGlzIHNldCwgZG8gbm90IG1vdmUgdGVybXMgYmV0d2VlbiB0aGUgdHdvCglzaWRlIG9mIGEgcmVsYXRpb25hbCBvcGVyYXRvci4KCjIwMDQtMDMtMDUgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBydGxhbmFsLmM6IEluY2x1ZGUgdGFyZ2V0LmggYW5kIG91dHB1dC5oCgkocnR4X2Nvc3QsIGFkZHJlc3NfY29zdCwgZGVmYXVsdF9hZGRyZXNzX2Nvc3QpOiBNb3ZlIGZyb20uLi4KCSogY3NlLmMgKHJ0eF9jb3N0LCBhZGRyZXNzX2Nvc3QsIGRlZmF1bHRfYWRkcmVzc19jb3N0KToKCS4uLiB0aGlzIGZpbGUuCgkqIHJ0bC5oIChydHhfY29zdCwgYWRkcmVzc19jb3N0KTogTW92ZSB1bmRlciBydGxhbmFsLmMuCgkqIE1ha2VmaWxlLmluOiBBZGp1c3QgZGVwZW5kZW5jaWVzLgoKMjAwNC0wMy0wNSAgUGFvbG8gQm9uemluaSA8Ym9uemluaUBnbnUub3JnPgoKCSogY3NlLmMgKGNzZV9lbmRfb2ZfYmFzaWNfYmxvY2spOiBNYWtlIHN0YXRpYy4KCSogbG9jYWwtYWxsb2MuYyAoZnVuY3Rpb25faW52YXJpYW50X3ApOiBNb3ZlIHRvCglyZWxvYWQxLmMuCgkqIGxvb3AuYyAobGliY2FsbF9vdGhlcl9yZWcsIHJlY29yZF9leGNlc3NfcmVncyk6CglNYWtlIHN0YXRpYy4KCSogcmVsb2FkMS5jIChmdW5jdGlvbl9pbnZhcmlhbnRfcCk6IE1vdmVkIGhlcmUKCWZyb20gbG9jYWwtYWxsb2MuYywgbWFkZSBzdGF0aWMuCgkqIHJ0bC5oIChjc2VfZW5kX29mX2Jhc2ljX2Jsb2NrLCBmdW5jdGlvbl9pbnZhcmlhbnRfcCwKCWxpYmNhbGxfb3RoZXJfcmVnLCByZWNvcmRfZXhjZXNzX3JlZ3MpOiBSZW1vdmUKCWRlY2xhcmF0aW9ucy4KCjIwMDQtMDMtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbTMyci9tMzJyLmMgKHNpZ25lZF9jb21wYXJpc29uX29wZXJhdG9yKTogQWRkIGEKCW1pc3NpbmcgcGFyZW50aGVzaXMuCgoyMDA0LTAzLTA0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogZ2djLWNvbW1vbi5jIChndF9wY2hfcmVzdG9yZSk6IERvbid0IHVubWFwIGFkZHIgdW5sZXNzIHdlIGFyZQoJZ29pbmcgdG8gY2FsbCBtbWFwIGFnYWluLiAgUmVhZCB0aGUgZmlsZSBpbnRvIHRoZSByaWdodCBwbGFjZS4KCUdpdmUgYSBmYXRhbCBlcnJvciBpZiB3ZSBoYXZlIHRvIHJlbG9jYXRlLgoKMjAwNC0wMy0wNCAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9yZXR1cm5faW5fbXNiKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9SRVRVUk5fSU5fTVNCKTogRGVmaW5lIHRvIHh0ZW5zYV9yZXR1cm5faW5fbXNiLgoKMjAwNC0wMy0wNSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJUFIgb3RoZXIvMTQzNTQKCSogY29uZmlnL2ZwLWJpdC5jIChfZnBkaXZfcGFydHMpOiBEbyBub3Qgcm91bmQgd2hlbiBwYWNrX2Qgd291bGQKCXJvdW5kIHRoZSBzYW1lLiAgV2hlbiByb3VuZGluZywgY2xlYXIgYml0cyB0aGF0IHdvdWxkIGNhdXNlIGEKCXNlY29uZCByb3VuZGluZyBpbiBwYWNrX2QuCgkoX2ZwbXVsX3BhcnRzKTogRGl0dG8uICBSZW1vdmUgI2lmIDA6ZCBjb2RlLgoKMjAwNC0wMy0wNCAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCVBSIGMrKy8xNDQyNSwgYysrLzE0NDI2CgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5oICh2ZWNfc3BsYXRfczgsIHZlY19zcGxhdF9zMTYsCgl2ZWNfc3BsYXRfczMyLCB2ZWNfc3BsYXRfdTgsIHZlY19zcGxhdF91MTYsIHZlY19zcGxhdF91MzIpOgoJQ2hhbmdlIEMrKyBkZWZpbml0aW9ucyB0byBhY2NlcHQgYSAnY29uc3QgaW50JyBhcmd1bWVudDsKCXRoZSBwcm90b3R5cGVzIGFscmVhZHkgZG8uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9jb21tb25faW5pdF9idWlsdGlucyk6CglSZW5hbWUgdjRzaV9mdHlwZV9jaGFyLCB2OGhpX2Z0eXBlX2NoYXIsIHYxNnFpX2Z0eXBlX2NoYXIsCgl2NHNmX2Z0eXBlX3Y0c2lfY2hhciwgdjRzaV9mdHlwZV92NHNmX2NoYXIsIHY0c2lfZnR5cGVfdjRzaV9jaGFyLAoJdjhoaV9mdHlwZV92OGhpX2NoYXIsIHYxNnFpX2Z0eXBlX3YxNnFpX2NoYXIsCgl2MTZxaV9mdHlwZV92MTZxaV92MTZxaV9jaGFyLCB2OGhpX2Z0eXBlX3Y4aGlfdjhoaV9jaGFyLAoJdjRzaV9mdHlwZV92NHNpX3Y0c2lfY2hhciBhbmQgdjRzZl9mdHlwZV92NHNmX3Y0c2ZfY2hhciB0bwoJZW5kIGluIC4uLl9pbnQ7IGNoYW5nZSB0aGVtIHRvIGFjY2VwdCBhbiBpbnQgaW5zdGVhZCBvZiBhIGNoYXIKCWFzIHRoZSBsYXN0IHBhcmFtZXRlci4KCjIwMDQtMDMtMDQgIFBoaWwgRWR3YXJkcyAgPHBoaWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbm11bHRpbGliOiBDaGFuZ2UgJz0nIHRvICctJyB3aGVuIHRyYW5zbGF0aW5nIG9wdGlvbiBuYW1lcwoJdG8gZGlyZWN0b3J5IG5hbWVzLgoKMjAwNC0wMy0wNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbCwgY2FzZSBDT01QT05FTlRfUkVGKTogR2V0IHByb3BlciB0eXBlIG9mCglzdGFjayBzbG90IGZvciB0ZW1wIHVzZWQgZm9yIHJlc3VsdCBvZiBCTEttb2RlIGJ1dCBpbiBpbnRlZ3JhbCBtb2RlLgoKMjAwNC0wMy0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IFJlb3JnYW5pemUgaWYgc2VxZXVuY2UgdG8gc3dpdGNoLgoKCSogY2ZncnRsLmMgKHJ0bF9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gpOiBTZXQgdGhlIHNvdXJjZSBCQiBhcyBkaXJ0eS4KCShjZmdsYXlvdXRfcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoKTogU2V0IHRoZSBzb3VyY2UgQkIgYXMgZGlydHkuCgoyMDA0LTAzLTA0ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGRpdmRmM19pbnRlcm5hbF90aHIpOiBGaXggYWxnb3JpdGhtLgoJKiB0ZXN0c3VpdGUvZ2NjLmRnLzIwMDQwMzAzLTEuYzogTmV3IHRlc3QuCgoyMDA0LTAzLTA0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBwcHJvLm1kOiBSZXdyaXRlIGFzIGEgREZBIHBpcGVsaW5lIGRlc2NyaXB0aW9uLgoJKiBpMzg2Lm1kOiBSZW1vdmUgYWxsIHVzZXMgb2YgdGhlIHBwcm9fdW9wcyBhdHRyaWJ1dGUuCgkqIGkzODYuYzogKGl4ODZfc2FmZV9wcHJvX3VvcHMsIGl4ODZfZHVtcF9wcHJvX3BhY2tldCwKCWl4ODZfcmVvcmRlcl9pbnNuLCBpeDg2X3NjaGVkX3Jlb3JkZXJfcHBybywgaXg4Nl9zY2hlZF9pbml0LAoJaXg4Nl9zY2hlZF9yZW9yZGVyLCBpeDg2X3ZhcmlhYmxlX2lzc3VlLAoJc3RydWN0IGl4ODZfc2NoZWRfZGF0YSwgVEFSR0VUX1NDSEVEX1ZBUklBQkxFX0lTU1VFLAoJVEFSR0VUX1NDSEVEX0lOSVQsIFRBUkdFVF9TQ0hFRF9SRU9SREVSKTogUmVtb3ZlLgoJKGlhMzJfdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UpOiBBZGQgVEFSR0VUX1BFTlRJVU1QUk8uCgkoaWEzMl9tdWx0aXBhc3NfZGZhX2xvb2thaGVhZCk6IEFkZCBUQVJHRVRfUEVOVElVTVBSTy4KCSogYXRobG9uLm1kIChhdGhsb25fc3NlY21wX2xvYWQpOiBGaXggY29tbWVudAoKMjAwNC0wMy0wNCAgU3R1YXJ0IEhhc3RpbmdzICA8c3R1YXJ0QGFwcGxlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1sb25nY2FsbCBmb3IgRGFyd2luL1BQQy4KCjIwMDQtMDMtMDQgIFN0dWFydCBIYXN0aW5ncyAgPHN0dWFydEBhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaDogRGFyd2luL3g4NiBkb2Vzbid0IHN1cHBvcnQgQ1BVcyBiZWZvcmUKCTY4NiwgdGVsbCBEYXJ3aW4gYXNzZW1ibGVyIHRvIGFsbG93IHByZWZldGNoIGluc25zLCBub24tZW1wdHkgZGVmCglvZiBTVUJUQVJHRVRfT1BUSU9OX1RSQU5TTEFURV9UQUJMRS4KCjIwMDQtMDMtMDQgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCVBSIG9wdGltaXphdGlvbi8xNDI4MgoJKiBzY2hlZC1kZXBzLmMgKHNjaGVkX2FuYWx5emVfaW5zbik6IEFsbG93IGEgc3RhY2sgYWRqdXN0bWVudAoJYmV0d2VlbiBhIGNhbGwgYW5kIHRoZSBhc3NpZ25tZW50IG9mIGl0cyByZXR1cm4gdmFsdWUuCgoyMDA0LTAzLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmM6IFB1dCBhIGNvbW1lbnQgZm9yIGV2ZXJ5IGZ1bmN0aW9uLgoKMjAwNC0wMy0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogQWRkIGNvbW1lbnRzIGFib3V0IHBlZXBob2xlMidzLgoKMjAwNC0wMy0wNCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogaTM4Ni5oIChUQVJHRVRfQ1BVX0RFRkFVTFRfbm9jb25hKTogRml4IHZhbHVlLgoKMjAwNC0wMy0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2ZnY2xlYW51cC5jICh0aHJlYWRfanVtcCk6IFVwZGF0ZSBjYWxsIG9mIGNzZWxpYl9pbml0LgoJKiBjc2VsaWIuYyAoY3NlbGliX3JlY29yZF9tZW1vcnkpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGNzZWxpYl9sb29rdXBfbWVtLCBjc2VsaWJfcmVjb3JkX3NldCwgY3NlbGliX3JlY29yZF9zZXRzKToKCUdpdmUgdXAgb24gbWVtb3JpZXMgd2hlbiBhc2tlZCBmb3IuCgkoY3NlbGliX2luaXQpOiBBY2NlcHQgbmV3IGFyZ3VtZW50LgoJKiBjc2VsaWIuaCAoY3NlbGliX2luaXQpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBnY3NlLmMgKGxvY2FsX2Nwcm9wX3Bhc3MpOiBVcGRhdGUgY2FsbCBvZiBjc2VsaWJfaW5pdC4KCSogbG9vcC5jIChsb2FkX21lbXMpOiBVcGRhdGUgY2FsbCBvZiBjc2VsaWJfaW5pdC4KCSogcG9zdHJlbG9hZC5jIChyZWxvYWRfY3NlX3JlZ3NfMSk6IFVwZGF0ZSBjYWxsIG9mIGNzZWxpYl9pbml0LgoJKiBzY2hlZC1kZXBzLmMgKHNjaGVkX2FuYWx5emUpOiBVcGRhdGUgY2FsbCBvZiBjc2VsaWJfaW5pdC4KCjIwMDQtMDMtMDQgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCSAgICBHUCA8Z3BAcW54LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG91dHB1dF9mdW5jdGlvbl9wcm9maWxlcik6IEFwcGVuZCBAcGx0Cgl3aGVuIGNvbXBpbGluZyBQSUMuCgoyMDA0LTAzLTA0ICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJUFIvMTQzNjIKCSogdmFyLXRyYWNraW5nLmMgKHRyYWNrX2V4cHJfcCk6IERvIG5vdCB0cmFjayB2YXJpYWJsZXMgd2hpY2gKCXNob3VsZCBiZSBpZ25vcmVkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCgoyMDA0LTAzLTA0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogcmVhbC5jIChlbmNvZGVfaWJtX2V4dGVuZGVkKTogRG9uJ3QgYm90aGVyIHJvdW5kaW5nIGxvdyBkb3VibGUuCgkqIGMtY3BwYnVpbHRpbi5jIChidWlsdGluX2RlZmluZV9mbG9hdF9jb25zdGFudHMpOiBUd2VhayBNQVgKCXdoZW4gZm10LT5wbmFuIDwgZm10LT5wLgoKMjAwNC0wMy0wNCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKEZVTkNUSU9OX0FSR19SRUdOT19QKTogRml4IHRvIGNoZWNrCglvbmx5IHJhbmdlIG9mIHZhbGlkIGFyZyByZWdpc3RlcnMgYW5kIGZpeGVkX3JlZ3MuCgoyMDA0LTAzLTA0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHRhcmdldC8xNDQwNgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoYWJzdGYyLCBhYnN0ZjIrMSk6IERlbGV0ZSBkZWZpbmVfaW5zbi4KCShhYnN0ZjIsIGFic3RmMl9pbnRlcm5hbCk6IE5ldyBkZWZpbmVfZXhwYW5kLgoKMjAwNC0wMy0wNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTQyMzUKCSogZXhwci5jIChjb252ZXJ0X21vdmUpOiBDb3B5IHRoZSBzb3VyY2UgdG8gYSBuZXcgcHNldWRvCgl3aGVuIGNvbnZlcnRpbmcgZnJvbSBhIHN1Yi13b3JkIHNvdXJjZSB0byBhIGxhcmdlci10aGFuLXdvcmQKCXJlZ2lzdGVyIHdoaWNoIGNvbmZsaWN0cyB3aXRoIHRoZSBzb3VyY2UuCgoyMDA0LTAzLTAzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIDEzNzI4CgkqIGMtZGVjbC5jIChkaWFnbm9zZV9taXNtYXRjaGVkX2RlY2xzKTogSXNzdWUgYW4gZXJyb3IgZm9yIHR3bwoJcGFyYW1ldGVycyB3aXRoIHRoZSBzYW1lIG5hbWUsIHVubGVzcyBvbmUgaXMgYSBmb3J3YXJkIGRlY2wuCglEbyBub3QgaXNzdWUgYSByZWR1bmRhbnQtcmVkZWNsYXJhdGlvbiB3YXJuaW5nIGZvciBmb3J3YXJkCglkZWNscyBvZiBwYXJhbWV0ZXJzLgoKMjAwNC0wMy0wNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aSAoKi1pYm0tYWl4Kik6IERvY3VtZW50IHVzZSBvZiBCYXNoIHRvIHNwZWVkIHVwCgljb25maWd1cmF0aW9uLgoKMjAwNC0wMy0wMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGdnYy16b25lLmMgKGdnY19wY2hfd3JpdGVfb2JqZWN0KTogRG9uJ3QgYWxpZ24gZmlsZSBwb2ludGVyLgoKMjAwNC0wMy0wNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX09QVEYpOiBEZWxldGUuCgkqIGMtb3B0cy5jIChUQVJHRVRfT1BURik6IERlZmluZS4KCjIwMDQtMDMtMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNzZWxpYi5jIChjc2VsaWJfZmluaXNoKTogRml4IGFub3RoZXIgbWlzcy1hcHBsaWNhdGlvbiBvZiBteSBwcmV2aW91cwoJcGF0Y2guCgoyMDA0LTAzLTAzICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCglBZGQgZnJhbWV3b3JrIHN1cHBvcnQgZm9yIGRhcndpbi4KCgkqIGMtaW5jcGF0aC5jOiBJbmNsdWRlIHRhcmdldC5oIGFuZCBtYWNobW9kZS5oLgoJKGFkZF9wYXRoKTogVXNlIGEgY29uc2lzdGVudCBzdHlsZSBmb3IgY3BwX2Rpci4gIEluaXRpYWxpemUKCXAtPmNvbnN0cnVjdCB0byAwLgoJKGFkZF9jcHBfZGlyX3BhdGgpOiBOZXcuCgkocmVnaXN0ZXJfaW5jbHVkZV9jaGFpbnMpOiBBZGQgdXNlIG9mIGV4dHJhX2luY2x1ZGVzIGNhbGxiYWNrLgoJKGhvb2tfdm9pZF9pbnQpOiBBZGQuCgkodGFyZ2V0X2NfaW5jcGF0aCk6IEFkZC4KCSogYy1pbmNwYXRoLmggKGFkZF9jcHBfZGlyX3BhdGgpOiBOZXcuCgkodGFyZ2V0X2NfaW5jcGF0aF9zKTogQWRkLgoJKHRhcmdldF9jX2luY3BhdGgpOiBBZGQuCgkoQ19JTkNQQVRIX0lOSVQpOiBBZGQuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9taXNzaW5nX2FyZ3VtZW50LAoJY19jb21tb25faGFuZGxlX29wdGlvbik6IEFkZCAtRiBhcmd1bWVudCBwcm9jZXNzaW5nLgoJKiBjLm9wdDogQWRkIC1GIGFyZ3VtZW50IHByb2Nlc3NpbmcuCgkqIGdjYy5jICh0cmFkX2NhcGFibGVfY3BwKTogQWRkIC1GIGFyZ3VtZW50IHByb2Nlc3NpbmcuCgkqIGNwcGZpbGVzLmMgKGZpbmRfZmlsZV9pbl9kaXIpOiBVcGRhdGUgdG8gdXNlIGNvbnN0cnVjdAoJY2FsbGJhY2suCgkoc2VhcmNoX3BhdGhfZXhoYXVzdGVkLCBjcHBfZ2V0X3BhdGgsIGNwcF9nZXRfYnVmZmVyLAoJY3BwX2dldF9wcmV2KTogTmV3LgoJKF9jcHBfZmluZF9maWxlKTogVXNlIHNlYXJjaF9wYXRoX2V4aGF1c3RlZC4KCShtYWtlX2NwcF9kaXIpOiBJbml0aWFsaXplIGNvbnN0cnVjdCB0byAwLgoJKiBjcHBsaWIuaCAobWlzc2luZ19oZWFkZXJfY2IKCWNwcF9nZXRfcGF0aCwgY3BwX2dldF9idWZmZXIsIGNwcF9nZXRfZmlsZSwgY3BwX2dldF9wcmV2KTogTmV3LgoJKGNwcF9jYWxsYmFja3MpOiBBZGQgbWlzc2luZ19oZWFkZXIKCShjcHBfZGlyKTogQWRkIGNvbnN0cnVjdC4KCSogdGFyZ2V0LWRlZi5oOiAoVEFSR0VUX09QVEYpOiBOZXcuCgkqIGhvb2tzLmMgKGhvb2tfdm9pZF9pbnQsIGhvb2tfdm9pZF9jaGFycHRyKTogQWRkLgoJKiBob29rcy5oIChob29rX3ZvaWRfaW50LCBob29rX3ZvaWRfY2hhcnB0cik6IEFkZC4KCSogTWFrZWZpbGUuaW4gKGMtaW5jcGF0aC5vKSA6IEFkZCAkKFRBUkdFVF9IKSBhbmQKCSQoTUFDSE1PREVfSCkgZGVwZW5kZW5jaWVzLgoJKiBkb2MvaW52b2tlLnRleGkgKERhcndpbiBPcHRpb25zKTogRG9jdW1lbnQgLUYuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfRVhUUkFfSU5DTFVERVMpOiBBZGQuCgkoVEFSR0VUX09QVEYpOiBBZGQuCgkqIGZpeC1oZWFkZXIuYyAodGFyZ2V0X2NfaW5jcGF0aCk6IEFkZC4KCgkqIGNvbmZpZy9kYXJ3aW4tYy5jOiBBZGQgYy1pbmNwYXRoLmggaW5jbHVkZS4KCSh1c2luZ19mcmFtZXdvcmtzLCBmaW5kX3N1YmZyYW1ld29ya19maWxlLAoJZmluZF9zdWJmcmFtZXdvcmtfaGVhZGVyLCBhZGRfc3lzdGVtX2ZyYW1ld29ya19wYXRoLAoJZnJhbWV3b3Jrc19pbl91c2UsIG51bV9mcmFtZXdvcmtzLCBtYXhfZnJhbWV3b3JrcywKCWFkZF9mcmFtZXdvcmssIGZpbmRfZnJhbWV3b3JrLCBzdHJ1Y3QgZnJhbWV3b3JrX2hlYWRlciwKCWZyYW1ld29ya19oZWFkZXJfZGlycywgZnJhbWV3b3JrX2NvbnN0cnVjdF9wYXRobmFtZSwKCWZpbmRfc3ViZnJhbWV3b3JrX2ZpbGUsIGFkZF9zeXN0ZW1fZnJhbWV3b3JrX3BhdGgsCglhZGRfZnJhbWV3b3JrX3BhdGgsIGZyYW1ld29ya19kZWZhdWx0cywKCWRhcndpbl9yZWdpc3Rlcl9mcmFtZXdvcmtzLCBmaW5kX3N1YmZyYW1ld29ya19oZWFkZXIpOiBBZGQuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoVEFSR0VUX0VYVFJBX0lOQ0xVREVTLCBUQVJHRVRfT1BURik6IE5ldy4KCShUQVJHRVRfT1BUSU9OX1RSQU5TTEFURV9UQUJMRSk6IEFkZCAtZnJhbWV3b3JrIHN1cHBvcnQuCgkoQ1BQX1NQRUMpOiBBZGQgX19BUFBMRV9DQ19fIHN1cHBvcnQuCgkqIHQtZGFyd2luIChkYXJ3aW4tYy5vKTogQWRkIGMtaW5jcGF0aC5oIGRlcGVuZGVuY3kuCgoyMDA0LTAzLTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjc2VsaWIuYyAoY3NlbGliX2ZpbmlzaCk6IEZpeCBtaXNzLWFwcGxpY2F0aW9uIG9mIG15IHByZXZpb3VzCglwYXRjaC4KCjIwMDQtMDMtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBob29rcy5jIChob29rX3RyZWVfdHJlZV9pZGVudGl0eSk6IE5ldy4KCSogaG9va3MuaDogQWRkIGEgcHJvdG90eXBlIGZvciBob29rX3RyZWVfdHJlZV9pZGVudGl0eS4KCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogVXNlIHRhcmdldG0ubWRfYXNtX2Nsb2JiZXJzCglpbnN0ZWFkIG9mIE1EX0FTTV9DTE9CQkVSUy4KCSogc3lzdGVtLmggKE1EX0FTTV9DTE9CQkVSUyk6IFBvaXNvbi4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfTURfQVNNX0NMT0JCRVJTKTogTmV3LgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEFkZCBUQVJHRVRfTURfQVNNX0NMT0JCRVJTLgoJKiB0YXJnZXQuaCAoZ2NjX3RhcmdldCk6IEFkZCBtZF9hc21fY2xvYmJlcnMuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoVEFSR0VUX01EX0FTTV9DTE9CQkVSUyk6IE5ldy4KCShpeDg2X21kX2FzbV9jbG9iYmVycyk6IE5ldy4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChNRF9BU01fQ0xPQkJFUlMpOiBSZW1vdmUuCgkqIGRvYy90bS50ZXhpIChNRF9BU01fQ0xPQkJFUlMpOiBDaGFuZ2UgdG8KCVRBUkdFVF9NRF9BU01fQ0xPQkJFUlMuCgoyMDA0LTAzLTAzICBTdHVhcnQgSGFzdGluZ3MgIDxzdHVhcnRAYXBwbGUuY29tPgoKCSogY29uZmlnLmdjYzogQXJyYW5nZSBmb3IgRGFyd2luL3g4NiB0byBidWlsZCBsaWJnY2NfZWguYS4KCjIwMDQtMDMtMDMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAobm9vdl9jb21wYXJlNjRfb3ApOiBGaXggdHlwby4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChBU01fRkxPQVQpOiBEZWxldGUuCgkoQVNNX0RPVUJMRSk6IExpa2V3aXNlLgoJKEFTTV9MT05HRE9VQkxFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9wYmQuaCAoQVNNX0lOVF9PUCk6IERlbGV0ZS4KCjIwMDQtMDMtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgb3B0LzEzODYyCgkqIGNzZWxpYi5jIChjc2VsaWJfcmVjb3JkX3NldHMpOiBEb24ndCByZWNvcmQgbXVsdGlwbGUgc2V0cyBpbgoJYXNtIGluc25zLgoKMjAwNC0wMy0wMyAgTW9zdGFmYSBIYWdvZyAgPG11c3RhZmFAaWwuaWJtLmNvbT4KCgkqIGNvbW1vbi5vcHQ6IEFkZCBkZXNjcmlwdGlvbiBvZiB0aGUgbmV3IC1mZ2NzZS1hZnRlci1yZWxvYWQgZmxhZy4KCgkqIGZsYWdzLmggKGZsYWdfZ2NzZV9hZnRlcl9yZWxvYWQpOiBEZWNsYXJhdGlvbiBvZiBnbG9iYWwgdmFyaWFibGUuCgoJKiBnY3NlLmMgKHJlZ191c2VkX29uX2VkZ2UgLHJlZ19zZXRfYmV0d2Vlbl9hZnRlcl9yZWxvYWRfcCwKCXJlZ191c2VkX2JldHdlZW5fYWZ0ZXJfcmVsb2FkX3AsIHJ0eCBnZXRfYXZhaWxfbG9hZF9zdG9yZV9yZWcsCglpc19qdW1wX3RhYmxlX2Jhc2ljX2Jsb2NrLCBiYl9oYXNfd2VsbF9iZWhhdmVkX3ByZWRlY2Vzc29ycywKCWdldF9iYl9hdmFpbF9pbnNuLCBoYXNoX3NjYW5fc2V0X2FmdGVyX3JlbG9hZCwKCWNvbXB1dGVfaGFzaF90YWJsZV9hZnRlcl9yZWxvYWQsIGVsaW1pbmF0ZV9wYXJ0aWFsbHlfcmVkdW5kYW50X2xvYWRzLAoJZ2NzZV9hZnRlcl9yZWxvYWQsIGdldF9iYl9hdmFpbF9pbnNuKTogTmV3IGZ1bmN0aW9ucyB0byBpbXBsZW1lbnQKCWdjc2UtYWZ0ZXItcmVsb2FkLgoJKGdjc2VfYWZ0ZXJfcmVsb2FkX21haW4pOiBOZXcgZnVuY3Rpb24sIHRoZSBtYWluIGVudHJ5IHBvaW50IHRvCglnY3NlLWFmdGVyLXJlbG9hZC4KCgkqIHJ0bC5oIChnY3NlX2FmdGVyX3JlbG9hZF9tYWluKTogRGVjbGFyYXRpb24gb2YgdGhlIG5ldyBmdW5jdGlvbi4KCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgdGhlIC1mZ2NzZS1hZnRlci1yZWxvYWQgZmxhZy4KCgkqIHRvcGxldi5jIChmbGFnX2djc2VfYWZ0ZXJfcmVsb2FkKTogSW5pdGlhbGl6YXRpb24uCgoJKiBwYXNzZXMuYyAocmVzdF9vZl9oYW5kbF9nY3NlMik6IENhbGwgZ2NzZV9hZnRlcl9yZWxvYWRfbWFpbi4KCgkqIHBhcmFtcy5kZWYgKFBBUkFNX0dDU0VfQUZURVJfUkVMT0FEX1BBUlRJQUxfRlJBQ1RJT04sCglQQVJBTV9HQ1NFX0FGVEVSX1JFTE9BRF9DUklUSUNBTF9GUkFDVElPTik6IE5ldyBwYXJhbWV0ZXJzIGZvciB0dW5pbmcKCXRoZSBnY3NlIGFmdGVyIHJlbG9hZCBvcHRpbWl6YXRpb24uCgoJKiBwYXJhbXMuaCAoR0NTRV9BRlRFUl9SRUxPQURfUEFSVElBTF9GUkFDVElPTiwKCUdDU0VfQUZURVJfUkVMT0FEX0NSSVRJQ0FMX0ZSQUNUSU9OKTogVHdvIG1hY3JvcyB0byBhY2Nlc3MgdGhlIHR1bmluZwoJcGFyYW1ldGVycy4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnRhdGlvbiBmb3IgdGhlIG5ldyBmbGFnIGdjc2UtYWZ0ZXItcmVsb2FkLgoKMjAwNC0wMy0wMyAgTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgoKCSogY29uZmlnL2FybS9pZWVlNzU0LWRmLlMgKG11bGRmMywgZGl2ZGYzKTogRml4IGRlbm9ybWFsaXphdGlvbiBvZgoJc21hbGwgbmVnYXRpdmUgdmFsdWVzLgoKMjAwNC0wMy0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY3NlbGliLmMgKGhhc2hfdGFibGUpOiBSZW1vdmUgR1RZIG1hcmtlci4KCShyZWdfdmFsdWVzKTogVHVybiBpbnRvIGFycmF5LgoJKHVzZWRfcmVncyk6IExpa2V3aXNlLgoJKG5fdXNlZF9yZWdzKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShyZWdfdmFsdWVzX29sZCk6IEtpbGwuCgkoY2xlYXJfdGFibGUpOiBVcGRhdGUgdXNlcyBvZiBhcnJheXMuCgkoY3NlbGliX2xvb2t1cCk6IExpa2V3aXNlLgoJKGNzZWxpYl9yZWNvcmRfc2V0KTogTGlrZXdpc2UuCgkoY3NlbGliX2luaXQpOiBMaWtld2lzZS4KCShjc2VsaWJfZmluaXNoKTogTGlrZXdpc2UuCgkoY3NlbGliX3VkcGF0ZV92YXJyYXlfc2l6ZXMpOiBLaWxsLgoJKiBjc2VsaWIuaCAoY3NlbGliX3VwZGF0ZV92YXJyYXlfc2l6ZXMpOiBLaWxsLgoKMjAwNC0wMy0wMyAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZsb3cuYyAoaW9yX3JlZ19jb25kLCBhbmRfcmVnX2NvbmQpOiBSZW1vdmUgc3RyYXkgIikiLgoKMjAwNC0wMy0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2djLWNvbW1vbi5jIChnZ2NfYWxsb2NfY2xlYXJlZF9zdGF0LCBnZ2NfcmVhbGxvY19zdGF0KToKCVJlbmFtZSBmcm9tIC4uLjsgbWFrZSBzdGF0aXN0aWNzIHRyYW5zcGFyZW50LgoJKGdnY19hbGxvY19jbGVhcmVkLCBnZ2NfcmVhbGxvY19zdGF0KTogLi4uIHRoZXNlLgoJKGxvY19kZXNjcmlwdG9yKTogTmV3IHN0cnVjdHVyZS4KCShoYXNoX2Rlc2NyaXB0b3IsIGVxX2Rlc2NyaXB0b3IsIGxvY19kZXNjcmlwdG9yLCBjbXBfc3RhdGlzdGljcywKCWFkZF9zdGF0aXN0aWNzKToKCU5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZ2djX3JlY29yZF9vdmVyaGVhZCwgZHVtcF9zdGF0aXN0aWNzKTogTmV3IGdsb2JhbCBmdW5jdGlvbi4KCSogZ2djLW5vbmUuYyAoZ2djX2FsbG9jX3R5cGVzX3N0YXQsIGdnY19hbGxvY19zdGF0LCBnZ2NfYWxsb2Nfem9uZV9zdGF0LAoJZ2djX2FsbG9jX2NsZWFyZWRfc3RhdCwgZ2djX3JlYWxsb2Nfc3RhdCwgZ2djX2FsbG9jX3R5cGVkX3N0YXQpOiBSZW5hbWUKCWZyb20gLi4uOyBhY2NlcHQgbG9jYXRpb25zCgkoZ2djX2FsbG9jX3R5cGVzLCBnZ2NfYWxsb2MsIGdnY19hbGxvY196b25lLCBnZ2NfYWxsb2NfY2xlYXJlZCwKCWdnY19yZWFsbG9jLCBnZ2NfYWxsb2NfdHlwZWQpOiAuLi4gdGhpcyBvbmUuCglmcm9tIC4uLjsgYWNjZXB0IGxvY2F0aW9ucwoJKiBnZ2MtcGFnZS5jIChnZ2NfYWxsb2NfdHlwZWRfc3RhdCwgZ2djX2FsbG9jX3pvbmVfc3RhdCwKCWdnY19hbGxvY19zdGF0KTogUmVuYW1lIGZyb20gLi4uIDsgcGFzcyBsb2NhdGlvbnMKCSogZ2djLXBhZ2UuYyAoZ2djX2FsbG9jX3R5cGVkLCBnZ2NfYWxsb2Nfem9uZSwgZ2djX2FsbG9jKToKCS4uLiB0aGlzIG9uZS4KCShnZ2NfYWxsb2Nfc3RhdCk6IFJlY29yZCBvdmVyZWhlYWQuCgkqIGdnYy5oIChnZ2NfYWxsb2NfdHlwZXMsIGdnY19hbGxvYywgZ2djX2FsbG9jX3pvbmUsIGdnY19hbGxvY19jbGVhcmVkLAoJZ2djX3JlYWxsb2MsIGdnY19hbGxvY190eXBlZCk6IFR1cm4gdG8gbWFjcm9zCgkoZ2djX2FsbG9jX3R5cGVzX3N0YXQsIGdnY19hbGxvY19zdGF0LCBnZ2NfYWxsb2Nfem9uZV9zdGF0LAoJZ2djX2FsbG9jX2NsZWFyZWRfc3RhdCwgZ2djX3JlYWxsb2Nfc3RhdCwgZ2djX2FsbG9jX3R5cGVkX3N0YXQpOiBEZWNsYXJlLgoJKGR1bXBfZ2djX2xvY19zYXRpc3RpY3MsIGdnY19yZWNvcmRfb3ZlcmVoZWFkKTogRGVjbGFyZS4KCSogbGFuZ2hvb2tzLmggKGxoZF9tYWtlX25vZGUpOiBEZWNsYXJlLgoJKExBTkdfSE9PS1NfTUFLRV9UWVBFKTogRGVmYXVsdCB0byBuZXcgZnVuY3Rpb24sCgkqIGxhbmdob29rcy5jIChsaGRfbWFrZV9ub2RlKTogTmV3LgoJKiBydGwuYyAocnR4X2FsbG9jX3N0YXQsIHN3YWxsb3dfY29weV9ydHhfc3RhdCk6IFJlbmFtZSBmcm9tIC4uLiA7IHBhc3MKCWxvY2F0aW9ucy4KCShydHhfYWxsb2MsIHN3YWxsb3dfY29weV9ydHgpOiAuLi4gdGhpcyBvbmUuCgkqIHJ0bC5oIChydHhfYWxsb2MsIHN3YWxsb3dfY29weV9ydHgpOiBUdXJuIHRvIG1hY3Jvcy4KCSogcnRsLmMgKHJ0eF9hbGxvY19zdGF0LCBzd2FsbG93X2NvcHlfcnR4X3N0YXQpOiBEZWNsYXJlLgoJKiB0b3BscGV2LmMgKGZpbmFsaXplKTogRHVtcCBzdGF0cy4KCSogdHJlZS5jIChtYWtlX25vZGVfc3RhdCwgY29weV9ub2RlX3N0YXQsIG1ha2VfdHJlZV92ZWNfc3RhdCwKCWJ1aWxkX3RyZWVfbGlzdF9zdGF0LCB0cmVlX2NvbnNfc3RhdCwgYnVpbGQ/X3N0YXQsICBidWlsZF9kZWNsX3N0YXQpOgoJUmVuYW1lIGZyb20gLi4uIDsgcGFzcyBsb2NhdG9ycy4KCShtYWtlX25vZGUsIGNvcHlfbm9kZSwgbWFrZV90cmVlX3ZlYywgYnVpbGRfdHJlZV9saXN0LCB0cmVlX2NvbnMsCglidWlsZD8sICBidWlsZF9kZWNsKTogRGVjbGFyZS4KCSogdHJlZS5oIChtYWtlX25vZGVfc3RhdCwgY29weV9ub2RlX3N0YXQsIG1ha2VfdHJlZV92ZWNfc3RhdCwKCWJ1aWxkX3RyZWVfbGlzdF9zdGF0LCB0cmVlX2NvbnNfc3RhdCwgYnVpbGQ/X3N0YXQsICBidWlsZF9kZWNsX3N0YXQpOgoJRGVjbGFyZS4KCShtYWtlX25vZGUsIGNvcHlfbm9kZSwgbWFrZV90cmVlX3ZlYywgYnVpbGRfdHJlZV9saXN0LCB0cmVlX2NvbnMsCglidWlsZD8sICBidWlsZF9kZWNsKTogTmV3IG1hY3Jvcy4KCSogTWFrZWZpbGUuaW4gKFJUTF9ILCBUUkVFX0gpOiBBZGQgc3RhdGlzdGljcy5oIGRlcGVuZGVuY3kuCgkqIHN0YXRpc3RpY3MuaDogTmV3IGZpbGUuCgoyMDA0LTAzLTAzICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQGRzMi5wZy5nZGEucGw+CgkgICAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChNQVNLX0ZJWF9TQjEpOiBCdW1wLgoJKE1BU0tfRklYX1I0NDAwLCBUQVJHRVRfRklYX1I0NDAwKTogTmV3IG1hY3Jvcy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1maXgtcjQ0MDAgYW5kIC1tbm8tZml4LXI0NDAwLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfb3V0cHV0X2RpdmlzaW9uKTogRmlsbCB0aGUgYnJhbmNoIGRlbGF5CglzbG90IHdpdGggYSBub3AgaWYgVEFSR0VUX0ZJWF9SNDAwMC4gIEV4dGVuZCBSNDAwMCB3b3JrYXJvdW5kcyB0bwoJVEFSR0VUX0ZJWF9SNDQwMC4KCShtaXBzX291dHB1dF9kaXZpc2lvbik6IEFkanVzdCBhY2NvcmRpbmdseS4KCShvdmVycmlkZV9vcHRpb25zKTogTWFrZSAtbWFyY2g9cjQ0MDAgaW1wbHkgLW1maXgtcjQ0MDAgYnkgZGVmYXVsdC4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbWZpeC1yNDQwMCBhbmQgbmV3IGVycmF0YSB3b3JrYXJvdW5kcy4KCjIwMDQtMDMtMDMgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBhbGlhcy5jIChydHhfZXF1YWxfZm9yX21lbXJlZl9wKTogVXNlIHByZWRpY2F0ZXMKCXRvIHRlc3QgcnR4IGNsYXNzZXMgYW5kIG5ldyBydHggY2xhc3MgY29kZXMsIHBvc3NpYmx5CglzcGxpdHRpbmcgY29uZGl0aW9uYWxzIHRoYXQgdGVzdGVkIGFnYWluc3QgJzwnIGFuZCAnbycuCgkqIGNhbGxlci1zYXZlLmMgKHNhdmVfY2FsbF9jbG9iYmVyZWRfcmVncyk6IExpa2V3aXNlLgoJKiBjb21iaW5lLmMgKGNvbnRhaW5zX211bGRpdiwgZmluZF9zcGxpdF9wb2ludCwgc3Vic3QsCgljb21iaW5lX3NpbXBsaWZ5X3J0eCwgc2ltcGxpZnlfaWZfdGhlbl9lbHNlLAoJc2ltcGxpZnlfc2V0LCBzaW1wbGlmeV9sb2dpY2FsLCBleHBhbmRfY29tcG91bmRfb3BlcmF0aW9uLAoJbWFrZV9jb21wb3VuZF9vcGVyYXRpb24sIGlmX3RoZW5fZWxzZV9jb25kLCBrbm93bl9jb25kLAoJYXBwbHlfZGlzdHJpYnV0aXZlX2xhdywgY2FjaGVkX25vbnplcm9fYml0cywKCWNhY2hlZF9udW1fc2lnbl9iaXRfY29waWVzLCBzaW1wbGlmeV9zaGlmdF9jb25zdCwKCWdlbl9iaW5hcnksIHNpbXBsaWZ5X2NvbXBhcmlzb24sIHVwZGF0ZV90YWJsZV90aWNrLAoJcmVjb3JkX3ZhbHVlX2Zvcl9yZWcsIGdldF9sc2F0X3ZhbHVlX3ZhbGlkYXRlKTogTGlrZXdpc2UuCgkqIGNzZS5jIChtZW50aW9uX3JlZ3MsIGZpbmRfYmVzdF9hZGRyLCBmaW5kX2NvbXBhcmlzb25fYXJncywKCWZvbGRfcnR4LCBjc2VfaW5zbiwgaW52YWxpZGF0ZV9tZW1vcnksIGNzZV9iYXNpY19ibG9jayk6CglMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoY29weV9pbnNuXzEpOiBMaWtld2lzZS4KCSogZXhwci5jIChmb3JjZV9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbiwgZ2V0X21lbV9leHByX2Zyb21fb3ApOiBMaWtld2lzZS4KCSogZmxvdy5jIChub3RpY2Vfc3RhY2tfcG9pbnRlcl9tb2RpZmljYXRpb25fMSwKCWludmFsaWRhdGVfbWVtc19mcm9tX2F1dG9pbmMsIGlvcl9yZWdfY29uZCwgbm90X3JlZ19jb25kLAoJYW5kX3JlZ19jb25kLCBlbGltX3JlZ19jb25kKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHVwZGF0ZV9lcGlsb2d1ZV9jb25zdHMpOiBMaWtld2lzZS4KCSogZ2VuYXR0cnRhYi5jIChhdHRyX3J0eF8xKTogTGlrZXdpc2UuCgkqIGdlbm9waW5pdC5jIChnZW5faW5zbik6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoc3Vic3RfY29uc3RhbnRzKTogTGlrZXdpc2UuCgkqIGp1bXAuYyAocmV2ZXJzZWRfY29tcGFyaXNvbl9jb2RlX3BhcnRzLAoJcmV2ZXJzZWRfY29tcGFyaXNvbl9jb2RlLCBkZWxldGVfcmVsYXRlZF9pbnNucywKCXJ0eF9yZW51bWJlcmVkX2VxdWFsX3ApOiBMaWtld2lzZS4KCSogbG9jYWwtYWxsb2MuYyAoYmxvY2tfYWxsb2MpOiBMaWtld2lzZS4KCSogbG9vcC5jIChydHhfZXF1YWxfZm9yX3ByZWZldGNoX3AsIG1heWJlX2VsaW1pbmF0ZV9iaXYsCgljYW5vbmljYWxpemVfY29uZGl0aW9uKTogTGlrZXdpc2UuCgkqIGxvb3AtaXYuYyAoc2ltcGxpZnlfdXNpbmdfY29uZGl0aW9ucywgaXZfbnVtYmVyX29mX2l0ZXJhdGlvbnMpOgoJTGlrZXdpc2UuCgkqIG9wdGFicy5jIChhZGRfZXF1YWxfbm9kZSwgZXhwYW5kX2Jpbm9wKTogTGlrZXdpc2UuCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBMaWtld2lzZS4KCSogcmEtZGVidWcuYyAocmFfcHJpbnRfcnR4XzJvcCwgcmFfcHJpbnRfcnR4KTogTGlrZXdpc2UuCgkqIHJlY29nLmMgKHZhbGlkYXRlX3JlcGxhY2VfcnR4XzEsIGNvbXBhcmlzb25fb3BlcmF0b3IsCglvZmZzZXR0YWJsZV9hZGRyZXNzX3AsIGNvbnN0cmFpbl9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiByZWctc3RhY2suYyAoc3dhcF9ydHhfY29uZGl0aW9uXzEsIHN1YnN0X3N0YWNrX3JlZ3NfcGF0KToKCUxpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChzY2FuX29uZV9pbnNuKTogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYyAoc3RhYmxlX2FuZF9ub19yZWdzX2J1dF9mb3JfcCk6IExpa2V3aXNlLgoJKiByZWdyZW5hbWUuYyAoa2lsbF9hdXRvaW5jX3ZhbHVlKTogTGlrZXdpc2UuCgkqIHJlbG9hZC5jIChmaW5kX3JldXNhYmxlX3JlbG9hZCwgZmluZF9yZWxvYWRzLAoJcmVnX292ZXJsYXBfbWVudGlvbmVkX2Zvcl9yZWxvYWRfcCk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKGdlbl9yZWxvYWQsIGRlbGV0ZV9hZGRyZXNzX3JlbG9hZHNfMSk6IExpa2V3aXNlLgoJKiBydGwuYyAoY29weV9ydHgpOiBMaWtld2lzZS4KCSogcnRsLmggKENPTlNUQU5UX1AsIElOU05fUCk6IExpa2V3aXNlLgoJKiBydGxhbmFsLmMgKGNvbW11dGF0aXZlX29wZXJhbmRfcHJlY2VkZW5jZSk6IExpa2V3aXNlLgoJKiBzY2hlZC1kZXBzLmMgKGNvbmRpdGlvbnNfbXV0ZXhfcCk6IExpa2V3aXNlLgoJKiBzY2hlZC1yZ24uYyAoaXNfY2ZnX25vbnJlZ3VsYXIpOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2dlbl9iaW5hcnksCglzaW1wbGlmeV9nZW5fcmVsYXRpb25hbCwgc2ltcGxpZnlfcmVwbGFjZV9ydHgsCglzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24sIHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24sCglzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbiwgc2ltcGxpZnlfcnR4KTogTGlrZXdpc2UuCgkqIHVucm9sbC5jIChyZWdfZGVhZF9hZnRlcl9sb29wKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9zd2FwcGVkX2NvbXBhcmlzb25fb3BlcmF0b3IsCglwcmludF9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcmMvYXJjLmMgKHByb3Blcl9jb21wYXJpc29uX29wZXJhdG9yKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9hcm1fYWRkcmVzc19jb3N0LCBhcm1fc2VsZWN0X2NjX21vZGUpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKF9yZWdfdW51c2VkX2FmdGVyKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9pZmN2dF9tb2RpZnlfdGVzdHMsCglmcnZfaWZjdnRfbW9kaWZ5X2luc24sIGZydl9wYWNrX2luc24pOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2NvbXBhcmlzb25fb3BlcmF0b3IsCglpeDg2X2NhcnJ5X2ZsYWdfb3BlcmF0b3IsIGZjbW92X2NvbXBhcmlzb25fb3BlcmF0b3IsCglhcml0aF9vcl9sb2dpY2FsX29wZXJhdG9yLCBwcmludF9vcGVyYW5kLAoJaXg4Nl9leHBhbmRfYmluYXJ5X29wZXJhdG9yLCBpeDg2X2JpbmFyeV9vcGVyYXRvcl9vayk6CglMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAobm90X3Bvc3RpbmNfbWVtb3J5X29wZXJhbmQsCglpYTY0X3ByaW50X29wZXJhbmQsIHVwZGF0ZV9zZXRfZmxhZ3MsIGVycmF0YV9lbWl0X25vcHMpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUywKCUNPTlNUUkFJTlRfT0tfRk9SX1MpOiBMaWtld2lzZS4KCSogY29uZmlnL2lwMmsvaXAyay5jIChtZHJfcmVzZXF1ZW5jZV94eV95eCwKCW1kcl90cnlfbW92ZV9kcF9yZWxvYWQsIGlwMmtfY2hlY2tfY2FuX2FkanVzdF9zdGFja19yZWYsCglpcDJrX3hleHBfbm90X3VzZXNfcmVnX2Zvcl9tZW0sIGlwMmtfeGV4cF9ub3RfdXNlc19yZWdfcCwKCWlwMmtfY29tcG9zaXRlX3hleHBfbm90X3VzZXNfcmVnX3AsIGlwMmtfdW5hcnlfb3BlcmF0b3IpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmMgKGNtcF9vcCwgc3ltYm9saWNfZXhwcmVzc2lvbl9wLAoJZXFuZV9jb21wYXJpc29uX29wZXJhdG9yLCBzaWduZWRfY29tcGFyaXNvbl9vcGVyYXRvcik6CglMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChjbXBfb3AsIHN5bWJvbGljX2V4cHJlc3Npb25fcCk6CglMaWtld2lzZS4KCSogY29uZmlnL21taXgvbW1peCAobW1peF9mb2xkYWJsZV9jb21wYXJpc29uX29wZXJhdG9yLAoJbW1peF9jb21wYXJpc29uX29wZXJhdG9yKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5jIChocHBhX2xlZ2l0aW1pemVfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChzdG13X29wZXJhdGlvbiwKCWJyYW5jaF9jb21wYXJpc29uX29wZXJhdG9yLCB0cmFwX2NvbXBhcmlzb25fb3BlcmF0b3IsCgljY3JfYml0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFNFTEVDVF9DQ19NT0RFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9hbGNfY29tcGFyaXNvbiwKCXMzOTBfc2xiX2NvbXBhcmlzb24pOkwgTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChnZW5fYmxvY2tfcmVkaXJlY3QsIHJlZ191bnVzZWRfYWZ0ZXIpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChlcV9vcl9uZXEsIG5vcm1hbF9jb21wX29wZXJhdG9yLAoJbm9vdl9jb21wYXJlX29wLCBub292X2NvbXBhcmU2NF9vcCwgdjlfcmVnY21wX29wLAoJZW1pdF9oYXJkX3RmbW9kZV9vcGVyYXRpb24sIHJlZ191bnVzZWRfYWZ0ZXIpCgkqIGRvYy9tZC50ZXhpLCBkb2MvcnRsLnRleGk6IExpa2V3aXNlLgoKCSogcmEtZGVidWcuYzogQWRkIDIwMDQgdG8gbGlzdCBvZiBjb3B5cmlnaHQgeWVhcnMuCgkqIHVucm9sbC5jOiBMaWtld2lzZS4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfbG9naWNhbCk6IFJlbW92ZSBkdW1teSB0ZXN0LAoJKGFwcGx5X2Rpc3RyaWJ1dGl2ZV9sYXcpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJR0VUX0NPREUgKHgpID09IEFORCBzbyB4IGlzIGEgY29tbXV0YXRpdmUgYmluYXJ5IG9wLgoJKiBqdW1wLmMgKGRlbGV0ZV9yZWxhdGVkX2luc25zKTogc2ltcGxpZnkgbG9vcAoJY29uZGl0aW9uLCBtb3ZlIHRlc3Rpbmcgb2YgUlRYIGNvZGVzIGluc2lkZSB0aGUgbG9vcC4KCShydHhfcmVudW1iZXJlZF9lcXVhbF9wKTogZG8gbm90IHVzZSBSVFhfQ09ERS4KCSogcnRsLmMgKHJ0eF9jbGFzcyk6IERlY2xhcmUgYXMgZW51bSBydHhfY2xhc3MuCgkqIHJ0bC5kZWYgKEVRLCBORSwgVU5FUSwgTFRHVCwgVU5PUkRFUkVELCBPUkRFUkVEKToKCU1vdmUgdG8gUlRYX0NPTU1fQ09NUEFSRSBjbGFzcy4KCShISUdILCBTWU1CT0xfUkVGLCBMQUJFTF9SRUYsIENPTlNULCBDT05TVF9JTlQsIENPTlNUX0RPVUJMRSk6CglNb3ZlIHRvIFJUWF9DT05TVF9PQkogY2xhc3MuCgkqIHJ0bC5oIChlbnVtIHJ0eF9jbGFzcyk6IE5ldyBkZWNsYXJhdGlvbiwKCShSVFhfT0JKX01BU0ssIFJUWF9PQkpfUkVTVUxULCBSVFhfQ09NUEFSRV9NQVNLLAoJUlRYX0NPTVBBUkVfUkVTVUxULCBSVFhfQVJJVEhNRVRJQ19NQVNLLCBSVFhfQVJJVEhNRVRJQ19SRVNVTFQsCglSVFhfQklOQVJZX01BU0ssIFJUWF9CSU5BUllfUkVTVUxULCBSVFhfQ09NTVVUQVRJVkVfTUFTSywKCVJUWF9DT01NVVRBVElWRV9SRVNVTFQsIFJUWF9OT05fQ09NTVVUQVRJVkVfUkVTVUxULAoJUlRYX0VYUFJfRklSU1QsIFJUWF9FWFBSX0xBU1QsIFVOQVJZX1AsIEJJTkFSWV9QLAoJQVJJVEhNRVRJQ19QLCBDT01NVVRBVElWRV9BUklUSE1FVElDX1AsIENPTVBBUklTT05fUCwKCVNXQVBQQUJMRV9PUEVSQU5EU19QLCBOT05fQ09NTVVUQVRJVkVfUCwgQ09NTVVUQVRJVkVfUCwKCU9CSkVDVF9QKTogTmV3IG1hY3Jvcy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKG5vb3ZfY29tcGFyZV9vcCk6IFJlbW92ZSByZWdpc3RlcgoJZnJvbSBwYXJhbWV0ZXIuCgoyMDA0LTAzLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdGFyZ2V0Lmg6IFJlbW92ZSB0ZXhpIGphcmdvbnMgaW4gY29tbWVudHMuCgoyMDA0LTAzLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc20gKF9fX2ZpeHVuc3Nmc2kpOiBDaGFuZ2UgdGhlCgl0aHJlc2hvbGQgdG8gMHg0Zi4KCglSZXZlcnQ6CgkyMDA0LTAyLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoJKiBjb25maWcvaDgzMDAvZml4dW5zc2ZzaS5jIChfX2ZpeHVuc3Nmc2kpOiBFbmFibGUgb24gSDgvMzAwCglhcyB3ZWxsLgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbSAoX19fZml4dW5zc2ZzaSk6IFJlbW92ZS4KCSogY29uZmlnL2g4MzAwL3QtaDgzMDAgKExJQjFBU01GVU5DUyk6IFJlbW92ZSBfZml4dW5zc2ZzaV9hc20uCgoyMDA0LTAzLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL21kLnRleGkgKGNicmFuY2htb2RlNCk6IE5ldy4KCjIwMDQtMDMtMDIgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwczE2LlM6IENoYW5nZSBmaXhzZnNpIGFuZCBmaXhkZnNpIHRvCglmaXhfdHJ1bmMuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19pbml0X2xpYmZ1bmNzKTogQ2hhbmdlIGFjY29yZGluZ2x5LgoJKiBjb25maWcvbWlwcy90LWVsZiAoTElCMUFTTUZVTkNTKTogRGl0dG8uCgkqIGNvbmZpZy9taXBzL3QtaXNhMzI2NCAoTElCMUFTTUZVTkNTKTogRGl0dG8uCgkqIGNvbmZpZy9taXBzL3QtcjM5MDAgKExJQjFBU01GVU5DUyk6IERpdHRvLgoKMjAwNC0wMy0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzExNzY3CgkqIGNvdmVyYWdlLmMgKGNvdmVyYWdlX2NvdW50ZXJfcmVmKTogU2V0IE1FTV9OT1RSQVBfUC4KCSogb3B0YWJzLmMgKHByZXBhcmVfY21wX2luc24pOiBGb3JjZSB0cmFwcGluZyBtZW1vcmllcyB0byByZWdpc3RlcnMKCWJlZm9yZSB0aGUgY29tcGFyZSwgaWYgZmxhZ19ub25fY2FsbF9leGNlcHRpb25zLgoKMjAwNC0wMy0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzE0MzI3CgkqIHN0bXQuYyAoZXhwYW5kX2NvbXB1dGVkX2dvdG8pOiBEbyBkb19wZW5kaW5nX3N0YWNrX2FkanVzdCBiZWZvcmUKCWVtaXR0aW5nIHRoZSBsYWJlbCwgbm90IGFmdGVyLgoKMjAwNC0wMy0wMiAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKG02OGhjMTFfYWRkcl9tb2RlKTogTmV3IHZhcmlhYmxlLgoJKG02OGhjMTFfbW92X2FkZHJfbW9kZSk6IExpa2V3aXNlLgoJKG02OGhjMTFfb3ZlcnJpZGVfb3B0aW9ucyk6IEluaXRpYWxpemUgdGhlbSBiYXNlZCBvbiB0YXJnZXQuCgkocmVnaXN0ZXJfaW5kaXJlY3RfcCk6IEFsbG93IGEgTUVNIGZvciBpbmRpcmVjdCBhZGRyZXNzaW5nIG1vZGVzIGFuZAoJdXNlIGZsYWdzIHRvIGNvbnRyb2wgd2hhdCBpcyBhbGxvd2VkLgoJKG02OGhjMTFfc21hbGxfaW5kZXhlZF9pbmRpcmVjdF9wKTogVXNlIG02OGhjMTFfbW92X2FkZHJfbW9kZSBmb3IKCXN1cHBvcnRlZCBhZGRyZXNzaW5nIG1vZGVzLgoJKG02OGhjMTFfcmVnaXN0ZXJfaW5kaXJlY3RfcCk6IFVzZSBtNjhoYzExX2FkZHJfbW9kZS4KCShnb19pZl9sZWdpdGltYXRlX2FkZHJlc3NfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShtNjhoYzExX2luZGlyZWN0X3ApOiBMaWtld2lzZSBhbmQgY2hlY2sgdGhlIG1vZGUuCgkocHJpbnRfb3BlcmFuZCk6IEFsbG93IGEgKE1FTSAoTUVNKSkgYW5kIGdlbmVyYXRlIGluZGlyZWN0IGFkZHJlc3NpbmcuCgoyMDA0LTAzLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYnVpbHRpbnMuYyAoQlVJTFRJTl9TRVRKTVBfRlJBTUVfVkFMVUUpOiBSZW1vdmUuCgkoZXhwYW5kX2J1aWx0aW5fc2V0am1wX3NldHVwKTogVXNlCgl0YXJnZXRtLmJ1aWx0aW5fc2V0am1wX2ZyYW1lX3ZhbHVlIGluc3RlYWQgb2YKCUJVSUxUSU5fU0VUSk1QX0ZSQU1FX1ZBTFVFLgoJKiBzeXN0ZW0uaCAoQlVJTFRJTl9TRVRKTVBfRlJBTUVfVkFMVUUpOiBQb2lzb24uCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0JVSUxUSU5fU0VUSk1QX0ZSQU1FX1ZBTFVFKTogTmV3LgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEFkZCBUQVJHRVRfQlVJTFRJTl9TRVRKTVBfRlJBTUVfVkFMVUUuCgkqIHRhcmdldC5oIChnY2NfdGFyZ2V0KTogQWRkIGJ1aWx0aW5fc2V0am1wX2ZyYW1lX3ZhbHVlLgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9idWlsdGluX3NldGptcF9mcmFtZV92YWx1ZSk6IE5ldy4KCSogdGFyZ2hvb2tzLmg6IEFkZCBhIHByb3RvdHlwZSBmb3IKCWRlZmF1bHRfYnVpbHRpbl9zZXRqbXBfZnJhbWVfdmFsdWUuCgkqIGRvYy90bS50ZXhpIChCVUlMVElOX1NFVEpNUF9GUkFNRV9WQUxVRSk6IENoYW5nZSB0bwoJVEFSR0VUX0JVSUxUSU5fU0VUSk1QX0ZSQU1FX1ZBTFVFLgoKMjAwNC0wMy0wMiAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLm1kIChtb3ZlIHBlZXBob2xlMik6IE5ldyBwZWVwaG9sZXMgdG8gb3B0aW1pemUKCXNlcXVlbmNlcyBvZiBtb3Zlcy4KCShhZGQgcGVlcGhvbGVzKTogTmV3IHBlZXBob2xlcyB0byBvcHRpbWl6ZSBzZXF1ZW5jZXMgYWRkaW5nIHNtYWxsCgljb25zdGFudHMuCgkoYnNldCBwZWVwaG9sZXMpOiBOZXcgcGVlcGhvbGVzIHRvIHRyYW5zZm9ybSBhbiBPUiBpbiBhIGJzZXQgZm9ybQoJKGJjbHIgcGVlcGhvbGVzKTogTGlrZXdpc2UgZm9yIGJjbHIgZm9ybS4KCShjbXAgcGVlcGhvbGVzKTogTmV3IHBlZXBob2xlcyB0byBhdm9pZCByZWdpc3RlciBjb3BpZXMgd2hlbiBjb21wYXJpbmcuCgoyMDA0LTAzLTAyICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEubWQgKCIqcHVzaGRpX2ludGVybmFsIik6IE5ldyBpbnNuIGFuZCBzcGxpdAoJdG8gc2VwYXJhdGUgcHVzaCBmcm9tIG1vdmVzLgoJKCIqcHVzaGRmX2ludGVybmFsIik6IExpa2V3aXNlLgoJKCIqcHVzaHNmX2ludGVybmFsIik6IExpa2V3aXNlLgoJKCIqcHVzaHNpX2ludGVybmFsIik6IExpa2V3aXNlLgoJKCJtb3ZkaV9pbnRlcm5hbCIpOiBVc2UgZGVmaW5lX2luc25fYW5kX3NwbGl0OyBub24gcHVzaCBvcGVyYW5kLgoJKCJtb3ZkZl9pbnRlcm5hbCIpOiBMaWtld2lzZS4KCSgibW92c2ZfaW50ZXJuYWwiKTogTGlrZXdpc2UuCgkoIm1vdnNpX2ludGVybmFsIik6IExpa2V3aXNlLgoJKCIqbW92aGlfNjhoYzEyIiwgIiphZGRoaTNfNjhoYzEyIik6IEZpeCBhbmQgdHVuZSBjb25zdHJhaW50cwoJKCIqYWRkaGkzIiwgIipzdWJoaTMiLCAiKmFuZGhpM19tZW0iLCAiKmlvcmhpM19tZW0iKTogTGlrZXdpc2UuCgkoIiphc2hsc2kzX2NvbnN0MSIsICIqbHNocnNpM19jb25zdDEiKTogTGlrZXdpc2UuCgoyMDA0LTAzLTAyICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEubWQgKCJ0c3RxaV96X3VzZWQiKTogVXNlIGRlZmluZV9pbnNuX2FuZF9zcGxpdC4KCSgiY21waGlfel91c2VkIiwgImNtcHFpX3pfdXNlZCIpOiBMaWtld2lzZS4KCSgibW92c3RyaWN0c2kiLCAibW92c3RyaWN0aGkiLCAibW92c3RyaWN0cWkiKTogTGlrZXdpc2UuCgkoImFuZGRpMyIsICJhbmRzaTMiLCAiaW9yZGkzIiwgImlvcnNpMyIpOiBMaWtld2lzZS4KCSgieG9yZGkzIiwgInhvcnNpMyIsICIqbG9naWNhbHNpM196ZXh0aGkiKTogTGlrZXdpc2UuCgkoIipsb2dpY2Fsc2kzX3pleHRxaSIsICIqbG9naWNhbGhpM196ZXh0aGlfYXNoaWZ0OCIpOiBMaWtld2lzZS4KCSgibG9naWNhbGhpM196ZXh0aGkiLCAiKmxvZ2ljYWxzaTNfc2lsc2hyMTYiKTogTGlrZXdpc2UuCgkoIipsb2dpY2Fsc2kzX3NpbHNobDE2IiwgIipsb2dpY2Fsc2kzX3NpbHNobDE2X3pleHQiKTogTGlrZXdpc2UuCgkoIiphc2hsZGkzX2NvbnN0MzIiLCAiKmFzaGxkaTNfY29uc3QxIiwgImFkZHNpX3NpbHNocjE2Iik6IExpa2V3aXNlLgoJKCJhZGRzaV9hbmRzaHIxNiIsICIqYXNobHNpM19jb25zdDE2X3pleHRoaSIpOiBMaWtld2lzZS4KCSgiKmxzaHJkaTNfY29uc3QzMiIsICIqbHNocmRpX2NvbnN0MSIpOiBMaWtld2lzZS4KCjIwMDQtMDMtMDIgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5tZCAoU09GVF9UTVBfUkVHTlVNKTogRGVmaW5lLgoJKFNPRlRfWFlfUkVHTlVNKTogRGVmaW5lLgoJKGNtcCBzcGxpdCk6IFVzZSB0aGUgYWJvdmUgaW5zdGVhZCBvZiBoYXJkIGNvZGVkIG51bWJlcnMuCgkoOC1iaXQgb3Agc3BsaXQpOiBObyBuZWVkIHRvIGNoZWNrIHRoZSBtb2RlOyBhbGxvdyBRX1JFRy4KCShhc2hpZnQgc3BsaXQpOiBBZGp1c3QgdGhlIGZpcnN0IG9wZXJhbmQgaWYgaXQgdXNlcyB0aGUgU1AgYW5kIHdlCglhcmUgcHVzaGluZyB0aGUgc2hpZnRlZCB2YWx1ZS4KCShwbHVzIHNoaWZ0IHNwbGl0KTogRml4IHdoZW4gYSBzb3VyY2UgaXMgaW4gcmVnaXN0ZXIgRCtYLgoJKCJkb2xvb3BfZW5kIik6IFBhc3MgZHVtbXkgYXJndW1lbnRzIHRvIGdlbl9ydHhfTkUuCgoyMDA0LTAzLTAyICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9jaGVja196X3JlcGxhY2VtZW50KTogRml4IHdoZW4KCWNvbXBhcmluZyB3aXRoIFogcmVnaXN0ZXIuCgoyMDA0LTAzLTAyICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBjZmdsb29wLmggKHN0cnVjdCBsb29wX2Rlc2MpOiBSZW1vdmVkLgoJKHN0cnVjdCBsb29wKTogRmllbGRzIHNpbXBsZSwgZGVzYyBhbmQgaGFzX2Rlc2MgcmVtb3ZlZC4KCShzaW1wbGVfbG9vcF9wLCBjb3VudF9sb29wX2l0ZXJhdGlvbnMpOiBEZWNsYXJhdGlvbiByZW1vdmVkLgoJKiBjZmdsb29wYW5hbC5jIChzdHJ1Y3QgdW5tYXJrX2FsdGVyZWRfaW5zbl9kYXRhKTogUmVtb3ZlZC4KCSh1bm1hcmtfYWx0ZXJlZCwgYmxvY2tzX2ludmFyaWFudF9yZWdpc3RlcnMsIHVubWFya19hbHRlcmVkX2luc24KCWJsb2Nrc19zaW5nbGVfc2V0X3JlZ2lzdGVycywgaW52YXJpYW50X3J0eF93cnRvX3JlZ3NfcF9oZWxwZXIsCglpbnZhcmlhbnRfcnR4X3dydG9fcmVnc19wLCB0ZXN0X2Zvcl9pdGVyYXRpb24sIGNvbnN0YW50X2l0ZXJhdGlvbnMsCglzaW1wbGVfbG9vcF9leGl0X3AsIHZhcmlhYmxlX2luaXRpYWxfdmFsdWUsIHZhcmlhYmxlX2luaXRpYWxfdmFsdWVzLAoJc2ltcGxlX2NvbmRpdGlvbl9wLCBzaW1wbGVfaW5jcmVtZW50LCBjb3VudF9zdHJhbmdlX2xvb3BfaXRlcmF0aW9ucywKCWludmVyc2UsIGZpdHNfaW5fbW9kZV9wLCBzaW1wbGVfbG9vcF9wLCBjb3VudF9sb29wX2l0ZXJhdGlvbnMpOgoJUmVtb3ZlZC4KCSogbG9vcC1pdi5jIChjaGVja19zaW1wbGVfZXhpdCwgZmluZF9zaW1wbGVfZXhpdCk6IFVwZGF0ZSBjb21tZW50cy4KCjIwMDQtMDMtMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnZW5hdHRydGFiLmM6IERvbid0IGhhbmRsZSBNQVRDSF9JTlNOLgoJKiBnZW5yZWNvZy5jOiBMaWtld2lzZS4KCSogZ2Vuc3VwcG9ydC5jOiBMaWtld2lzZS4KCSogcnRsLmRlZiAobWF0Y2hfaW5zbik6IFJlbW92ZS4KCSogZG9jL21kLnRleGkgKG1hdGNoX2luc24sIG1hdGNoX2luc24yKTogUmVtb3ZlLgoKMjAwNC0wMy0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9jLXRyZWUudGV4aSAoREVDTF9BU1NFTUJMRVJfTkFNRSk6IE1lbnRpb24gdGhhdCB1c2luZyB0aGlzCgltYWNybyByZXN1bHRzIGluIG1lbW9yeSBhbGxvY2F0aW9uLgoKMjAwNC0wMy0wMiAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZy9mcmVlYnNkLXNwZWMuaCAoRkJTRF9EWU5BTUlDX0xJTktFUik6IEFkZC4KCSogY29uZmlnL2FscGhhL2ZyZWVic2QuaCAoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogRGVmaW5lCgklKGZic2RfZHluYW1pY19saW5rZXIpLAoJKExJTktfU1BFQyk6IFVzZSAlKGZic2RfZHluYW1pY19saW5rZXIpLCBhbmQgc3luYyBzdHlsZSB3aXRoCgljb25maWcvaTM4Ni9mcmVlYnNkLmgKCSogY29uZmlnL2FybS9mcmVlYnNkLmg6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmg6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkNjQuaDogRGl0dG8uCgkqIGNvbmZpZy9pYTY0L2ZyZWVic2QuaDogRGl0dG8uCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaDogRGl0dG8uCgkqIGNvbmZpZy9zcGFyYy9mcmVlYnNkLmg6IERpdHRvLgoKMjAwNC0wMy0wMiAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKCotKi1mcmVlYnNkKik6IFVwZGF0ZSB0YXJnZXQgaW5mb3JtYXRpb24uCgoyMDA0LTAzLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcnRsLmRlZiAoZGVmaW5lX2NvbWJpbmUpOiBSZW1vdmUuCgoyMDA0LTAzLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBUd2VhayBmb3JtYXR0aW5nLgoKMjAwNC0wMy0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKmNtcGhpX2g4MzAwKTogUmVuYW1lIHRvCgkqY21waGlfaDgzMDBfem52Yy4KCSgqY21waGlfaDgzMDBocyk6IFJlbmFtZSB0byAqY21waGlfaDgzMDBoc196bnZjLgoKMjAwNC0wMy0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBib290c3RyYXAvMTQzNTYKCSogZ2NjLmMgKHByb2Nlc3NfY29tbWFuZCk6IFJlbW92ZSBjb25zdC1xdWFsaWZpY2F0aW9uIGZyb20gYXJndi4KCShtYWluKTogTGlrZXdpc2UuCgoyMDA0LTAzLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChwdXNocWkxX2g4MzAwaHMpOiBSZW5hbWUgdG8KCXB1c2hxaTFfaDgzMDBoc19hZHZhbmNlZC4gIEFkanVzdCBpdHMgY2FsbGVyLgoJKHB1c2hoaTFfaDgzMDBocyk6IFJlbmFtZSB0byBwdXNoaGkxX2g4MzAwaHNfYWR2YW5jZWQuCglBZGp1c3QgaXRzIGNhbGxlci4KCjIwMDQtMDMtMDIgIE5pY29sYXMgUm9jaGUgIDxyb2NoZUBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtbGliZ2NjLCBpbnN0YWxsLW11bHRpbGliKTogUGFzcwoJbWtpbnN0YWxsZGlycyB2YXIgdG8gbGliZ2NjLm1rLgoKMjAwNC0wMy0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHN5c3RlbS5oIChEQlhfT1VUUFVUX1NUQU5EQVJEX1RZUEVTKTogUG9pc29uLgoJKiBkb2MvdG0udGV4aSAoREJYX09VVFBVVF9TVEFOREFSRF9UWVBFUyk6IFJlbW92ZS4KCjIwMDQtMDMtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoZ3RsZV9vcGVyYXRvcik6IEFjY2VwdCBHVCBhbmQgTEUuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogU3BsaXQgc2V2ZXJhbCBwZWVwaG9sZTIncywgZWFjaCBpbnRvCgl0d28uCgoyMDA0LTAzLTAyICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBkb21pbmFuY2UuYyAocmVjb3VudF9kb21pbmF0b3IpOiBIYW5kbGUgcG9zdGRvbWluYXRvcnMuCgoyMDA0LTAzLTAxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChlbnVtIG1pcHNfc3ltYm9sX3R5cGUpOiBNb3ZlIGZyb20gbWlwcy5oLgoJKE5VTV9TWU1CT0xfVFlQRVMpOiBMaWtld2lzZS4KCShTWU1CT0xfNjRfSElHSCwgU1lNQk9MXzY0X01JRCwgU1lNQk9MXzY0X0xPVyk6IE5ldyBzeW1ib2wgdHlwZXMuCgkobWlwc191bnNwZWNfYWRkcmVzcyk6IERlY2xhcmUuCgkobWlwc19nb3RvZmZfcGFnZSwgbWlwc19nb3RvZmZfZ2xvYmFsKTogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBnZW5lcmFsX3N5bWJvbGljX29wZXJhbmQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoZW51bSBtaXBzX3N5bWJvbF90eXBlLCBOVU1fU1lNQk9MX1RZUEVTKTogRGVsZXRlLgoJKG1pcHNfc3ltYm9saWNfY29uc3RhbnRfcCwgbWlwc19zeW1ib2xpY19hZGRyZXNzX3ApCgkobWlwc19zeW1ib2xfaW5zbnMpOiBIYW5kbGUgbmV3IHN5bWJvbCB0eXBlcy4KCShnZW5lcmFsX3N5bWJvbGljX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgoJKG1pcHNfdW5zcGVjX2FkZHJlc3MpOiBNYWtlIGV4dGVybi4KCShtaXBzX2dvdG9mZl9wYWdlLCBtaXBzX2dvdG9mZl9nbG9iYWwpOiBEZWxldGUuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IEFsbG93IC1tYWJpPTY0IC1tbm8tYWJpY2FsbHMgLW1leHBsaWNpdC1yZWxvY3MuCglIYW5kbGUgbmV3IHN5bWJvbCB0eXBlcy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKmxlYV9oaWdoNjQsICpsZWE2NCk6IE5ldyBwYXR0ZXJucy4KCSgqeGdvdF9oaVtzZF1pLCAqeGdvdF9sb1tzZF1pLCAqZ290X2Rpc3Bbc2RdaSwgKmdvdF9kaXNwW3NkXWkpOiBDYWxsCgltaXBzX3Vuc3BlY19hZGRyZXNzIGRpcmVjdGx5LgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZSB0aGUgLW1hYmk9NjQgLW1uby1hYmljYWxscyBleGNlcHRpb24gZnJvbQoJdGhlIGRvY3VtZW50YXRpb24gb2YgLW1leHBsaWNpdC1yZWxvY3MuCgoyMDA0LTAzLTAxICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogQW4gZXF1YWxpdHkgY29tcGFyaXNvbiBvZiBhIG5vbi13ZWFrIG9iamVjdAoJYWdhaW5zdCB6ZXJvIGhhcyBhIGtub3duIHJlc3VsdC4gIFNpbWlsYXJseSBhbiBlcXVhbGl0eSBjb21wYXJpc29uCglvZiB0aGUgYWRkcmVzcyBvZiB0d28gbm9uLXdlYWssIHVuYWxpYXNlZCBzeW1ib2xzIGhhcyBhIGtub3duIHJlc3VsdC4KCgkqIGdnYy1wYWdlLmMgKHN0cnVjdCBwYWdlX2VudHJ5KTogTmV3IGZpZWxkIFBSRVYuCgkoZ2djX2FsbG9jKTogVXBkYXRlIFBSRVYgZmllbGQgYXBwcm9wcmlhdGVseS4KCShzd2VlcF9wYWdlcyk6IExpa2V3aXNlLgoJKGdnY19mcmVlKTogTGlrZXdpc2UuICBVc2UgUFJFViBmaWVsZCByYXRoZXIgdGhhbiBsb29wIHRvCglpbXByb3ZlIGdnY19mcmVlIHBlcmZvcm1hbmNlLgoKMjAwNC0wMy0wMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9kaXZpc2lvbik6IFVzZSB0aGUgZGl2aXNpb24KCWluc3RydWN0aW9uIHRvIGZpbGwgdGhlIGRlbGF5IHNsb3Qgb2YgYSB6ZXJvIGNoZWNrLgoJKG1pcHNfaWRpdl9pbnNucyk6IEFkanVzdCBhY2NvcmRpbmdseS4KCjIwMDQtMDMtMDEgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogQ3JlYXRlIGEgZGVmYXVsdCB0bWFrZV9maWxlIGZvciBsaW51eCwgYW5kIHVzZQoJaXQgaW4gYWxsIGJ1dCB0d28gbGludXggY2xhdXNlcy4gIENvbW1lbnQgdGhvc2UgdHdvLgoKMjAwNC0wMy0wMSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBEbyBub3QgcmVmZXIgdG8gaXNfcmVwbGFjZWQuCgkoZ2VuX2xvd3BhcnRfZm9yX2NvbWJpbmUpOiBQZXJ2ZXJzZSBzdWJyZWdzIG5vdyBoYXZlIGEKCW1vcmUgcG9saXRpY2FsbHkgY29ycmVjdCBuYW1lLgoJKiBjc2UuYyAoY3NlX2luc24pOiBMaWtld2lzZS4KCSoganVtcC5jOiBGaXggYm9ndXMgcmVmZXJlbmNlIHRvIGRlbGV0ZV9pbnNuLgoKMjAwNC0wMi0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBkZWJ1Zy8xNDMyOAoJKiBkd2FyZjJvdXQuYyAoZ2VuX2VudW1lcmF0aW9uX3R5cGVfZGllKTogT3V0cHV0IGFsbCBlbnVtZXJhdGlvbgoJY29uc3RhbnRzIGFzIHNpZ25lZCB2YWx1ZXMuCgoJUFIgbWlkZGxlLWVuZC8xMzQ0OAoJKiBjLXRyZWUuaCAocmVhZG9ubHlfd2FybmluZyk6IFJlbmFtZSB0byAuLi4KCShyZWFkb25seV9lcnJvcik6IC4uLiB0aGlzLgoJKiBjLXR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShyZWFkb25seV93YXJuaW5nKTogUmVuYW1lIHRvIC4uLgoJKHJlYWRvbmx5X2Vycm9yKTogLi4uIHRoaXMgYW5kIGlzc3VlIGVycm9ycywgbm90IHdhcm5pbmdzLgoJKGJ1aWxkX21vZGlmeV9leHByKTogQ2FsbCByZWFkb25seV9lcnJvciwgbm90IHJlYWRvbmx5X3dhcm5pbmcuCgkoY19leHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmMgKG9wdGltaXplX2lubGluZV9jYWxscyk6IERvIG5vdCBpbmxpbmUgZnVuY3Rpb25zCglhZnRlciBlcnJvcnMgaGF2ZSBvY2N1cnJlZC4KCjIwMDQtMDItMjkgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmFjOiBSZWFycmFuZ2Ugc29tZSB0aHJlYWRpbmcgY29kZSBmb3IgY2xhcml0eTsKCWFkZCBzZWN0aW9uIGNvbW1lbnQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDQtMDItMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBwYXNzZXMuYywgY29uZmlnL2Zydi9mcnYuYywgY29uZmlnL3NoL3NoLmM6IEZpeCBjb21tZW50Cgl0eXBvcy4KCSogZG9jL2NwcG9wdHMudGV4aTogRml4IGEgdHlwby4KCjIwMDQtMDItMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBGaXggZm9ybWF0dGluZy4KCjIwMDQtMDItMjkgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmFjOiBBZGQgc29tZSBjb21tZW50cyBkZWxpbmVhdGluZyBzZWN0aW9ucyBvZiBjb2RlLgoKCSogZG9jL2luc3RhbGwudGV4aTogTm90ZSB0aGF0IGxpYmFkYSB1c2VzIGF1dG9jb25mIDIuNTcgYWxzby4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IEZpeCBpZGlvdCB0eXBvIGluIHByZXZpb3VzIGNvbW1pdC4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IFVwZGF0ZSBmb3IgY29udmVyc2lvbiBvZiBpbnRsIHRvIGF1dG9jb25mIDIuNTcuCgoyMDA0LTAyLTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBBZGQgY29tbWVudHMgYWJvdXQgcGVlcGhvbGUyJ3MuCgoyMDA0LTAyLTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBUd2VhayBvcGVyYW5kIG51bWJlcnMgb2Ygc29tZQoJcGVlcGhvbGUyJ3MuCgoyMDA0LTAyLTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBUd2VhayBjb21tZW50cyBhYm91dCBwZWVwaG9sZTIncy4KCjIwMDQtMDItMjkgIFdhbGRlayBIZWJpc2NoICA8aGViaXNjaEBtYXRoLnVuaS53cm9jLnBsPgoKCVBSIG1pZGRsZS1lbmQvMTQyMDMKCSogZnVuY3Rpb24uYyAodW5pbml0aWFsaXplZF92YXJzX3dhcm5pbmcpOiBVc2UgREVDTF9SVExfU0VUX1AKCWluc3RlYWQgb2YgdGVzdGluZyB3aGV0aGVyIERFQ0xfUlRMIGlzIG5vdCBOVUxMLgoKMjAwNC0wMi0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9zaC9zaC5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDQtMDItMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvc2gvc2guYzogQ29udmVydCB0byBJU08tQy4KCjIwMDQtMDItMjggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogYy10eXBlY2suYyAodGFnZ2VkX3R5cGVzX3R1X2NvbXBhdGlibGVfcCk6IEZpeCBwYXN0byBpbgoJbXkgcHJldmlvdXMgcGF0Y2guCgoJKiBjb25maWcvZGFyd2luLmggKG1hY2hvcGljX2ZpbmlzaCk6IE91dHB1dCBzdHViIGV2ZW4gaWYgdGhlCglzeW1ib2wgaXMgYWxyZWFkeSBkZWZpbmVkLgoKMjAwNC0wMi0yOCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhNjQtaHB1eC5oIChMSUJfU1BFQyk6IEZpeCBsaW5raW5nIHVuZGVyIEhQLVVYIDExLjAwIHdpdGggLXAgYW5kIC1wZy4KCjIwMDQtMDItMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnZW5hdHRyLmMgKG1haW4pOiBEb24ndCBkZWZpbmUKCVRSQURJVElPTkFMX1BJUEVMSU5FX0lOVEVSRkFDRSBvciBERkFfUElQRUxJTkVfSU5URVJGQUNFLgoJKiBzeXN0ZW0uaCAoVFJBRElUSU9OQUxfUElQRUxJTkVfSU5URVJGQUNFKTogUG9pc29uLgoJKERGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGkgKFRSQURJVElPTkFMX1BJUEVMSU5FX0lOVEVSRkFDRSk6IFJlbW92ZS4KCShERkFfUElQRUxJTkVfSU5URVJGQUNFKTogTGlrZXdpc2UuCgoyMDA0LTAyLTI4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICh0c3RzaSwgdHN0ZGkpOiBEZWxldGUuCgoyMDA0LTAyLTI4ICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQGRzMi5wZy5nZGEucGw+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBSZW1vdmUgYW4gb2Jzb2xldGUKCWR1cGxpY2F0ZSBkZWZpbml0aW9uIG9mIHRoZSAiZSIgY29uc3RyYWludC4KCSogY29uZmlnL21pcHMvbWlwcy5oOiBVcGRhdGUgYSBjb21tZW50IGFjY29yZGluZ2x5LgoKMjAwNC0wMi0yOCAgTWFjaWVqIFcuIFJvenlja2kgIDxtYWNyb0BkczIucGcuZ2RhLnBsPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZDogQ29tcGxldGUgdGhlIHVuZmluaXNoZWQgUjQwMDAKCW11bHRpcGx5L3NoaWZ0IGVycmF0YSB3b3JrYXJvdW5kLiAgSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKGhhemFyZCk6IFVzZSBUQVJHRVRfRklYX1I0MDAwIHRvIGRlY2lkZSB3aGV0aGVyIGFuICJpbXVsIiBpbnN0cnVjdGlvbgoJaGFzIGEgaGlsbyBoYXphcmQuCgkobXVsc2kzLCBtdWxzaTNfaW50ZXJuYWwsIG11bHNpM19yNDAwMCk6IFVzZSBUQVJHRVRfRklYX1I0MDAwLgoJKG11bGRpMywgbXVsZGkzX2ludGVybmFsKTogTGlrZXdpc2UuCgkobXVsZGkzX2ludGVybmFsMik6IFJlbW92ZSwgcmVwbGFjaW5nIHdpdGguLi4KCShtdWxkaTNfbXVsdDMsIG11bGRpM19yNDAwMCk6IC4uLnRoZXNlIG5ldyBwYXR0ZXJucy4KCShtdWxzaWRpMyk6IFRha2UgdGhlIGVycmF0YSBpbnRvIGFjY291bnQuCgkobXVsc2lkaTNfMzJiaXQpOiBSZW1vdmUsIHJlcGxhY2luZyB3aXRoLi4uCgkobXVsc2lkaTNfMzJiaXRfaW50ZXJuYWwsIG11bHNpZGkzXzMyYml0X3I0MDAwKTogLi4udGhlc2UgbmV3IHBhdHRlcm5zLgoJKG11bHNpZGkzXzY0Yml0LCBtdWxzaWRpM182NGJpdF9wYXJ0cyk6IERpc2FibGUgaWYgVEFSR0VUX0ZJWF9SNDAwMC4KCSh1bXVsc2lkaTMpOiBUYWtlIHRoZSBlcnJhdGEgaW50byBhY2NvdW50LgoJKHVtdWxzaWRpM18zMmJpdCk6IFJlbW92ZSwgcmVwbGFjaW5nIHdpdGguLgoJKHVtdWxzaWRpM18zMmJpdF9pbnRlcm5hbCwgdW11bHNpZGkzXzMyYml0X3I0MDAwKTogLi4udGhlc2UgcGF0dGVybnMuCgkodW11bHNpM19oaWdocGFydCwgdW11bHNpM19oaWdocGFydF9pbnRlcm5hbCk6IERpc2FibGUgaWYKCVRBUkdFVF9GSVhfUjQwMDAuCgkoc211bHNpM19oaWdocGFydCwgc211bHNpM19oaWdocGFydF9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKHNtdWxkaTNfaGlnaHBhcnQsIHVtdWxkaTNfaGlnaHBhcnQpOiBMaWtld2lzZS4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCB0aGUgZXJyYXRhIHdvcmthcm91bmQuCgoyMDA0LTAyLTI4ICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQGRzMi5wZy5nZGEucGw+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2lkaXZfaW5zbnMpOiBEZWNsYXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1BU0tfRklYX1NCMSk6IEJ1bXAuCgkoTUFTS19GSVhfUjQwMDAsIFRBUkdFVF9GSVhfUjQwMDApOiBOZXcgbWFjcm9zLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbWZpeC1yNDAwMCBhbmQgLW1uby1maXgtcjQwMDAuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19pZGl2X2luc25zKTogTmV3IGZ1bmN0aW9uLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBNYWtlIC1tYXJjaD1yNDAwMCBpbXBseSAtbWZpeC1yNDAwMCBieSBkZWZhdWx0LgoJKG1pcHNfb3V0cHV0X2RpdmlzaW9uKTogQWRkIGEgd29ya2Fyb3VuZCBmb3IgdGhlIFI0MDAwIGRpdmlkZS9zaGlmdAoJZXJyYXRhLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChsZW5ndGgpOiBVc2UgbWlwc19pZGl2X2luc25zKCkgdG8gY2FsY3VsYXRlCgl0aGUgbGVuZ3RoIG9mIGFuICJpZGl2IiBpbnN0cnVjdGlvbi4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCB0aGUgbmV3IHN3aXRjaGVzLgoKMjAwNC0wMi0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy90bS50ZXhpIChJU19DT1NUTFlfREVQRU5ERU5DRSk6IENoYW5nZSB0bwoJVEFSR0VUX1NDSEVEX0lTX0NPU1RMWV9ERVBFTkRFTkNFLgoKMjAwNC0wMi0yOCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIG9wdGltaXphdGlvbi8xNDIyOQoJKiBjZmdydGwuYyAocnRsX3RpZHlfZmFsbHRocnVfZWRnZSk6IERvIG5vdCBmYWlsIGZvciAhb25seWp1bXAganVtcC4KCjIwMDQtMDItMjggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IFN0cmlwIE5PUHMgdGhhdCBjaGFuZ2UgdGhlIHNpZ25lZG5lc3MKCWZvciBSU0hJRlQgdG9vLiAgRXhwYW5kIGNvbW1lbnQuCgoyMDA0LTAyLTI3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCVBSIG9wdGltaXphdGlvbi83ODcxCgkqIGZsb3cuYyAobWFya19zZXRfMSk6IERvbid0IGFkZCBMT0dfTElOS1MgZm9yIGdsb2JhbCByZWdpc3RlcnMKCWZyb20gb3IgdG8gY2FsbCBpbnNucy4KCjIwMDQtMDItMjcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzc4NzEKCSogZmxvdy5jIChwcm9wYWdhdGVfb25lX2luc24pOiBJbnRlcnByZXQgY2FsbHMgYXMgc2V0dGluZyBnbG9iYWwKCXJlZ2lzdGVycywgbm90IG1lcmVseSBjbG9iYmVyaW5nIHRoZW0uCgoyMDA0LTAyLTI3ICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX291dHB1dF9wb3NzaWJsZV9zdHViX2xhYmVsKTogUmVtb3ZlLgoJY29uZmlnL2Rhcndpbi1wcm90b3MuaDogRGl0dG8uCgljb25maWcvZGFyd2luLmg6IFJlbW92ZSBjYWxsIHRvIGl0LgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBEbyBub3QgcGxhY2UgYSBSRUdfREVBRCBub3RlCgl3aGVuIHZhbHVlIGlzIGJvdGggc2V0IGFuZCB1c2VkLgoKMjAwNC0wMi0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9maXh1bnNzZnNpLmMgKF9fZml4dW5zc2ZzaSk6IEVuYWJsZSBvbiBIOC8zMDAKCWFzIHdlbGwuCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChfX19maXh1bnNzZnNpKTogUmVtb3ZlLgoJKiBjb25maWcvaDgzMDAvdC1oODMwMCAoTElCMUFTTUZVTkNTKTogUmVtb3ZlIF9maXh1bnNzZnNpX2FzbS4KCjIwMDQtMDItMjcgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGMtdHlwZWNrLmMgKHRhZ2dlZF90eXBlc190dV9jb21wYXRpYmxlX3ApIDxFTlVNRVJBTF9UWVBFPjoKCVNwZWVkdXAgY29tbW9uIGNhc2Ugb2YgdGhlIHR5cGUgdmFsdWVzIGJlaW5nIGluIHRoZSBzYW1lIG9yZGVyLgoKMjAwNC0wMi0yNyAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKG5vLWlubGluZS1mbG9hdC1kaXZpZGUpOiBOZXcgb3B0aW9uLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKG5vLWlubGluZS1pbnQtZGl2aWRlKTogTmV3IG9wdGlvbi4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChuby1pbmxpbmUtc3FydCk6IE5ldyBvcHRpb24uCgkoVEFSR0VUX0RFRkFVTFQpOiBBZGQgTUFTS19JTkxJTkVfRkxPQVRfRElWX1RIUiB0byBkZWZpbmUuCgkqIGNvbmZpZy9pYTY0L2hwdXguaCAoVEFSR0VUX0RFRkFVTFQpOiBEaXR0by4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X292ZXJyaWRlX29wdGlvbnMpOiBNb2RpZnkgZXJyb3IKCWNoZWNraW5nIGZvciBpbmxpbmVkIGRpdmlzaW9uL3NxcnQuCgoyMDA0LTAyLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYmItcmVvcmRlci5jLCBjZmdidWlsZC5jLCBkaWFnbm9zdGljLmMsIGV4cGxvdy5jLCBwcm9maWxlLmMsCglyYS1idWlsZC5jLCByZWFkLXJ0bC5jLCB0cmFjZXIuYywgdW53aW5kLWR3Mi1mZGUtZ2xpYmMuYywKCXZhbHVlLXByb2YuYywgY29uZmlnL2Rhcndpbi1wcm90b3MuaCwgY29uZmlnL2Zydi9mcnYtYWJpLmgsCgljb25maWcvaTM4Ni9wbW1pbnRyaW4uaCwgY29uZmlnL3BhL3BhLWhwdXguaDogVXBkYXRlCgljb3B5cmlnaHQuCgoyMDA0LTAyLTI3ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogRG9uJ3QgY291bnQgcHJldGVuZCBhcmdzIGZvciBhbGlnbm1lbnQuCgoyMDA0LTAyLTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcGFzc2VzLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoT0JKUy1jb21tb24pOiBBZGQgaXQuCgkqIGRpYWdub3N0aWMuYyAocnRsX2R1bXBfYW5kX2V4aXQpOiBNb3ZlIGRlY2wgLi4uCgkqIGZsYWdzLmggKHJ0bF9kdW1wX2FuZF9leGl0KTogLi4uIGhlcmUuCgkqIG91dHB1dC5oIChzaXplX2RpcmVjdGl2ZV9vdXRwdXQsIGxhc3RfYXNzZW1ibGVfdmFyaWFibGVfZGVjbCk6CglNb3ZlIGZyb20gdG9wbGV2LmMuCgkqIHJ0bC5oIChyZWdfYWxsb2MpOiBNb3ZlIGZyb20gdG9wbGV2LmMuCgkqIHRvcGxldi5jIChIQVZFX2NvbmRpdGlvbmFsX2V4ZWN1dGlvbiwgRFVNUEZJTEVfRk9STUFULAoJc3RydWN0IGR1bXBfZmlsZV9pbmZvLCBlbnVtIGR1bXBfZmlsZV9pbmRleCwgZHVtcF9maWxlX3RibCwKCW9wZW5fZHVtcF9maWxlLCBjbG9zZV9kdW1wX2ZpbGUsIHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbiwKCXJlc3Rfb2ZfdHlwZV9jb21waWxhdGlvbiwgcmVzdF9vZl9oYW5kbGVfZmluYWwsCglyZXN0X29mX2hhbmRsZV9kZWxheV9zbG90cywgcmVzdF9vZl9oYW5kbGVfc3RhY2tfcmVncywKCXJlc3Rfb2ZfaGFuZGxlX3ZhcmlhYmxlX3RyYWNraW5nLCByZXN0X29mX2hhbmRsZV9tYWNoaW5lX3Jlb3JnLAoJcmVzdF9vZl9oYW5kbGVfbmV3X3JlZ2FsbG9jLCByZXN0X29mX2hhbmRsZV9vbGRfcmVnYWxsb2MsCglyZXN0X29mX2hhbmRsZV9yZWdyZW5hbWUsIHJlc3Rfb2ZfaGFuZGxlX3Jlb3JkZXJfYmxvY2tzLAoJcmVzdF9vZl9oYW5kbGVfc2NoZWQsIHJlc3Rfb2ZfaGFuZGxlX3NjaGVkMiwgcmVzdF9vZl9oYW5kbGVfcmVnbW92ZSwKCXJlc3Rfb2ZfaGFuZGxlX3RyYWNlciwgcmVzdF9vZl9oYW5kbGVfaWZfY29udmVyc2lvbiwKCXJlc3Rfb2ZfaGFuZGxlX2lmX2FmdGVyX2NvbWJpbmUsIHJlc3Rfb2ZfaGFuZGxlX3dlYiwKCXJlc3Rfb2ZfaGFuZGxlX2JyYW5jaF9wcm9iLAoJcmVzdF9vZl9oYW5kbGVfdmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMsIHJlc3Rfb2ZfaGFuZGxlX2NmZywKCXJlc3Rfb2ZfaGFuZGxlX2FkZHJlc3NvZiwgcmVzdF9vZl9oYW5kbGVfc2libGluZ19jYWxscywKCXJlc3Rfb2ZfaGFuZGxlX2p1bXBfYnlwYXNzLCByZXN0X29mX2hhbmRsZV9pbmxpbmluZywKCXJlc3Rfb2ZfaGFuZGxlX251bGxfcG9pbnRlciwgcmVzdF9vZl9oYW5kbGVfY29tYmluZSwKCXJlc3Rfb2ZfaGFuZGxlX2xpZmUsIHJlc3Rfb2ZfaGFuZGxlX2NzZSwgcmVzdF9vZl9oYW5kbGVfY3NlMiwKCXJlc3Rfb2ZfaGFuZGxlX2djc2UsIHJlc3Rfb2ZfaGFuZGxlX2xvb3Bfb3B0aW1pemUsCglyZXN0X29mX2hhbmRsZV9sb29wMiwgcmVzdF9vZl9jb21waWxhdGlvbik6IE1vdmUgdG8gcGFzc2VzLmMuCgkoZGVjb2RlX2Rfb3B0aW9uKTogVXNlIGVuYWJsZV9ydGxfZHVtcF9maWxlLgoJKGNvbXBpbGVfZmlsZSwgZmluYWxpemUsIGRvX2NvbXBpbGUpOiBNb3ZlIHByb2ZpbGUrY29tYmluZStncmFwaAoJY2xlYW51cCB0byBmaW5pc2hfb3B0aW1pemF0aW9uX3Bhc3Nlcy4KCSogdG9wbGV2LmggKGluaXRfb3B0aW1pemF0aW9uX3Bhc3NlcywgZmluaXNoX29wdGltaXphdGlvbl9wYXNzZXMsCgllbmFibGVfcnRsX2R1bXBfZmlsZSk6IERlY2xhcmUuCgoyMDA0LTAyLTI3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgkgICAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBSZXZlcnQgMjAwNC0wMi0yNSBjaGFuZ2UuICBVc2UgdGhlIG9yaWdpbmFsCglvcGVyYW5kcyB0byBidWlsZCBhIHRyZWUgd2l0aCBzd2FwcGVkIG9wZXJhbmRzLgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWwpIDxNQVhfRVhQUj46IENvbnNpc3RlbnRseSB1c2UgdGhlCgkndW5zaWduZWRwJyBwcmVkaWNhdGUgdG8gc3BlY2lmeSB0aGUgc2lnbmVkbmVzcy4KCjIwMDQtMDItMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWRlY2wuYywgYy1wcG91dHB1dC5jLCBjb21iaW5lLmMsIGNwcGZpbGVzLmMsIGR3YXJmMm91dC5jLAoJZXhwci5jLCBmb2xkLWNvbnN0LmMsIGdjYy5jLCBoYWlmYS1zY2hlZC5jLCBsb29wLWl2LmMsCglwYXJhbXMuZGVmLCByZWFkLXJ0bC5jLCBydGwuYywgcnRsYW5hbC5jLCB0b3BsZXYuYzogRml4Cgljb21tZW50IHR5cG9zIGFuZCBmb3JtYXR0aW5nLiAgRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoKMjAwNC0wMi0yNiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IEFkZCBmaXh1bnNfdHJ1bmNzZnNpMiBhbmQKCWZpeF90cnVuY3Nmc2kyLgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQ6IERlbGV0ZSBzcGVfZWZzY3R1aXouCglBZGQgc3BlX2ZpeHVuc190cnVuY3Nmc2kyLgoJQWRkIHNwZV9maXhfdHJ1bmNzZnNpMi4KCjIwMDQtMDItMjYgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogYy1sZXguYyAoY19sZXhfc3RyaW5nX3RyYW5zbGF0ZSk6IE5ldyB2YXJpYWJsZS4KCShsZXhfc3RyaW5nKTogVXNlIHRvIGRldGVybWluZSBzdHJpbmcgdHJhbnNsYXRpb24uCgkqIGMtcHJhZ21hLmg6IFByb3RvdHlwZS4KCSogYy1wYXJzZS5pbiAoc3RhcnRfc3RyaW5nX3RyYW5zbGF0aW9uKTogTmV3LiBTZXQgYWJvdmUuCgkoc3RvcF9zdHJpbmdfdHJhbnNsYXRpb24pOiBEaXR0by4KCShhdHRyaWJ1dGUsIGF0dHJpYnV0ZV9saXN0LCBhc21fZGVmLCBhc21fc3RtdCwKCWFzbV9vcGVyYW5kKTogVXNlIGFib3ZlIGZ1bmN0aW9ucy4KCSogY3AvcGFyc2VyLmMgKGNwX3BhcnNlcl9kZWNsYXJhdGlvbik6IFRyYW5zbGF0ZSBzdHJpbmdzCgl1bmxlc3MgdG9rZW4gaXMgUklEX0VYVEVSTi4gU2V0IGNfbGV4X3N0cmluZ190cmFuc2xhdGUKCWZvciByZWN1cnNpdmUgdXNlLgoJKGNwX3BhcnNlcl9hc21fZGVmaW5pdGlvbik6IE9ubHkgdHJhbnNsYXRlIGFyZ3VtZW50IHN0cmluZ3MKCXRvIGFzbXMuCgkoY3BfcGFyc2VyX2FzbV9vcGVyYW5kX2xpc3QpOiBEaXR0by4KCShjcF9wYXJzZXJfYXR0cmlidXRlX2xpc3QpOiBEbyBub3QgdHJhbnNsYXRlIGF0dHJpYnV0ZSBzdHJpbmdzLgoKMjAwNC0wMi0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHN0bXQuYyAoZXhwYW5kX3N0YXJ0X2Nhc2VfZHVtbXkpOiBSZW1vdmUuCgkqIHRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZS4KCjIwMDQtMDItMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBidWlsdGlucy5jIChhcHBseV9hcmdzX3JlZ2lzdGVyX29mZnNldCk6IFJlbW92ZS4KCSogdHJlZS5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKMjAwNC0wMi0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHN0b3ItbGF5b3V0LmMgKGlzX3BlbmRpbmdfc2l6ZSk6IFJlbW92ZS4KCSogdHJlZS5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKMjAwNC0wMi0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHJlY29nLmMgKHZhbGlkYXRlX3JlcGxhY2Vfc3JjKTogUmVtb3ZlLgoJKiByZWNvZy5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKMjAwNC0wMi0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNhbGxzLmM6IERvbid0IHJlZmVyZW5jZSBGSU5BTF9SRUdfUEFSTV9TVEFDS19TUEFDRSBvcgoJTUFZQkVfUkVHX1BBUk1fU1RBQ0tfU1BBQ0UuCgkqIGZ1bmN0aW9uLmM6IExpa2V3aXNlLgoJKiBzeXN0ZW0uaCAoRklOQUxfUkVHX1BBUk1fU1RBQ0tfU1BBQ0UpOiBQb2lzb24uCgkoTUFZQkVfUkVHX1BBUk1fU1RBQ0tfU1BBQ0UpOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGkgKEZJTkFMX1JFR19QQVJNX1NUQUNLX1NQQUNFKTogUmVtb3ZlLgoJKE1BWUJFX1JFR19QQVJNX1NUQUNLX1NQQUNFKTogTGlrZXdpc2UuCgoyMDA0LTAyLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1kZWNsLmMgKGNfZXhwYW5kX2RlZmVycmVkX2Z1bmN0aW9uKTogUmVtb3ZlLgoJKiBjLXRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZS4KCjIwMDQtMDItMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBwb3N0cmVsb2FkLmMgKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBHZW5lcmF0ZSBqdXN0IGEgUExVUwoJaW5zdGVhZCBvZiBhbiBlbnRpcmUgU0VULgoKMjAwNC0wMi0yNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29uZmlnLmdjYzogQWRkIHN1cHBvcnQgZm9yIG5vY29tYS9wcmVzY290dC9wZW50aXVtLW0vcGVudGl1bTNtCgkvcGVudGl1bTRtLgoJKiBpMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBBZGQgc3VwcG9ydCBmb3IgbmV3IENQVXMuCgkqIGkzODYuaCAoVEFSR0VUX0NQVV9ERUZBVUxUX05BTUVTKTogTmV3IG5hbWVzLgoJKFRBUkdFVF9DUFVfREVGQVVMVF9wZW50aXVtX20sIFRBUkdFVF9DUFVfREVGQVVMVF9wZW50aXVtNGUpOiBOZXcKCWNvbnN0YW50cy4KCSogaW52b2tlLnRleGk6IEV4dGVuZCBkb2N1bWVudGF0aW9uIG9mIC1tdHVuZS8tbWFyY2ggZm9yIG5ldyBDUFVzLgoKMjAwNC0wMi0yNiAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9feHRlbnNhX18uCgoyMDA0LTAyLTI2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMtcHJvdG9zLmggKHNwYXJjX2VtaXRfZmxvYXR1bnNkaSk6IEFkZCAnbW9kZScuCgkoc3BhcmNfZW1pdF9maXh1bnNkaSk6IE5ldyBwcm90b3R5cGUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19lbWl0X2Zsb2F0dW5zZGkpOiBVc2UgJ21vZGUnIGFyZ3VtZW50LgoJKHNwYXJjX2VtaXRfZml4dW5zZGkpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoZmxvYXR1bnNkaXNmMik6IFVzZSAnZ2VuZXJhbF9vcGVyYW5kJyBmb3IKCW9wZXJhbmQgMS4gIFBhc3MgU0Ztb2RlIHRvIHNwYXJjX2VtaXRfZmxvYXR1bnNkaS4KCShmbG9hdHVuc2RpZGYyKTogVXNlICdnZW5lcmFsX29wZXJhbmQnIGZvciBvcGVyYW5kIDEuICBQYXNzIERGbW9kZQoJdG8gc3BhcmNfZW1pdF9mbG9hdHVuc2RpLgoJKGZpeHVuc190cnVuY3NmZGkyKTogTmV3IGV4cGFuZGVyLgoJKGZpeHVuc190cnVuY2RmZGkyKTogTGlrZXdpc2UuCgoyMDA0LTAyLTI2ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZ2NzZS5jIChkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrc18xKTogRG8gbm90IGRlbGV0ZSBDQyBzZXR0ZXIKCXVubGVzcyBIQVZFX2NjMC4KCjIwMDQtMDItMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleHBsb3cuYyAoZm9yY2VfcmVnKTogQ2FsbCBtYXJrX3JlZ19wb2ludGVyIGFzIGFwcHJvcHJpYXRlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9icmFuY2gpOiBEb24ndAoJdXNlIChvcDAtb3AxKSA9PSAwIGlmIG9wMCBpcyBhIHBvaW50ZXIuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoY21wZGkpOiBVc2Ugc29tZV9vcGVyYW5kLgoJKHRocmVlIGNvbXBhcmlzb24gY29tYmluZSBzcGxpdHMpOiBSZW1vdmUuCgoyMDA0LTAyLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMvMTI3OTQKCSogYy1jb21tb24uYyAoaGFuZGxlX2FsaWFzX2F0dHJpYnV0ZSk6IFJlamVjdCB0aGUgYXR0cmlidXRlIGlmCgljdXJyZW50X2Z1bmN0aW9uX2RlY2wgaXMgc2V0LgoKMjAwNC0wMi0yNSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IEFkZCBjb21tZW50IGRlc2NyaWJpbmcgZXh0cmFfZ2NjX29ianMuCglpWzM0NTY3XTg2LSotY3lnd2luKik6IFJlcGxhY2UgaG9zdF9leHRyYV9nY2Nfb2JqcyB3aXRoIGV4dHJhX2djY19vYmpzLgoJKiBjb25maWd1cmUuYWMgKGV4dHJhX2djY19vYmpzKTogTmV3IHN1YnN0aXR1dGlvbiB2YXJpYWJsZS4KCShob3N0X2V4dHJhX2djY19vYmpzKTogRG9uJ3Qgc3Vic3RpdHV0ZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbjogVXNlIGV4dHJhX2djY19vYmpzLgoKMjAwNC0wMi0yNSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGRvYy9jb250cmliLnRleGk6IEFkZCBhbiBlbnRyeSBmb3IgbXlzZWxmLgoKMjAwNC0wMi0yNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYmFzaWMtYmxvY2suaCAobWFrZV9laF9lZGdlLCBicmVha19zdXBlcmJsb2Nrcyk6IERlY2xhcmUuCgkqIGNmZ2J1aWxkLmMgKG1ha2VfZWhfZWRnZSk6IE1ha2UgZ2xvYmFsLgoJKiBjZmdsYXlvdXQuYyAoYnJlYWtfc3VwZXJibG9ja3MpOiBMaWtld2lzZTsgZml4IG1lbW9yeSBsZWFrLgoJKiBleGNlcHQuYyAoYnVpbGRfcG9zdF9sYW5kaW5nX3BhZHMsIGNvbm5lY3RfcG9zdF9sYW5kaW5nX3BhZHMsCglkdzJfYnVpbGRfbGFuZGluZ19wYWRzLCBzamxqX2VtaXRfZnVuY3Rpb25fZW50ZXIsCglzamxqX2VtaXRfZnVuY3Rpb25fZXhpdCwgc2psal9lbWl0X2Rpc3BhdGNoX3RhYmxlLAoJc2psal9idWlsZF9sYW5kaW5nX3BhZHMpOiBVcGRhdGUgQ0ZHLgoJKGVtaXRfdG9fbmV3X2JiX2JlZm9yZSk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfZWhfZ2VuZXJhdGlvbik6IERvIG5vdCByZWJ1aWxkIHRoZSBDRkcuCgoyMDA0LTAyLTI1ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogY29uZmlnLmdjYyAoaHBwYSotKi0qLCBwYXJpc2MqLSotKik6IEFkZCBNQVNLX0JJR19TV0lUQ0ggdG8gYWxsCgl0YXJnZXRfY3B1X2RlZmF1bHQgZGVmaW5lcy4KCSogcGEtaHB1eC5oIChUQVJHRVRfREVGQVVMVCk6IEFkZCBNQVNLX0JJR19TV0lUQ0ggdG8gZGVmaW5lLgoJKiBwYS5oIChUQVJHRVRfREVGQVVMVCk6IExpa2V3aXNlLgoKMjAwNC0wMi0yNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhY3QtZXVyb3BlLmZyPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogVHJlYXQgTUFYX0VYUFIgYW5kIE1JTl9FWFBSIGxpa2UKCWNvbXBhcmlzb25zIHdpdGggcmVnYXJkIHRvIHNpZ25lZG5lc3MuCgoyMDA0LTAyLTI1ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jICh0aHVtYl9sZWdpdGltaXplX2FkZHJlc3MpOiBOZXcgZnVuY3Rpb24uCgkqIGFybS1wcm90b3MuaDogUHJvdG90eXBlIGl0LgoJKiBhcm0uaCAoVEhVTUJfTEVHSVRJTUlaRV9BRERSRVNTKTogRGVmaW5lLgoJKExFR0lUSU1JWkVfQUREUkVTUyk6IFVzZSBpdC4KCjIwMDQtMDItMjUgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogcmVsb2FkMS5jIChyZWxvYWQpOiBPbmx5IHNwaWxsIGVsaW1pbmFibGUgcmVnaXN0ZXIgd2l0aCBtdWx0aXBsZQoJYWRqYWNlbnQgZWxpbWluYXRpb24gYWx0ZXJuYXRpdmVzIGlmIGFsbCBhbHRlcm5hdGl2ZXMgZmFpbC4KCjIwMDQtMDItMjUgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFybV9sZWdpdGltYXRlX2luZGV4X3ApOiBGb3IgUUltb2RlIHRoZSByYW5nZSBvZiBhbiBvZmZzZXQKCWlzIC00MDk1Li4uKzQwOTUgaW5jbHVzaXZlLgoKMjAwNC0wMi0yNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKHNwYXJjLXN1bi1zb2xhcmlzMiogc3BlY2lmaWMgbm90ZXMpOiBEb2N1bWVudAoJdGhlIGJvb3RzdHJhcCBmYWlsdXJlIHdpdGggU3VuIENDIDUuNCBhbmQgNS41LgoKMjAwNC0wMi0yNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNzZS5jIChjc2VfY2hhbmdlX2NjX21vZGVfaW5zbnMpOiBTdG9wIGF0IGFueSBpbnN0cnVjdGlvbgoJd2hpY2ggbW9kaWZpZXMgTkVXUkVHLgoJKGNzZV9jb25kaXRpb25fY29kZV9yZWcpOiBVcGRhdGUgdGhlIG1vZGUgb2YgQ0NfUkVHIGluCglDQ19TUkNfSU5TTiBvbiBvdXIgb3duLgoKMjAwNC0wMi0yNCAgTWljaGFlbCBNYXR6ICA8bWF0ekBzdXNlLmRlPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2NvbXBfdHlwZV9hdHRyaWJ1dGVzKTogQ2hlY2sgZm9yCglyZWdwYXJtIGF0dHJpYnV0ZXMuCgoyMDA0LTAyLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdG9wbGV2LmMgKGR1bXBfZmlsZV90YmwpOiBSZW5hbWUgZnJvbSBkdW1wX2ZpbGUuCgkqIGJiLXJlb3JkZXIuYywgYnQtbG9hZC5jLCBjZmdjbGVhbnVwLmMsIGNmZ2xheW91dC5jLCBjZmdsb29wYW5hbC5jLAoJY2ZnbG9vcG1hbmlwLmMsIGNmZ3J0bC5jLCBjb25maWcvYXJtL2FybS5jLCBjb25maWcvZnJ2L2Zydi5jLAoJY29uZmlnL2kzODYvaTM4Ni5jLCBjb25maWcvaWE2NC9pYTY0LmMsIGNvbmZpZy9taXBzL21pcHMuYywKCWNvbmZpZy9zaC9zaC5jLCBjc2UuYywgZmxvdy5jLCBpZmN2dC5jLCBsb29wLWl2LmMsIGxvb3AtdW5yb2xsLmMsCglsb29wLXVuc3dpdGNoLmMsIG91dHB1dC5oLCBwcmVkaWN0LmMsIHByb2ZpbGUuYywgcmEtYnVpbGQuYywKCXJhLWNvbG9yaXplLmMsIHJhLWRlYnVnLmMsIHJhLXJld3JpdGUuYywgcmEuYywgcmVncmVuYW1lLmMsIHJlbG9hZDEuYywKCXRvcGxldi5jLCB0cmFjZXIuYywgdmFsdWUtcHJvZi5jLCB2YXItdHJhY2tpbmcuYywgd2ViLmM6CglzL3J0bF9kdW1wX2ZpbGUvZHVtcF9maWxlL2cuCgoyMDA0LTAyLTI0ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAoc3BlX2ZpeF90cnVuY3Nmc2kyKTogRGVsZXRlLgoJKHNwZV9maXh1bnNfdHJ1bmNzZnNpMik6IERlbGV0ZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChmaXhfdHJ1bmNzZnNpMik6IERlbGV0ZS4KCShmaXh1bnNfdHJ1bmNzZnNpMik6IERlbGV0ZS4KCjIwMDQtMDItMjQgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCglQUi8xNDI0MAoJKiBydGxhbmFsLmMgKHJlcGxhY2VfbGFiZWwpOiBGaXggcmVwbGFjaW5nIGxhYmVscyBpbiBjb25zdGFudCBwb29sLgoKMjAwNC0wMi0yNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmggKFRBUkdFVF9IQVNfRl9TRVRMS1cpOiBEZWZpbmUuCgoyMDA0LTAyLTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAoY2hlY2tfcXVhbGlmaWVkX3R5cGUpOiBOZXcgZm4uCgkoZ2V0X3F1YWxpZmllZF90eXBlKTogVXNlIGl0LiAgSWYgdHlwZSBhbHJlYWR5IGhhcyB0aGUgZGVzaXJlZAoJcXVhbHMsIGp1c3QgcmV0dXJuIGl0LgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgoyMDA0LTAyLTI0ICBTYW5qaXYgS3VtYXIgR3VwdGEgIDxzYW5qaXZnQG5vaWRhLmhjbHRlY2guY29tPgoKCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfU0NIRURfSU5JVF9HTE9CQUwsCglUQVJHRVRfU0NIRURfRklOSVNIX0dMT0JBTCk6IE5ldyBtYWNyb3MuCgoJKiB0YXJnZXQuaCAobWRfaW5pdF9nbG9iYWwsIG1kX2ZpbmlzaF9nbG9iYWwpOiBGdW5jdGlvbgoJZGVjbGFyYXRpb25zIGNvcnJlc3BvbmRpbmcgdG8gbmV3IHRhcmdldCBtYWNyb3MuCgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9pbml0LCBzY2hlZF9maW5pc2gpOiBBbGxvdyB0YXJnZXQgdG8KCWNhbGwgdGhlIG5ldyBzY2hlZHVsYXIgaG9va3MuCgoJKiBmbG93LmMgKHJlY29tcHV0ZV9yZWdfdXNhZ2UpOiBBZGQgUFJPUF9ERUFUSF9OT1RFUyBmbGFnIGluCgljYWxsIHRvIHVwZGF0ZV9saWZlX2luZm8uCgoJKiBjb25maWcvc2gvc2guaCAoT1ZFUlJJREVfT1BUSU9OUyk6IFJlLWVuYWJsZQoJZmxhZ19zY2hlZHVsZV9pbnNucyBmb3IgU0g0LgoKCSogY29uZmlnL3NoL3NoLmMgKHNoX21kX2luaXRfZ2xvYmFsLCBzaF9tZF9maW5pc2hfZ2xvYmFsLAoJZmluZF9zZXRfcmVnbW9kZV93ZWlnaHQsIGZpbmRfaW5zbl9yZWdtb2RlX3dlaWdodCwKCWZpbmRfcmVnbW9kZV93ZWlnaHQpLCBzaF9tZF9pbml0LCBzaF9kZmFfbmV3X2N5Y2xlLAoJc2hfdmFyaWFibGVfaXNzdWUsIGhpZ2hfcHJlc3N1cmUsIHJlYWR5X3Jlb3JkZXIsCglyYW5rX2Zvcl9yZW9yZGVyLCBzd2FwX3Jlb3JkZXIsIHNoX3Jlb3JkZXIsIHNoX3Jlb3JkZXIyKTogTmV3CglmdW5jdGlvbnMgdXNlZCB0byB0aHJvdHRsZSB0aGUgaW5zbiBtb3ZlbWVudCBpbiBmaXJzdAoJc2NoZWR1bGluZyBwYXNzIGZvciBTSC4KCgkqIGRvYy90bS50ZXhpOiBEb2N1bWVudCBUQVJHRVRfU0NIRURfSU5JVF9HTE9CQUwgYW5kCglUQVJHRVRfU0NIRURfRklOSVNIX0dMT0JBTC4KCjIwMDQtMDItMjQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCUltcGxlbWVudCBGUi1WIEZEUElDIEFCSSBzdXBwb3J0IGZvciBmcnYtdWNsaW51eCBhbmQgZnJ2LWxpbnV4LgoJMjAwNC0wMi0wNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9lbWl0X21vdnNpKTogVXNlIEdPVCByZWxvY2F0aW9ucyBmb3IKCXN5bWJvbHMgaW4gc2VjdGlvbnMgbmFtZWQgYnkgdGhlIHVzZXIuCgkyMDA0LTAxLTMwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL2Zydi9saW51eC5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogTmV3LgoJMjAwNC0wMS0yNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy5nY2MgKGZydi0qLSpsaW51eCopOiBIYW5kbGUgbGlrZSAqLSotbGludXgqLgoJKiBjb25maWcvZnJ2L3QtbGludXggKEVYVFJBX01VTFRJTElCX1BBUlRTKTogUmVtb3ZlLCBvYnZpYXRlZCBieQoJdGhlIGFib3ZlLgoJMjAwNC0wMS0yMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2Lm1kIChzeW1HT1QycmVnX2hpbG8sIHN5bUdPVE9GRjJyZWdfaGlsbyk6IEFkZAoJb25lIG1vcmUgcHNldWRvIHRvIGZ1cnRoZXIgaW1wcm92ZSBjb2RlIGdlbmVyYXRpb24uCgkyMDA0LTAxLTE5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL2Zydi9mcnYubWQgKG1vdmRpX2xkZCk6IEludHJvZHVjZSBleHBsaWNpdCBpbmRpcmVjdGlvbgoJaW5zaWRlIFVOU1BFQy4KCTIwMDQtMDEtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBBZGRlZAoJYWxsb3dfZG91YmxlX3JlZ19wIGFyZ3VtZW50LiAgQWRqdXN0IGFsbCBjYWxsZXJzLiAgVXNlIGl0IHRvCglkZWNpZGUgd2hldGhlciB0byBlbmFibGUgZG91YmxlLXJlZ2lzdGVyIGluZGlyZWN0IGFkZHJlc3NpbmcuCgkoZnJ2X2Z1bmNkZXNjX2FsaWFzX3NldCk6IFJlbW92ZS4KCShmcnZfZXhwYW5kX2ZkcGljX2NhbGwpOiBGb3JjZSBub24tU1lNQk9MX1JFRiBvcGVyYW5kIGludG8KCXJlZ2lzdGVyLiAgRW1pdCBtb3ZkaV9sZGQuCgkobGRkX2FkZHJlc3Nfb3BlcmFuZCk6IE5ldy4KCSogY29uZmlnL2Zydi9mcnYtcHJvdG9zLmggKGZydl9sZWdpdGltYXRlX2FkZHJlc3NfcCk6IEFkanVzdC4KCSogY29uZmlnL2Zydi9mcnYuaCAoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogTGlrZXdpc2UuCgkoUFJFRElDQVRFX0NPREVTKTogQWRkIGxkZF9hZGRyZXNzX29wZXJhbmQuCgkqIGNvbmZpZy9mcnYvZnJ2Lm1kIChtb3ZkaV9sZGQpOiBOZXcuCgkoc3ltR09UMnJlZ19oaWxvLCBzeW1HT1RPRkYycmVnX2hpbG8pOiBVc2Ugc2VwYXJhdGUgcHNldWRvIGZvcgoJaW50ZXJtZWRpYXRlIGNvbXB1dGF0aW9ucyBpZiBwb3NzaWJsZS4KCShzeW1HT1RPRkYycmVnX2kpOiBGaXggaGFybWxlc3MgdHlwby4KCTIwMDMtMTItMTggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiB1bndpbmQtZHcyLWZkZS1nbGliYy5jIChfVW53aW5kX0l0ZXJhdGVQaGRyQ2FsbGJhY2spOiBDYXN0CglyZWxvY2F0ZWQgcF92YWRkciB0byB2YWRkciB0eXBlLgoJKiBjb25maWcvZnJ2L2Zydi1wcm90b3MuaCAoZnJ2X2V4cGFuZF9mZHBpY19jYWxsKTogUmV0dXJuIHZvaWQuCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9nZXRfZnVuY2Rlc2NfYWxpYXNfc2V0KTogTmV3LgoJKGZydl9leHBhbmRfZmRwaWNfY2FsbCk6IFByb3BhZ2F0ZSBpbmNvbWluZyBNRU0ncyBleHByIHRvIGZ1bmNkZXNjCglNRU0sIG9yIHVzZSBhIGZ1bmNkZXNjIGFsaWFzIHNldC4gIFVzZSByZWd1bGFyIG1vdmUgaW5zdGVhZCBvZgoJbGRkLgoJKGRibF9tZW1vcnlfb25lX2luc25fb3BlcmFuZCk6IFJlY29nbml6ZSBmdW5jdGlvbiBkZXNjcmlwdG9ycyBieQoJdHlwZSBvciBieSBhbGlhcyBzZXQsIGFuZCBkb24ndCBzcGxpdCB0aGVtLgoJKiBjb25maWcvZnJ2L2Zydi5tZCAoY2FsbCwgY2FsbF92YWx1ZSk6IE5ldmVyIHVzZSBjYWxsX2ludGVybmFsCglmb3IgZmRwaWMuCgkoY2FsbF9pbnRlcm5hbCwgY2FsbF92YWx1ZV9pbnRlcm5hbCk6IE5ldmVyIG1hdGNoIGZvciBGRFBJQy4KCShjYWxsX2ZkcGljZGksIGNhbGxfZmRwaWNzaSwgY2FsbF92YWx1ZV9mZHBpY2RpLAoJY2FsbF92YWx1ZV9mZHBpY3NpKTogUmVxdWlyZSBGRFBJQy4KCShsZGQpOiBSZW1vdmVkLgoJMjAwMy0xMi0xNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LmggKENSVF9HRVRfUkZJQl9EQVRBKTogRGVmaW5lIGZvciBfX0ZSVl9GRFBJQ19fLgoJKiB1bndpbmQtZHcyLWZkZS1nbGliYy5jOiBEb24ndCBpbmNsdWRlIGVsZi1mZHBpYy5oIGFueSBtb3JlLgoJKF9VbndpbmRfSXRlcmF0ZVBoZHJDYWxsYmFjayk6IEFkanVzdCB0eXBlIG9mIGxvYWRfYmFzZSBmb3IgRlJWCglGRFBJQy4gIENvbXB1dGUgZGF0YSBiYXNlIGFkZHJlc3MuCgkqIGNvbmZpZy9mcnYvbGludXguaCAoU1VCVEFSR0VUX0RSSVZFUl9TRUxGX1NQRUNTKTogRW5hYmxlIC1tZmRwaWMKCWJlZm9yZSB0aGUgb3RoZXIgc2VsZi1zcGVjcyBhcmUgcHJvY2Vzc2VkLgoJKiBjb25maWcvZnJ2L3QtbGludXggKENSVFNUVUZGX1RfQ0ZMQUdTLCBUQVJHRVRfTElCR0NDMl9DRkxBR1MpOgoJQnVpbGQgd2l0aCAtZlBJQy4KCTIwMDMtMTItMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiB1bndpbmQtZHcyLWZkZS1nbGliYy5jOiBEb24ndCBpbmNsdWRlIGJpdHMvZWxmLWZkcGljLmggaWYKCWluaGliaXRfbGliYyBpcyBkZWZpbmVkLgoJMjAwMy0xMi0xMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIHVud2luZC1kdzItZmRlLWdsaWJjLmM6IEluY2x1ZGUgYml0cy9lbGYtZmRwaWMuaCBmb3IKCV9fRlJWX0ZEUElDX18uCgkoX19SRUxPQ19QT0lOVEVSKTogRGVmaW5lLgoJKF9VbndpbmRfSXRlcmF0ZVBoZHJDYWxsYmFjayk6IFVzZSBpdC4KCSogY29uZmlnL2Zydi9mcnYuaCAoVHdyaXRlKTogRGVmaW5lLgoJKFRSQU5TRkVSX0ZST01fVFJBTVBPTElORSk6IFVzZSBpdC4KCSogY29uZmlnL2Zydi9saW51eC5oIChJTlZPS0VfX21haW4pOiBVbmRlZmluZS4KCShUd3JpdGUpOiBPdmVycmlkZS4KCTIwMDMtMTItMDUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogZG9jL2ludm9rZS50ZXhpICgtbWxvbmctY2FsbHMsIC1tbGlua2VkLWZwKTogRG9jdW1lbnQgRlJWIG9wdGlvbnMuCgkoLW1saWJyYXJ5LXBpYyk6IEVtcGhhc2l6ZSB0aGF0IHRoaXMgb3B0aW9uIGdlbmVyYXRlcyBFQUJJIGNvZGUuCgkoLW1jcHUpOiBBZGQgZnI1NTAuCgkoLW1wYWNrKTogUmVtb3ZlLgoJMjAwMy0xMS0zMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGludF8yd29yZF9vcGVyYW5kKTogUmVqZWN0IExBQkVMcywgU1lNQk9MX1JFRnMKCWFuZCBDT05TVHMgaW4gRkRQSUMgbW9kZS4KCSogY29uZmlnLmdjYyAod2l0aF9jcHUpOiBEZWZhdWx0IHRvIGZyNDAwIG9uIGZydi0qLSpsaW51eCouCgkyMDAzLTExLTI5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LmMgKG1vdmVfc291cmNlX29wZXJhbmQpOiBEb24ndCBhY2NlcHQgc3ltYm9saWMKCWNvbnN0YW50cy4KCSogY29uZmlnL2Zydi9mcnYubWQgKCptb3ZoaV9pbnRlcm5hbCwgKm1vdnNpX2ludGVybmFsKTogVXNlIGFuICduJwoJcmF0aGVyIHRoYW4gJ2knIGNvbnN0cmFpbnQgZm9yIHRoZSAyLWluc3RydWN0aW9uIGFsdGVybmF0aXZlLgoJKCptb3ZzaV8yd29yZCk6IE5ldywgaW5jb3Jwb3JhdGluZyBleGlzdGluZyBpbnRfMndvcmRfb3BlcmFuZCBzcGxpdHRlci4KCTIwMDMtMTEtMjkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL2Zydi9mcnYuaCAoRVhUUkFfQ09OU1RSQUlOVF9GT1JfUSk6IFJlbmFtZWQgZnJvbQoJRVhUUkFfQ09OU1RSQUlOVF9GT1JfWS4KCShFWFRSQV9DT05TVFJBSU5UKTogUmVtb3ZlIGhhbmRsaW5nIG9mICdZJy4KCSogY29uZmlnL2Zydi9mcnYubWQgKCptb3ZzaV9pbnRlcm5hbCk6IFJlbW92ZSAnUScgY29uc3RyYWludC4KCShhZGRzaTMpOiBDaGFuZ2UgJ1knIGNvbnN0cmFpbnQgdG8gJ1EnLgoJMjAwMy0xMS0yNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJKiByZWxvYWQuYyAoQ09OU1RfUE9PTF9PS19QKTogTmV3IG1hY3JvLgoJKGZpbmRfcmVsb2Fkcyk6IFVzZSBpdCB0byBkZWNpZGUgd2hldGhlciBhIGNvbnN0YW50IGNhbiBiZSBmb3JjZWQKCWludG8gbWVtb3J5LgoJKiBjb25maWcvZnJ2L2Zydi5oIChMRUdJVElNQVRFX1BJQ19PUEVSQU5EX1ApOiBSZXR1cm4gdHJ1ZSBpZiB0aGUKCWNvbnN0YW50IHNhdGlzZmllcyBnb3QxMl9vcGVyYW5kLgoJKGZydl9jYW5ub3RfZm9yY2VfY29uc3RfbWVtKTogQWx3YXlzIHJldHVybiB0cnVlIGZvciBUQVJHRVRfRkRQSUMuCgkoZnJ2X2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogQ2hlY2sgZm9yIHZhbGlkIHVuc3BlYyBvZmZzZXRzIHVzaW5nCglnb3QxMl9vcGVyYW5kIHJhdGhlciB0aGFuIGZydl9sZWdpdGltYXRlX2ZkcGljX29wZXJhbmRfcC4KCShmcnZfbGVnaXRpbWF0ZV9mZHBpY19vcGVyYW5kX3ApOiBEZWxldGUuCgkoZnJ2X2VtaXRfbW92c2kpOiBBYm9ydCBpZiB3ZSB0cnkgdG8gdXNlIHRoZSBGRFBJQyByZWdpc3RlciBkdXJpbmcKCW9yIGFmdGVyIHJlbG9hZC4KCShmcnZfbGVnaXRpbWF0ZV9jb25zdGFudF9wKTogUmV0dXJuIExFR0lUSU1BVEVfUElDX09QRVJBTkRfUCBpZgoJVEFSR0VUX0ZEUElDLgoJKiBjb25maWcvZnJ2L2Zydi5tZCAoKm1vdmRmX2RvdWJsZSk6IEFkZCBhbHRlcm5hdGl2ZXMgZm9yIENPTlNUX0RPVUJMRS4KCTIwMDMtMTEtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL2Zydi9mcnYtcHJvdG9zLmggKGZkcGljX29wZXJhbmQsIGZkcGljX2dvdDEyX29wZXJhbmQpCgkoZnJ2X2ZkcGljX2ZwdHJfb3BlcmFuZCk6IERvbid0IGRlY2xhcmUgaGVyZS4KCSogY29uZmlnL2Zydi9mcnYuaCAoRVhUUkFfQ09OU1RSQUlOVF9GT1JfWSk6IENhbGwgZ290MTJfb3BlcmFuZAoJcmF0aGVyIHRoYW4gZmRwaWNfZ290MTJfb3BlcmFuZC4KCShQUkVESUNBVEVfQ09ERVMpOiBSZW1vdmUgc3ltYm9saWNfb3BlcmFuZCBlbnRyeS4gIEFkZCBlbnRyaWVzIGZvcgoJZ290MTJfb3BlcmFuZCBhbmQgY29uc3RfdW5zcGVjX29wZXJhbmQuCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGdvdDEyX29wZXJhbmQpOiBSZW5hbWVkIGZyb20gZmRwaWNfZ290MTJfb3BlcmFuZC4KCShncHJfb3JfaW50MTJfb3BlcmFuZCwgZGJsX21lbW9yeV9vbmVfaW5zbl9vcGVyYW5kKTogVXBkYXRlIGNhbGxzLgoJKHN5bWJvbGljX29wZXJhbmQpOiBSZW1vdmUuCgkoY29uc3RfdW5zcGVjX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgoJKiBjb25maWcvZnJ2L2Zydi5tZCAoKm1vdnNpX2dvdCk6IFVzZSBnb3QxMl9vcGVyYW5kLgoJKCptb3ZzaV9oaWdoX2dvdCwgKm1vdnNpX2xvX3N1bV9nb3QpOiBVc2UgY29uc3RfdW5zcGVjX29wZXJhbmQuCgkyMDAzLTExLTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LXByb3Rvcy5oIChmcnZfb3V0cHV0X2FkZHJfY29uc3RfZXh0cmEpOiBSZW1vdmUuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKE9VVFBVVF9BRERSX0NPTlNUX0VYVFJBKTogUmVtb3ZlIGRlZmluaXRpb24uCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl91bnNwZWMpOiBOZXcgc3RydWN0dXJlLgoJKGZydl9zbWFsbF9kYXRhX3JlbG9jX3AsIGZydl9jb25zdF91bnNwZWNfcCk6IE5ldyBmdW5jdGlvbnMuCgkoZnJ2X3ByaW50X29wZXJhbmRfbWVtb3J5X3JlZmVyZW5jZSk6IFVzZSBmcnZfY29uc3RfdW5zcGVjX3AgdG8KCXZhbGlkYXRlIENPTlNUIGluZGljZXMuICBVc2UgZnJ2X291dHB1dF9jb25zdF91bnNwZWMgdG8gcHJpbnQgdGhlbS4KCShmcnZfcHJpbnRfb3BlcmFuZCk6IFVwZGF0ZSBjYWxsIHRvIHVuc3BlY19nb3RfbmFtZS4gIFVzZQoJZnJ2X291dHB1dF9jb25zdF91bnNwZWMgdG8gcHJpbnQgY29uc3RhbnQgdW5zcGVjcy4KCShmcnZfbGVnaXRpbWF0ZV9mZHBpY19vcGVyYW5kX3ApOiBSZXR1cm4gdHJ1ZSBpZiBmcnZfY29uc3RfdW5zcGVjX3AuCglSZWplY3QgVU5TUEVDcyBvdGhlcndpc2UuCgkodW5zcGVjX2dvdF9uYW1lKTogVGFrZSB0aGUgcmVsb2NhdGlvbiBudW1iZXIgYXMgYXJndW1lbnQsIG5vdCBhbgoJcnR4IGNvbnRhaW5pbmcgaXQuCgkoZnJ2X291dHB1dF9hZGRyX2NvbnN0X2V4dHJhKTogUmVtb3ZlLCByZXBsYWNpbmcgd2l0aC4uLgoJKGZydl9vdXRwdXRfY29uc3RfdW5zcGVjKTogLi4udGhpcyBuZXcgZnVuY3Rpb24uCgkoZnJ2X2ZpbmRfYmFzZV90ZXJtKTogVXNlIGZydl9jb25zdF91bnNwZWNfcCAmIGZydl9zbWFsbF9kYXRhX3JlbG9jX3AuCgkoZ3ByX29yX2ludDEyX29wZXJhbmQpOiBVc2UgZmRwaWNfZ290MTJfb3BlcmFuZC4KCShkYmxfbWVtb3J5X29uZV9pbnNuX29wZXJhbmQpOiBMaWtld2lzZS4KCShmZHBpY19nb3QxMl9vcGVyYW5kKTogVXNlIGZydl9jb25zdF91bnNwZWNfcC4KCShmcnZfZW1pdF9tb3ZzaSk6IFVzZSBmcnZfY29uc3RfdW5zcGVjX3AgdG8gY2hlY2sgZm9yIENPTlNUcyB0aGF0CglhcmUgYWxyZWFkeSBsZWdpdGltYXRlLiAgVXNlIGZydl9zbWFsbF9kYXRhX3JlbG9jX3Agd2hlbiBkZWNpZGluZwoJd2hldGhlciB0byB1c2UgSElHSC9MT19TVU0gZm9yIFJfRlJWX0dPVE9GRjEyIGFuZCBSX0ZSVl9HUFJFTDEyLgoJMjAwMy0xMS0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvdC1saW51eCAoU0hMSUJfTUFQRklMRVMpOiBPdmVycmlkZSBzbyBhcyB0byBleHBvcnQuLi4KCSogY29uZmlnL2Zydi9saWJnY2MtZnJ2LnZlcjogLi4uIGZydi1zcGVjaWZpYyBzeW1ib2xzLiAgTmV3IGZpbGUuCgkqIGNvbmZpZy9mcnYvZnJ2LWFiaS5oIChDUkVBVEVfRE9VQkxFX1NISUZUKTogVXNlIGJyYW5jaCB0byBsb2NhbAoJbGFiZWwsIGZvciByZWFsIHRoaXMgdGltZS4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2xvY2FsX2Z1bmNkZXNjX3ApOiBVcGRhdGUgdG8gbmV3CglyZXByZXNlbnRhdGlvbiBvZiB2aXNpYmlsaXR5LgoJKGZkcGljX2dvdDEyX29wZXJhbmQsIHN5bWJvbGljX29wZXJhbmQpOiBNYXJrIHVudXNlZCBhcmd1bWVudHMgYXMKCXN1Y2guCgkyMDAzLTExLTE3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LmggKE1BU0tfTElOS0VEX0ZQLCBUQVJHRVRfTElOS0VEX0ZQKTogTmV3IG1hY3Jvcy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1saW5rZWQtZnAgYW5kIC1tbm8tbGlua2VkLWZwLgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBNQVNLX0xJTktFRF9GUCB1bmxlc3MKCWl0IHdhcyBleHBsaWNpdGx5IGRpc2FibGVkLgoJKGZydl9zdGFja19pbmZvKTogVGhlcmUgaXMgbm8gbmVlZCB0byBzYXZlIHRoZSBsaW5rIHJlZ2lzdGVyIGluIGV2ZXJ5CglmcmFtZSB1bmxlc3MgVEFSR0VUX0xJTktFRF9GUCBpcyB0cnVlLgoJKGZydl9mcmFtZV9wb2ludGVyX3JlcXVpcmVkKTogSWYgIVRBUkdFVF9MSU5LRURfRlAsIG9ubHkgcmVxdWlyZSBhCglmcmFtZSBwb2ludGVyIGlmIHRoZSBzdGFjayBwb2ludGVyIG1pZ2h0IGNoYW5nZSB2YWx1ZS4KCShmcnZfcmV0dXJuX2FkZHJfcnR4KTogQ2hlY2sgYW5kIHByb2Nlc3MgImNvdW50IiBhcmd1bWVudC4KCTIwMDMtMTEtMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSogY29uZmlnL2Zydi9mcnYtcHJvdG9zLmggKGZydl9sZWdpdGltaXplX2FkZHJlc3MpOiBSZW1vdmUuCgkoZnJ2X2ZpbmRfYmFzZV90ZXJtKTogRGVjbGFyZS4KCSogY29uZmlnL2Zydi9mcnYuaCAoTEVHSVRJTUlaRV9BRERSRVNTKTogRG8gbm90aGluZy4KCShGSU5EX0JBU0VfVEVSTSk6IERlZmluZS4KCShQUkVESUNBVEVfQ09ERVMpOiBSZW1vdmUgcGljX3JlZ2lzdGVyX29wZXJhbmQsIHBpY19zeW1ib2xpY19vcGVyYW5kLAoJc21hbGxfZGF0YV9yZWdpc3Rlcl9vcGVyYW5kLCBzbWFsbF9kYXRhX3N5bWJvbGljX29wZXJhbmQuICBBZGQKCXN5bWJvbGljX29wZXJhbmQuCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGNvbnN0X3NtYWxsX2RhdGFfcCwgcGx1c19zbWFsbF9kYXRhX3ApOiBEZWxldGUuCgkoZnJ2X3ByaW50X29wZXJhbmRfbWVtb3J5X3JlZmVyZW5jZSwgb3V0cHV0X21vdmVfc2luZ2xlKTogUmVtb3ZlCglzcGVjaWFsIGhhbmRsaW5nIGZvciB1bmxlZ2l0aW1pemVkIHNkYXRhIGFkZHJlc3Nlcy4KCShmcnZfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBEb24ndCBhbGxvdyBzdW1zIG9mIFNEQV9CQVNFX1JFRwoJYW5kIHN5bWJvbGljIGFkZHJlc3Nlcy4KCShmcnZfbGVnaXRpbWl6ZV9hZGRyZXNzLCBmcnZfbGVnaXRpbWl6ZV9mZHBpY19hZGRyZXNzKTogRGVsZXRlLgoJKGZydl9maW5kX2Jhc2VfdGVybSk6IE5ldyBmdW5jdGlvbi4KCShpbnRfMndvcmRfb3BlcmFuZCk6IENoZWNrIHNwZWNpZmljYWxseSBmb3Igc3ltYm9saWMgYWRkcmVzcyBjb25zdGFudHMuCgkocGljX3JlZ2lzdGVyX29wZXJhbmQsIHBpY19zeW1ib2xpY19vcGVyYW5kKTogRGVsZXRlLgoJKHNtYWxsX2RhdGFfcmVnaXN0ZXJfb3BlcmFuZCwgc21hbGxfZGF0YV9zeW1ib2xpY19vcGVyYW5kKTogRGVsZXRlLgoJKGRibF9tZW1vcnlfb25lX2luc25fb3BlcmFuZCk6IERvbid0IGNhbGwgcGx1c19zbWFsbF9kYXRhX3AuCglBbGxvdyBVTlNQRUNfR09UIGNvbnN0YW50cyBpZiAhVEFSR0VUX0ZEUElDLgoJKG1vdmVfc291cmNlX29wZXJhbmQpOiBPbmx5IGFjY2VwdCBDT05TVHMgaWYgdGhleSdyZSBhIHR3by1pbnNuCglzeW1ib2xpYyBjb25zdGFudC4KCShmZHBpY19nb3QxMl9vcGVyYW5kKTogRG9uJ3QgcmVxdWlyZSBUQVJHRVRfRkRQSUMuCgkoZnJ2X2VtaXRfbW92c2kpOiBMZWdpdGltaXplIHNkYXRhIGFuZCAtbWxpYnJhcnktcGljIGFkZHJlc3NlcwoJdXNpbmcgZ2VuX3N5bUdPVE9GRjJyZWcqLgoJKGZydl9pZmN2dF9yZXdyaXRlX21lbSk6IFJlbW92ZSAocGx1cyBncjE2IC4uLikgc3BlY2lhbCBjYXNlcy4KCShmcnZfcnR4X2Nvc3RzKTogR2l2ZSBhbGwgTUVNIGFkZHJlc3NlcyBhIGNvc3Qgb2YgMC4gIEdpdmUgTUVNcwoJdGhlbXNlbHZlcyBhIGNvc3Qgb2YgMyBpbnNucy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKm1vdnNpX2dvdCk6IEFsbG93IGZvciAhVEFSR0VUX0ZEUElDIHRvby4KCUNoYW5nZSBwcmVkaWNhdGUgdG8gc3ltYm9saWNfb3BlcmFuZC4KCSgqbW92c2lfaGlnaF9nb3QsICptb3ZzaV9sb19zdW1fZ290KTogTGlrZXdpc2UuCgkoKm1vdnNpX2xkYV9zZGF0YSk6IERlbGV0ZS4KCSgqbW92c2lfcGljLCBtb3ZzaV9oaWdoX3BpYywgbW92c2lfbG9fc3VtX3BpYyk6IERlbGV0ZS4KCTIwMDMtMTEtMDUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcuZ2NjOiBBZGQgdC1zbGliZ2NjLWVsZi12ZXIgYW5kIHN1cHBvcnQgLS13aXRoLWNwdSBmb3IKCWZydi0qLSpsaW51eCouCgkqIGNvbmZpZy9mcnYvZnJ2LWFiaS5oIChDUkVBVEVfRE9VQkxFX1NISUZUKTogVXNlIGJyYW5jaCB0byBsb2NhbAoJbGFiZWwuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKERSSVZFUl9TRUxGX1NQRUNTKTogQWRkIGJsYW5rIGJlZm9yZQoJLW11bHRpbGliLWxpYnJhcnktcGljLgoJKExJTktfU1BFQyk6IEFkZCAteiB0ZXh0IGZvciAtbWZkcGljLgoJKiBjb25maWcvZnJ2L2ZydmJlZ2luLmMgKF9fUk9GSVhVUF9MSVNUX18pOiBEb24ndCBkZWZpbmUgb24gRkRQSUMuCgkqIGNvbmZpZy9mcnYvZnJ2ZW5kLmMgKF9fUk9GSVhVUF9FTkRfXyk6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2xpbnV4LmggKFNUQVJURklMRV9TUEVDLCBFTkRGSUxFX1NQRUMsIExJTktfU1BFQyk6CglPdmVycmlkZS4KCShPUFRJT05fREVGQVVMVF9TUEVDUywgSEFTX0lOSVRfU0VDVElPTiwgSU5JVF9TRUNUSU9OX0FTTV9PUCwKCUZJTklfU0VDVElPTl9BU01fT1AsIENSVF9DQUxMX1NUQVRJQ19GVU5DVElPTik6IERlZmluZS4KCSogY29uZmlnL2Zydi90LWxpbnV4IChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IFVzZQoJY3J0c3R1ZmYtZ2VuZXJhdGVkIGZpbGVzLgoJMjAwMy0xMC0zMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy5nY2M6IEFkZCBmcnYtKi0qbGludXgqLgoJKiBjb25maWcvZnJ2L2xpbnV4LmgsIGNvbmZpZy9mcnYvdC1saW51eDogTmV3LgoJMjAwMy0xMC0wNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LmggKExJTktfU1BFQyk6IFBhc3MgLW1lbGYzMmZydmZkIHRvIHRoZSBsaW5rZXIKCXdoZW4gLW1mZHBpYyBldmVuIGlmIGEgbGlua2VyIHNjcmlwdCBpcyBleHBsaWNpdGx5IGxpc3RlZC4KCTIwMDMtMTAtMDIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfb3ZlcnJpZGVfb3B0aW9ucyk6IENsZWFyIGFzbV9vdXQKCXVuYWxpZ25lZF9vcCBmb3IgU0ltb2RlIG9uIEZEUElDLgoJKGZydl9lbWl0X21vdnNpKTogVXNlIGNvbXB1dGVfcmVsb2NfZm9yX2NvbnN0YW50IHRvIGNvbXB1dGUgdGhlCglhcmd1bWVudCBwYXNzZWQgdG8gZGVjbF9yZWFkb25seV9zZWN0aW9uLgoJKGZydl9hc3NlbWJsZV9pbnRlZ2VyKTogUmV2ZXJ0IDIwMDMtMDktMzAncyBjaGFuZ2UsIGJ1dCBtYWtlIHRoZQoJd2hvbGUgYmxvY2sgcnVuIHdpdGggRkRQSUMgZXZlbiB3aXRoIC1mbm8tUElDLgoJMjAwMy0xMC0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9jYW5ub3RfZm9yY2VfY29uc3RfbWVtKTogRG9uJ3QgZm9yY2UKCXN5bWJvbCBvciBsYWJlbCBwbHVzIG9mZnNldCB0byBtZW1vcnkuCgkoZnJ2X2VtaXRfbW92c2kpOiBFbWl0IEdQUkVMIG9ubHkgaWYgLW1ncHJlbC1yby4gIEVtaXQgMzItYml0CglHT1RPRkYgYW5kIEdQUkVMIGZvciBMQUJFTF9SRUYuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKERSSVZFUl9TRUxGX1NQRUNTKTogQWRkIC1tZ3ByZWwtcm8gd2l0aAoJLW1mZHBpYyB1bmxlc3MgLW1uby1ncHJlbC1ybywgLWZwaWMgb3IgLWZwaWUuCgkoTUFTS19HUFJFTF9STywgVEFSR0VUX0dQUkVMX1JPKTogTmV3LgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZGVkIGdwcmVsLXJvIGFuZCBuby1ncHJlbC1yby4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCB0aGVtLgoJMjAwMy0wOS0zMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LXByb3Rvcy5oIChmcnZfZ2VuX0dQc3ltMnJlZyk6IERlY2xhcmUuCgkoZnJ2X3NwbGl0dGFibGVfZ290X29wZXJhbmQpOiBSZW1vdmVkLgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfY2Fubm90X2ZvcmNlX2NvbnN0X21lbSk6IFJlamVjdCBISUdIIGFuZAoJTE9fU1VNLiAgQWRkIGNvbW1lbnRzLgoJKGZydl9vdmVycmlkZV9vcHRpb25zKTogTW92ZWQgZW5hYmxpbmcgb2YgRkRQSUMgdG8KCURSSVZFUl9TRUxGX1NQRUNTLiAgRG9uJ3QgZW5hYmxlIE1BU0tfRFdPUkQuCgkoZnJ2X2xvY2FsX2Z1bmNkZXNjX3ApOiBSZW1vdmUgdW5uZWNlc3NhcnkgaGVjayBmb3IgZmxhZ19waWUuCgkoZnJ2X2xlZ2l0aW1pemVfZmRwaWNfYWRkcmVzcyk6IERvbid0IGR1cGxpY2F0ZSBsb2dpYyBpbgoJZnJ2X2VtaXRfbW92c2kuCgkoZnJ2X2dlbl9HUHN5bTJyZWcpOiBOZXcuCgkodW5zcGVjX2dvdF9uYW1lKTogQWRkZWQgZ3ByZWwuCgkoZnJ2X2V4cGFuZF9mZHBpY19jYWxsKTogQWRkIHN1cHBvcnQgZm9yIGlubGluaW5nIFBMVHMuCgkoZmRwaWNfZnB0cl9vcGVyYW5kKTogUmVuYW1lZCBmcm9tIGZydl9mZHBpY19mcHRyX29wZXJhbmQuCgkoZ3ByX29yX2ludDEyX29wZXJhbmQpOiBBZGRlZCBHUFJFTDEyLgoJKHBpY19zeW1ib2xpY19vcGVyYW5kKTogTWF0Y2ggZXZlbiBpZiAhZmxhZ19waWMgZm9yIEZEUElDLgoJKHNtYWxsX2RhdGFfc3ltYm9saWNfb3BlcmFuZCk6IEZhaWwgaWYgRkRQSUMuCgkoZmRwaWNfc3BsaXR0YWJsZV9nb3Rfb3BlcmFuZCk6IFJlbW92ZWQuCgkoZmRwaWNfZ290MTJfb3BlcmFuZCk6IEFkZGVkIEdQUkVMMTIuCgkoZnJ2X2VtaXRfbW92c2kpOiBSZW9yZ2FuaXplIHRvIGF2b2lkIGR1cGxpY2F0aW9uLiAgRW1pdCBHUFJFTAoJd2hlbiBhcHByb3ByaWF0ZS4gIEZpeCBzZGF0YSBHT1RPRkYuCgkoZnJ2X2xlZ2l0aW1hdGVfY29uc3RhbnRfcCk6IFJlcXVpcmUgbGVnaXRpbWF0ZSBQSUMgb3BlcmFuZCBmb3IKCUZEUElDIHdpdGggcGljLCBidXQgb25seSBhIGxlZ2l0aW1hdGUgZmRwaWMgb3BlcmFuZCBmb3Igbm9uLXBpYy4KCShmcnZfYXNzZW1ibGVfaW50ZWdlcik6IE1vdmUgRkRQSUMgZnVuY2Rlc2MgaGFuZGxpbmcgb3V0IG9mCglmbGFnX3BpYyBjYXNlLgoJKGZydl9hc21fb3V0X2NvbnN0cnVjdG9yLCBmcnZfYXNtX291dF9kZXN0cnVjdG9yKTogQWJvcnQgaWYKCWZydl9hc3NlbWJsZV9pbnRlZ2VyIGZhaWxzLgoJKiBjb25maWcvZnJ2L2Zydi5oIChEUklWRVJfU0VMRl9TUEVDUyk6IE5ldy4KCShTVUJUQVJHRVRfRFJJVkVSX1NFTEZfU1BFQ1MpOiBOZXcuCgkoQVNNX1NQRUMpOiBEb24ndCBwYXNzIC1tbm8tZmRwaWMuCgkoTElOS19TUEVDKTogUGFzcyAtbWVsZjMyZnJ2ZmQgZm9yIEZEUElDLgoJKE1BU0tfSU5MSU5FX1BMVCwgVEFSR0VUX0lOTElORV9QTFQpOiBOZXcuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1taW5saW5lLXBsdCwgLW1uby1pbmxpbmUtcGx0IGFuZAoJLW11bHRpbGliLWxpYnJhcnktcGljLgoJKFBSRURJQ0FURV9DT0RFUyk6IEFkZGVkIGZkcGljX29wZXJhbmQsIGZkcGljX2ZwdHJfb3BlcmFuZCwKCWNvbmRleGVjX3NpX21lZGlhX29wZXJhdG9yLCBjb25kZXhlY19zZl9hZGRfb3BlcmF0b3IgYW5kCgljb25kZXhlY19zZl9jb252X29wZXJhdG9yLiAgUmVtb3ZlZCBjb25kZXhlY19zZl9iaW5hcnlfb3BlcmF0b3IKCWFuZCBjb25kZXhlY19zZl91bmFyeV9vcGVyYXRvci4KCSogY29uZmlnL2Zydi9mcnYubWQgKFJfRlJWX0dQUkVMMTIsIFJfRlJWX0dQUkVMSEksIFJfRlJWX0dQUkVMTE8pOgoJTmV3LgoJKG1vdnNpX2dvdCwgbW92c2lfaGlnaF9nb3QsIG1vdnNpX2xvX3N1bV9nb3QpOiBNb3ZlIGJlZm9yZQoJbW92c2lfaW50ZXJuYWwuICBHaXZlIHRoZW0gaW50ZXJuYWwgbmFtZXMuICBtb3ZzaV9nb3QgaGFzIHR5cGUKCWludC4KCShmZHBpYyBnb3Qgc3BsaXR0ZXJzKTogUmVtb3ZlLgoJKHN5bUdQUkVMMnJlZywgc3ltR1BSRUwycmVnX2hpbG8pOiBOZXcuCgkqIGNvbmZpZy9mcnYvdC1mcnYgKE1VTFRJTElCX01BVENIRVMpOiBEb24ndCBtYXAgLWZwaWMgYW5kIC1mUElDCgl0byAtbWxpYnJhcnktcGljLiAgTWFwIC1tdWx0aWxpYi1saWJyYXJ5LXBpYyB0byBpdC4KCSogZG9jL2ludm9rZS50ZXhpOiAtbWZkcGljLCAtbWlubGluZS1wbHQsIC1tdWx0aWxpYi1saWJyYXJ5LXBpYzoKCURvY3VtZW50LgoJMjAwMy0wOS0yOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9mdW5jdGlvbl9zeW1ib2xfcmVmZXJlbmNlZF9wKTogRGVjbGFyZS4KCShUQVJHRVRfQ0FOTk9UX0ZPUkNFX0NPTlNUX01FTSk6IERlZmluZSB0by4uLgoJKGZydl9jYW5ub3RfZm9yY2VfY29uc3RfbWVtKTogTmV3IGZ1bmN0aW9uLgoJKGNvbnN0X3NtYWxsX2RhdGFfcCwgcGx1c19zbWFsbF9kYXRhX3ApOiBVcGRhdGUgY29tbWVudHMgb24gc2RhdGEKCW9uIEZEUElDLgoJKGZydl9vdmVycmlkZV9vcHRpb25zKTogU2V0IGZsYWdfcGllIGZvciBGRFBJQyB0b28uCgkoZnJ2X2NvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlKTogTWFyayBncjE2IGFuZCBncjE3IGFzIG5vbi1maXhlZCwKCWNhbGwtc2F2ZWQgcmVnaXN0ZXJzIG9uIEZEUElDLgoJKGZydl9zdGFja19pbmZvKTogRG9uJ3QgcHJlc2VydmUgdGhlIFBJQyByZWdpc3RlciBvbiBGRFBJQywgYW5kCglkb24ndCBmb3JjZSBMUiB0byBiZSBwcmVzZXJ2ZWQuCgkoZnJ2X2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKGZydl9hc21fb3V0cHV0X21pX3RodW5rKTogVXNlIDEyLWJpdCBmdW5jZGVzYyBnb3RvZmYgZm9yIC1mcGljLgoJKGZydl9mcmFtZV9wb2ludGVyX3JlcXVpcmVkKTogRG9uJ3QgZm9yY2UgaXQganVzdCBiZWNhdXNlIHRoZQoJRkRQSUMgcmVnaXN0ZXIgaXMgdXNlZC4KCShmcnZfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApIDxDT05TVD46IEFjY2VwdCBhIGxlZ2l0aW1hdGUgRkRQSUMKCW9wZXJhbmQgb25seSBpZiAhY29uZGV4ZWNfcC4KCShmcnZfbGVnaXRpbWl6ZV9hZGRyZXNzKTogUmV0dXJuIHRoZSBGRFBJQy1sZWdpdGltaXplZCBhZGRyZXNzLgoJRG9uJ3QgbWF0Y2ggc21hbGwgZGF0YSBoZXJlIG9uIEZEUElDLgoJKGZydl9sZWdpdGltYXRlX2ZkcGljX29wZXJhbmRfcCk6IERvbid0IGFjY2VwdCB1bmFkb3JuZWQgZnVuY3Rpb24KCXN5bWJvbHMuICBVc2UgVFJVRS9GQUxTRSBpbnN0ZWFkIG9mIDEvMC4KCShmcnZfbG9jYWxfZnVuY2Rlc2NfcCk6IE5ldy4KCShmcnZfbGVnaXRpbWl6ZV9mZHBpY19hZGRyZXNzKTogUmV3cml0ZSB0byB1c2UgR09UT0ZGIGFuZCAxMi1iaXQKCWltbWVkaWF0ZXMgd2hlbiBwb3NzaWJsZS4KCShwaWNfc3ltYm9saWNfb3BlcmFuZCk6IEFjY2VwdCBTWU1CT0xfUkVGcyBhbmQgQ09OU1RzIGluIEZEUElDLgoJKGRibF9tZW1vcnlfb25lX2luc25fb3BlcmFuZCk6IEFjY2VwdCBhZGRyZXNzZXMgdGhhdCBhZGQgYSBSRUcgYW5kCglhbiBVTlNQRUNfR09ULgoJKGZydl9lbWl0X21vdnNpKTogSGFuZGxlIEZEUElDIGJlZm9yZSBzbWFsbCBkYXRhLiAgVXNlIEdPVE9GRiBhbmQKCTEyLWJpdCBpbW1lZGlhdGVzIHdoZW4gcG9zc2libGUuCgkoZnJ2X2xlZ2l0aW1hdGVfY29uc3RhbnRfcCk6IEluIEZEUElDLCByZWplY3QgU0ltb2RlIG9wZXJhbmRzIHRoYXQKCWFyZSBub3QgbGVnaXRpbWF0ZSBwaWMgb3BlcmFuZHMuCgkoZnJ2X2luX3NtYWxsX2RhdGFfcCk6IFJlLWVuYWJsZSBmb3IgRkRQSUMuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKFNEQV9CQVNFX1JFRyk6IFJlbW92ZSBjb21tZW50IGFib3V0IEZEUElDLgoJKEZSVl9HTE9CQUxfUCk6IFJlbW92ZWQuCgkqIGNvbmZpZy9mcnYvZnJ2Lm1kOiBBZGQgbW9kZXMgdG8gQ09OU1RzLgoJKG1vdnNpX2dvdCk6IE5ldy4KCShtb3ZzaV9sb19zdW1fZ290KTogVXNlIHNlcGFyYXRlIG1hdGNoZXMgaW5zdGVhZCBvZiBtYXRjaF9kdXAuCgkobW92c2lfaGlnaF9waWMsIG1vdnNpX2xvX3N1bV9waWMpOiBNYXRjaCBvbiBub24tRkRQSUMgb25seS4KCShmZHBpYyBzcGxpdHRhYmxlIG9wZXJhdGlvbnMpOiBNYXRjaCBvbiBmbGFnX3BpYyAhPSAxLgoJMjAwMy0wOS0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9hc21fb3V0X2NvbnN0cnVjdG9yLAoJZnJ2X2FzbV9vdXRfZGVzdHJ1Y3Rvcik6IFBhc3MgdG8gZnJ2X2Fzc2VtYmxlX2ludGVnZXIgdGhlIHNpemUgaW4KCWJ5dGVzLCBub3QgYml0cy4KCTIwMDMtMDktMTkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfYXNzZW1ibGVfaW50ZWdlcik6IFJlamVjdCBjb21wbGV4CglleHByZXNzaW9ucyByZWZlcmVuY2luZyBmdW5jdGlvbiBTWU1CT0xfUkVGcy4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2Z1bmN0aW9uX3N5bWJvbF9yZWZlcmVuY2VkX3ApOiBOZXcuCgkobW92ZV9zb3VyY2Vfb3BlcmFuZCk6IFJlamVjdCBDT05TVHMgdGhhdCByZWZlcmVuY2UgZnVuY3Rpb24KCVNZTUJPTF9SRUZzIG9uIEZEUElDLgoJKGZydl9lbWl0X21vdnNpKTogSWYgd2UgZ2V0IHN1Y2ggYSBDT05TVCwgYnJlYWsgaXQgdXAuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKENQUF9TUEVDKTogRGVmaW5lIF9fRlJWX0ZEUElDX18gZm9yIC1tZmRwaWMuCgkoVFJBTlNGRVJfRlJPTV9UUkFNUE9MSU5FKTogVXNlIGRpZmZlcmVudCBkZWZpbml0aW9ucyBmb3IgRkRQSUMuCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9wcmludF9vcGVyYW5kKSA8ST46IFJlY29nbml6ZSBQTFVTIHdpdGhvdXQKCU1FTS4KCShmcnZfYXNzZW1ibGVfaW50ZWdlcik6IERvbid0IHVzZSBmdW5jZGVzYyBmb3IgTEFCRUxfUkVGcy4KCShmcnZfdHJhbXBvbGluZV9zaXplKTogSW5jcmVhc2UgZm9yIEZEUElDLgoJKiBjb25maWcvZnJ2L2Zydi5oIChUUkFNUE9MSU5FX0FMSUdOTUVOVCk6IEJ1bXAgdG8gNjQgZm9yIEZEUElDLgoJKFRSQU5TRkVSX0ZST01fVFJBTVBPTElORSk6IEhhbmRsZSBGRFBJQyB0cmFtcG9saW5lcy4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2xlZ2l0aW1pemVfZmRwaWNfYWRkcmVzcywgZnJ2X2VtaXRfbW92c2kpOgoJRGlzYWJsZSB1c2Ugb2YgR09UT0ZGIGZvciBub3cuCgkoY29uc3Rfc21hbGxfZGF0YV9wLCBwbHVzX3NtYWxsX2RhdGFfcCwgZnJ2X2luX3NtYWxsX2RhdGFfcCk6CglEaXNhYmxlIHVzZSBvZiBzbWFsbCBkYXRhIGluIEZEUElDIGZvciBub3cuCgkoZnJ2X2FzbV9vdXRwdXRfbWlfdGh1bmspOiBJbXBsZW1lbnQgZm9yIEZEUElDLgoJKiBjb25maWcvZnJ2L2Zydi5oIChTREFfQkFTRV9SRUcpOiBTZXQgdG8gLTEgd2l0aCBGRFBJQy4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2FzbV9vdXRfY29uc3RydWN0b3IpOiBVc2UKCWZydl9hc3NlbWJsZV9pbnRlZ2VyIGZvciBGRFBJQyBwb2ludGVycy4KCShmcnZfYXNtX291dF9kZXN0cnVjdG9yKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2Lm1kIChsZGQpOiBGaXggb3JkZXIgb2Ygb3BlcmFuZHMuICBVc2UKCWFkZHJlc3Nfb3BlcmFuZCBmb3IgaW5wdXQuCgkyMDAzLTA5LTE4ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2xlZ2l0aW1hdGVfZmRwaWNfb3BlcmFuZF9wKTogUmVtb3ZlIFVOU1BFQ19QSUMuCgkodW5zcGVjX2dvdF9uYW1lKTogQ29ycmVjdCB0eXBvLgoJKGZydl9lbWl0X21vdnNpKTogUHJlLWV4cGFuZCBzcGxpdHRhYmxlIEdPVHMuCgkoZnJ2X2V4cGFuZF9mZHBpY19jYWxsKTogUmVuYW1lIGdlbl9sZGRpIHRvIGdlbl9sZGQuCgkqIGNvbmZpZy9mcnYvZnJ2Lm1kIChsZGRpKTogRml4IHN5bnRheCBlcnJvciwgcmVuYW1lIHRvIGxkZC4KCShzeW1HT1QycmVnX2hpbG8sIHN5bUdPVE9GRjJyZWdfaGlsbyk6IE5ldy4KCSogY29uZmlnL2Zydi90LWZydjogQWRkIC1tZmRwaWMgbXVsdGlsaWJzLgoJKiBjb25maWcvZnJ2L2Zydi5oIChBU01fU1BFQyk6IFBhc3MgLW1mZHBpYy8tbW5vLWZkcGljLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbW5vLWZkcGljLCBmaXggZG9jdW1lbnRhdGlvbi4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X292ZXJyaWRlX29wdGlvbnMpOiAtbWZkcGljIGFzc3VtZXMKCWZsYWdfcGljLCBkZWZhdWx0IHRvIDMyLWJpdCBwaWNzLCByZXF1aXJlIERXT1JEIG9wcy4KCShmcnZfb3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBXIGFuZCBaIGNvbnN0cmFpbnRzLgoJKGZydl9leHBhbmRfcHJvbG9ndWUpOiBObyBwaWMgcHJvbG9ndWUgZm9yIC1tZmRwaWMuCgkoZnJ2X2FzbV9vdXRwdXRfbWlfdGh1bmspOiBTdXBwb3J0IC1tZmRwaWMgKHNvb24pLgoJKGZydl9wcmludF9vcGVyYW5kX21lbW9yeV9yZWZlcmVuY2UpOiBIYW5kbGUgR09UIGNvbnN0YW50cy4KCShmcnZfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBBbGxvdyBHT1QgY29uc3RhbnRzLgoJKGZydl9sZWdpdGltaXplX2FkZHJlc3MpOiBIYW5kbGUgR09UIGFkZHJlc3NlcyB0b28uCgkoZnJ2X2xlZ2l0aW1hdGVfZmRwaWNfb3BlcmFuZF9wKTogTmV3LgoJKGZydl9sZWdpdGltaXplX2ZkcGljX2FkZHJlc3MpOiBOZXcuCgkodW5zcGVjX2dvdF9uYW1lKTogTmV3LgoJKGZydl9vdXRwdXRfYWRkcl9jb25zdF9leHRyYSk6IE5ldy4KCShmcnZfZXhwYW5kX2ZkcGljX2NhbGwpOiBOZXcuCgkoZnJ2X2ZkcGljX2ZwdHJfb3BlcmFuZCk6IE5ldy4KCShncHJfb3JfaW50MTJfb3BlcmFuZCk6IEhhbmRsZSBHT1Qgb3BlcmFuZHMuCgkoaW50XzJ3b3JkX29wZXJhbmQpOiBIYW5kbGUgR09UIG9wZXJhbmRzLgoJKGZkcGljX29wZXJhbmQpOiBOZXcuCgkoZmRwaWNfc3BsaXR0YWJsZV9nb3Rfb3BlcmFuZCk6IE5ldy4KCShmZHBpY19nb3QxMl9vcGVyYW5kKTogTmV3LgoJKGZydl9lbWl0X21vdnNpKTogSGFuZGxlIEdPVCBvcGVyYW5kcy4KCShmcnZfYXNzZW1ibGVfaW50ZWdlcik6IC1tZmRwaWMgZG9lc24ndCB1c2Ugcm9maXh1cHMuCgkoZnJ2X3ByaW50X29wZXJhbmQpOiBTdXBwb3J0ICdnJyBjb2RlIGZvciBHT1Qgb3BlcmFuZHMuCgkqIGNvbmZpZy9mcnYvZnJ2LXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlcyBhcyBuZWVkZWQuCgkqIGNvbmZpZy9mcnYvZnJ2Lm1kIChSX0ZSVl9HT1QxMiwgUl9GUlZfR09USEksIFJfRlJWX0dPVExPLAoJUl9GUlZfRlVOQ0RFU0MsIFJfRlJWX0ZVTkNERVNDX0dPVDEyLCBSX0ZSVl9GVU5DREVTQ19HT1RISSwKCVJfRlJWX0ZVTkNERVNDX0dPVExPLCBSX0ZSVl9GVU5DREVTQ19WQUxVRSwKCVJfRlJWX0ZVTkNERVNDX0dPVE9GRjEyLCBSX0ZSVl9GVU5DREVTQ19HT1RPRkZISSwKCVJfRlJWX0ZVTkNERVNDX0dPVE9GRkxPLCBSX0ZSVl9HT1RPRkYxMiwgUl9GUlZfR09UT0ZGSEksCglSX0ZSVl9HT1RPRkZMTyk6IE5ldy4KCShtb3ZzaV9oaWdoX2dvdCwgbW92c2lfbG9fc3VtX2dvdCk6IE5ldy4KCSgqbW92c2lfcGljKTogRG9uJ3QgdXNlIHRoaXMgc3BsaXR0ZXIgZm9yIC1tZmRwaWMuCgkoYWRkc2kzKTogQWxsb3cgR09UIHJlZmVyZW5jZXMgYWxzby4KCShjYWxsLCBjYWxsX3ZhbHVlKTogSGFuZGxlIC1tZmRwaWMgc2VwYXJhdGVseS4KCShjYWxsX2ZkcGljZGksIGNhbGxfZmRwaWNzaSwgbGRkaSwgY2FsbF92YWx1ZV9mZHBpY2RpLAoJY2FsbF92YWx1ZV9mZHBpY3NpKTogTmV3LgoJKHN5bUdPVDJyZWcsIHN5bUdPVDJyZWdfaSwgZ290IHNwbGl0dGVycywgc3ltR09UT0ZGMnJlZywKCXN5bUdPVE9GRjJyZWdfaSk6IE5ldy4KCSogY29uZmlnL2Zydi9mcnYuaCAoTUFTS19GRFBJQyk6IE5ldy4KCShUQVJHRVRfRkRQSUMpOiBOZXcuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tZmRwaWMuCgkoRkRQSUNfRlBUUl9SRUdOTyk6IE5ldy4KCShGRFBJQ19SRUdOTyk6IE5ldy4KCShPVVJfRkRQSUNfUkVHKTogTmV3LgoJKGVudW0gcmVnX2NsYXNzKTogQWRkIEZEUElDX1JFR1MsIEZEUElDX0ZQVFJfUkVHUywgYW5kCglGRFBJQ19DQUxMX1JFR1MuCgkoUkVHX0NMQVNTX05BTUVTKTogTGlrZXdpc2UuCgkoUkVHX0NMQVNTX0NPTlRFTlRTKTogTGlrZXdpc2UuCgkoRVhUUkFfQ09OU1RSQUlOVF9GT1JfWSk6IE5ldywgZm9yIDEyLWJpdCBHT1RzLgoJKEVYVFJBX0NPTlNUUkFJTlQpOiBBZGQgaXQgaGVyZS4KCShGUlZfR0xPQkFMX1ApOiBOZXcuCgkoT1VUUFVUX0FERFJfQ09OU1RfRVhUUkEpOiBOZXcuCgoyMDA0LTAyLTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmg6IFJlbW92ZSBjb21tZW50ZWQtb3V0IGRlZmluaXRpb25zIG9mCglUQVJHRVRfRURPTSBhbmQgR0VOX0VSUk5PX1JUWC4KCjIwMDQtMDItMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkZi5jLCBkZi5oLCByYS1idWlsZC5jLCByYS1yZXdyaXRlLmMsIHJhLmMsIHdlYi5jOiBSZXBsYWNlCglkZl9hbmFseXNlIHdpdGggZGZfYW5hbHl6ZS4KCjIwMDQtMDItMjQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBnY3NlLmMgKGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzXzEpOiBTZXQgc3RvcF9pbnNuIHRvIGVuZCwgbm90CgliZWdpbm5pbmcgb2YgYmxvY2suCgoyMDA0LTAyLTIzICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjYWxscy5jIChwcmVjb21wdXRlX2FyZ3VtZW50cyk6IFVwZGF0ZSBjb21tZW50LgoKMjAwNC0wMi0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV0LWZvcmVzdC5jOiBSZXBsYWNlIGV0X29jY3VyZW5jZXMgd2l0aCBldF9vY2N1cnJlbmNlcy4KCjIwMDQtMDItMjMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjZmdsb29wLmgsIGxvb3AtaXYuYywgbG9vcC11bnN3aXRjaC5jOiBSZXBsYWNlIGl2X2FuYWx5c2UKCXdpdGggaXZfYW5hbHl6ZS4KCjIwMDQtMDItMjMgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IFJlbmFtZSBwbmkgdG8gc3NlMy4KCSogY29uZmlnL2kzODYvaTM4Ni5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3BtbWludHJpbi5oOiBMaWtld2lzZS4KCSogZG9jL2V4dGVuZC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL2ludm9rZS50ZXhpOiBMaWtld2lzZS4KCjIwMDQtMDItMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglSZW1vdmUgLWZ3cml0YWJsZS1zdHJpbmdzLgoJKiBjLWNvbW1vbi5jIChmaXhfc3RyaW5nX3R5cGUpOiBEb24ndCBjaGVjawoJZmxhZ193cml0YWJsZV9zdHJpbmdzLgoJKGZpeF9zdHJpbmdfdHlwZSk6IExpa2V3aXNlLgoJKiBjLW9wdHMuYyAoc2V0X3N0ZF9jODkpOiBEb24ndCBpbml0aWFsaXplCglmbGFnX3dyaXRhYmxlX3N0cmluZ3MuCgkoc2V0X3N0ZF9jOTkpOiBMaWtld2lzZS4KCSogY29tbW9uLm9wdCAoZndyaXRhYmxlLXN0cmluZ3MpOiBSZW1vdmUuCgkqIGZsYWdzLmg6IFJlbW92ZSB0aGUgZXh0ZXJuYWwgZGVjbGFyYXRpb24gb2YKCWZsYWdfd3JpdGFibGVfc3RyaW5ncy4KCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbikgPE9QVF9md3JpdGFibGVfc3RyaW5ncz46CglSZW1vdmUuCgkqIHRvcGxldi5jIChmbGFnX3dyaXRhYmxlX3N0cmluZ3MpOiBSZW1vdmUuCgkoZl9vcHRpb25zKTogUmVtb3ZlIGFuIGVudHJ5IGZvciB3cml0YWJsZS1zdHJpbmdzLgoJKiB2YXJhc20uYyAoY29uc3RfaGFzaF8xKSA8U1RSSU5HX0NTVD46IERvbid0IGNoZWNrCglmbGFnX3dyaXRhYmxlX3N0cmluZ3MuCgkoY29tcGFyZV9jb25zdGFudCkgPFNUUklOR19DU1Q+OiBMaWtld2lzZS4KCShidWlsZF9jb25zdGFudF9kZXNjKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfc2VsZWN0X3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYyAoQU9GX0FTU0VNQkxFUik6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL3BlLmMgKGFybV9wZV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmMgKGlxMjAwMF9zZWxlY3Rfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc2VsZWN0X3NlY3Rpb24pOiBMaWtld2lzZS4KCShtaXBzX2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLmMgKHBhX3NlbGVjdF9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5oIChURVhUX1NQQUNFX1ApOiBMaWtld2lzZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5jICh2ODUwX3NlbGVjdF9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZ3cml0YWJsZS1zdHJpbmdzKTogUmVtb3ZlLgoJKC1mbm8tY29uc3Qtc3RyaW5ncyk6IERvbid0IG1lbnRpb24gLWZ3cml0YWJsZS1zdHJpbmdzLgoJKiBkb2MvdHJvdWJsZS50ZXhpOiBEb24ndCBtZW50aW9uIC1md3JpdGFibGUtc3RyaW5ncy4KCjIwMDQtMDItMjMgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogVXBkYXRlIGZvciBzd2l0Y2ggb2YgYm9laG0tZ2MgdG8gYXV0b2NvbmYgMi41Ny4KCjIwMDQtMDItMjMgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAubWQgKG1vdnNmX2hhcmRmbG9hdCk6IEFkZCBQT1dFUiBmb3JtIG9mIG5vcC4KCShtb3ZkZl9oYXJkZmxvYXQ2NCk6IERpdHRvLgoJKG1vdmRmX3NvZnRmbG9hdDY0KTogRGl0dG8uCgoyMDA0LTAyLTIzICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZnVuY3Rpb25fYXJnKTogY2FsbCB0bwoJcnM2MDAwX21peGVkX2Z1bmN0aW9uX2FyZyBmb3IgREZtb2RlIG1vdmVkIHRvIGFsbG93Cglub3JtYWwgREZtb2RlIGluY29taW5nIHJlZ2lzdGVyIGFzc2lnbm1lbnQuCgoyMDA0LTAyLTIzICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwLm1kIChtb3ZzZl9oYXJkZmxvYXQpOiBBY2NlcHQgQ1RSLXRvLUNUUiBjb3B5LgoJKG1vdmRmX2hhcmRmbG9hdDY0KTogRGl0dG8uCgoyMDA0LTAyLTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29udmVydC5jLCBnY292LWlvLmMsIGxpYmdjb3YuYywgc2NoZWQtaW50LmgsIHNpYmNhbGwuYywKCWNvbmZpZy9yczYwMDAvbGludXguaCwgY29uZmlnL3JzNjAwMC9yczYwMDAtYy5jOiBVcGRhdGUKCWNvcHlyaWdodC4KCjIwMDQtMDItMjMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMvMTQxNTYKCSogYy10eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogQ2hhbmdlIGNoZWNrIGZvciBWQVJfREVDTAoJdG8gdXNlIERFQ0xfUCBpbnN0ZWFkLgoKCSogY29uZmlnL3JzNjAwMC9saW51eC5oIChPU19NSVNTSU5HX1BPV0VSUEM2NCk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKE9TX01JU1NJTkdfUE9XRVJQQzY0KTogRGVmaW5lLgoKMjAwNC0wMi0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChvcHRzLm8pOiBEZXBlbmQgb24gdGFyZ2V0LmguCgkqIG9wdHMuYyAoZGVjb2RlX29wdGlvbnMpOiBVc2UgdGFyZ2V0bS5kZWZhdWx0X3Nob3J0X2VudW1zCglpbnN0ZWFkIG9mIERFRkFVTFRfU0hPUlRfRU5VTVMuCgkqIHN5c3RlbS5oIChERUZBVUxUX1NIT1JUX0VOVU1TKTogUG9pc29uLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9ERUZBVUxUX1NIT1JUX0VOVU1TKTogTmV3LgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEFkZCBUQVJHRVRfREVGQVVMVF9TSE9SVF9FTlVNUy4KCSogdGFyZ2V0LmggKGdjY190YXJnZXQpOiBBZGQgZGVmYXVsdF9zaG9ydF9lbnVtcy4KCSogY29uZmlnL2NyaXMvY3Jpcy5oOiBSZW1vdmUgYSBjb21tZW50IGFib3V0CglERUZBVUxUX1NIT1JUX0VOVU1TLgoJKiBjb25maWcvaXAyay9pcDJrLmg6IExpa2V3aXNlLgoJKiBkb2MvdG0udGV4aSAoREVGQVVMVF9TSE9SVF9FTlVNUyk6IENoYW5nZSB0bwoJVEFSR0VUX0RFRkFVTFRfU0hPUlRfRU5VTVMuICBVcGRhdGUgdGhlIGRlc2NyaXB0aW9uLgoKMjAwNC0wMi0yMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCSAgICBGYWxrIEh1ZWZmbmVyICA8ZmFsa0BkZWJpYW4ub3JnPgoKCVBSIGMvMTQxODgKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fdmFfYXJnKTogRW1pdCBhbiBpbmZvcm1hdGl2ZSBtZXNzYWdlCglpZiBhIHRyYXAgaXMgZ2VuZXJhdGVkLgoJKiBjLXR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgoyMDA0LTAyLTIyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGdjb3YtaW8uYyAoZ2Nvdl9vcGVuKSBbR0NPVl9MT0NLRURdOiBVc2Ugb3BlbiArIGZkb3BlbiBpbnN0ZWFkIG9mCglmb3Blbi4KCSogbGliZ2Nvdi5jOiBJbmNsdWRlIHN5cy9zdGF0LmguCgkqIGNvbmZpZy9yczYwMDAvbGludXguaCAoVEFSR0VUX0hBU19GX1NFVExLVyk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKFRBUkdFVF9IQVNfRl9TRVRMS1cpOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eC5oIChUQVJHRVRfSEFTX0ZfU0VUTEtXKTogRGVmaW5lLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChUQVJHRVRfSEFTX0ZfU0VUTEtXKTogRGVmaW5lLgoKMjAwNC0wMi0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHJlb3JnLmM6IFJlbW92ZSBjb21tZW50cyBhYm91dCBkZWFkIHBvcnRzLgoKMjAwNC0wMi0yMiAgQ2hyaXN0b3BoZXIgRmF5bG9yICA8Y2dmQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotcGV8aVszNDU2N104Ni0qLWN5Z3dpbiopOiAqUmVhbGx5KiBzcGVjaWZ5CglleHRyYSBob3N0IG9iamVjdCBmaWxlIHdoZW4gdGFyZ2V0dGluZyBjeWd3aW4gcmF0aGVyIHRoYW4gZ2VuZXJpYwoJb2JqZWN0IGZpbGVzLgoKMjAwNC0wMi0yMiAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCU1lcmdlIGZyb20gdHJlZS1zc2E6CgkyMDAzLTExLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIHRyZWUtaW5saW5lLmMgKGluc2VydF9kZWNsX21hcCk6IE5ldy4KCQkocmVtYXBfZGVjbCwgcmVtYXBfdHlwZSwgcmVtYXBfYmxvY2ssIGNvcHlfYm9keV9yLAoJCWluaXRpYWxpemVfaW5saW5lZF9wYXJhbWV0ZXJzLCBkZWNsYXJlX3JldHVybl92YXJpYWJsZSwKCQlyZW1hcF9zYXZlX2V4cHIpOiBVc2UgaXQuCgoJKiBmdW5jdGlvbi5jIChjb3B5X2JvZHlfcik6IEFkZCBtYXBwaW5nIGZyb20gaWQtPnJldF9sYWJlbCB0bwoJaWQtPnJldF9sYWJlbC4gIFJldmVydCB0ZXN0IGZvciByZXRfbGFiZWwuCgoyMDA0LTAyLTIyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGdlbm91dHB1dC5jIChwcm9jZXNzX3RlbXBsYXRlKTogU3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZSBpbiBACgl0ZW1wbGF0ZXMgYW5kIGlzc3VlIGEgd2FybmluZyBpZiB0aGVyZSB3YXMgYW55LgoKMjAwNC0wMi0yMSAgQ2hyaXN0b3BoZXIgRmF5bG9yICA8Y2dmQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotcGV8aVszNDU2N104Ni0qLWN5Z3dpbiopOiBTcGVjaWZ5IGV4dHJhIGhvc3QKCW9iamVjdCBmaWxlIHdoZW4gdGFyZ2V0dGluZyBjeWd3aW4uCgkqIGNvbmZpZy9pMzg2L3QtY3lnd2luIChFWFRSQV9HQ0NfT0JKUyk6IFJlbW92ZSBkZWZpbml0aW9uIHNpbmNlIGl0IGlzCglvdmVycmlkZGVuIGJ5IHRvcC1sZXZlbCBNYWtlZmlsZS4KCjIwMDQtMDItMjEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChzdGFuZGFyZF84MDM4N19jb25zdGFudF9wKTogQWxzbyBwcmVmZXIKCXRoZSB4ODcncyBsb2FkIGNvbnN0YW50IGluc3RydWN0aW9ucyB3aGVuIG9wdGltaXppbmcgZm9yIHNpemUuCgoyMDA0LTAyLTIxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29tYmluZS5jIChTSElGVF9DT1VOVF9UUlVOQ0FURUQpOiBSZW1vdmUuCgkqIGRlZmF1bHRzLmggKFNISUZUX0NPVU5UX1RSVU5DQVRFRCk6IFByb3ZpZGUgdGhlIGRlZmF1bHQuCgkqIGV4cG1lZC5jOiBBc3N1bWUgU0hJRlRfQ09VTlRfVFJVTkNBVEVEIGlzIGFsd2F5cyBkZWZpbmVkLgoJKiBmb2xkLWNvbnN0LmM6IExpa2V3aXNlLgoJKiBzaW1wbGlmeS1ydHguYzogTGlrZXdpc2UuCgoyMDA0LTAyLTIxICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29tYmluZS5jIChjYW5fY29tYmluZV9wKTogRG9uJ3QgaWdub3JlIFNFVHMgbWFya2VkIHdpdGgKCVJFR19FSF9SRUdJT04gbm90ZXMuCgkodHJ5X2NvbWJpbmUpOiBXaGVuIGF0dGVtdGluZyB0byBmaXggdW5yZWNvZ25pemVkIGluc25zLCBkb24ndAoJc3BsaXQgYSBQQVJBTExFTCB0aGF0IGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBpMi4KCjIwMDQtMDItMjEgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uaCAoVEFSR0VUX09QVElPTl9UUkFOU0xBVEVfVEFCTEUpOiBSZWZlciB0bwoJU1VCVEFSR0VUX09QVElPTl9UUkFOU0xBVEVfVEFCTEUgZm9yIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBvcHRpb25zLgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoU1VCVEFSR0VUX09QVElPTl9UUkFOU0xBVEVfVEFCTEUpOiBEZWZpbmUgaXQuCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5oOiAjZXJyb3Igb3V0IGlmICctbWFsdGl2ZWMnIG5vdCBzcGVjaWZpZWQuCgkodmVjdG9yLCBwaXhlbCwgYm9vbCk6ICNkZWZpbmUgdG8gX192ZWN0b3IsIF9fcGl4ZWwgYW5kIF9fYm9vbC4KCShfX3VuX2FyZ3NfZXEsIF9fYmluX2FyZ3NfZXEsIF9fdGVybl9hcmdzX2VxKTogTW92ZSB0byBDLXNwZWNpZmljCglwb3J0aW9uIG9mIGhlYWRlci4KCShfX2FsdGl2ZWNfbGlua19lcnJvcl9pbnZhbGlkX2FyZ3VtZW50KTogUmVtb3ZlIHByb3RvdHlwZTsgd2lsbCB1c2UKCV9fYnVpbHRpbl9hbHRpdmVjX2NvbXBpbGV0aW1lX2Vycm9yKCJ2ZWNfKiIpIGluc3RlYWQuCgkodmVjXyopOiBGaXgvY29tcGxldGUgc2V0IG9mIGF2YWlsYWJsZSBvcGVyYXRpb24gb3ZlcmxvYWRzIGdpdmVuIHRoZQoJZXhpc3RlbmNlIG9mIGRpc3RpbmN0ICd2ZWN0b3IgYm9vbCAuLi4nIGFuZCAndmVjdG9yIHBpeGVsJyB0eXBlczsgdGlnaHRlbgoJY3YtY29ycmVjdG5lc3Mgb2YgcG9pbnRlciBhcmd1bWVudHM7IGluIEMsIGFsd2F5cyBjaGVjayBmb3IgY29ycmVjdAoJYXJndW1lbnQgdHlwZXMgYmVmb3JlIG1hY3JvIGV4cGFuc2lvbi4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoU1VCVEFSR0VUX09QVElPTl9UUkFOU0xBVEVfVEFCTEUpOiBOZXcgbWFjcm8KCWRlZmluaW5nIERhcndpbi9Qb3dlclBDLXNwZWNpZmljICctZltuby1dYWx0aXZlYycgYW5kCgknLVdbbm8tXWFsdGl2ZWMtbG9uZy1kZXByZWNhdGVkJyBzd2l0Y2hlcy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtYyAocnM2MDAwX2NwdV9jcHBfYnVpbHRpbnMpOiBQcmUtZGVmaW5lCgknX192ZWN0b3InLCAnX19waXhlbCcgYW5kICdfX2Jvb2wnIG1hY3JvcyB1c2luZwoJJ19fYXR0cmlidXRlX18oKGFsdGl2ZWMoLi4uKSkpJyB0eXBlcy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoYm9vbF9jaGFyX3R5cGVfbm9kZSwgYm9vbF9zaG9ydF90eXBlX25vZGUsCglib29sX2ludF90eXBlX25vZGUsIHBpeGVsX3R5cGVfbm9kZSwgYm9vbF9WMTZRSV90eXBlX25vZGUsCglib29sX1Y4SElfdHlwZV9ub2RlLCBib29sX1Y0U0lfdHlwZV9ub2RlLCBwaXhlbF9WOEhJX3R5cGVfbm9kZSk6CglOZXcgdHlwZSBub2Rlcy4KCShyczYwMDBfd2Fybl9hbHRpdmVjX2xvbmcsIHJzNjAwMF93YXJuX2FsdGl2ZWNfbG9uZ19zd2l0Y2gpOiBOZXcsIGZvcgoJaGFuZGxpbmcgJy1XW25vLV1hbHRpdmVjLWxvbmctZGVwcmVjYXRlZCcuCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBIYW5kbGUgJy1XW25vLV1hbHRpdmVjLWxvbmctZGVwcmVjYXRlZCcuCgkocnM2MDAwX2V4cGFuZF9iaW5vcF9idWlsdGluLCByczYwMDBfZXhwYW5kX3Rlcm5vcF9idWlsdGluLAoJYWx0aXZlY19leHBhbmRfZHN0X2J1aWx0aW4pOiBSZW1vdmUgY2FzdHMgZnJvbSBpbnRlZ2VyIGxpdGVyYWxzLgoJKGFsdGl2ZWNfZXhwYW5kX2J1aWx0aW4pOiBMaWtld2lzZTsgaGFuZGxlIGV4cGFuc2lvbiBvZiBuZXcKCSdfX2J1aWx0aW5fYWx0aXZlY19jb21waWxldGltZV9lcnJvcicgZnVuY3Rpb24uCgkocnM2MDAwX2luaXRfYnVpbHRpbnMpOiBJbml0aWFsaXplICd2ZWN0b3IgYm9vbCAuLi4nIGFuZCAndmVjdG9yIHBpeGVsJwoJdHlwZXMsIGFuZCBtYWtlIHRoZW0gZGlzdGluY3QgZnJvbSBvdGhlciB2ZWN0b3IgdHlwZXM7IHJlZ2lzdGVyCgknX19idWlsdGluX2FsdGl2ZWNfY29tcGlsZXRpbWVfZXJyb3InIGZ1bmN0aW9uLgoJKHByaW50X29wZXJhbmQpOiBGb3IgJ1AnLCBwcmludCBhIGZ1bGwgdGFyZ2V0IHJlZ2lzdGVyIG5hbWUgaW5zdGVhZCBvZgoJbWVyZWx5IGl0cyBudW1iZXIuCgkocnM2MDAwX2F0dHJpYnV0ZV90YWJsZSk6IEFkZCAiYWx0aXZlYyIgYXR0cmlidXRlLgoJKHJzNjAwMF9oYW5kbGVfYWx0aXZlY19hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFRBUkdFVF9PUFRJT05TKTogRGVzY3JpYmUKCSctbVtuby1dLXdhcm4tYWx0aXZlYy1sb25nJyAod2hpY2ggJy1XW25vLV1hbHRpdmVjLWxvbmctZGVwcmVjYXRlZCcKCW1hcHMgdG8pLgoJKHJzNjAwMF93YXJuX2FsdGl2ZWNfbG9uZywgcnM2MDAwX3dhcm5fYWx0aXZlY19sb25nX3N3aXRjaCk6IEZvcndhcmQKCWRlY2xhcmUuCgkoQUxUSVZFQ19CVUlMVElOX0NPTVBJTEVUSU1FX0VSUk9SKTogTmV3IGJ1aWx0LWluIGVudW1lcmF0aW9uLgoKMjAwNC0wMi0yMCAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoc2hpZnRfbWl4NGxlZnQrMSk6IERlbGV0ZSByZWxvYWRfY29tcGxldGVkCgljaGVjay4KCShzaGlmdF9taXg0bGVmdCsyKTogRGVsZXRlIHJlZHVuZGFudCBwYXR0ZXJuLgoKMjAwNC0wMi0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGFsaWFzLmMgKE9VVEdPSU5HX1JFR05PKTogRG9uJ3QgZGVmaW5lIHRoZSBkZWZhdWx0LgoJKiBidWlsdGlucy5jIChPVVRHT0lOR19SRUdOTyk6IExpa2V3aXNlLgoJKElOQ09NSU5HX1JFR05PKTogTGlrZXdpc2UuCgkoYXBwbHlfYXJnc19yZWdpc3Rlcl9vZmZzZXQpOiBBbHdheXMgdXNlIE9VVEdPSU5HX1JFR05PLgoJKiBjb21iaW5lLmMgKE9VVEdPSU5HX1JFR05PKTogTGlrZXdpc2UuCgkqIHNpYmNhbGwuYyAoT1VUR09JTkdfUkVHTk8pOiBMaWtld2lzZS4KCSogZGVmYXVsdHMuaCAoSU5DT01JTkdfUkVHTk8pOiBQcm92aWRlIHRoZSBkZWZhdWx0LgoJKE9VVEdPSU5HX1JFR05PKTogTGlrZXdpc2UuCgoyMDA0LTAyLTIxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwYXJhbXMuZGVmIChtYXgtcGVlbGVkLWluc25zLCBtYXgtY29tcGxldGVseS1wZWVsZWQtaW5zbnMsCgltYXgtb25jZS1wZWVsZWQtaW5zbnMpOiBTZXQgdG8gNDAwLgoKMjAwNC0wMi0yMCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBjKysvMTIwMDcKCSogZGJ4b3V0LmMgKGRieG91dF9wYXJtcyk6IENoZWNrIHRoYXQgREVDTF9SVEwgYW5kIERFQ0xfSU5DT01JTkdfUlRMCglhcmUgc2V0IGZvciBwYXJhbWV0ZXJzIGJlZm9yZSBvdXRwdXRpbmcgZGVidWdnaW5nIGluZm9ybWF0aW9uLgoKMjAwNC0wMi0yMCAgRmFsayBIdWVmZm5lciAgPGZhbGtAZGViaWFuLm9yZz4KCglQUiB0YXJnZXQvMTQyMDEKCSogY29uZmlnL2FscGhhL2FscGhhLm1kICgqZml4X3RydW5jc2ZzaV9pZWVlKTogRml4IHR5cG9lZCBvcGVyYW5kCgludW1iZXJzLgoKMjAwNC0wMi0yMCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBpbnB1dC5oOiBEb24ndCAjaW5jbHVkZSBsaW5lLW1hcC5oLiAgSXQgbWF5IGNhdXNlIGxpbmsgcHJvYmxlbXMKCXdpdGggdW5kZWZpbmVkIGxpbmVtYXBfbGluZV9zdGFydCB3aGVuIGxpbmUtbWFwLmggaXMgaW5jbHVkZWQgYnV0CglsaW5lLW1hcC5vIGlzIG5vdCBsaW5rZWQsIGFzIGN1cnJlbnRseSBoYXBwZW5zIHdpdGggZ2VuZ3R5cGUgb24KCWNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgaW5saW5lLgoJKiB0b3BsZXYuYzogU28gd2UgZG8gaGF2ZSB0byBleHBsaWNpdGx5ICNpbmNsdWRlIGxpbmUtbWFwLmggaGVyZS4KCjIwMDQtMDItMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IEFkZCAtV3ZhcmlhZGljLW1hY3Jvcy4KCjIwMDQtMDItMjAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9lbWl0X2luc24pOiBSZW1vdmUuCgkqIHNjaGVkLWludC5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKMjAwNC0wMi0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglSZXZlcnQ6CgkyMDA0LTAyLTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoJKiBvcHRzLmMgKGRlY29kZV9vcHRpb25zKTogRG9uJ3QgdXNlIERFRkFVTFRfU0hPUlRfRU5VTVMuCgkqIHN5c3RlbS5oIChERUZBVUxUX1NIT1JUX0VOVU1TKTogUG9pc29uLgoJKiBjb25maWcvY3Jpcy9jcmlzLmg6IFJlbW92ZSBhIGNvbW1lbnQgYWJvdXQKCURFRkFVTFRfU0hPUlRfRU5VTVMuCgkqIGNvbmZpZy9pcDJrL2lwMmsuaDogTGlrZXdpc2UuCgkqIGRvYy90bS50ZXhpIChERUZBVUxUX1NIT1JUX0VOVU1TKTogUmVtb3ZlLgoKMjAwNC0wMi0yMCAgTW9oYW4gRW1iYXIgIDxnbnVzdHVmZkB0aGlzaXNjb29sLmNvbT4KCSAgICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBNb3ZlZCAtLWRpc2FibGUtbGliZ2NqIGFuZAoJLS13aXRoLXN5c3RlbS16bGliIGRvY3VtZW50YXRpb24gdG8gbmV3IHNlY3Rpb24gZm9yCglKYXZhLXNwZWNpZmljIG9wdGlvbnMuCglBZGRlZCBleHBsaWNpdCBDcm9zcy1Db21waWxlci1TcGVjaWZpYyBPcHRpb25zIHN1YmhlYWRpbmcuCglBZGRlZCBzZWN0aW9uIGZvciBKYXZhLXNwZWNpZmljIG9wdGlvbnMuCgoyMDA0LTAyLTIwICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChCdWlsZGluZyB0aGUgQWRhIGNvbXBpbGVyKTogUmVtb3ZlCglleGFtcGxlLgoKMjAwNC0wMi0yMCAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogdG9wbGV2LmMgKGR1bXBfZmlsZV9pbmRleCwgZHVtcF9maWxlKTogUHV0IGNlMyBiZWZvcmUgcm5yZWcuCgoyMDA0LTAyLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZ2NjLmMgKHByb2Nlc3NfY29tbWFuZCk6IEFsbG93IHRyYW5zbGF0aW9uIG9mIHRoZSBjb3B5cmlnaHQKCXN5bWJvbCBidXQgbm90IHRoZSByZXN0IG9mIHRoZSBjb3B5cmlnaHQgbWVzc2FnZS4KCSogZ2Nvdi5jIChwcmludF92ZXJzaW9uKTogTGlrZXdpc2UuICBBbGxvdyB0cmFuc2xhdGlvbiBvZiB0aGUKCW1lc3NhZ2UgYWJvdXQgd2FycmFudHkuCgoyMDA0LTAyLTIwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGNvbmZpZy9jcmlzL2NyaXMubWQgKCIqYW5kc2lfbW92dSIpOiBDb3JyZWN0IHBhcmVudGhlc2VzIGluCglwcmVkaWNhdGUuCgkoIiphbmRzaV9jbGVhciIpOiBUd2VhayBjb25zdHJhaW50cyB0byBub3QgbWF0Y2ggcG9zdGluY3JlbWVudC4KCUFkanVzdCB0aGUgcHJlZGljYXRlIHRvIGV4Y2x1ZGUgYSB2b2xhdGlsZSBtZW1vcnkgcmVmZXJlbmNlLgoJKCIqYW5kaGlfY2xlYXIiKTogRGl0dG8uICBSZW5hbWUgZnJvbSAiKmFuZGhpX2NsZWFyX3NpZ25lZCIuCgkoIiphbmRoaV9jbGVhcl91bnNpZ25lZCIpOiBSZW1vdmUsIG5vbi1tYXRjaGluZyBwYXR0ZXJuLgoKMjAwNC0wMi0xOSAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogbW92ZS1pZi1jaGFuZ2U6IFJlbW92ZS4KCSogTWFrZWZpbGUuaW4gKHMtbWxpYiwgYy1wYXJzZS55LCBzLWNoZWNrLCBzLWdlbmNoZWNrKQoJKHMtc3BlY3MsIHMtb3B0aW9ucywgcy1jb25maWcsIHMtY29uZGl0aW9ucywgcy1mbGFncywgcy1jb2RlcykKCShzLWNvbnN0YW50cywgcy1lbWl0LCBzLXJlY29nLCBzLW9waW5pdCwgcy1leHRyYWN0LCBzLXBlZXApCgkocy1hdHRyLCBzLWF0dHJ0YWIsIHMtb3V0cHV0LCBzLWdlbnJ0bCwgcy1tb2Rlcywgcy1wcmVkcykKCShzLWd0eXAtZ2VuLCBzLWlvdik6IFVzZSB0aGUgdG9wIGxldmVsIG1vdmUtaWYtY2hhbmdlLgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy9vYmpjLXBhcnNlLnkpOiBMaWtld2lzZS4KCjIwMDQtMDItMTkgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGRvbG9vcF9lbmRfaW50ZXJuYWwpOiBVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQKCWZvciBvcGVyYW5kMi4gIEFkZCBjb25kaXRpb24gdGhhdCByZXF1aXJlcyByZWdpc3Rlcl9vcGVyYW5kIG9wZXJhbmQyCgliZWZvcmUgcmVsb2FkLgoKMjAwNC0wMi0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoJICAgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AZHMyLnBnLmdkYS5wbD4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19hZGRyZXNzX2luc25zKTogVHJlYXQgQkxLbW9kZSBzcGVjaWFsbHkuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IEV4cGFuZCBjb21tZW50IGFib3ZlIHVuYWxpZ25lZCBsb2FkcyBhbmQgc3RvcmVzLgoKMjAwNC0wMi0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChTVFJJQ1QyX1dBUk4pOiBBZGQgLVduby12YXJpYWRpYy1tYWNyb3MuCgkqIHRyZWUuYyAoYnVpbGQwLCBidWlsZDEsIGJ1aWxkMiwgYnVpbGQzLCBidWlsZDQpOiBTcGxpdCBvdXQgZnJvbS4uLgoJKGJ1aWxkKTogLi4uIGhlcmUuICBDYWxsIHRoZW0uCgkqIHRyZWUuaCAoYnVpbGQsIF9idWlsZE4xLCBfYnVpbGROMiwgX2J1aWxkQzEsIF9idWlsZEMyKTogTmV3LgoKCSogY29udmVydC5jIChjb252ZXJ0X3RvX2ludGVnZXIpOiBSZW1vdmUgZXh0cmEgYnVpbGQgYXJndW1lbnQuCgkqIHRyZWUtaW5saW5lLmMgKGV4cGFuZF9jYWxsX2lubGluZSk6IExpa2V3aXNlLgoKMjAwNC0wMi0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtb3B0cy5jICh3YXJuX3ZhcmlhZGljX21hY3Jvcyk6IE5ldy4KCShjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogU2V0IGl0LgoJKHNhbml0aXplX2NwcF9vcHRzKTogQ29weSBpdCB0byBjcHBfb3B0cy4KCSogYy5vcHQgKFd2YXJpYWRpYy1tYWNyb3MpOiBOZXcuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBBZGQgd2Fybl92YXJpYWRpY19tYWNyb3MuCgkqIGNwcGluaXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIpOiBJbml0aWFsaXplIGl0LgoJKiBjcHBtYWNyby5jIChwYXJzZV9wYXJhbXMpOiBDaGVjayBpdC4KCjIwMDQtMDItMTkgIERhdmlkIERhbmV5IDxkZGFuZXlAYXZ0cmV4LmNvbT4KCglQUiBwcmVwcm9jZXNzb3IvMTQxOTgKCSogY29uZmlnL21pcHMvbGludXguaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IEFkZAoJYnVpbHRpbl9hc3NlcnQgKCJtYWNoaW5lPW1pcHMiKQoKMjAwNC0wMi0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIG9wdHMuYyAoZGVjb2RlX29wdGlvbnMpOiBEb24ndCB1c2UgREVGQVVMVF9TSE9SVF9FTlVNUy4KCSogc3lzdGVtLmggKERFRkFVTFRfU0hPUlRfRU5VTVMpOiBQb2lzb24uCgkqIGNvbmZpZy9jcmlzL2NyaXMuaDogUmVtb3ZlIGEgY29tbWVudCBhYm91dAoJREVGQVVMVF9TSE9SVF9FTlVNUy4KCSogY29uZmlnL2lwMmsvaXAyay5oOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGkgKERFRkFVTFRfU0hPUlRfRU5VTVMpOiBSZW1vdmUuCgoyMDA0LTAyLTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2Z1bmN0aW9uX2FyZyk6IEluIGJpZy1lbmRpYW4gbW9kZSwKCXdoZW4gcGFzc2luZyBzaW5nbGUgU0Ztb2RlIHF1YW50aXRpZXMgaW4gZ2VuZXJhbCByZWdpc3RlcnMsCglwdXQgdGhlbSBpbiB0aGUgaGlnaCBoYWxmLgoKMjAwNC0wMi0xOSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogZG9jL21kLnRleGkgKFN0YW5kYXJkIE5hbWVzKTogRG9jdW1lbnQgYWRkaXRpb25hbCBkZXBlbmRlbmN5IG9uCglmaXggcGF0dGVybi4KCgkqIG9wdGFicy5jIChmdHJ1bmNpZnkpOiBSZW1vdmUuCgkoZXhwYW5kX2ZpeCk6IE1hbnVhbGx5IGlubGluZSBmdHJ1bmNpZnkgYWJvdmUuCgkoY2FuX2ZpeF9wKTogQWRkIEZJWE1FIG5vdGUuCgoyMDA0LTAyLTE5ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAoc3BlX2ZpeHVuc3Nmc2kyKTogUmVuYW1lIHRvCglzcGVfZml4dW5zX3RydW5jc2ZzaTIuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZml4dW5zc2ZzaTIpOiBSZW5hbWUgdG8KCWZpeHVuc190cnVuY3Nmc2kyLgoKMjAwNC0wMi0xOSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEhBUkRfUkVHTk9fQ0FMTEVSX1NBVkVfTU9ERSk6IE5ldyBtYWNyby4KCSogdGVzdHN1aXRlL2djYy5kZy8yMDA0MDIxOS0xLmM6IE5ldyB0ZXN0LgoKMjAwNC0wMi0xOSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIipzdWJkZjNfY2MiLCAiKnN1YmRmM19jY29ubHkiLCAiKnN1YnNmM19jYyIsCgkiKnN1YnNmM19jY29ubHkiKTogU3VidHJhY3Rpb24gaXMgbm90IGNvbW11dGF0aXZlLgoKMjAwNC0wMi0xOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNkYm91dC5jIChwcmVpbml0X3N5bWJvbHMsIHNkYm91dF9pbml0aWFsaXplZCk6IE5ldyBzdGF0aWNzLgoJKHNkYm91dF9zeW1ib2wpOiBJZiBjYWxsZWQgYmVmb3JlIHNkYm91dF9pbml0LCBxdWV1ZSBERUNMIGZvcgoJbGF0ZXIgYW5kIHJldHVybi4KCShzZGJvdXRfaW5pdCk6IFNldCBzZGJvdXRfaW5pdGlhbGl6ZWQgdHJ1ZSwgcHJvY2VzcyBkZWNscwoJcXVldWVkIGVhcmxpZXIgYnkgc2Rib3V0X3N5bWJvbC4KCShzZGJvdXRfZmluaXNoKTogVXNlIHNpemVfdCBmb3IgaW5kZXggdmFyaWFibGUuCgoyMDA0LTAyLTE5ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jIChpbnZlcnRfdHJ1dGh2YWx1ZSk6IERvIG5vdCBjYWxsIGludmVydF90cmVlX2NvbXBhcmlzb24KCWZvciB1bm9yZGVyZWQgY29tcGFyaXNvbiBjb2Rlcy4KCjIwMDQtMDItMTkgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IENvcnJlY3QgY29tbWVudC4KCShzY2FuX3BhcmFkb3hpY2FsX3N1YnJlZ3MpOiBSZW1vdmUgI2lmIDAgYW5kIG9sZCBjb21tZW50LgoJKiBkb2MvZXh0ZW5kLnRleGkgKExvY2FsIFJlZyBWYXJzKTogUmVtb3ZlIG9ic29sZXRlIGNvbW1lbnQgdGhhdAoJcmVnaXN0ZXIgdmFyaWFibGVzIGFyZSBub3QgdXNlZCBieSByZWxvYWQuCgoyMDA0LTAyLTE5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCglQUiB0YXJnZXQvMTQyMDkKCSogY29uZmlnL2NyaXMvY3Jpcy5tZCAoIiphbmRzaV9tb3Z1IiwgIiphbmRoaV9tb3Z1Iik6IFR3ZWFrCgljb25zdHJhaW50cyB0byBub3QgbWF0Y2ggcG9zdGluY3JlbWVudC4gIEFkanVzdCB0aGUgcHJlZGljYXRlIHRvCglleGNsdWRlIGEgdm9sYXRpbGUgbWVtb3J5IHJlZmVyZW5jZS4KCjIwMDQtMDItMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUuaCAoQVNNX09VVFBVVF9FWFRFUk5BTCk6IFJlbW92ZS4KCjIwMDQtMDItMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBob29rcy5jIChob29rX3ZvaWRfdHJlZV9pbnQpOiBSZW1vdmUuCgkoaG9va192b2lkX2NvbnN0Y2hhcnB0cik6IExpa2V3aXNlLgoJKGhvb2tfaW50X3ZvaWRfMCk6IExpa2V3aXNlLgoJKiBob29rcy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZXMgZm9yIHRoZSBhYm92ZSB0aHJlZQoJZnVuY3Rpb25zLgoJKiB0YXJnaG9va3MuYyAoaG9va19ib29sX21hY2hpbmVfbW9kZV90cnVlKTogUmVtb3ZlLgoJKiB0YXJnaG9va3MuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglob29rX2Jvb2xfbWFjaGluZV9tb2RlX3RydWUuCgoyMDA0LTAyLTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZW1pdC1ydGwuYyAoc3VicmVnX3JlYWxwYXJ0X3ApOiBSZW1vdmUuCgkocmVvcmRlcl9pbnNuc193aXRoX2xpbmVfbm90ZXMpOiBMaWtld2lzZS4KCShlbmRfZnVsbF9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKiBydGwuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIHRoZSBhYm92ZSBmdW5jdGlvbnMuCgoyMDA0LTAyLTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FyYy9hcmMuaCwgY29uZmlnL2FybS9hcm0uaCwgY29uZmlnL2Zydi9mcnYuaCwKCWNvbmZpZy9oODMwMC9oODMwMC5oLCBjb25maWcvaTM4Ni9pMzg2LmgsIGNvbmZpZy9pODYwL2k4NjAuaCwKCWNvbmZpZy9pcTIwMDAvaXEyMDAwLmgsIGNvbmZpZy9tMzJyL20zMnIuaCwKCWNvbmZpZy9wZHAxMS9wZHAxMS5oLCBjb25maWcvc3BhcmMvc3BhcmMuaCwKCWNvbmZpZy94dGVuc2EveHRlbnNhLmg6IFJlbW92ZSBjb21tZW50ZWQtb3V0IG9yIHVzZWxlc3MKCWRlZmluaXRpb25zIG9mIENBU0VfVkVDVE9SX1BDX1JFTEFUSVZFLgoKMjAwNC0wMi0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGxvb3AuYyAoYWxsX3NldHNfaW52YXJpYW50X3ApOiBSZW1vdmUuCgoyMDA0LTAyLTE5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMjkxNgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoTlBBUk1fUkVHUyk6IERlbGV0ZS4KCShCQVNFX1JFVFVSTl9WQUxVRV9SRUcpOiBMaWtld2lzZS4KCShCQVNFX09VVEdPSU5HX1ZBTFVFX1JFRyk6IExpa2V3aXNlLgoJKEJBU0VfUEFTU0lOR19BUkdfUkVHKTogTGlrZXdpc2UuCgkoQkFTRV9JTkNPTUlOR19BUkdfUkVHKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19zdHJpY3RfYXJndW1lbnRfbmFtaW5nKTogVGVzdAoJVEFSR0VUX0FSQ0g2NCwgbm90IFRBUkdFVF9WOS4KCShmdW5jdGlvbl9hcmdfc2xvdG5vKTogRGlzcGF0Y2ggYmFzZWQgb24gdGhlIG1vZGUgY2xhc3MuCglIYW5kbGUgdmVjdG9yIG1vZGVzIGxpa2UgZmxvYXRpbmctcG9pbnQgbW9kZXMuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8xKTogSGFuZGxlIHZlY3RvciB0eXBlcyBsaWtlCglmbG9hdGluZy1wb2ludCB0eXBlcy4KCShmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzIpOiBMaWtld2lzZS4KCUNhbGN1bGF0ZSByZWdubyBhZnRlciBtb2RlIHRyYW5zZm9ybWF0aW9uLgoJKGZ1bmN0aW9uX2FyZyk6IEhhbmRsZSB2ZWN0b3IgbW9kZXMgbGlrZSBmbG9hdGluZy1wb2ludCBtb2Rlcy4KCShmdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncyk6IFJlcGxhY2UgTlBBUk1fUkVHUyBieSBTUEFSQ19JTlRfQVJHX01BWC4KCUlmIEFSQ0g2NCwgZG8gbm90IHJlY2hlY2sgYWxpZ25tZW50LgoJKGZ1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IFJlb3JkZXIgdGhlIGNvbmRpdGlvbnMuCgkoc3BhcmNfcmV0dXJuX2luX21lbW9yeSk6IE1vdmUgYWZ0ZXIgZnVuY3Rpb25fYXJnX3BhZGRpbmcuCglJbXBsZW1lbnQgY2FsbGluZyBjb252ZW50aW9ucyBmb3IgdmVjdG9yIG1vZGVzLgoJKHNwYXJjX3N0cnVjdF92YWx1ZV9ydHgpOiBNb3ZlIGFmdGVyIHNwYXJjX3JldHVybl9pbl9tZW1vcnkuCgkoZnVuY3Rpb25fdmFsdWUpOiBNb3ZlIHNjb3BlIG9mICdyZWdiYXNlJy4KCUltcGxlbWVudCBjYWxsaW5nIGNvbnZlbnRpb25zIGZvciB2ZWN0b3IgbW9kZXMuCgkoc3BhcmNfYnVpbHRpbl9zYXZlcmVncyk6IFJlcGxhY2UgTlBBUk1fUkVHUyBieSBTUEFSQ19JTlRfQVJHX01BWAoJYW5kIEJBU0VfSU5DT01JTkdfQVJHX1JFRyBieSBTUEFSQ19JTkNPTUlOR19JTlRfQVJHX0ZJUlNULgoJKHNwYXJjX3ZhX2FyZyk6IFVzZSBmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UgdG8gdGVzdCB3aGV0aGVyCgl0aGUgYXJndW1lbnQgaXMgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KCShzcGFyY190eXBlX2NvZGUpOiBIYW5kbGUgdmVjdG9yIHR5cGVzLgoKMjAwNC0wMi0xOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IFdoZW4gYnVpbGRpbmcgZGVjbF9ydGwgZm9yCglTUExJVF9DT01QTEVYX0FSR1MsIGVuc3VyZSBpbm5lciBtb2RlcyBvZiBjb25jYXQgbWF0Y2ggb3V0ZXIuCgoyMDA0LTAyLTE5ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBleHByLmMgKGlzX2FsaWduaW5nX29mZnNldCk6IENoZWNrIGlmIHdlIGFyZSBhbGlnbmluZyB0aGUKCWV4cHJlc3Npb25zJ3MgYWRkcmVzcyBvdmVyIEJJR0dFU1RfQUxJR05NRU5UIGluIGJ5dGVzLCBub3QKCWluIGJpdHMuCgoyMDA0LTAyLTE4ICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCgkqIGdjYy5jIChMSUJHQ0NfU1BFQyk6IElmIFJFQUxfTElCR0NDX1NQRUMgaXMgZGVmaW5lZCwgYW5kCglMSUJHQ0NfU1BFQyBpc24ndCwgc2V0IExJQkdDQ19TUEVDIHRvIFJFQUxfTElCR0NDX1NQRUMuCgkoaW5pdF9nY2Nfc3BlYyk6IERvbid0IGRlZmluZSBvciBjYWxsIGlmIFJFQUxfTElCR0NDX1NQRUMgaXMKCWRlZmluZWQuICBJbnN0ZWFkIHVzZSBSRUFMX0xJQkdDQ19TUEVDLCB1bm1vZGlmZWQsIGFzIHRoZSBsaWJnY2MKCXNwZWMgc3RyaW5nLgoJKiBkb2MvdG0udGV4aSAoUkVBTF9MSUJHQ0NfU1BFQyk6IERvY3VtZW50LgoKMjAwNC0wMi0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR3YXJmMm91dC5jIChsb2NsYWJlbF9udW0pOiBNb3ZlIG91dHNpZGUgI2lmZGVmCglEV0FSRjJfREVCVUdHSU5HX0lORk8gYW5kIG1hcmsgd2l0aCBHVFkoKCkpLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHN0cnVjdCBleHRlcm5fZnVuY19saXN0LGV4dGVybl9mdW5jX2hlYWQpOgoJTWFyayB3aXRoIEdUWSgoKSkuCgkoaWE2NF9ocHV4X2FkZF9leHRlcm5fZGVjbCk6IFNhdmUgdGhlIGRlY2wsIG5vdCB0aGUgbmFtZSBzdHJpbmcuCglBbGxvY2F0ZSBtZW1vcnkgd2l0aCBnZ2NfYWxsb2MuICBObyBuZWVkIHRvIGNvcHkgYW55dGhpbmcuCgkoaWE2NF9ocHV4X2ZpbGVfZW5kKTogVXBkYXRlIHRvIG1hdGNoLgoKMjAwNC0wMi0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBEb24ndCBpbXBseSAzRE5vdyEgZm9yIC1tNjQKCWJ5IGRlZmF1bHQuCgoyMDA0LTAyLTE4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiZGl2bW9kdGlkaTMiKTogVXNlIGNhbm9uaWNhbCBSVEwuCgkoImRpdm1vZHRpc2kzIik6IExpa2V3aXNlLgoJKCJ1ZGl2bW9kZGk0IiwgInVkaXZtb2R0aWRpMyIpOiBMaWtld2lzZS4KCSgiZGl2bW9kc2k0IiwgImRpdm1vZGRpc2kzIik6IExpa2V3aXNlLgoJKCJ1ZGl2bW9kc2k0IiwgInVkaXZtb2RkaXNpMyIpOiBMaWtld2lzZS4KCSgidWRpdnNpMyIsICJ1bW9kc2kzIik6IExpa2V3aXNlLgoKMjAwNC0wMi0xOCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX21haW5wb29sX3N0YXJ0KTogRGVsZXRlIHRoZSBtYWluIHBvb2wKCXBsYWNlaG9sZGVyIGluc24gd2hlbiBjaHVua2lmeWluZyB0aGUgcG9vbC4KCjIwMDQtMDItMTggIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5oIChQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTSk6IERlZmluZSB0byBJTlZBTElEX1JFR05VTSB3aGVuIG5vdAoJZ2VuZXJhdGluZyBQSUMgY29kZS4KCjIwMDQtMDItMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IEFkZCBhIHByb3RvdHlwZSBmb3IKCWg4MzAwX2V4cGFuZF9icmFuY2guCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF9leHBhbmRfYnJhbmNoKTogTmV3LgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGJsZSwgYmxldSwgYmdlLCBiZ2V1LCBibHQsIGJsdHUsIGJndCwKCWJndHUsIGJlcSwgYm5lKTogQ2FsbCBoODMwMF9leHBhbmRfYnJhbmNoKCkuCgoyMDA0LTAyLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlcyBmb3IKCWg4MzAwX2hhcmRfcmVnbm9fbnJlZ3MgYW5kIGg4MzAwX2hhcmRfcmVnbm9fbW9kZV9vay4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGg4MzAwX2hhcmRfcmVnbm9fbnJlZ3MpOiBOZXcuCgkoaDgzMDBfaGFyZF9yZWdub19tb2RlX29rKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChIQVJEX1JFR05PX05SRUdTKTogQ2FsbAoJaDgzMDBfaGFyZF9yZWdub19ucmVncygpLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IENhbGwgaDgzMDBfaGFyZF9yZWdub19tb2RlX29rKCkuCgoyMDA0LTAyLTE4ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGNwcGhhc2guaCAoc3RydWN0IGNwcF9idWZmZXIpOiBSZXN0b3JlIHJldHVybl9hdF9lb2YgZmllbGQuICBUaGlzCglwYXJ0bHkgcmV2ZXJ0cyBteSAyMDAzLTEwLTAxIGNoYW5nZSwgYmVjYXVzZSB3ZSdyZSBiYWNrIHRvIGxvZ2ljYWxseQoJaW5jbHVkaW5nIDxjb21tYW5kIGxpbmU+IGluc2lkZSB0aGUgbWFpbiBsaW5lLgoJKiBjcHBsZXguYyAoX2NwcF9nZXRfZnJlc2hfbGluZSk6IENoZWNrIHJldHVybl9hdF9lb2YgZmllbGQuCgkqIGNwcG1hY3JvLmMgKGNwcF9zY2FuX25vb3V0cHV0KTogU2V0IHJldHVybl9hdF9lb2Ygb2YgY3VycmVudCBidWZmZXIuCglGaXhlcyBQUiBwcmVwcm9jZXNzb3IvMTQxMDMuCgoJKiBjcHBmaWxlcy5jIChfY3BwX3N0YWNrX2luY2x1ZGUpOiBXaGVuIGFwcHJvcHJpYXRlIGRlY3JlbWVudAoJbGluZV90YWJsZSdzIGhpZ2hlc3RfbG9jYXRpb24sIGZpeGluZyBMQVNUX1NPVVJDRV9MSU5FX0xPQ0FUSU9OLgoJKGNwcF9wdXNoX2luY2x1ZGUpOiBEb24ndCBuZWVkIHRvIGluY3JlbWVudCBwZmlsZSdzIGxpbmUgZmllbGQuCgkqIGxpbmUtbWFwLmggKExBU1RfU09VUkNFX0xJTkVfTE9DQVRJT04pOiBPbmx5IGRlY3JlbWVudCBieSAxLgoKCSogYy1wcG91dHB1dC5jIChwcmludCBzdHJ1Y3QpOiBOZXcgZmlyc3RfdGltZSBmaWVsZC4KCShpbml0X3BwX291dHB1dCk6IFNldCBwcmludC5maXJzdF90aW1lLgoJKHBwX2ZpbGVfY2hhbmdlKTogVXNlIHByaW50LmZpcnN0X3RpbWUsIHJhdGhlciB0aGFuIE1BSU5fRklMRV9QLAoJd2hpY2ggaXMgc2V0IGFsc28gZm9yIChzYXkpIDxjb21tYW5kIGxpbmU+LiAgQ2xlYXIgcHJpbnQuZmlyc3RfdGltZS4KCgkqIGNwcGZpbGVzLmMgKHN0cnVjdCBfY3BwX2ZpbGUpOiBDb21tZW50IGFuZCB0eXBlIGZvciBwY2ggZmllbGQKCWRvZXMgbm90IG1hdGNoIHRoZSBjb2RlLCBzbyBmaXggYm90aC4KCShzaG91bGRfc3RhY2tfZmlsZSk6IElubGluZSBpbmNsdWRlX3BjaF9wIGZ1bmN0aW9uLgoJKGluY2x1ZGVfcGNoX3ApOiBSZW1vdmUgcG9pbnRsZXNzIGZ1bmN0aW9uLgoKCSogY3BwaGFzaC5oIChzdHJ1Y3QgY3BwX2J1ZmZlcik6IFJlbW92ZSB1bnVzZWQgc2VhcmNoX2NhY2hlZCBmaWVsZC4KCjIwMDQtMDItMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGZvdXIgZGVmaW5lX3BlZXBob2xlMidzKTogVXNlCgloODMwMF9yZWdzX29rX2Zvcl9zdG0oKS4KCjIwMDQtMDItMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IFVwZGF0ZSB0aGUgcHJvdG90eXBlIGZvcgoJZXhwYW5kX2Ffcm90YXRlKCkuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChleHBhbmRfYV9yb3RhdGUpOiBSZW1vdmUgdGhlIGZpcnN0Cglhcmd1bWVudC4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBVcGRhdGUgYWxsIGNhbGxlcnMuCgoyMDA0LTAyLTE4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uKTogRGVhbCB3aXRoIGxvZ2ljYWxzIG9uCglmbG9hdHMuCgkoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbik6IERlYWwgd2l0aCBsb2dpY2FscyBvbiBmbG9hdHMuCgoJKiBpMzg2Lm1kIChTU0UgZmFicyBzcGxpdHRlcnMpOiBFbWl0IG5ldyBwYXR0ZXJucy4KCShTU0UgY21vdiBzcGxpdHRlcnMpOiBMaWtld2lzZS4KCShzc2VfYW5kdjRzZjMsIHNzZV9uYW5kdjRzZjMsIHNzZV9pb3J2NHNmMywgc3NlX3hvcnY0c2YzCgkoc3NlX2FuZHYyZGYzLCBzc2VfbmFuZHYyZGYzLCBzc2VfaW9ydjJkZjMsIHNzZV94b3J2MmRmMyk6IERvIG5vdCB1c2UKCXN1YnJlZ3MuCgkoc3NlX2FuZHNmMywgc3NlX25hbmRzZjMsIHNzZV94b3JzZjMpOiBLaWxsLgoJKHNzZV9hbmRkZjMsIHNzZV9uYW5kZGYzLCBzc2VfeG9yZGYzKTogS2lsbC4KCjIwMDQtMDItMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoZXhwYW5kX2Ffcm90YXRlKTogRG9uJ3QgZ2VuZXJhdGUgaW5zbnMKCWJ5IGhhbmQuCgkob3V0cHV0X2Ffcm90YXRlKTogVHdlYWsgYSBjb21tZW50LgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCpyb3RscWkzXzEpOiBDaGFuZ2UgdG8gcm90bHFpM18xLgoJKCpyb3RsaGkzXzEpOiBDaGFuZ2UgdG8gcm90bGhpM18xLgoJKCpyb3Rsc2kzXzEpOiBDaGFuZ2UgdG8gcm90bHNpM18xLgoKMjAwNC0wMi0xOCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJUFIgdGFyZ2V0LzEzODY2CgkqIGFybS5jIChsb2FkX211bHRpcGxlX29wZXJhdGlvbik6IERvbid0IGluc2lzdCB0aGF0IHRoZSBzb3VyY2UgcmVnCglvZiBhIHBvc3QtaW5jcmVtZW50IGNvbXBvbmVudCBpcyB0aGUgc2FtZSBhcyB0aGUgZGVzdGluYXRpb24uCgkoc3RvcmVfbXVsdGlwbGVfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgoyMDA0LTAyLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBNb3ZlIG1vdnNmIHBhdHRlcm5zIGludG8gb25lIHNlY3Rpb24KCW9mIHRoZSBmaWxlLgoKMjAwNC0wMi0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNmZ2xvb3AuaCwgY2ZnbG9vcGFuYWwuYywgY3BwbGV4LmMsIGV4Y2VwdC5oLCBsb29wLWluaXQuYywKCWxvb3AtdW5yb2xsLmMsIHNjYW4tZGVjbHMuYywgc2Nhbi5oLCBzdG9yLWxheW91dC5jLAoJeGNvZmZvdXQuYywgeGNvZmZvdXQuaCwgY29uZmlnL2FybS9tbWludHJpbi5oLAoJY29uZmlnL21pcHMvbGludXg2NC5oLCBjb25maWcvcGEvcGEtNjQuaCwKCWNvbmZpZy9yczYwMDAvYWl4NTEuaCwgY29uZmlnL3JzNjAwMC9haXg1Mi5oLAoJY29uZmlnL3JzNjAwMC9zcGUubWQsIGNvbmZpZy9zcGFyYy9saW51eC5oLAoJY29uZmlnL3NwYXJjL2xpbnV4NjQuaDogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDQtMDItMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IE1vdmUgcHVzaCBwYXR0ZXJucyBpbnRvIG9uZQoJc2VjdGlvbiBvZiB0aGUgZmlsZS4KCjIwMDQtMDItMTggIE1hcmsgTWl0Y2hlbGwgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTEzMjYKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3N0cnVjdF92YWx1ZV9ydHgpOiBDb3BlIHdpdGggTlVMTAoJZm50eXBlLgoKMjAwNC0wMi0xOCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0bGFuYWwuYyAocnR4X3Zhcmllc19wKTogUmV0dXJuIDAgZm9yIE5VTExfUlRYCgoyMDA0LTAyLTE4ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGRlYnVnLzEyOTM0CgkqIGR3YXJmMm91dC5jIChsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUpOiBIYW5kbGUKCUVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OLgoKMjAwNC0wMi0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh6ZXJvX2V4dGVuZHFpZGkyLCB6ZXJvX2V4dGVuZHFpZGkyLAoJdGVzdGRpXzFfcmV4NjQsIGFuZGRpXzIsIHhvcmRpXzFfcmV4NjQsIHhvcmRpXzJfcmV4NjQpOiBSZW1vdmUKCXRyYWlsaW5nIHdoaXRlc3BhY2UgZnJvbSBpbnN0cnVjdGlvbnMuCgoyMDA0LTAyLTE3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogV2hlbiBnZW5lcmF0aW5nIGF1dG8tYnVpbGQuaCwgcGFzcwoJLS1lbmFibGUtbGFuZ3VhZ2VzIHRvIHRoZSBzdWItY29uZmlndXJlLgoJUHV0IHF1b3RlcyBhcm91bmQgJHtwcm9ncmFtX3RyYW5zZm9ybV9uYW1lfSB3aGVuIGdlbmVyYXRpbmcKCW5hbWUgb2YgYXMsIGxkLCBubSwgb2JqZHVtcC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wMi0xNyAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogTWFrZWZpbGUuaW4gKHMtY2hlY2ssIHMtY29uZmlnLCBzLWNvbmRpdGlvbnMsIHMtZmxhZ3MpCgkocy1jb2Rlcywgcy1jb25zdGFudHMsIHMtZW1pdCwgcy1yZWNvZywgcy1vcGluaXQsIHMtZXh0cmFjdCkKCShzLXBlZXAsIHMtYXR0ciwgcy1hdHRydGFiLCBzLW91dHB1dCwgcy1nZW5ydGwsIHMtbW9kZXMpCgkocy1wcmVkcywgcy1pb3YpOiBEbyBub3QgZGVwZW5kIG9uIG1vdmUtaWYtY2hhbmdlLgoKMjAwNC0wMi0xNyAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogY2FsbGVyLXNhdmUuYyAoaW5zZXJ0X3Jlc3RvcmUpOiBQYXNzIG1lbSB0aHJvdWdoIGNvcHlfcnR4LgoJKGluc2VydF9zYXZlKTogTGlrZXdpc2UuCgoyMDA0LTAyLTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGg4MzAwX2VtaXRfc3RhY2tfYWRqdXN0bWVudCk6IEZpeCBhCgl3YXJuaW5nLgoKMjAwNC0wMi0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKm9uZV9jb21wbHNpMl9oODMwMCk6IENoYW5nZSB0bwoJKm9uZV9jbXBsc2kyX2g4MzAwLgoJKCpvbmVfY29tcGxzaTJfaDgzMDBocyk6IENoYW5nZSB0byAqb25lX2NtcGxzaTJfaDgzMDBocy4KCjIwMDQtMDItMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IFVwZGF0ZSB0aGUgcHJvdG90eXBlIG9mCglmaXhfYml0X29wZXJhbmQoKS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGZpeF9iaXRfb3BlcmFuZCk6IFJlbW92ZSB0aGUgc2Vjb25kCglhcmd1bWVudCAid2hhdCIuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogVXBkYXRlIGFsbCBjYWxsZXJzLgoKMjAwNC0wMi0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChmaXhfYml0X29wZXJhbmQpOiBDaGFuZ2UgdGhlIG5hbWUgb2YKCXRoZSBsYXN0IGFyZ3VtZW50IHRvICJjb2RlIiBmcm9tICJ0eXBlIi4KCjIwMDQtMDItMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYzogUmVtb3ZlIGFuIGV4dGVybiBkZWNsYXJhdGlvbiBvZgoJcnR4X2VxdWFsX2Z1bmN0aW9uX3ZhbHVlX21hdHRlcnMuCgoyMDA0LTAyLTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGZpeF9iaXRfb3BlcmFuZCk6IERvbid0IGdlbmVyYXRlIGluc25zCglieSBoYW5kLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCphbmRxaTNfMSk6IENoYW5nZSB0byBhbmRxaTNfMS4KCSgqaW9ycWkzXzEpOiBDaGFuZ2UgdG8gaW9ycWkzXzEuCgkoKnhvcnFpM18xKTogQ2hhbmdlIHRvIHhvcnFpM18xLgoKMjAwNC0wMi0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGMtY29tbW9uLmMsIGNmZ2hvb2tzLmMsIHJ0bGFuYWwuYywgdmFyYXNtLmM6IEZpeCBjb21tZW50Cgl0eXBvcy4KCjIwMDQtMDItMTcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoeDg2X3Byb2xvZ3VlX3VzaW5nX21vdmUsIHg4Nl9lcGlsb2d1ZV91c2luZ19tb3ZlKTogRGlzYWJsZSBmb3IgUDQuCgoyMDA0LTAyLTE4ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIG9wdGltaXphdGlvbi8xNDExOQoJKiBjb21iaW5lLmMgKHRyeV9jb21iaW5lKTogV2hlbiBhdHRlbXRpbmcgdG8gZml4IHVucmVjb2duaXplZCBpbnNucywKCWRvbid0IGRlbGV0ZSBTRVRzIG1hcmtlZCB3aXRoIFJFR19FSF9SRUdJT04gbm90ZXMuCgoyMDA0LTAyLTE3ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2lmX3RoZW5fZWxzZSk6IERvIG5vdCByZXBsYWNlCgkoaWZfdGhlbl9lbHNlIChuZSByZWcgMCkgKDApIChjb25zdF9pbnQpKSBieSAocmVnKSBpZiB0aGUKCW1vZGVzIGRpZmZlci4KCjIwMDQtMDItMTcgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIChjLWRlY2wuYywgYy1zZW1hbnRpY3MuYywgY2FsbHMuYywgY2dyYXBoLmMsIGNncmFwaHVuaXQuYywKCWZ1bmN0aW9uLmMsIGludGVncmF0ZS5jLCBwcmludC10cmVlLmMsIHRvcGxldi5jLCB0cmVlLW9wdGltaXplLmMsCgl0cmVlLmgpOiBSZXBsYWNlIERFQ0xfU0FWRURfSU5TTlMgd2l0aCBERUNMX1NUUlVDVF9GVU5DVElPTi4KCSogYWRhL3V0aWxzLmM6IExpa2V3aXNlLgoJKiBjcC9kZWNsLmM6IExpa2V3aXNlLgoJKiBmL2NvbS5jOiBMaWtld2lzZS4KCSogamF2YS9jbGFzcy5jOiBMaWtld2lzZS4KCjIwMDQtMDItMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNC0wMi0xNyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcvbWlwcy90LWlyaXM2Z2xkOiBSZW5hbWVkIHRvIC4uLgoJKiBjb25maWcvbWlwcy90LWlyaXgtZ2xkOiAuLi4gdGhpcy4KCSogY29uZmlnLmdjYyAobWlwcy1zZ2ktaXJpeDYqKTogUmVmbGVjdCB0aGlzCgkobWlwcy1zZ2ktaXJpeDUqKTogVXNlIGl0IHdpdGggR05VIGxkLgoKCSogY29uZmlnL21pcHMvaXJpeDYtY3J0aS5hc20sIGNvbmZpZy9taXBzL2lyaXg2LWNydG4uYXNtOiBSZW5hbWVkCgl0byAuLi4KCSogY29uZmlnL21pcHMvaXJpeC1jcnRpLmFzbSwgY29uZmlnL21pcHMvaXJpeC1jcnRuLmFzbTogLi4uIHRoaXMuCgkqIGNvbmZpZy9taXBzL3QtaXJpeC1nbGQ6IFJlZmxlY3QgdGhpcy4KCSogY29uZmlnL21pcHMvaXJpczZnbGQuaCAoU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IExpa2V3aXNlLgoKCSogY29uZmlnL21pcHMvaXJpczVnbGQuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg1Kik6IFVzZSBpdCB3aXRoIEdOVSBsZC4KCU9ubHkgdXNlIGNvbGxlY3QyIHdpdGhvdXQgZ2FzLgoKCSogY29uZmlnL21pcHMvaXJpczYuaCAoSVJJWDZfU1RBUlRGSUxFX1NQRUMsIElSSVg2X0VOREZJTEVfU1BFQyk6CglSZW5hbWVkIHRvIElSSVhfU1RBUlRGSUxFX1NQRUMsIElSSVhfRU5ERklMRV9TUEVDLgoJKFNUQVJURklMRV9TUEVDLCBFTkRGSUxFX1NQRUMsIFNVQlRBUkdFVF9FWFRSQV9TUEVDUyk6IFJlZmxlY3QgdGhpcy4KCSogY29uZmlnL21pcHMvaXJpczZnbGQuaCAoU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IExpa2V3aXNlLgoKCSogY29uZmlnL21pcHMvaXJpczYuaCAoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogTW92ZWQgLi4uCgkqIGNvbmZpZy9taXBzL2lyaXM1Lmg6IC4uLiBoZXJlLgoKCSogY29uZmlnL21pcHMvaXJpczUuaCAoU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IFJlbmFtZWQgdG8KCUlSSVhfU1RBUlRGSUxFX1NQRUMsIElSSVhfRU5ERklMRV9TUEVDLgoJKFNUQVJURklMRV9TUEVDLCBFTkRGSUxFX1NQRUMpOiBEZWZpbmUuCgoJKiBjb25maWcvbWlwcy9pcmlzNWdhcy5oIChTVEFSVEZJTEVfU1BFQywgRU5ERklMRV9TUEVDKTogU2ltcGxpZnkKCXVzaW5nIGlyaXhfc3RhcnRmaWxlX3NwZWMsIGlyaXhfZW5kZmlsZV9zcGVjLgoKMjAwNC0wMi0xNiAgR3VudGhlciBOaWtsICA8Z25pQGdlY2tvLmRlPgoKCSogY29uZmlnL202OGsvbTY4ay5jOiBSZW1vdmUgb2Jzb2xldGUgc3VwcG9ydCBmb3IgSFBVWF9BU00uCgoyMDA0LTAyLTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGg4MzAwX2V4cGFuZF9wcm9sb2d1ZSk6IERvbid0IGdlbmVyYXRlCglpbnNucyBieSBoYW5kLgoKMjAwNC0wMi0xNyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY2ZnaG9va3MuYyAoc3BsaXRfZWRnZSk6IFNwZWVkIHVwIHVwZGF0aW5nIG9mIGRvbWluYXRvcnMuCgoyMDA0LTAyLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMTMyNgoJKiBjLWNvbW1vbi5jIChmbGFnX2FiaV92ZXJzaW9uKTogUmVtb3ZlLgoJKiBjLWNvbW1vbi5oIChmbGFnX2FiaV92ZXJzaW9uKTogTGlrZXdpc2UuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogUmVtb3ZlIE9QVF9mYWJpX3ZlcnNpb24gY2FzZS4KCSogYy5vcHQgKGZhYmktdmVyc2lvbik6IFJlbW92ZS4KCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBBbHdheXMgcGFzcyBhIGZ1bmN0aW9uIHR5cGUgdG8KCXN0cnVjdF92YWx1ZV9ydHguICBVc2UgY29udmVydF9tZW1vcnlfYWRkcmVzcy4KCSogY29tbW9uLm9wdCAoZmFiaS12ZXJzaW9uKTogQWRkIGl0LgoJKiBmbGFncy5oIChmbGFnX2FiaV92ZXJzaW9uKTogTGlrZXdpc2UuCgkoYWJpX3ZlcnNpb25fYXRfbGVhc3QpOiBOZXcgbWFjcm8uCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBBZGQgT1BUX2ZhYmlfdmVyc2lvbi4KCSogdG9wbGV2LmMgKGZsYWdfYWJpX3ZlcnNpb24pOiBEZWZpbmUgaXQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9zdHJ1Y3RfcmV0dmFsX2FkZHJfaXNfZmlyc3RfcGFybV9wKToKCU5ldyBmdW5jdGlvbi4KCShpYTY0X291dHB1dF9taV90aHVuayk6IFVzZSBpdC4KCShpYTY0X3N0cnVjdF92YWx1ZV9ydHgpOiBMaWtld2lzZS4KCjIwMDQtMDItMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfZW1pdF9zdGFja19hZGp1c3RtZW50KToKCURvbid0IGdlbmVyYXRlIGluc25zIGJ5IGhhbmQuCgoyMDA0LTAyLTE3ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBjKysvMTQxNzgKCSogZG9jL2ludm9rZS50ZXhpIChmYWJpLXZlcnNpb24pOiBUaGUgZGVmYXVsdCBpcyAyIG5vdy4KCjIwMDQtMDItMTcgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGxvb3AtaXYuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChsb29wLWl2Lm8pOiBOZXcuCgkqIGJhc2ljX2Jsb2NrLmggKEZPUl9CQl9JTlNOUywgRk9SX0JCX0lOU05TX1JFVkVSU0UpOiBOZXcgbWFjcm9zLgoJKiBjZmdsb29wLmMgKGZpbGxfc29uc19pbl9sb29wLCBnZXRfbG9vcF9ib2R5X2luX2RvbV9vcmRlciwKCW51bV9sb29wX2JyYW5jaGVzKTogTmV3IGZ1bmN0aW9ucy4KCSogY2ZnbG9vcC5oIChnZXRfbG9vcF9ib2R5X2luX2RvbV9vcmRlciwgbnVtX2xvb3BfYnJhbmNoZXMsCglpdl9hbmFseXNpc19sb29wX2luaXQsIGl2X2dldF9yZWFjaGluZ19kZWYsIGl2X2FuYWx5c2UsIGdldF9pdl92YWx1ZSwKCWZpbmRfc2ltcGxlX2V4aXQsIGl2X251bWJlcl9vZl9pdGVyYXRpb25zLCBpdl9hbmFseXNpc19kb25lLAoJZ2V0X3NpbXBsZV9sb29wX2Rlc2MsIGZyZWVfc2ltcGxlX2xvb3BfZGVzYyk6IERlY2xhcmUuCgkoc2ltcGxlX2xvb3BfZGVzYyk6IE5ldyBpbmxpbmUgZnVuY3Rpb24uCgkoc3RydWN0IHJ0eF9pdiwgc3RydWN0IG5pdGVyX2Rlc2MpOiBOZXcuCgkqIGNmZ2xvb3BtYW5pcC5jIChsb29waWZ5KTogU3BlY2lmeSBzZW1hbnRpY3MgbW9yZSBwcmVjaXNlbHkuCgkqIGV4cHIuYyAoZm9yY2Vfb3BlcmFuZCk6IEhhbmRsZSBzdWJyZWdzIG9mIGV4cHJlc3Npb25zIGNyZWF0ZWQgYnkKCWxvb3AgdW5yb2xsZXIuCgkqIGxvb3AtaW5pdC5jIChsb29wX29wdGltaXplcl9pbml0LCBsb29wX29wdGltaXplcl9maW5hbGl6ZSk6IE1vdmUKCXBhcnRzIG9mIHRoZSBpbml0aWFsaXphdGlvbiB0byB0b3BsZXYuYwoJKiBsb29wLXVucm9sbC5jIChsb29wX2V4aXRfYXRfZW5kX3ApOiBOZXcuCgkodW5yb2xsX2FuZF9wZWVsX2xvb3BzKTogQ2FsbCBpdl9hbmFseXNpc19kb25lLgoJKGRlY2lkZV9wZWVsX29uY2Vfcm9sbGluZywgZGVjaWRlX3BlZWxfY29tcGxldGVseSwKCWRlY2lkZV91bnJvbGxfc3R1cGlkLCBkZWNpZGVfdW5yb2xsX2NvbnN0YW50X2l0ZXJhdGlvbnMsCglkZWNpZGVfdW5yb2xsX3J1bnRpbWVfaXRlcmF0aW9ucywgZGVjaWRlX3BlZWxfc2ltcGxlLAoJcGVlbF9sb29wX3NpbXBsZSwgdW5yb2xsX2xvb3Bfc3R1cGlkLCB1bnJvbGxfbG9vcF9jb25zdGFudF9pdGVyYXRpb25zLAoJdW5yb2xsX2xvb3BfcnVudGltZV9pdGVyYXRpb25zKTogVXNlIG5ldyBzaW1wbGUgbG9vcCBhbmFseXNpcy4KCSogbG9vcC11bnN3aXRjaC5jIChjb21wYXJlX2FuZF9qdW1wX3NlcSk6IE5ldy4KCShtYXlfdW5zd2l0Y2hfb25fcCk6IFJlbmFtZWQgdG8gLi4uCgkobWF5X3Vuc3dpdGNoX29uKTogVXNlIG5ldyBpdiBhbmFseXNpcy4KCShyZXZlcnNlZF9jb25kaXRpb24pOiBFeHBvcnQuCgkodW5zd2l0Y2hfc2luZ2xlX2xvb3AsIHVuc3dpdGNoX2xvb3ApOiBVc2UgbmV3IGl2IGFuYWx5c2lzLgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogVXNlIG5ldyBzaW1wbGUgbG9vcCBhbmFseXNpcy4KCSogcnRsLmggKGdldF9tb2RlX2JvdW5kcywgcmV2ZXJzZWRfY29uZGl0aW9uLGNvbXBhcmVfYW5kX2p1bXBfc2VxLAoJY2Fub25fY29uZGl0aW9uLCBzaW1wbGlmeV91c2luZ19jb25kaXRpb24pOiBEZWNsYXJlLgoJKiBzdG9yLWxheW91dC5jIChnZXRfbW9kZV9ib3VuZHMpOiBOZXcuCgkqIHRvcGxldi5jIChyZXN0X29mX2hhbmRsZV9sb29wMik6IFNvbWUgcGFydHMgb2YKCWluaXRpYWxpemF0aW9uL2ZpbmFsaXphdGlvbiBtb3ZlZCBoZXJlIGZyb20gbG9vcC1pbml0LmMuCgoyMDA0LTAyLTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKEZJWEVEX1JFR0lTVEVSUyk6IEFkZCB0aGUgc29mdCBmcmFtZQoJcG9pbnRlci4KCShDQUxMX1VTRURfUkVHSVNURVJTKTogTGlrZXdpc2UuCgkoUkVHX0FMTE9DX09SREVSKTogTGlrZXdpc2UuCgkoUkVHX0NMQVNTKSA8R0VORVJBTF9SRUdTPjogTGlrZXdpc2UuCgoyMDA0LTAyLTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGRvYy9tZC50ZXhpIChJbnNuIENhbm9uaWNhbGl6YXRpb25zKTogRG9jdW1lbnQgbGVmdC1jaGFpbmluZwoJaW4gYXNzb2NpYXRpdmUgb3BlcmF0b3JzLgoJKiBydGxhbmFsLmMgKGNvbW11dGF0aXZlX29wZXJhbmRfcHJlY2VkZW5jZSk6IENyZWF0ZSBzb21lIG5ldwoJdmFyaWFibGVzLiAgUHJlZmVyIGEgY29tbXV0YXRpdmUgb3BlcmFuZCBvbiB0aGUgbGVmdCwgdGhlbgoJYmluYXJ5IGV4cHJlc3Npb25zLCB0aGVuIE5FRyBhbmQgTk9ULgoKMjAwNC0wMi0xNiAgTWF0dGhpYXMgS2xvc2UgIDxkb2tvQGRlYmlhbi5vcmc+CgoJKiBjb25maWcvdC1zbGliZ2NjLWVsZi12ZXI6IERlZmluZSBTSExJQl9OQU1FIGFuZCBTSExJQl9TT05BTUUKCWluIHRlcm1zIG9mIFNITElCX1NPVkVSU0lPTi4KCSogY29uZmlnL202OGsvdC1zbGliZ2NjLWVsZi12ZXI6IE5ldyBmaWxlLgoJKiBjb25maWcvcGEvdC1zbGliZ2NjLWVsZi12ZXI6IE5ldyBmaWxlLgoJKiBjb25maWcuZ2NjIChtNjhrLWxpbnV4LCBwYXJpc2MtbGludXgpOiBVc2UgdGhlbSB3aGVuIG5vdAoJc2psaiBleGNlcHRpb25zIGFyZSBub3QgY29uZmlndXJlZC4KCjIwMDQtMDItMTYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZ2V0X3BjX3N5bWJvbF9uYW1lKTogTWFyayB3aXRoIEdUWSgoKSkuCgoyMDA0LTAyLTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2Rib3V0LmMgKHNkYl9kZWJ1Z19ob29rcyk6IENvcnJlY3QgdGhlIHR5cGVfZGVjbCBlbnRyeS4KCjIwMDQtMDItMTYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IE1lbnRpb24gYmFja2VuZHMuaHRtbC4KCjIwMDQtMDItMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWRlY2wuYywgYy1wcG91dHB1dC5jLCBjcHBoYXNoLmgsIGNwcGxpYi5oLCBkYnhvdXQuYywKCWxpbmUtbWFwLmMsIGxpbmUtbWFwLmgsIHZhci10cmFja2luZy5jOiBGaXggY29tbWVudAoJZm9ybWF0dGluZy4KCjIwMDQtMDItMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjc2UuYyAoY3NlX2luc24pOiBEb24ndCBsb3NlIFJFR19OT05fTE9DQUxfR09UTyBub3RlLgoKCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3ApOiBGaXggVkVDVE9SX0NTVCBjb21wYXJpc29uLgoKMjAwNC0wMi0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogUmVtb3ZlIHVubmVjZXNzYXJ5IHBhcmFsbGVscyBmcm9tCglhbGwgZGVmaW5lX2luc24gYW5kIGRlZmluZV9zcGxpdCBwYXR0ZXJucy4KCjIwMDQtMDItMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IFJlbW92ZSBleHBsaWNpdCAoc2V0X2F0dHIgImNjIgoJImNsb2JiZXIiKS4KCjIwMDQtMDItMTUgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogUmVzdG9yZSBzdXBwb3J0IGZvcgoJJyUjJy4KCjIwMDQtMDItMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMsIGNvbmZpZy9taXBzL21pcHMuYywKCWNvbmZpZy9tbWl4L21taXgtbW9kZXMuZGVmOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDQtMDItMTUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYy1jb21tb24uaCAoR0VUX0RJUkVDVElWRV9MSU5FKTogUmVtb3ZlIHVudXNlZCBtYWNyby4KCShnZXRfZGlyZWN0aXZlX2xpbmUpOiBSZW1vdmUgdW51c2VkIGZ1bmN0aW9uIHByb3RvdHlwZS4KCjIwMDQtMDItMTQgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIHRyZWUtaW5saW5lLmMgKGNvcHlfYm9keV9yKTogRG8gbm90IHJlcGxhY2UgcmV0X2xhYmVsLgoKMjAwNC0wMi0xNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jICh4ODZfZm91cl9qdW1wX2xpbWl0KTogTmV3IHZhcmlhYmxlLgoJKGs4X2F2b2lkX2p1bXBfbWlzc3ByZWRpY3RzKTogUmVuYW1lIHRvIC4uLgoJKGl4ODZfYXZvaWRfanVtcF9taXNzcHJlZGljdHMpOiAuLiB0aGlzIG9uZS4KCShpeDg2X3BhZF9yZXR1cm5zKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoaXg4Nl9yZW9yZyk6IC4uLiB0aGlzIG9uZTsgZG8gaXg4Nl9hdm9pZF9qdW1wX21pc3NwcmVkaWN0cyB3aGVuIGFza2VkCgl0by4KCSogaTM4Ni5oIChUQVJHRVRfRk9VUl9KVU1QX0xJTUlUKTogTmV3IG1hY3JvLgoKMjAwNC0wMi0xNCAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogZW1pdC1ydGwuYyAoc2V0X2RlY2xfaW5jb21pbmdfcnRsKTogQ2hlY2sgd2hldGhlciB0aGUgMHRoIGVsZW1lbnQgb2YKCVBBUkFMTEVMIGlzIE5VTEwuCgoyMDA0LTAyLTE0ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGZpeC1oZWFkZXIuYyAobGluZV90YWJsZSk6IE1vdmUgbG9jYWwgdmFyaWFibGUgaW4gbWFpbiB0byBnbG9iYWwuCgkqIHNjYW4uaCAobGluZV90YWJsZSk6IFVzZSBpdC4KCSogc2Nhbi1kZWNscy5jIChzY2FuX2RlY2xzKTogTmVlZCB0byBjYWxsIGxpbmVtYXBfbG9va3VwIG9uIHRva2VuJ3MKCWxpbmUgKHJlY2VudGx5IHJlbmFtZWQgdG8gc3JjX2xvYykgYmVmb3JlIGNhbGxpbmcgcmVjb2duaXplZF9mdW5jdGlvbi4KCjIwMDQtMDItMTQgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIE1ha2VmaWxlLmluOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDQtMDItMTQgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGxvb3AuYyAoY2hlY2tfZGJyYV9sb29wKTogVXNlIGdlbl9pbnRfbW9kZSBpbnN0ZWFkIG9mIEdFTl9JTlQKCWZvciBzdGFydF92YWx1ZSB3aGVuIGl0IGlzIGRpcmVjdGx5IG1vdmVkIGludG8gcmVnLCBhbmQgZmFjdG9yaXplCgl0aGUgcmV0cmlldmFsIG9mIEdFVF9NT0RFIChyZWcpLgoKMjAwNC0wMi0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19sb2FkX2dvdF9wYWdlKTogRGVsZXRlLgoJKG1pcHNfbG9hZF9nb3RfZ2xvYmFsKTogRGVsZXRlLgoJKG1pcHNfZ290b2ZmX3BhZ2UpOiBEZWNsYXJlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChVTlNQRUNfTE9BRF9HT1QpOiBOZXcgY29uc3RhbnQuCgkoKnhnb3RfbG9bc2RdaSwgKmdvdF9kaXNwW3NkXWksICpnb3RfcGFnZVtzZF1pKTogQnVpbGQgYW4KCVVOU1BFQ19MT0FEX0dPVCBwYXR0ZXJuIHJhdGhlciB0aGFuIGEgTUVNLgoJKCpsb2FkX2dvdFtzZF1pKTogTmV3IHBhdHRlcm5zLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZ290X2FsaWFzX3NldCwgbWlwc19sb2FkX2dvdCk6IERlbGV0ZS4KCShtaXBzX2xvYWRfZ290X3BhZ2UsIG1pcHNfbG9hZF9nb3RfZ2xvYmFsKTogRGVsZXRlLgoJKG1pcHNfZ290b2ZmX3BhZ2UpOiBOZXcgZnVuY3Rpb24uCgkob3ZlcnJpZGVfb3B0aW9ucyk6IERvbid0IGluaXRpYWxpemUgbWlwc19nb3RfYWxpYXNfc2V0LgoKMjAwNC0wMi0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChNQVNLX0RFQlVHX1tBQkVGSV0sIFRBUkdFVF9ERUJVR19bQUJFRkldX01PREUpCgkoVEFSR0VUX01JUFM0MTAwLCBUQVJHRVRfTUlQUzQzMDAsIFRBUkdFVF9NSVBTNEtDLCBUQVJHRVRfTUlQUzVLQykKCShUQVJHRVRfU0IxLCBUVU5FX1NCMSwgVFVORV9TUjcxSywgQklHR0VTVF9NQVhfQVJHU19JTl9SRUdJU1RFUlMpCgkoR09fUFJJTlRGLCBHT19QUklOVEYyLCBHT19ERUJVR19SVFgsIERGTU9ERV9OQU4sIFNGTU9ERV9OQU4pOiBEZWxldGUuCgkoVEFSR0VUX1NXSVRDSEVTKTogUmVtb3ZlIE1BU0tfREVCVUdfW0FCRUZJXS4KCSogY29uZmlnL21pcHMvbWlwcy5jOiBGaXggc29tZSBvdmVybHktbG9uZyBsaW5lcy4KCShTSU5HTEVfV09SRF9NT0RFX1AsIFBJQ19PRkZTRVRfVEFCTEVfTUFTSyk6IERlbGV0ZS4KCShpbml0X2N1bXVsYXRpdmVfYXJncyk6IFJlbW92ZSBUQVJHRVRfREVCVUdfRV9NT0RFIGhhbmRsaW5nLgoKMjAwNC0wMi0xMyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWd1cmUuYWM6IFNlYXJjaCBmb3IgYXMsIGxkIGJlbG93IGxpYmV4ZWMvZ2NjLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTAyLTE0ICBCZW4gRWxsaXN0b24gIDxiamVAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjb25maWcvYXJtL21taW50cmluLmggKF9tbV9zZXR3Y3gpOiBSZXZlcnNlIGFyZ3VtZW50cyBpbiBjYWxsIHRvCglfX2J1aWx0aW5fYXJtX3NldHdjeCAoKS4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2V4cGFuZF9idWlsdGluKTogR2VuZXJhdGUgb3BlcmFuZHMKCWNvcnJlY3RseSBhbmQgcmV2ZXJzZSB0aGVpciBvcmRlciBpbiBjYWxsIHRvIGdlbl9pd21teHRfdG1jciAoKS4KCjIwMDQtMDItMTQgIEJlbiBFbGxpc3RvbiAgPGJqZUB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGJkZXNjXzJhcmcpOiBDb3JyZWN0IGJ1aWx0aW4gbmFtZXMgIndtdWxzaCIKCWFuZCAid211bHVoIiB0byAid211bHNtIiBhbmQgIndtdWx1bSIsIHJlc3BlY3RpdmVseS4KCSogY29uZmlnL2FybS9hcm0uaCAoZW51bSBhcm1fYnVpbHRpbnMpOiBSZW5hbWUgZW51bWVyYXRvcnMgdG8KCUFSTV9CVUlMVElOX1dNVUxTTSBhbmQgQVJNX0JVSUxUSU5fV01VTFVNLgoJKiBjb25maWcvYXJtL21taW50cmluLmggKF9tbV9tdWxoaV9waTE2KTogVXBkYXRlIGludHJpbnNpYyBjYWxsLgoJKF9tbV9tdWxoaV9wdTE2KTogTGlrZXdpc2UuCgoyMDA0LTAyLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogeGNvZmZvdXQuYyAoeGNvZmZfYXNzaWduX2Z1bmRhbWVudGFsX3R5cGVfbnVtYmVyKTogQ2hlY2sKCURFQ0xfTkFNRSAhPSAwIGJlZm9yZSBkZXJlZmVyZW5jaW5nLgoKMjAwNC0wMi0xMyAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9vdXRwdXRfc3ltYm9saWNfY29uc3QpOiBSZW1vdmUuCgkoczM5MF9vdXRwdXRfYWRkcl9jb25zdF9leHRyYSk6IERlY2xhcmUuCgkoczM5MF9vdXRwdXRfcG9vbF9lbnRyeSk6IFJlbW92ZSBGSUxFICogYXJndW1lbnQuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9vdXRwdXRfc3ltYm9saWNfY29uc3QpOiBSZW1vdmUuCgkoczM5MF9vdXRwdXRfYWRkcl9jb25zdF9leHRyYSk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBDYWxsIG91dHB1dF9hZGRyX2NvbnN0IGluc3RlYWQgb2YKCXMzOTBfb3V0cHV0X3N5bWJvbGljX2NvbnN0LgoJKHByaW50X29wZXJhbmQpOiBMaWtld2lzZS4KCShzMzkwX291dHB1dF9wb29sX2VudHJ5KTogVXNlIGFzc2VtYmxlX2ludGVnZXIgZm9yIHN5bWJvbGljIGNvbnN0YW50cy4KCVJlbW92ZSBGSUxFICogYXJndW1lbnQuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoT1VUUFVUX0FERFJfQ09OU1RfRVhUUkEpOiBEZWZpbmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqcG9vbF9lbnRyeSIpOiBBZGFwdCBzMzkwX291dHB1dF9wb29sX2VudHJ5CgljYWxsLgoKMjAwNC0wMi0xMyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY2ZnbG9vcGFuYWwuYyAobWFya19pcnJlZHVjaWJsZV9sb29wcyk6IFJld3JpdGVuLgoJKHN0cnVjdCBlZGdlLCBzdHJ1Y3QgdmVydGV4LCBzdHJ1Y3QgZ3JhcGgpOiBOZXcuCgkoZHVtcF9ncmFwaCwgbmV3X2dyYXBoLCBhZGRfZWRnZSwgZGZzLCBjaGVja19pcnJlZCwgZm9yX2VhY2hfZWRnZSwKCWZyZWVfZ3JhcGgpOiBOZXcgZnVuY3Rpb25zLgoKMjAwNC0wMi0xMiAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQGJyb2FkY29tLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGNhc2VzaV9pbnRlcm5hbCwgY2FzZXNpX2ludGVybmFsX2RpKToKCVVzZSAiLnNldCBtYWNybyIgdG8gYXZvaWQgd2FybmluZ3MgYWJvdXQgbXVsdGktaW5zdHJ1Y3Rpb24KCW1hY3Jvcywgc2luY2UgdGhleSdyZSBpbnRlbnRpb25hbC4KCjIwMDQtMDItMTIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oOiBBZGQgaW5jbHVkZSBndWFyZHMuICBSZW1vdmUgb2xkLCBub3cgaW5jb3JyZWN0LAoJY29tbWVudCBhYm91dCBTVEFOREFSRF9FWEVDX1BSRUZJWC4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLW1hbik6IFVzZSAkKENQUF9JTlNUQUxMX05BTUUpIGFuZAoJJChHQ09WX0lOU1RBTExfTkFNRSkgdG8gaW5zdGFsbCBtYW5wYWdlcy4gIFJlbW92ZSBnZW5lcmljIHJ1bGUKCWZvciBpbnN0YWxsaW5nIC4xIG1hbnBhZ2VzLiAgQWRkIHJ1bGVzIGZvciBpbnN0YWxsaW5nIGNwcAoJYW5kIGdjb3YgbWFucGFnZXMgdW5kZXIgdGhlaXIgaW5zdGFsbGVkIG5hbWVzLgoKMjAwNC0wMi0xMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMgKGdjY19jdl9sZCk6IERvbid0IHNldCB0byBMRCBpZiB0YXJnZXQgaXMgbm90Cglob3N0LCBidXQgdHJ5IExEX0ZPUl9UQVJHRVQgZmlyc3QuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDQtMDItMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkYnhvdXQuYzogTW92ZSBkZWNsYXJhdGlvbiBvZiBkYnhvdXRfdHlwZV9kZWNsIG91dHNpZGUKCSNpZmRlZiBEQlhfREVCVUdHSU5HX0lORk8uCgkqIGMtcGFyc2UuaW46IERvbid0IGdpdmUgdGhlIGFzbWRlZiBwcm9kdWN0aW9uIGEgdHlwZS4KCjIwMDQtMDItMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWJ1Zy5oIChzdHJ1Y3QgZ2NjX2RlYnVnX2hvb2tzKTogQWRkIHR5cGVfZGVjbCBmaWVsZC4KCShkZWJ1Z19ub3RoaW5nX3RyZWVfaW50KTogUHJvdG90eXBlLgoJKGR3YXJmX2RlYnVnX2hvb2tzKTogRGVsZXRlLCB1bnVzZWQuCgkqIGRlYnVnLmMgKGRvX25vdGhpbmdfZGVidWdfaG9va3MpOiBVcGRhdGUuCgkoZGVidWdfbm90aGluZ190cmVlX2ludCk6IE5ldyBmdW5jdGlvbi4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzX2Zvcl9kZWNscyk6CglSZW1vdmUgYnVpbHRpbl90eXBlX2RlY2xzIGZpZWxkLgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfQlVJTFRJTl9UWVBFX0RFQ0xTKTogRGVsZXRlLgoJKExBTkdfSE9PS1NfREVDTFMpOiBVcGRhdGUuCgkqIHRvcGxldi5jIChyZXN0X29mX2RlY2xfY29tcGlsYXRpb24sIHJlc3Rfb2ZfdHlwZV9jb21waWxhdGlvbik6CglVc2UgZGVidWdfaG9va3MtPnR5cGVfZGVjbC4KCSogZGJ4b3V0LmMgKHByZWluaXRfc3ltYm9scyk6IE5ldyBzdGF0aWMuCgkoZGJ4X2RlYnVnX2hvb2tzLCB4Y29mZl9kZWJ1Z19ob29rcyk6IFVwZGF0ZS4KCShkYnhvdXRfaW5pdCk6IERvbid0IGNhbGwgREJYX09VVFBVVF9TVEFOREFSRF9UWVBFUyBvcgoJbGFuZ19ob29rcy5kZWNscy5idWlsdGluX3R5cGVfZGVjbHMuICBEbyBzY2FuIHByZWluaXRfc3ltYm9scwoJZm9yIHN5bWJvbHMgdG8gb3V0cHV0LgoJKGRieG91dF90eXBlX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoZGJ4b3V0X3N5bWJvbCk6IElmIGNhbGxlZCBiZWZvcmUgZGJ4b3V0X2luaXQgaGFzIHJ1biwgcXVldWUKCXRoZSBzeW1ib2wgZm9yIGxhdGVyLiAgQXBwbHkgREJYX0FTU0lHTl9GVU5EQU1FTlRBTF9UWVBFX05VTUJFUgoJdG8gVFlQRV9ERUNMcyBiZWZvcmUgZW1pdHRpbmcgdGhlbS4KCSogeGNvZmZvdXQuYyAoYXNzaWduX3R5cGVfbnVtYmVyKTogRGVsZXRlLgoJKHhjb2ZmX3R5cGVfbnVtYmVycyk6IE5ldyBzdGF0aWMgdGFibGUuCgkoeGNvZmZfYXNzaWduX2Z1bmRhbWVudGFsX3R5cGVfbnVtYmVyKTogTmV3IGZ1bmN0aW9uLgoJKiB4Y29mZm91dC5oOiBEZWZpbmUgREJYX0FTU0lHTl9GVU5EQU1FTlRBTF9UWVBFX05VTUJFUiwgbm90CglEQlhfT1VUUFVUX1NUQU5EQVJEX1RZUEVTLiAgUmVtb3ZlIHVubmVjZXNzYXJ5ICNpZmRlZnMuCgkqIHNkYm91dC5jOiBJbmNsdWRlIHZhcnJheS5oLgoJKGRlZmVycmVkX2dsb2JhbF9kZWNscyk6IE5ldyBzdGF0aWMuCgkoc2RiX2RlYnVnX2hvb2tzKTogVXBkYXRlLgoJKHNkYm91dF9nbG9iYWxfZGVjbCk6IElmIHdlIGNhbid0IGVtaXQgc29tZXRoaW5nIHJpZ2h0IG5vdywKCXJlbWVtYmVyIGl0IGluIGRlZmVycmVkX2dsb2JhbF9kZWNscy4KCShzZGJvdXRfZmluaXNoKTogSnVzdCBzY2FuIGRlZmVycmVkX2dsb2JhbF9kZWNsczsgZG9uJ3QgY2FsbCBnZXRkZWNscy4KCShzZGJvdXRfaW5pdCk6IEluaXRpYWxpemUgZGVmZXJyZWRfZ2xvYmFsX2RlY2xzLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcyBvZiBzZGJvdXQuby4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF90eXBlX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoZHdhcmYyX2RlYnVnX2hvb2tzKTogVXBkYXRlLgoJKiB2bXNkYmdvdXQuYyAodm1zZGJnX2RlYnVnX2hvb2tzKTogVXBkYXRlLgoJKiBjLWRlY2wuYyAoZ2V0ZGVjbHMpOiBKdXN0IHJldHVybiAwLgoJKGNoZWNrX2Zvcl9sb29wX2RlY2xzKTogRG9uJ3QgdXNlIGdldGRlY2xzLgoJKHJlY29yZF9idWlsdGluX3R5cGUpOiBDYWxsIGRlYnVnX2hvb2tzLT50eXBlX2RlY2wgb24gdGhlIFRZUEVfREVDTC4KCSogYy1vYmpjLWNvbW1vbi5jIChjX29iamNfY29tbW9uX2ZpbmlzaF9maWxlKTogRG9uJ3QgdXNlIGdldGRlY2xzLgoKMjAwNC0wMi0xMiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX3NjaGVkX3Jlb3JkZXIyKTogUmVtb3ZlLgoJKFRBUkdFVF9TQ0hFRF9SRU9SREVSMik6IERvIG5vdCByZWRlZmluZS4KCjIwMDQtMDItMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXBhcnNlLmluIChtYXliZV90eXBlX3F1YWwpOiBEZWxldGUuCgkobWF5YmVfdm9sYXRpbGUsIHNpbXBsZV9hc21fZXhwciwgYXNtZGVmLCBhc21fc3RtdCkKCShhc21fYXJndW1lbnQpOiBOZXcgZ3JhbW1hciBydWxlcy4KCShleHRkZWZfMSk6IFVzZSBhc21kZWYuCgkobWF5YmVhc20pOiBNb3ZlIGRvd24gd2l0aCBvdGhlciBhc20gcnVsZXM7IHVzZSBzaW1wbGVfYXNtX2V4cHIuCgkoeGV4cHIpOiBNb3ZlIHVwIHdpdGggb3RoZXIgZXhwcmVzc2lvbiBydWxlcy4KCShzdG10KTogVXNlIGFzbV9zdG10LgoKCSogYy10eXBlY2suYyAoYnVpbGRfYXNtX2V4cHIpOiBOZXcgZnVuY3Rpb24gLSBib2R5IG1vc3RseQoJcHVsbGVkIGZyb20gYnVpbGRfYXNtX3N0bXQuCgkoYnVpbGRfYXNtX3N0bXQpOiBKdXN0IGhhbmRsZSB0YWNraW5nIG9uIHRoZSB2b2xhdGlsZSBxdWFsaWZpZXIuCgkqIGMtdHJlZS5oIChidWlsZF9hc21fZXhwciwgYnVpbGRfYXNtX3N0bXQpOiBVcGRhdGUgcHJvdG90eXBlcy4KCjIwMDQtMDItMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiBib290c3RyYXAvMTM2MTcKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19vdXRwdXRfYWxpZ25lZF9kZWNsX2NvbW1vbik6IERlY2xhcmUuCgkobWlwc19kZWNsYXJlX29iamVjdCk6IE1ha2UgdmFyaWFkaWMuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQVNNX09VVFBVVF9BTElHTkVEX0RFQ0xfQ09NTU9OKTogVXNlCgltaXBzX291dHB1dF9hbGlnbmVkX2RlY2xfY29tbW9uLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfb3V0cHV0X2FsaWduZWRfZGVjbF9jb21tb24pOiBOZXcgZnVuY3Rpb24uCgkobWlwc19kZWNsYXJlX29iamVjdCk6IE1ha2UgdmFyaWFkaWMuCgoyMDA0LTAyLTEyICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZnVuY3Rpb24uYyAodXBkYXRlX2VwaWxvZ3VlX2NvbnN0cyk6IFRlYWNoIGFib3V0IGJpbmFyeSBvcGVyYXRpb25zLgoKCSogZW1pdC1ydGwuYyAoc2V0X21lbV9hdHRyaWJ1dGVzX21pbnVzX2JpdHBvcyk6IERvbid0IGtpbGwKCXByZXZpb3VzIE1FTV9WT0xBVElMRSBpbiBSRUYuCgkqIGZ1bmN0aW9uLmMgKGZpeHVwX3Zhcl9yZWZzKTogU2F2ZSB2b2xhdGlsZV9vayBhbmQgc2V0IHRvIDEuCgkqIGV4cHIuYyAoZW1pdF9ibG9ja19tb3ZlX3ZpYV9tb3ZzdHIpOiBTYXZlIGFuZCByZXN0b3JlIHZvbGF0aWxlX29rLgoKMjAwNC0wMi0xMiAgR3VudGhlciBOaWtsICA8Z25pQGdlY2tvLmRlPgoKCSogY29uZmlnLmdjYzogUmVzdG9yZSBzdXBwb3J0IGZvciBtNjhrLW9wZW5ic2QuCgoyMDA0LTAyLTEyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLW9wdGltaXplLmMgKHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbik6IERvIG5vdCByZWxlYXNlCglERUNMX0FSR1VNRU5UUy4KCjIwMDQtMDItMTEgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IEZpeCB0aGUgc3BlbGxpbmcgb2YgImV4cGxpY2l0bHkiLgoKMjAwNC0wMi0xMSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjcHBjaGFyc2V0LmMgKF9jcHBfaW50ZXJwcmV0X3N0cmluZ19ub3RyYW5zbGF0ZSk6IFJlbmFtZSBhbmQKCWR1cGxpY2F0ZSBhcmd1bWVudCBzdHJ1Y3R1cmUgb2YgY3BwX2ludGVycHJldF9zdHJpbmcuCgkqIGNwcGhhc2guaDogTW92ZSBwcm90b3R5cGUuLi4KCSogY3BwbGliLmg6IEhlcmUuCgkqIGNwcGxpYi5jOiBGaXggY2FsbHMgdG8gbWF0Y2ggbmV3IGZ1bmN0aW9uIHNpZ25hdHVyZS4KCjIwMDQtMDItMTEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvNDU2CgkqIGNwcGV4cC5jIChudW1fYmluYXJ5X29wKTogRG9uJ3QgYWxsb3cgY29tbWEgb3BlcmF0b3JzIGluICNpZgoJY29uc3RhbnQgZXhwcmVzc2lvbnMgYXQgYWxsIG91dHNpZGUgQzk5IG1vZGUgaWYgcGVkYW50aWMuCgoyMDA0LTAyLTExICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX2xvZzEwIGFuZCBPVElfbG9nMi4KCShsb2cxMF9vcHRhYiwgbG9nMl9vcHRhYik6IERlZmluZSBjb3JyZXNwb25kaW5nIG1hY3Jvcy4KCSogb3B0YWJzLmMgKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSBsb2cxMF9vcHRhYiBhbmQgbG9nMl9vcHRhYi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEltcGxlbWVudCBsb2cxMF9vcHRhYiBhbmQgbG9nMl9vcHRhYgoJdXNpbmcgbG9nMTA/ZjIgYW5kIGxvZzI/ZjIgcGF0dGVybnMuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6IEhhbmRsZSBCVUlMVF9JTl9MT0cxMHssRixMfQoJdXNpbmcgbG9nMTBfb3B0YWIsIGFuZCBCVUlMVF9JTl9MT0cyeyxGLEx9IHVzaW5nIGxvZzJfb3B0YWIuCgkoZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgQlVJTFRfSU5fTE9HMTB7LEYsTH0gYW5kIEJVSUxUX0lOX0xPRzJ7LEYsTH0KCXVzaW5nIGV4cGFuZF9idWlsdGluX21hdGhmbiBpZiBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgaXMgc2V0LgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAobG9nMTBzZjIsIGxvZzEwZGYyLCBsb2cxMHhmMiwgbG9nMnNmMiwKCWxvZzJkZjIsIGxvZzJ4ZjIpOiBOZXcgcGF0dGVybnMgdG8gaW1wbGVtZW50IGxvZzEwLCBsb2cxMGYsIGxvZzEwbCwKCWxvZzIsIGxvZzJmIGFuZCBsb2cybCBidWlsdC1pbnMgYXMgaW5saW5lIHg4NyBpbnRyaW5zaWNzLgoKMjAwNC0wMi0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTUzMgoJKiBmbG93LmMgKGluc25fZGVhZF9wKTogQSBjbG9iYmVyIG9mIGEgZGVhZCBoYXJkIHJlZ2lzdGVyIGlzIGEKCWRlYWQgaW5zbiBhZnRlciByZWxvYWQuCgoyMDA0LTAyLTExICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiB0cmVlLmggKGZyYW1lX2Jhc2VfZGVjbCk6IEFkZCBHVFkgbWFya2VyLgoJKiB2YXItdHJhY2tpbmcuYyAoZnJhbWVfYmFzZV9kZWNsKTogTGlrZXdpc2UuCgoyMDA0LTAyLTExICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGR3YXJmMm91dC5jIChvdXRwdXRfbG9jX2xpc3QpOiBSZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgYW5kIG5vdwoJaW5jb3JyZWN0LCBodW5rLgoJKGFkZF9sb2NhdGlvbl9vcl9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBVc2UgdGV4dF9zZWN0aW9uX2xhYmVsLAoJbm90IFRFWFRfU0VDVElPTl9OQU1FLgoKMjAwNC0wMi0xMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJUmVwcmVzZW50IGNvbHVtbiBudW1iZXJzIHVzaW5nIGxpbmUtbWFwJ3Mgc291cmNlX2xvY2F0aW9uLgoJVGhlICJuZXh0IGF2YWlsYWJsZSBzb3VyY2VfbG9jYXRpb24iIGlzIG5vdyBtYW5hZ2VkIGludGVybmFsbHkgYnkKCWxpbmUtbWFwcy5jIHJhdGhlciB0aGFuIGJ5IGNsaWVudHMuCgkqIGxpbmUtbWFwLmggKHN0cnVjdCBsaW5lX21hcCk6IE5ldyBmaWVsZCBjb2x1bW5fYml0cy4KCTxmcm9tX2xpbmU+OiBSZW5hbWUgZmllbGQgdG8gc3RhcnRfbG9jYXRpb24uCgkoc3RydWN0IGxpbmVfbWFwcyk6IE5ldyBmaWVsZHMgaGlnaGVzdF9sb2NhdGlvbiBhbmQgbWF4X2NvbHVtbl9oaW50LgoJKGxpbmVtYXBfY2hlY2tfZmlsZXNfZXhpdGVkKTogTmV3IGRlY2xhcmF0aW9uLgoJKGxpbmVtYXBfbGluZV9zdGFydCk6IE5ldyBkZWNsYXJhdGlvbi4KCShsaW5lbWFwX2FkZCk6IFJlbW92ZSBmcm9tX2xpbmUgcGFyYW1ldGVyOyB1c2UgaGlnaGVzdF9sb2NhdGlvbiBmaWVsZC4KCShTT1VSQ0VfTElORSwgTEFTVF9TT1VSQ0VfTElORSk6IE1vZGlmeSB0byB1c2UgY29sdW1uX2JpdHMuCgkoU09VUkNFX0NPTFVNTiwgTEFTVF9TT1VSQ0VfTElORV9MT0NBVElPTik6IE5ldyBtYWNyb3MuCgkoQ1VSUkVOVF9MSU5FX01BUCk6IFJlbW92ZSBtYWNyby4KCShsaW5lbWFwX3Bvc2l0aW9uX2Zvcl9jb2x1bW4pOiBOZXcgaW5saW5lIGZ1bmN0aW9uLgoJKiBsaW5lLW1hcC5jIChsaW5lbWFwX2luaXQpOiBDbGVhciBuZXcgZmllbGRzLgoJKGxpbmVtYXBfY2hlY2tfZmlsZXNfZXhpdGVkKTogTmV3IGZ1bmN0aW9uLCBleHRyYWN0ZWQgZnJvbSAuLi4KCShsaW5lbWFwX2ZyZWUpOiBVc2UgbGluZW1hcF9jaGVja19maWxlc19leGl0ZWQuCgkobGluZW1hcF9hZGQpOiBSZW1vdmUgZnJvbV9saW5lIHBhcmFtZXRlci4gIFZhcmlvdXMgdXBkYXRlcy4KCShsaW5lbWFwX2xpbmVfc3RhcnQpOiBOZXcgZnVuY3Rpb24uCgkobGluZW1hcF9sb29rZXVwKTogVXBkYXRlIGZvciBuZXcgZmllbGQgbmFtZXMuCgkqIGNwcGhhc2guaCAoc3RydWN0IGNwcF9yZWFkZXIpIDxtYXA+OiBGaWVsZCByZW1vdmVkLiAgQmVjYXVzZQoJbGluZW1hcF9wb3NpdGlvbl9mb3JfY29sdW1uIG1heSB1bnByZWRpY3RhYmx5IGNoYW5nZSB0aGUgY3VycmVudCBtYXAsCglpdCBpcyBjbGVhbmVyIGFuZCBzaW1wbGVyIGZvciB1cyB0byBub3QgY2FjaGUgaXQgaW4gY3BwX3JlYWRlci4KCShzdHJ1Y3QgY3BwX2J1ZmZlcik6IE5ldyBzeXNwIGZpZWxkLgoJQ2hhbmdlZCB3YXJuZWRfY3BsdXNwbHVzX2NvbW1lbnRzIGFuZCBmcm9tX3N0YWdlMyB0byBiaXRmaWVsZHMuCgkqIGNwcGluaXQuYyAoY3BwX3JlYWRfbWluX2ZpbGUpOiBwZmlsZS0+bWFwIG5vIGxvbmdlciBleGlzdHMuCgkqIGNwcGxpYi5jIChkb19saW5lLCBkb19saW5lbWFya2VyLCBfY3BwX2RvX2ZpbGVfY2hhbmdlKTogR2V0CgljdXJyZW50IG1hcCB1c2luZyBsaW5lbWFwX2xvb2t1cC4KCShkb19saW5lbWFya2VyKTogQWxzbyBzZXQgYnVmZmVyJ3Mgc3lzcCBmaWVsZC4KCShkZXN0cmluZ2l6ZV9hbmRfcnVuKTogTm8gbG9uZ2VyIG5lZWQgdG8gZGVjcmVtZW50IGN1cnJlbnQgbGluZS4KCSogY3BwZmlsZXMuYyAoX2NwcF9zdGFja19maWxlKTogU2V0IHN5c3AgZnJvbSBhbmQgaW4gYnVmZmVyLgoJKHNlYXJjaF9wYXRoX2hlYWQsIG9wZW5fZmlsZV9mYWlsZWQpOiBVc2UgYnVmZmVyJ3Mgc3lzcC4KCShjcHBfbWFrZV9zeXN0ZW1faGVhZGVyKTogR2V0IGN1cnJlbnQgbWFwIHVzaW5nIGxpbmVtYXBfbG9va3VwLgoJQWxzbyBzZXQgYnVmZmVyJ3Mgc3lzcCBmbGFnLgoJKiBjcHBtYWNyby5jIChfY3BwX2J1aWx0aW5fbWFjcm9fdGV4dCk6IExpa2V3aXNlIHVzZSBsaW5lbWFwX2xvb2t1cC4KCSogY3BwaGFzaC5oIChDUFBfSU5DUkVNRU5UX0xJTkUpOiBOZXcgbWFjcm8uCgkoc3RydWN0IGNwcF9idWZmZXIpOiBNb3ZlZCBmaWVsZHMgc2F2ZWRfY3VyLCBzYXZlZF9ybGltaXQgdG8gLi4uCgkoc3RydWN0IGNwcF9yZWFkZXIpOiAuLi4gYW5kIGFkZGluZyBzYXZlZF9saW5lX2Jhc2UgZmllbGQuCgkqIGNwcHRyYWQuYyAoX2NwcF9vdmVybGF5X2J1ZmZlciwgX2NwcF9yZW1vdmVfb3ZlcmxheSk6CglVcGRhdGUgYWNjb3JkaW5nbHkuICBEb24ndCBhZGp1c3QgbGluZS4KCShfY3BwX3NjYW5fb3V0X2xvZ2ljYWxfbGluZSk6IFVzZSBDUFBfSU5DUkVNRU5UX0xJTkUuCgkqIGNwcGhhc2guYyAoQ1BQX0lOX1NZU1RFTV9IRUFERVIpOiBSZXBsYWNlZCBtYWNybyBieSAuLi4KCShjcHBfaW5fc3lzdGVtX2hlYWRlcik6IC4uLiBuZXcgaW5saW5lIGZ1bmN0aW9uLCB1c2luZyBidWZmZXIncyBzeXNwLgoJKiBjcHBlcnJvci5jIChfY3BwX2JlZ2luX21lc3NhZ2UpOiBVcGRhdGUgdG8gdXNlIGNwcF9pbl9zeXN0ZW1faGVhZGVyLgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfZGlyZWN0KTogTGlrZXdpc2UuCgkqIGNwcG1hY3JvLmMgKF9jcHBfYnVpbHRpbl9tYWNyb190ZXh0KTogTGlrZXdpc2UuCgkqIGNwcG1hY3JvLmMgKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBVc2UgYnVmZmVyJ3Mgc3lzcCBmaWVsZC4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfdG9rZW4pOiBSZW5hbWUgbGluZSBmaWVsZCB0byBzcmNfbG9jLgoJUmVtb3ZlIGNvbCBmaWVsZCBhcyBpdCBpcyBub3cgc3Vic3VtZWQgYnkgc3JjX2xvYy4KCSogY3BwZXJyb3IuYzogVXBkYXRlIHZhcmlvdXMgZmllbGQsIHBhcmFtZXRlciwgYW5kIG1hY3JvIG5hbWVzLgoJKHByaW50X2xvY2F0aW9uKTogSWYgY29sPT0wLCB0cnkgU09VUkNFX0NPTFVNTiBvZiBsaW5lLgoJKGNwcF9lcnJvcik6IFVzZSBjdXJfdG9rZW4ncyBzcmNfbG9jIGZpZWxkLCByYXRoZXIgdGhhbiBsaW5lK2NvbC4KCSogY3BwbGliLmMgKGRvX2RpYWdub3N0aWMpOiBUb2tlbidzIHNyY19sb2MgZmllbGRzIHJlcGxhY2VzIGxpbmUrY29sLgoJKiBjcHBsZXguYyAoX2NwcF9wcm9jZXNzX2xpbmVfbm90ZXMsIF9jcHBfbGV4X2RpcmVjdCwKCV9jcHBfc2tpcF9ibG9ja19jb21tZW50KTogVXNlIENQUF9JTkNSRU1FTlRfTElORS4KCShfY3BwX3RlbXBfdG9rZW4pOiBSZXBsYWNlIGNwcF90b2tlbidzIGxpbmUrY29sIGZpZWxkcyBieSBzcmNfbG9jLgoJKF9jcHBfZ2V0X2ZyZXNoX2xpbmUpOiBEb24ndCBuZWVkIHRvIGFkanVzdCBsaW5lIGZvciBtaXNzaW5nIG5ld2xpbmUuCgkoX2NwcF9sZXhfZGlyZWN0KTogVXNlIGxpbmVtYXBfcG9zaXRpb25fZm9yX2NvbHVtbi4KCSogYy1wcG91dHB1dC5jIChtYXliZV9wcmludF9saW5lLCBwcmludF9saW5lKTogRG9uJ3QgdGFrZSBtYXAKCXBhcmFtZXRlci4gIEluc3RlYWQgZ2V0IGl0IGZyb20gdGhlIGxpbmVfdGFibGUgZ2xvYmFsLiAgQWRqdXN0IGNhbGxlcnMuCgkocHJpbnQpOiBSZW1vdmUgbWFwIGZpZWxkLiAgUmVwbGFjZSBsaW5lIGZpZWxkIHRvIHNyY19saW5lLgoJKGluaXRfcHBfb3V0cHV0LCBhY2NvdW50X2Zvcl9uZXdsaW5lcywgbWF5YmVfcHJpbnRfbGluZSk6IEFkanVzdC4KCShjYl9saW5lX2NoYW5nZSk6IFVzZSBTT1VSQ0VfQ09MVU1OLiAgTWlub3Igb3B0aW1pemF0aW9ucy4KCShwcF9maWxlX2NoYW5nZSk6IFVzZSBNQUlOX0ZJTEVfUCBzaW5jZSB3ZSBjYW5ub3QgY2hlY2tlZCBwcmludC5tYXAuCglVc2UgTEFTVF9TT1VSQ0VfTElORV9MT0NBVElPTiB0byAiY2F0Y2ggdXAiIGFmdGVyICNpbmNsdWRlLgoJKiBjcHB0cmFkLmMgKGNvcHlfY29tbWVudCk6IFJlbmFtZSB2YXJpYWJsZS4KCSogYy1sZXguYyAobWFwKTogUmVtb3ZlIHN0YXRpYyB2YXJpYWJsZSwgZm9yIHNhbWUgcmVhc29uIHdlIHJlbW92ZWQKCWNwcF9yZWFkZXIncyBtYXAgZmllbGQuCgkoY2JfbGluZV9jaGFuZ2UsIGNiX2RlZl9wcmFnbWEsIGNiX2RlZmluZSwgY2JfdW5kZWYpOiBIZW5jZSB3ZSBuZWVkCgl0byBjYWxsIGxpbmVtYXBfbG9va3VwLgoJKGNiX2xpbmVfY2hhbmdlKTogVG9rZW4ncyBsaW5lIGZpZWxkIHJlcGxhY2VkIGJ5IHNyY19sb2MuCgkoZmVfZmlsZV9jaGFuZ2UpOiBVc2UgTUFJTkZJTEVfUCBhbmQgTEFTVF9TT1VSQ0VfTElORSBtYWNyb3MuCglEb24ndCBzYXZlIG5ld19tYXAuCgoJKiBjcHBoYXNoLmgsIGNwcGVycm9yLmMsIGNwcGxpYi5oOiBTb21lIHJlbmFtZXMgb2YgZmlsZWxpbmUgdG8KCXNvdXJjZV9sb2NhdGlvbi4KCjIwMDQtMDItMTEgIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kICgqbW92djRzaV9pbnRlcm5hbCk6IEF0IGxlYXN0IG9uZQoJb3BlcmFuZCBtdXN0IGJlIHJlZ2lzdGVyX29wZXJhbmQuCgkoKm1vdnY4aGlfaW50ZXJuYWwxKTogTGlrZXdpc2UuCgkoKm1vdnYxNnFpX2ludGVybmFsMSk6IExpa2V3aXNlLgoJKCptb3Z2NHNmX2ludGVybmFsMSk6IExpa2V3aXNlLgoKMjAwNC0wMi0xMCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKCIqbW92djJzaV9pbnRlcm5hbCIpOiBDaGVjayBmb3IgcmVnaXN0ZXIKCW9wZXJhbmQuCgkobW92djRoaV9pbnRlcm5hbCk6IFNhbWUuCgkobW92djJzZl9pbnRlcm5hbCk6IFNhbWUuCgkobW92djFkaV9pbnRlcm5hbCk6IFNhbWUuCgoyMDA0LTAyLTExICBUaGllbW8gU2V1ZmVyICA8c2V1ZmVyQGNzdi5pY2EudW5pLXN0dXR0Z2FydC5kZT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoVEFSR0VUX09MREFCSSk6IERlZmluZS4gVXNlIFRBUkdFVF9ORVdBQkkgYW5kCglUQVJHRVRfT0xEQUJJIGNvbnNpc3RlbnRseS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChmdW5jdGlvbl9hcmcsbWlwc19zZXR1cF9pbmNvbWluZ192YXJhcmdzLAoJbWlwc192YV9hcmcsb3ZlcnJpZGVfb3B0aW9ucyxjb21wdXRlX2ZyYW1lX3NpemUsCgltaXBzX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0LG1pcHMxNl9mcF9hcmdzLGJ1aWxkX21pcHMxNl9jYWxsX3N0dWIKCSxtaXBzX3JldHVybl9pbl9tZW1vcnksbWlwc19zdHJpY3RfYXJndW1lbnRfbmFtaW5nKTogVXNlIFRBUkdFVF9ORVdBQkkKCWFuZCBUQVJHRVRfT0xEQUJJIGNvbnNpc3RlbnRseS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZXhjZXB0aW9uX3JlY2VpdmVyKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL2xpbnV4NjQuaDogTGlrZXdpc2UuCgoyMDA0LTAyLTExICBIYXJ0bXV0IFBlbm5lciAgPGhwZW5uZXJAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKQoJU2V0IEFsdGlWZWMgQUJJIGFuZCB2cnNhdmUgYXMgZGVmYXVsdCBmb3IgcHBjNjQgbGludXguCgkoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBQb3N0IGVycm9yLCBpZiB0cnkgdG8gcmV0dXJuCgl2YWx1ZSBpbiBBbHRpVmVjIHJlZ2lzdGVyIHdpdGhvdXQgZW5hYmxlIEFsdGlWZWMuCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBEaXR0byBmb3IgcGFzc2luZyBhcmd1bWVudHMuCgoyMDA0LTAyLTExICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBlbWl0LXJ0bC5jIChtYXJrX2xhYmVsX251c2VzKTogQ2hlY2sgdGhhdCBhIExBQkVMX1JFRiByZWZlcnMgdG8KCWEgbGFiZWwgYmVmb3JlIHVwZGF0aW5nIGl0cyB1c2FnZSBjb3VudC4KCjIwMDQtMDItMTAgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IFJlbW92ZSBleHRyYSBjZC4KCjIwMDQtMDItMTAgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIGMtY29tbW9uLmMgKHZlY3Rvcl9zaXplX2hlbHBlcik6IFJlbW92ZTsgY2FsbAoJcmVjb25zdHJ1Y3RfY29tcGxleF90eXBlKCkgaW5zdGVhZC4KCSogdHJlZS5jIChyZWNvbnN0cnVjdF9jb21wbGV4X3R5cGUpOiBOZXcgZnVuY3Rpb24KCShmb3JtZXJseSB2ZWN0b3Jfc2l6ZV9oZWxwZXIoKSBpbiBjLWNvbW1vbi5jKS4KCShtYWtlX3ZlY3Rvcik6IE1ha2UgZXh0ZXJuYWxseSB2aXNpYmxlLgoJKiB0cmVlLmggKHJlY29uc3RydWN0X2NvbXBsZXhfdHlwZSwgbWFrZV92ZWN0b3IpOiBBZGQgcHJvdG90eXBlcy4KCjIwMDQtMDItMTAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IEFkZCBhIHByb3RvdHlwZSBmb3IKCWg4MzAwX3JlZ3Nfb2tfZm9yX3N0bS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGg4MzAwX3JlZ3Nfb2tfZm9yX3N0bSk6IE5ldy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChzdG1faDgzMDBzXzJfYWR2YW5jZWQsCglzdG1faDgzMDBzXzJfbm9ybWFsLCBzdG1faDgzMDBzXzIsIHN0bV9oODMwMHNfM19hZHZhbmNlZCwKCXN0bV9oODMwMHNfM19ub3JtYWwsIHN0bV9oODMwMHNfMywgc3RtX2g4MzAwc180X2FkdmFuY2VkLAoJc3RtX2g4MzAwc180X25vcm1hbCwgc3RtX2g4MzAwc180LCBsZG1faDgzMDBzXzJfYWR2YW5jZWQsCglsZG1faDgzMDBzXzJfbm9ybWFsLCBsZG1faDgzMDBzXzIsIGxkbV9oODMwMHNfM19hZHZhbmNlZCwKCWxkbV9oODMwMHNfM19ub3JtYWwsIGxkbV9oODMwMHNfMywgbGRtX2g4MzAwc180X2FkdmFuY2VkLAoJbGRtX2g4MzAwc180X25vcm1hbCwgbGRtX2g4MzAwc180KTogVXNlCgloODMwMF9yZWdzX29rX2Zvcl9zdG0oKS4KCjIwMDQtMDItMTAgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYy8xNDA4OAoJKiByZWFsLmMgKHJlYWxfZnJvbV9zdHJpbmcpOiBMb29rIGZvciAnWCcgYXMgd2VsbCBhcyAneCcgaW4KCWhleGZsb2F0IHN0cmluZ3MuCgoyMDA0LTAyLTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBSZW1vdmUgYW4gaW5jb3JyZWN0IGNvbW1lbnQgYWJvdXQKCXBlZXBob2xlMi4gIEFkZCBjb21tZW50cy4KCjIwMDQtMDItMTAgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCglQUi8xNDA1OAoJKiBlbWl0LXJ0bC5jIChzZXRfZGVjbF9pbmNvbWluZ19ydGwpOiBOZXcuCgkqIHRyZWUuaCAoc2V0X2RlY2xfaW5jb21pbmdfcnRsKTogTmV3LgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBVc2Ugc2V0X2RlY2xfaW5jb21pbmdfcnRsIGZvciBzZXR0aW5nCglERUNMX0lOQ09NSU5HX1JUTC4KCSogYWRhL21pc2MuYyAoYWRqdXN0X2RlY2xfcnRsKTogTGlrZXdpc2UuCgoyMDA0LTAyLTEwICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBEb24ndCBlbWl0IHdvcmtpbmcgZGlyZWN0b3J5CglpbiBjcHAgb3V0cHV0IGlmIC1QIHdhcyBzcGVjaWZpZWQuCgoyMDA0LTAyLTEwICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIGMvMTQwOTIKCSogZm9sZC1jb25zdC5jIChmb2xkKSA8TkVHQVRFX0VYUFI+OiBDb252ZXJ0IHJlc3VsdCBvZgoJbmVnYXRlX2V4cHIgYmFjayB0byB0aGUgb3JpZ2luYWwgdHlwZS4KCjIwMDQtMDItMTAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SKTogRG9uJ3QKCWJ1bXAgcmV0YWRkciBoZXJlLgoKMjAwNC0wMi0xMCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIHJ0bC5oIChzY2hlZHVsZV9pbnNucywgc2NoZWR1bGVfZWJicywgZml4X3NjaGVkX3BhcmFtLAoJZ2VuX2xvd3BhcnRfU1VCUkVHKTogTW92ZSB1bmRlciB0aGUgZmlsZSBpbiB3aGljaCB0aGV5CglhcmUgYWN0dWFsbHkgZGVjbGFyZWQuCgoyMDA0LTAyLTEwICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBBZGQgbGliYWRhIGRvY3VtZW50YXRpb24uCgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBvbiBBZGEgYnVpbGQsIG5vdwoJdGhhdCB0aGUgR05BVCBsaWIgYW5kIHRvb2xzIGFyZSBidWlsdCBhdXRvbWF0aWNhbGx5LgoKMjAwNC0wMi0xMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChUQVJHRVRfR1BXT1JEKTogUmV0dXJuIGZhbHNlIGZvciBUQVJHRVRfTkVXQUJJCgkmJiBUQVJHRVRfSVJJWC4KCjIwMDQtMDItMDkgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMvb2JqYy1hY3QuYyAoZ2V0X3N1cGVyX3JlY2VpdmVyKTogTW92ZSAnI2lmZGVmIE9CSkNQTFVTJwoJYm91bmRhcmllcyBvdXRzaWRlIGJ1aWxkX2NvbXBvbmVudF9yZWYoKSBjYWxsIChhIG1hY3JvIGluIE9iakMrKykuCgoyMDA0LTAyLTA5ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EtcHJvdG9zLmggKHh0ZW5zYV9jb3B5X2luY29taW5nX2E3KTogVXBkYXRlLgoJKGluaXRfY3VtdWxhdGl2ZV9hcmdzKTogTGlrZXdpc2UuCgkoYTdfb3ZlcmxhcF9tZW50aW9uZWRfcCk6IERlbGV0ZSBwcm90b3R5cGUuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogUmVwbGFjZQoJaW5jb21pbmdfYTdfY29waWVkIGZpZWxkIHdpdGggbmVlZF9hN19jb3B5IGFuZCB2YXJhcmdfYTcgZmxhZ3MuCglBZGQgc2V0X2ZyYW1lX3B0cl9pbnNuIGZpZWxkLgoJKHh0ZW5zYV9lbWl0X21vdmVfc2VxdWVuY2UpOiBVcGRhdGUgY2FsbCB0byB4dGVuc2FfY29weV9pbmNvbWluZ19hNy4KCSh4dGVuc2FfY29weV9pbmNvbWluZ19hNyk6IFJld3JpdGUgdG8gY2hlY2sgbmVlZF9hN19jb3B5IGZsYWcgYW5kIGNoZWNrCglpZiB0aGUgb3BlcmFuZCBpcyBhbiBhcmd1bWVudCBpbiBhNy4gIElmIHNvLCBjb3B5IGE3IHRvIGEgbmV3IHBzZXVkbwoJYXQgdGhlIGZ1bmN0aW9uIGVudHJ5IGFuZCByZXBsYWNlIHRoZSBvcGVyYW5kIHdpdGggdGhlIHBzZXVkby4KCShpbml0X2N1bXVsYXRpdmVfYXJncyk6IFJlbW92ZSB1bnVzZWQgYXJndW1lbnRzLiAgQWRkIG5ldyAiaW5jb21pbmciCglhcmd1bWVudCBhbmQgcmVjb3JkIHRoaXMgZmxhZyBpbiBDVU1VTEFUSVZFX0FSR1MuCgkoZnVuY3Rpb25fYXJnKTogUmVtb3ZlIHJlc3VsdF9tb2RlIGFuZCBzcGVjaWFsLWNhc2UgY29kZSB0byBoYW5kbGUKCWFyZ3VtZW50cyBpbiBhNy4gIEluc3RlYWQsIHNldCBuZWVkX2E3X2NvcHkgZmxhZyB3aGVuIHRoZXJlIGlzIGFuCglpbmNvbWluZyBhcmd1bWVudCBpbiBhNy4KCSh4dGVuc2FfZXhwYW5kX3Byb2xvZ3VlKTogUmVtb3ZlIGNvZGUgdG8gc2VhcmNoIGZvciBzZXRfZnJhbWVfcHRyIGluc24KCWFuZCB1c2UgdGhlIHZhbHVlIHJlY29yZGVkIGluIGNmdW4tPm1hY2hpbmUtPnNldF9mcmFtZV9wdHJfaW5zbi4KCSh4dGVuc2FfYnVpbHRpbl9zYXZlcmVncyk6IENoZWNrIGZvciBuZWdhdGl2ZSBncF9sZWZ0IHZhbHVlLiAgU2V0CgluZWVkX2E3X2NvcHkgYW5kIHZhcmFyZ19hNyBmbGFncy4gIFVzZSBtb3ZlX2Jsb2NrX2Zyb21fcmVnIGluc3RlYWQgb2YKCXNwZWNpYWwtY2FzZSBjb2RlLgoJKGE3X292ZXJsYXBfbWVudGlvbmVkX3ApOiBEZWxldGUuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKENVTVVMQVRJVkVfQVJHUyk6IEFkZCAiaW5jb21pbmciIGZsYWcuCgkoSU5JVF9DVU1VTEFUSVZFX0FSR1MsIElOSVRfQ1VNVUxBVElWRV9JTkNPTUlOR19BUkdTKTogUmVtb3ZlIHVzZWxlc3MKCWFyZ3VtZW50cyB0byBpbml0X2N1bXVsYXRpdmVfYXJncyBhbmQgcGFzcyAiaW5jb21pbmciIGZsYWcgaW5zdGVhZC4KCShCTE9DS19SRUdfUEFERElORyk6IERlbGV0ZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EubWQgKG1vdmRpLCBtb3ZzZiwgbW92ZGYpOiBSZW1vdmUgdW5uZWNlc3NhcnkKCWNoZWNrcyBmb3IgcmVsb2FkX2luX3Byb2dyZXNzIGFuZCByZWxvYWRfY29tcGxldGVkLiAgVXBkYXRlIGNhbGxzIHRvCgl4dGVuc2FfY29weV9pbmNvbWluZ19hNy4KCShhc2hsc2kzKTogUmVuYW1lIGV4aXN0aW5nIGluc24gdG8gYXNobHNpM19pbnRlcm5hbC4gIEFkZCBleHBhbmRlcgoJdG8gY2FsbCB4dGVuc2FfY29weV9pbmNvbWluZ19hNy4KCjIwMDQtMDItMDkgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYveG0tZGpncHAuaCAoR0NDX0RSSVZFUl9IT1NUX0lOSVRJQUxJWkFUSU9OKTogTm8KCWxvbmdlciBtb2RpZnkgc3RhbmRhcmRfZXhlY19wcmVmaXgsIHN0YW5kYXJkX2JpbmRpcl9wcmVmaXgsIG9yCglzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4LgoKMjAwNC0wMi0wOSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCVBSIGMrKy8xMTI5NQoJKiBjLWNvbW1vbi5jIChjX2V4cGFuZF9leHByLCBjYXNlIFNUTVRfRVhQUik6IENoYW5nZSBleHBhbmRfZXhwciBjYWxsCgl0byBleHBhbmRfZXhwcl9yZWFsIGNhbGwsIGFuZCBwYXNzIGluIGFsdF9ydGwgYXMgbGFzdCBhcmd1bWVudC4KCglQUiBsaWJzdGRjKysvNTYyNQoJKiBidWlsdGluLXR5cGVzLmRlZiAoQlRfV09SRCwgQlRfRk5fV09SRF9QVFIpOiBOZXcuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX0VYVEVORF9QT0lOVEVSLgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0VYVEVORF9QT0lOVEVSKTogTmV3LgoJKiBleGNlcHQuYyAoZXhwYW5kX2J1aWx0aW5fZXh0ZW5kX3BvaW50ZXIpOiBOZXcuCgkqIGV4Y2VwdC5oIChleHBhbmRfYnVpbHRpbl9leHRlbmRfcG9pbnRlcik6IERlY2xhcmUuCgoyMDA0LTAyLTA5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9tb3ZlKTogUmVtb3ZlIHNwbGl0dGluZyBzbG93Cgl1bmFsaWduZWQgbG9hZHMgYW5kIHN0b3Jlcy4KCjIwMDQtMDItMDkgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMvaXJpczUuaCAoQlNTX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChCU1NfU0VDVElPTl9BU01fT1ApOiBVbmRlZi4KCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKFRBUkdFVF9BU01fTkFNRURfU0VDVElPTik6IE1vdmVkIC4uLgoJKiBjb25maWcvbWlwcy9pcmlzNS5oOiAuLi4gaGVyZS4KCSogY29uZmlnL21pcHMvaXJpczVnYXMuaCAoVEFSR0VUX0FTTV9OQU1FRF9TRUNUSU9OKTogUmVtb3ZlLgoKCSogY29uZmlnL21pcHMvaXJpczYuaCAoRVhUUkFfU0VDVElPTl9GVU5DVElPTlMpOiBNb3ZlIC4uLgoJKiBjb25maWcvbWlwcy9pcmlzNS5oOiAuLi4gaGVyZS4KCjIwMDQtMDItMDkgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlndXJlLmFjOiBSZW1vdmUgZGVmYXVsdCBleGVjdXRhYmxlIGZpbGVzIGJlZm9yZSBBQ19QUk9HX0NDLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTAyLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCVBSIHRhcmdldC8xMzcyMQoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoYnl0ZV9yZWcpOiBDYWxsIGFib3J0KCkgaWYgYXNrZWQgdG8KCXByaW50IGEgb3BlcmFuZCBvdGhlciB0aGFuIGEgcmVnaXN0ZXIuCgoyMDA0LTAyLTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgPE5PUF9FWFBSPjogVXNlIHRoZSBvcmlnaW5hbCB0eXBlIGNvbnZlcnNpb24KCXRyZWUgY29kZSByYXRoZXIgdGhhbiBjYWxsIGZvbGRfY29udmVydCwgd2hpY2ggZG9lc24ndCBzcGVjaWZ5IGEKCWRlZmF1bHQgZmxvYXRpbmcgcG9pbnQgdG8gaW50ZWdlciBjb252ZXJzaW9uLgoKMjAwNC0wMi0wOCAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jLCBjb25maWcvbTY4ay9tNjhrLm1kIChTR1MsIFNHU19DTVBfT1JERVIpOiBSZW1vdmUKCWNvZGUgdG8gc3VwcG9ydCBTR1MgYXNzZW1ibGVyLiAgUmVmb3JtYXQgYWRqYWNlbnQgY29kZSB3aGVyZSBwb3NzaWJsZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChzd2l0Y2hfdGFibGVfZGlmZmVyZW5jZV9sYWJlbF9mbGFnKTogUmVtb3ZlCglkZWZpbml0aW9uLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6IFJlbW92ZSBzdXBwb3J0Cglmb3IgJyUjJy4KCSogY29uZmlnL202OGsvbGludXguaCwgY29uZmlnL202OGsvbTY4ay5jLAoJKiBjb25maWcvbTY4ay9tYXRoLTY4ODgxLmg6IFJlcGxhY2UgYCUjJyB3aXRoIGAjJyBpbiBpbmxpbmUgYXNtCgltYWNyb3MgYW5kIGFzbV9wcmludGYoKSBmb3JtYXQgc3RyaW5ncy4KCSogY29uZmlnL202OGsvbTY4a2VsZi5oIChBU01fT1VUUFVUX0NBU0VfRU5EKTogUmVtb3ZlIG1hY3JvIGRlZmluaXRpb24uCgkqIGNvbmZpZy9tNjhrL2xpbnV4Lmg6IFVwZGF0ZSBjb3B5cmlnaHQuCgkqIGNvbmZpZy9tNjhrL2xpbnV4LmgsIGNvbmZpZy9tNjhrL202OGsuYzogUmVtb3ZlIHRyYWxpbmcgd2hpdGVzcGFjZS4KCjIwMDQtMDItMDggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgkgICAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChSRUdJU1RFUl9OQU1FUyk6IFByZWZpeCBlYWNoIG5hbWUgd2l0aAoJUkVHSVNURVJfUFJFRklYLgoJKiAoTTY4S19GUF9SRUdfTkFNRSk6IE5ldyBtYWNybyB0byBzcGVjaWZ5IGFuIGFsdGVybmF0ZSBuYW1lIGZvciB0aGUKCWZyYW1lIHBvaW50ZXIgcmVnaXN0ZXIsIG92ZXJyaWRhYmxlIGJ5IE9TIHRhcmdldHMuCgkqIChNNjhLX1JFR05BTUUpOiBNYWNybyB0byBvYnRhaW4gcmVnaXN0ZXIgbmFtZSBmb3IgYXNtIG91dHB1dCwKCWV2ZW50dWFsbHkgcmVwbGFjaW5nICVhNiB3aXRoIE02OEtfRlBfUkVHX05BTUUuCgkqIGNvbmZpZy9tNjhrL2NvZmYuaCAoUkVHSVNURVJfTkFNRVMpOiBEb24ndCByZWRlZmluZS4KCSogY29uZmlnL202OGsvbGludXguaCAoUkVHSVNURVJfTkFNRVMpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4a2VsZi5oIChSRUdJU1RFUl9OQU1FUyk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmggKFJFR0lTVEVSX05BTUVTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYzogVXNlIE02OEtfUkVHTkFNRSh4KSBpbiBwbGFjZSBvZiByZWdfbmFtZXNbeF0uCgoyMDA0LTAyLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IERlZmluZSBhcwoJaG9va19ydHhfdHJlZV9pbnRfbnVsbC4KCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfc3RydWN0X3ZhbHVlX3J0eCk6IFJlbW92ZS4KCSogdGFyZ2hvb2tzLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJZGVmYXVsdF9zdHJ1Y3RfdmFsdWVfcnR4LgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYywgY29uZmlnL2FyYy9hcmMuYywgY29uZmlnL2F2ci9hdnIuYywKCWNvbmZpZy9mcjMwL2ZyMzAuYywgY29uZmlnL2g4MzAwL2g4MzAwLmMsIGNvbmZpZy9pMzg2L2kzODYuYywKCWNvbmZpZy9pcDJrL2lwMmsuYywgY29uZmlnL2lxMjAwMC9pcTIwMDAuYywKCWNvbmZpZy9tMzJyL20zMnIuYywgY29uZmlnL21jb3JlL21jb3JlLmMsIGNvbmZpZy9taXBzL21pcHMuYywKCWNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYywgY29uZmlnL3BkcDExL3BkcDExLmMsCgljb25maWcvcnM2MDAwL3JzNjAwMC5jLCBjb25maWcvczM5MC9zMzkwLmMsCgljb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYywgY29uZmlnL3Y4NTAvdjg1MC5jLAoJY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBSZW1vdmUuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IERvY3VtZW50IHRoZSBkZWZhdWx0LgoKMjAwNC0wMi0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBSRUFETUUuUG9ydGFiaWxpdHk6IENoYW5nZSAiSVNPIEM4OSIgdG8gIklTTyBDOTAiLgoJKiBjLXBhcnNlLmluIChwcmltYXJ5LCBpbml0ZWx0KTogTGlrZXdpc2UuCgoyMDA0LTAyLTA4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiByZWFsLmMgKGVuY29kZV9pYm1fZXh0ZW5kZWQpOiBOb3JtYWxpemUgdGhlIGlucHV0IHZhbHVlIGJlZm9yZQoJY29udmVydGluZyBpdCB0byBhIGRvdWJsZS4gIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIG5vcm1hbCB2YWx1ZQoJcm91bmRzIHRvIGluZmluaXR5LgoKMjAwNC0wMi0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGMtb2JqYy1jb21tb24uYyAoY19jYW5ub3RfaW5saW5lX3RyZWVfZm4pOiBGaXggYSB0eXBvIGluIGEKCXdhcm5pbmcuCgkqIGNzZS5jIChwcmVmZXJyYWJsZSk6IENoYW5nZSB0byBwcmVmZXJhYmxlLiBVcGRhdGUgYWxsIG9mIGl0cwoJY2FsbGVycy4KCSogZ2VuYXV0b21hdGEuYyAoYWluc24pOiBDaGFuZ2UKCWZpcnN0X2FpbnNuX3dpdGhfZ2l2ZW5fZXF1aWFsZW5jZV9udW0gdG8KCWZpcnN0X2FpbnNuX3dpdGhfZ2l2ZW5fZXF1aXZhbGVuY2VfbnVtLiAgVXBkYXRlIGFsbCBvZiBpdHMKCXJlZmVyZW5jZXMuCgoyMDA0LTAyLTA4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBzY2hlZHVsZS1lYmIuYyAoc2NoZWR1bGVfZWJicyk6IERvIG5vdCBhbGxvY2F0ZSByZWcgbGlmZSBkYXRhLgoKMjAwNC0wMi0wNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogRml4IGZvcm1hdHRpbmcuCgoyMDA0LTAyLTA3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZGVmYXVsdC5oIChQUk9NT1RFX1BST1RPVFlQRVMpOiBSZW1vdmUuCgkqIHN5c3RlbS5oIChQUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTiwgUFJPTU9URV9QUk9UT1RZUEVTLAoJU1RSVUNUX1ZBTFVFX1JFR05VTSwgU0VUVVBfSU5DT01JTkdfVkFSQVJHUywKCUVYUEFORF9CVUlMVElOX1NBVkVSRUdTKTogUG9pc29uLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IERlZmluZSBhcwoJaG9va19ib29sX3RyZWVfZmFsc2UuCgkoVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUyk6IExpa2V3aXNlLgoJKiB0YXJnZXQuaDogUmVwbGFjZSBTRVRVUF9JTkNPTUlOR19WQVJBUkdTIHdpdGgKCXRhcmdldG0uY2FsbHMuc2V0dXBfaW5jb21pbmdfdmFyYXJncygpLgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9wcm9tb3RlX2Z1bmN0aW9uX3JldHVybik6IFJlbW92ZS4KCShkZWZhdWx0X3Byb21vdGVfcHJvdG90eXBlcyk6IExpa2V3aXNlLgoJKGRlZmF1bHRfc3RydWN0X3ZhbHVlX3J0eCk6IEFsd2F5cyBhYm9ydCgpLgoJKGRlZmF1bHRfZXhwYW5kX2J1aWx0aW5fc2F2ZXJlZ3MpOiBBbHdheXMgcHJpbnQgYW4gZXJyb3IKCW1lc3NhZ2UuCgkoZGVmYXVsdF9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogRG8gbm90aGluZy4KCShkZWZhdWx0X3ByZXRlbmRfb3V0Z29pbmdfdmFyYXJnc19uYW1lZCk6IERvbid0IGRlcGVuZCBvbgoJU0VUVVBfSU5DT01JTkdfVkFSQVJHUy4KCSogdGFyZ2hvb2tzLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJZGVmYXVsdF9wcm9tb3RlX2Z1bmN0aW9uX3JldHVybiBhbmQKCWRlZmF1bHRfcHJvbW90ZV9wcm90b3R5cGVzLgoKMjAwNC0wMi0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHN5c3RlbS5oIChTSEFSRURfU0VDVElPTl9BU01fT1ApOiBQb2lzb24uCgkqIHZhcmFzbS5jIChkYXRhX3NlY3Rpb24pOiBEb24ndCB1c2UgU0hBUkVEX1NFQ1RJT05fQVNNX09QLgoJKiBkb2MvdG0udGV4aSAoU0hBUkVEX1NFQ1RJT05fQVNNX09QKTogUmVtb3ZlLgoKMjAwNC0wMi0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCglCdWcgMTM4NTYKCSogYy1kZWNsLmMgKGRpYWdub3NlX21pc21hdGNoZWRfZGVjbHMpOiBPbmx5IGdpdmUgc3BlY2lhbAoJdHJlYXRtZW50IHdoZW4gb2xkZGVjbCBpcyBERUNMX0JVSUxUX0lOLCBpZiBDX0RFQ0xfSU5WSVNJQkxFCglpcyBhbHNvIHRydWUuCgkobWVyZ2VfZGVjbHMpOiBEb24ndCBjbGVhciBERUNMX0JVSUxUX0lOX0NMQVNTIGFuZAoJREVDTF9GVU5DVElPTl9DT0RFIHdoZW4gZGVmaW5pbmcgYSBidWlsdC1pbiBmdW5jdGlvbi4KCURvbid0IHVwZGF0ZSBERUNMX0VTVElNQVRFRF9JTlNOUy4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9kZWNsKTogRG9uJ3QgaWdub3JlIGJ1aWx0LWluCglGVU5DVElPTl9ERUNMcy4KCSogdHJlZS5oOiBEZWxldGUgREVDTF9FU1RJTUFURURfSU5TTlMuCgkqIHRyZWUtaW5saW5lLmMgKHN0cnVjdCBpbmxpbmVfZGF0YSk6IERlbGV0ZSBpbmxpbmVkX2luc25zIGZpZWxkLgoJKGV4cGFuZF9jYWxsX2lubGluZSwgb3B0aW1pemVfaW5saW5lX2NhbGxzKTogRG9uJ3QgdXBkYXRlCglERUNMX0VTVElNQVRFRF9JTlNOUyBub3IgaW5saW5lZF9pbnNucy4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfYW5hbHl6ZV9mdW5jdGlvbik6IERvbid0IHVwZGF0ZQoJREVDTF9FU1RJTUFURURfSU5TTlMuCgoyMDA0LTAyLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYyAoc2hhZG93X3dhcm5pbmcpOiBEZWxldGUuCgkqIGMtY29tbW9uLmggKGZyZWVfcGFyc2VyX3N0YWNrcywgc2hhZG93X3dhcm5pbmcsIHN3X2tpbmQpOiBEZWxldGUuCgkqIGMtZGVjbC5jICh3YXJuX2lmX3NoYWRvd2luZyk6IElzc3VlIHNoYWRvdyB3YXJuaW5ncyBkaXJlY3RseS4KCSogYy1vcHRzLmMgKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiBEb24ndCBjYWxsIGZyZWVfcGFyc2VyX3N0YWNrcy4KCSogYy1wYXJzZS5pbiAoZnJlZV9wYXJzZXJfc3RhY2tzKTogRGVsZXRlLgoKMjAwNC0wMi0wNyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiwgY29uZmlnL3Qtc2xpYmdjYy1kYXJ3aW4sIGNvbmZpZy90LXNsaWJnY2MtZWxmLXZlciwKCWNvbmZpZy90LXNsaWJnY2Mtc2xkLCBjb25maWcvbWlwcy90LWlyaXM1LTYsIGNvbmZpZy9zaC90LWxpbnV4OgoJVXNlIHRoZSB0b3AgbGV2ZWwgbWtpbnN0YWxsZGlycywgbm90IHRoZSBvbmUgaW4gdGhlIGdjYyBzdWJkaXIuCgkqIG1raW5zdGFsbGRpcnM6IFJlbW92ZSAoZnJvbSB0aGUgZ2NjIHN1YmRpcikuCgoyMDA0LTAyLTA3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzEzNjk2CgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jb252ZXJ0KTogTmV3IGZ1bmN0aW9uIHRvIHByb3ZpZGUgdHlwZQoJY29udmVyc2lvbiB0byB0aGUgbWlkZGxlLWVuZCB3aXRob3V0IHVzaW5nIGNvbnZlcnQuCgkobmVnYXRlX2V4cHIsIGFzc29jaWF0ZV90cmVlcywgc2l6ZV9kaWZmb3AsIG9taXRfb25lX29wZXJhbmQsCglvcGVyYW5kX2VxdWFsX2Zvcl9jb21wYXJpc29uX3AsIHBlZGFudGljX29taXRfb25lX29wZXJhbmQsCglpbnZlcnRfdHJ1dGh2YWx1ZSwgb3B0aW1pemVfYml0X2ZpZWxkX2NvbXBhcmUsIHJhbmdlX2Jpbm9wLAoJZGVjb2RlX2ZpZWxkX3JlZmVyZW5jZSwgbWFrZV9yYW5nZSwgYnVpbGRfcmFuZ2VfY2hlY2ssIHVuZXh0ZW5kLAoJZm9sZF90cnV0aG9wLCBleHRyYWN0X211bGRpdl8xLCBmb2xkX21hdGhmbl9jb21wYXJlLAoJZm9sZF9iaW5hcnlfb3Bfd2l0aF9jb25kaXRpb25hbF9hcmcsIGZvbGRfaW5mX2NvbXBhcmUsCglmb2xkX3NpbmdsZV9iaXRfdGVzdCwgZm9sZCwgbXVsdGlwbGVfb2ZfcCk6IFJlcGxhY2UgYWxsIGNhbGxzIHRvCgljb252ZXJ0IHdpdGggY2FsbHMgdG8gZm9sZF9jb252ZXJ0LgoKMjAwNC0wMi0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2VucmVjb2cuYyAoZmluZF9vcGVyYW5kKTogYWRkIGV4dHJhIGFyZ3VtZW50IHN0b3AuCgkodmFsaWRhdGVfcGF0dGVybik6IFZlcmlmeSB0aGF0IG1hY2hfZHVwIGlzIGR1cGxpY2F0aW5nIG9wZXJhbmQKCWRlZmluZWQgbGV4aWNhbGx5IGVhcmxpZXIuCgoyMDA0LTAyLTA3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnLmdjYzogRG9uJ3QgbWVudGlvbiBNQVhfTE9OR19UWVBFX1NJWkUuCgkqIHN5c3RlbS5oIChNQVhfTE9OR19UWVBFX1NJWkUsIE1BWF9MT05HX0RPVUJMRV9UWVBFX1NJWkUsCglNQVhfV0NIQVJfVFlQRV9TSVpFLCBHQ09WX1RZUEVfU0laRSk6IFBvaXNvbi4KCSogY29uZmlnL2F2ci9hdnIuaCwgY29uZmlnL2g4MzAwL2g4MzAwLmgsIGNvbmZpZy9pMzg2L2kzODYuaCwKCWNvbmZpZy9pYTY0L2lhNjQuaCwgY29uZmlnL2lwMmsvaXAyay5oLAoJY29uZmlnL2lxMjAwMC9pcTIwMDAuaCwgY29uZmlnL21pcHMvaXJpczUuaCwKCWNvbmZpZy9taXBzL21pcHMuaCwgY29uZmlnL3BhL3BhLTY0LmgsIGNvbmZpZy9wYS9wYS5oLAoJY29uZmlnL3JzNjAwMC9haXg1MS5oLCBjb25maWcvcnM2MDAwL2FpeDUyLmgsCgljb25maWcvcnM2MDAwL2Rhcndpbi5oLCBjb25maWcvcnM2MDAwL3JzNjAwMC5oLAoJY29uZmlnL3MzOTAvczM5MC5oLCBjb25maWcvc2gvc2guaCwgY29uZmlnL3NwYXJjL2ZyZWVic2QuaCwKCWNvbmZpZy9zcGFyYy9saW51eC5oLCBjb25maWcvc3BhcmMvbGludXg2NC5oLAoJY29uZmlnL3NwYXJjL25ldGJzZC1lbGYuaCwgY29uZmlnL3NwYXJjL3NwYXJjLmgsCgljb25maWcveHRlbnNhL3h0ZW5zYS5oOiBSZW1vdmUgdGhlIGRlZmluaXRpb25zIG9mCglNQVhfTE9OR19UWVBFX1NJWkUsIE1BWF9MT05HX0RPVUJMRV9UWVBFX1NJWkUsIGFuZC9vcgoJTUFYX1dDSEFSX1RZUEVfU0laRS4KCSogZG9jL3RtLnRleGkgKE1BWF9MT05HX1RZUEVfU0laRSwgTUFYX0xPTkdfRE9VQkxFX1RZUEVfU0laRSwKCU1BWF9XQ0hBUl9UWVBFX1NJWkUsIEdDT1ZfVFlQRV9TSVpFKTogUmVtb3ZlLgoKMjAwNC0wMi0wNyAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJUFIgYm9vdHN0cmFwLzEzOTkwCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEubWQgKCJkb2xvb3BfZW5kIik6IFBhc3MgZHVtbXkgYXJndW1lbnRzIHRvCglnZW5fcnR4X05FLgoKMjAwNC0wMi0wNyAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogdmFyLXRyYWNraW5nLmMgKHZ0X2FkZF9mdW5jdGlvbl9wYXJhbWV0ZXJzKTogU3Vycm91bmQgY2hlY2tpbmdzIGJ5CgkjaWZkZWYgRU5BQkxFX0NIRUNLSU5HIGFuZCAjZW5kaWYuCgoyMDA0LTAyLTA3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAobmVnYXRlX2V4cHJfcCwgbmVnYXRlX2V4cHIpOiBPcHRpbWl6ZSAtKEErQikgaW50bwoJZWl0aGVyICgtQSktQiBvciAoLUIpLUEsIGlmIEEgb3IgQiBpcyBlYXNpbHkgbmVnYXRlZCByZXNwZWN0aXZlbHkuCgkoZm9sZCkgPE1JTlVTX0VYUFI+OiBPcHRpbWl6ZSAoQSpDKSAtIChCKkMpIC0+IChBLUIpKkMgZm9yIGJvdGgKCWludGVnZXIgdHlwZXMgYW5kIGZsb2F0aW5nIHBvaW50IHdpdGggdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucy4KCUFkZCBzaW1pbGFyIG9wdGltaXphdGlvbiBmb3IgKEEqQzEpIC0gKEEqQzIpIC0+IEEqKEMxLUMyKS4KCU9wdGltaXplIEEgLSBCIGFzIEEgKyAoLUIpLCBpZiBCIGlzIGVhc2lseSBuZWdhdGVkLgoKMjAwNC0wMi0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGMtcHBvdXRwdXQuYywgY2ZnYW5hbC5jLCBkaWFnbm9zdGljLmgsIHByaW50LXJ0bC5jLAoJY29uZmlnL2Rhcndpbi5jLCBjb25maWcvZGFyd2luLmgsIGNvbmZpZy9pYTY0L2lhNjQtYy5jLAoJY29uZmlnL20zMnIvbGludXguaCwgY29uZmlnL3JzNjAwMC9wcGM2NC1mcC5jLAoJY29uZmlnL3NwYXJjL29wZW5ic2QuaCwgZG9jL21ha2VmaWxlLnRleGksIGRvYy9wYXNzZXMudGV4aToKCVVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA0LTAyLTA3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1wcG91dHB1dC5jLCB2YXItdHJhY2tpbmcuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTAyLTA2ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWcvaWE2NC9saW51eC5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiBPbmx5IGRlZmluZSBmb3IKCWdsaWJjIDIuMyBvciBiZXR0ZXIuCgoyMDA0LTAyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9GTE9BVF9MSUJfQ09NUEFSRV9SRVRVUk5TX0JPT0wpOiBDaGFuZ2UKCXRvIEZMT0FUX0xJQl9DT01QQVJFX1JFVFVSTlNfQk9PTC4KCjIwMDQtMDItMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3QtbGludXg2NCAoTElCMkZVTkNTX0VYVFJBKTogQWRkIGRhcndpbi1sZG91YmxlLmMuCgkoU0hMSUJfTUFQRklMRVMpOiBBZGQgbGliZ2NjLXBwYzY0LnZlci4KCShTSExJQl9NS01BUF9PUFRTKTogRGVsZXRlLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IEFkZCAtc3BlY3MuCgkoYmlzcGVjcyk6IEFkZCBydWxlLgoJKiBjb25maWcvcnM2MDAwL2xpYmdjYy1wcGM2NC52ZXI6IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwL3BwYzY0LWZwLmMgKF9fZml4dGZkaSwgX19mbG9hdGRpdGYpOiBOZXcgZnVuY3Rpb25zLgoJKF9fZmxvYXRkaWRmLCBfX2Zsb2F0ZGlzZik6IE9wdGltaXplIG11bHRpcGx5LgoJKF9fZml4dW5zdGZkaSk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2NvbXBsZXhfZnVuY3Rpb25fdmFsdWUpOiBBbGxvdyBmb3IKCXJlYWwgYW5kIGltYWcgcGFydHMgbGFyZ2VyIHRoYW4gb25lIHJlZ2lzdGVyLgoJKGZ1bmN0aW9uX2FyZyk6IENvcnJlY3QgdHlwZSBvZiByZWcgdXNlZCB3aGVuIGZwIGFyZyBzcGxpdCBwYXJ0aWFsbHkKCXRvIHN0YWNrLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi1sZG91YmxlLmM6IFByb3RlY3Qgd2l0aCAjaWYgIV9TT0ZUX0ZMT0FUCglhbmQgX19NQUNIX18gb3IgX19wb3dlcnBjNjRfXy4KCjIwMDQtMDItMDYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3NpZ25iaXQpOiBVc2UgZXh0cmFjdF9iaXRfZmllbGQgaW5zdGVhZAoJb2YgZ2VuX2hpZ2hwYXJ0IG9yIGdlbl9sb3dwYXJ0IHdoZW4gdGhlIGZsb2F0aW5nIHBvaW50IGZvcm1hdCBpcwoJd2lkZXIgdGhhbiB0aGUgcmVzdWx0IG1vZGUuCgoyMDA0LTAyLTA2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGR3YXJmMm91dC5jIChsb2NsYWJlbF9udW0pOiBNb3ZlIGludG8gI2lmZGVmCglEV0FSRjJfREVCVUdHSU5HX0lORk8uCgoyMDA0LTAyLTA2ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX3N1cGVyX3RlbXBsYXRlKSB0aGUgJ2NsYXNzJyBmaWVsZCBvZgoJJ3N0cnVjdCBfb2JqY19zdXBlcicgc2hhbGwgYmUgbmFtZWQgJ3N1cGVyX2NsYXNzJyAjaWZkZWYgT0JKQ1BMVVMuCgkoZ2V0X3N1cGVyX3JlY2VpdmVyKTogTGlrZXdpc2UuCgoyMDA0LTAyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcmVsb2FkMS5jIChjaGVja19lbGltaW5hYmxlX29jY3VycmVuY2VzKTogT3B0aW1pemUgdGhlIHJlc2V0CglvZiBjYW5fZWxpbWluYXRlLgoJKGVsaW1pbmF0ZV9yZWdzX2luX2luc24pOiBMaWtld2lzZS4KCjIwMDQtMDItMDYgIERhbmllbCBCZXJsaW4gPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgkgICAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogZHdhcmYyb3V0LmMgKHN0cnVjdCBnY2NfZGVidWdfaG9va3MpOiBDYWxsIGR3YXJmMm91dF9iZWdpbl9mdW5jdGlvbgoJYXQgdGhlIGJlZ2lubmluZyBvZiBmdW5jdGlvbiwgY2FsbCBkd2FyZjJvdXRfdmFyX2xvY2F0aW9uIGZvcgoJTk9URV9JTlNOX1ZBUl9MT0NBVElPTiBub3RlLgoJKHN0cnVjdCB2YXJfbG9jX25vZGUsIHN0cnVjdCB2YXJfbG9jX2xpc3RfZGVmLCBsb2NsYWJlbF9udW0sCglkZWNsX2xvY190YWJsZSk6IE5ldy4KCShsb29rdXBfZGVjbF9sb2MpOiBOZXcgZnVuY3Rpb24uCgkoYWRkX3Zhcl9sb2NfdG9fZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShiYXNlZF9sb2NfZGVzY3IpOiBBZGRlZCBwYXJhbWV0ZXIgY2FuX3VzZV9mYnJlZywgRFdfT1BfZmJyZWcgaXMgdXNlZAoJb25seSBpZiBjYW5fdXNlX2ZicmVnLgoJKG1lbV9sb2NfZGVzY3JpcHRvcik6IEFkZGVkIHBhcmFtZXRlciBjYW5fdXNlX2ZicmVnLCBwYXNzIGl0IHRvIG90aGVyCglmdW5jdGlvbnMuCgkobG9jX2Rlc2NyaXB0b3IpOiBMaWtld2lzZS4gUHJvY2VzcyBWQVJfTE9DQVRJT04uCgkoY29uY2F0X2xvY19kZXNjcmlwdG9yKTogQ2FsbCBsb2NfZGVzY3JpcHRvciB3aXRoIGNhbl91c2VfZmJyZWcgPT0gdHJ1ZS4KCShsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUpOiBDYWxsIG1lbV9sb2NfZGVzY3JpcHRvciB3aXRoCgljYW5fdXNlX2ZicmVnID09IHRydWUuCgkoYWRkX2xvY2F0aW9uX29yX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IEFkZGVkIHBhcmFtZXRlciBlbnVtCglkd2FyZl9hdHRyaWJ1dGUgYXR0ciwgZ2VuZXJhdGUgYXR0cmlidXRlIEFUVFIuICBDcmVhdGUgdGhlIGxvY2F0aW9uIGxpc3QuCgkoYWRkX2JvdW5kX2luZm8pOiBDYWxsIGxvY19kZXNjcmlwdG9yIHdpdGggY2FuX3VzZV9mYnJlZyA9PSB0cnVlLgoJKGdlbl9mb3JtYWxfcGFyYW1ldGVyX2RpZSk6IENhbGwgYWRkX2xvY2F0aW9uX29yX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZQoJd2l0aCBhdHRyID09IERXX0FUX2xvY2F0aW9uLgoJKGdlbl9zdWJwcm9ncmFtX2RpZSk6IEdlbmVyYXRlIHRoZSBsb2NhdGlvbiBsaXN0IGZvciBEV19BVF9mcmFtZV9iYXNlCglpZiBmcmFtZV9iYXNlX2RlY2wgaXMgZGVmaW5lZCBhbmQgaGFzIGEgbG9jYXRpb24gbGlzdC4KCShnZW5fdmFyaWFibGVfZGllKTogQ2FsbCBhZGRfbG9jYXRpb25fb3JfY29uc3RfdmFsdWVfYXR0cmlidXRlIHdpdGgKCWF0dHIgPT0gRFdfQVRfbG9jYXRpb24uCgkoZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShkd2FyZjJvdXRfYmVnaW5fZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoZHdhcmYyb3V0X2luaXQpOiBDcmVhdGUgZGVjbF9sb2NfdGFibGUuCgoyMDA0LTAyLTA2ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBsb29wLmMgKGZvcmNlX21vdmFibGVzKTogVHJhbnNpdGl2ZWx5IGluY3JlYXNlIHRoZSBwcmlvcml0aWVzIG9mCglhbGwgaW5zbnMgZm9yY2VzIGJ5IGFuIGluc24sIG5vdCBqdXN0IHRoZSBmaXJzdCBvbmUuCgoyMDA0LTAyLTA2ICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgkgICAgRGFuaWVsIEJlcmxpbiA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgkqIE1ha2VmaWxlLmluICh2YXItdHJhY2tpbmcubyk6IE5ldy4KCSogY29tbW9uLm9wdCAoZnZhci10cmFja2luZyk6IE5ldy4KCSogZmxhZ3MuaCAoZmxhZ192YXJfdHJhY2tpbmcpOiBOZXcuCgkqIGdlbmd0eXBlLmMgKGFkanVzdF9maWVsZF9ydHhfZGVmKTogTk9URV9JTlNOX1ZBUl9MT0NBVElPTiB3YXMgYWRkZWQuCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBBZGQgT1BUX2Z2YXJfdHJhY2tpbmcuCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBOT1RFX0lOU05fVkFSX0xPQ0FUSU9OIHdhcyBhZGRlZC4KCSogcnRsLmMgKG5vdGVfaW5zbl9uYW1lKTogTGlrZXdpc2UuCgkqIHJ0bC5kZWYgKFZBUl9MT0NBVElPTik6IE5ldy4KCSogcnRsLmggKE5PVEVfVkFSX0xPQ0FUSU9OKTogTmV3LgoJKE5PVEVfVkFSX0xPQ0FUSU9OX0RFQ0wpOiBOZXcuCgkoTk9URV9WQVJfTE9DQVRJT05fTE9DKTogTmV3LgoJKGVudW0gaW5zbl9ub3RlKTogTk9URV9JTlNOX1ZBUl9MT0NBVElPTiB3YXMgYWRkZWQuCgkodmFyaWFibGVfdHJhY2tpbmdfbWFpbik6IE5ldyBleHBvcnRlZCBmdW5jdGlvbi4KCSogdGltZXZhci5kZWYgKFRWX1ZBUl9UUkFDS0lORyk6IE5ldy4KCSogdG9wbGV2LmMgKGVudW0gZHVtcF9maWxlX2luZGV4KTogQWRkZWQgREZJX3ZhcnRyYWNrLgoJKGR1bXBfZmlsZSk6ICJ2YXJ0cmFjayIgd2FzIGFkZGVkICgtZFYpLgoJKGZsYWdfdmFyX3RyYWNraW5nKTogTmV3LgoJKGZfb3B0aW9ucyk6ICJ2YXItdHJhY2tpbmciIHdhcyBhZGRlZC4KCShyZXN0X29mX2hhbmRsZV92YXJpYWJsZV90cmFja2luZyk6IE5ldyBmdW5jdGlvbi4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogUnVuIHZhcmlhYmxlIHRyYWNraW5nLgoJKHByb2Nlc3Nfb3B0aW9ucyk6IElmIHVzZXIgaGFzIG5vdCBzcGVjaWZpZWQgZmxhZ192YXJfdHJhY2tpbmcgc2V0IGl0CglhY2NvcmRpbmcgdG8gb3B0aW1pemUsIGRlYnVnX2luZm9fbGV2ZWwgYW5kIGRlYnVnX2hvb2tzLgoJKiB0cmVlLmggKGZyYW1lX2Jhc2VfZGVjbCk6IE5ldy4KCSogdmFyLXRyYWNraW5nLmM6IE5ldyBmaWxlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZmxhZ192YXJfdHJhY2tpbmcpOiBOZXcgdmFyaWFibGUuCgkoaWE2NF9vdmVycmlkZV9vcHRpb25zKTogU2V0IGZsYWdzIHRvIHJ1biB2YXJpYWJsZSB0cmFja2luZyBpbiBtYWNoaW5lCglkZXBlbmRlbnQgcmVvcmcgaW5zdGVhZCBvZiB0b3BsZXYuYy4KCShpYTY0X3Jlb3JnKTogUnVuIHZhcmlhYmxlIHRyYWNraW5nIGlmIHdhbnRlZC4KCSogZG9jL2ludm9rZS50ZXhpOiBNZW50aW9uIHZhcmlhYmxlIHRyYWNraW5nIGluIC1kViwKCWFkZCBhbmQgLWZ2YXItdHJhY2tpbmcuCgkqIGRvYy9wYXNzZXMudGV4aTogQWRkZWQgdmFyaWFibGUgdHJhY2tpbmcgcGFzcy4KCglEYW5pZWwgQmVybGluIDxkYmVybGluQGRiZXJsaW4ub3JnPgoJKiBkZWJ1Zy5oIChzdHJ1Y3QgZ2NjX2RlYnVnX2hvb2tzKTogQWRkZWQgdmFyX2xvY2F0aW9uIGRlYnVnIGhvb2suCgkqIGRieG91dC5jIChkYnhfZGVidWdfaG9va3MpOiBMaWtld2lzZS4KCSh4Y29mZl9kZWJ1Zyk6IExpa2V3aXNlLgoJKiBkZWJ1Zy5jIChkb19ub3RoaW5nX2RlYnVnX2hvb2tzKTogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jIChkd2FyZjJfZGVidWdfaG9va3MpOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYyAoZHdhcmZfZGVidWdfaG9va3MpOiBMaWtld2lzZS4KCSogc2Rib3V0LmMgKHNkYl9kZWJ1Z19ob29rcyk6IExpa2V3aXNlLgoJKiB2bXNkYmdvdXQuYyAodm1zZGJnX2RlYnVnX2hvb2tzKTogTGlrZXdpc2UuCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IENhbGwgdmFyX2xvY2F0aW9uIGRlYnVnIGhvb2sgZm9yIGVhY2gKCU5PVEVfSU5TTl9WQVJfTE9DQVRJT04uCgoyMDA0LTAyLTA2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmbG93LmMgKHVwZGF0ZV9saWZlX2luZm8pOiBBbGxvY2F0ZSByZWdfZGVhdGhzIHdoZW4gY2FsbGVkIGZyb20KCXNjaGV1ZGxlci4KCShhdHRlbXB0X2F1dG9faW5jKTogVXBkYXRlIGxpZmUgcmFuZ2VzIGFjY29yZGluZ2x5LgoKMjAwNC0wMi0wNiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCVBSIGRlYnVnLzExODE2CgkqIGR3YXJmMm91dC5jIChnZW5fZGVjbF9kaWUpOiBIYW5kbGUgYW5vbnltb3VzIHN0cnVjdCBtZW1iZXJzLgoKMjAwNC0wMi0wNiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY2ZnYW5hbC5jIChmbG93X2NhbGxfZWRnZXNfYWRkKTogTmV2ZXIgc3BsaXQgYSBsaWJjYWxsIGJsb2NrLgoKMjAwNC0wMi0wNiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBkd2FyZjJvdXQuYyAob3V0cHV0X2xvY19saXN0KTogRG9uJ3QgdXNlIGRlbHRhcyBpZiB3ZSBoYXZlCglhIHNlcGFyYXRlIGxpbmUgaW5mbyB0YWJsZSBpbiB1c2UuCglVc2UgdGhlIGNvcnJlY3Qgc2l6ZSBmb3IgdGVybWluYXRvcnMuCgkob3V0cHV0X2RpZSk6IFVzZSBvZmZzZXQsIG5vdCBkZWx0YS4KCjIwMDQtMDItMDYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIHRoZSBwbmkgb3B0aW9uIGZyb20gLW1mcG1hdGg9LgoKMjAwNC0wMi0wNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVjb2cuYyAoc3BsaXRfYWxsX2luc25zKTogRG8gbm90IHVwZGF0ZSByZWcgaW5mby4KCSogcmVncmVuYW1lLmMgKHJlZ3JlbmFtZV9vcHRpbWl6ZSk6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9oYW5kbGVfcmVvcmRlcl9ibG9ja3MpOiBMaWtld2lzZS4KCSogZmxvdy5jIChzdHJ1Y3QgcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBBZGQgaW5zbl9udW0gZmllbGQuCgkocmVnX2RlYXRocyk6IE5ldyBhcnJheS4KCShsaWZlX2FuYWx5c2lzKTogRnJlZSByZWdfZGVhdGhzIGluZm8uCgkoYWxsb2NhdGVfcmVnX2xpZmVfZGF0YSk6IEFsbG9jYXRlIHJlZ19kZWF0aHMgYXJyYXkuCgkocHJvcGFnYXRlX29uZV9pbnNuKTogVXNlIG5ldyBhcnJheS4KCShpbml0X3Byb3BhZ2F0ZV9ibG9jayk6IEluaXRpYWxpemUgaXQuCgkoZnJlZV9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IEZpbmlzaCBjb21wdWF0aW9uIG9mCglSRUdfTElWRV9MRU5HVEgKCShhdHRlbXB0X2F1dG9faW5jKTogU2FuaXR5IGNoZWNrIHRoYXQgUkVHX0lORk8gaXMgbm90Cgljb21wdXRlZCBhdCBzYW1lIHRpbWUuCgkobWFya191c2VkX3JlZ3MpOiBVcGRhdGUgbmV3IGFycmF5LgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3MpOiBVbnNoYXJlIGNsb2JiZXJzIGJlZm9yZQoJc3Vic3RpdHV0aW9uLgoKMjAwNC0wMi0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCpleHRlbmRzaXFpMl9zaG9ydF9kaXNwbCk6IENoYW5nZSB0bwoJKmV4dGVuZHFpc2kyX3Nob3J0X2Rpc3BsLgoKMjAwNC0wMi0wNiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGRvYy90bS50ZXhpIChJTklUX0NVTVVMQVRJVkVfQVJHUyk6IFVwZGF0ZSBkb2NvLgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFBhc3Mgbl9uYW1lZF9hcmdzIHRvIElOSVRfQ1VNVUxBVElWRV9BUkdTLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBMaWtld2lzZSBwYXNzIG5hcmdzLgoJKiBleHByLmMgKGJsb2NrX21vdmVfbGliY2FsbF9zYWZlX2Zvcl9jYWxsX3Bhcm0pOiBQYXNzIDMgaGVyZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogUGFzcyAtMSB0byBJTklUX0NVTVVMQVRJVkVfQVJHUy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBVc2Ugbl9uYW1lZF9hcmdzCglwYXJhbWV0ZXIgaW5zdGVhZCBvZiBzY2FubmluZyBUWVBFX0FSR1NfVFlQRVMgdG8gY291bnQgYXJncy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKGluaXRfY3VtdWxhdGl2ZV9hcmdzKTogVXBkYXRlCglwcm90b3R5cGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogUGFzcyBleHRyYSBhcmcuCgkoSU5JVF9DVU1VTEFUSVZFX0lOQ09NSU5HX0FSR1MpOiBTZXQgZXh0cmEgYXJnIHRvIDEwMDAuCgkoSU5JVF9DVU1VTEFUSVZFX0xJQkNBTExfQVJHUyk6IFNldCBleHRyYSBhcmcgdG8gMC4KCSogY29uZmlnL3NoL3NoLmMgKHNoX291dHB1dF9taV90aHVuayk6IFBhc3MgMSBhcyBuX25hbWVkX2FyZ3MgdG8KCUlOSVRfQ1VNVUxBVElWRV9BUkdTLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoSU5JVF9DVU1VTEFUSVZFX0FSR1MpOiBVcGRhdGUuCgkqIGNvbmZpZy9hbHBoYS91bmljb3Ntay5oLCBjb25maWcvYWxwaGEvdm1zLmgsIGNvbmZpZy9hcmMvYXJjLmgsCgljb25maWcvYXJtL2FybS5oLCBjb25maWcvYXZyL2F2ci5oLCBjb25maWcvYzR4L2M0eC5oLAoJY29uZmlnL2NyaXMvY3Jpcy5oLCBjb25maWcvZnIzMC9mcjMwLmgsIGNvbmZpZy9mcnYvZnJ2LmgsCgljb25maWcvaDgzMDAvaDgzMDAuaCwgY29uZmlnL2kzODYvaTM4Ni5oLCBjb25maWcvaTg2MC9pODYwLmgsCgljb25maWcvaWE2NC9pYTY0LmgsIGNvbmZpZy9pcDJrL2lwMmsuaCwgY29uZmlnL2lxMjAwMC9pcTIwMDAuaCwKCWNvbmZpZy9pcTIwMDAvaXEyMDAwLmMsIGNvbmZpZy9tMzJyL20zMnIuaCwgY29uZmlnL202OGhjMTEvbTY4aGMxMS5oLAoJY29uZmlnL202OGsvbTY4ay5oLCBjb25maWcvbWNvcmUvbWNvcmUuaCwgY29uZmlnL21pcHMvbWlwcy5oLAoJY29uZmlnL21taXgvbW1peC5oLCBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmgsIGNvbmZpZy9uczMyay9uczMyay5oLAoJY29uZmlnL3BhL3BhLmgsIGNvbmZpZy9wZHAxMS9wZHAxMS5oLCBjb25maWcvczM5MC9zMzkwLmgsCgljb25maWcvc2gvc2guaCwgY29uZmlnL3NwYXJjL3NwYXJjLmgsIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oLAoJY29uZmlnL3Y4NTAvdjg1MC5oLCBjb25maWcvdmF4L3ZheC5oLCBjb25maWcveHRlbnNhL3h0ZW5zYS5oOiBMaWtld2lzZS4KCjIwMDQtMDItMDYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnZW5lbWl0LmMgKGdlbl9leHApIFtDT05TVF9JTlRdOiBVc2UgY29uc3RfaW50X3J0eCB3aGVuZXZlcgoJcG9zc2libGUuCgoyMDA0LTAyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcmVsb2FkMS5jIChlbGltaW5hdGVfcmVnc19pbl9pbnNuKTogSWYgYSBzZXQgaGFzIGEgUkVHX0VRVUFMCglub3RlIGNvbnRhaW5pbmcgKHBsdXMgKHJlZykgKGNvbnN0X2ludCkpLCB3aGVyZSByZWcgaXMgYW4KCWVsaW1pbmFibGUgcmVnLCB0aGVuIHBlcmZvcm0gdGhlIHJlZ2lzdGVyIGVsaW1pbmF0aW9uIHdpdGhvdXQKCWRlcGVuZGluZyBvbiBlbGltaW5hdGVfcmVncygpLgoKMjAwNC0wMi0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9hcmMvYXJjLmMgKGFyY19yZXR1cm5faW5fbWVtb3J5KTogQ2hlY2sgdGhlIHJldHVybgoJdmFsdWUgb2YgaW50X3NpemVfaW5fYnl0ZXMgYWdhaW5zdCAtMS4gIERvbid0IGNoZWNrCglUUkVFX0FERFJFU1NBQkxFLgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfcmV0dXJuX2luX21lbW9yeSk6IENoZWNrIHRoZSByZXR1cm4KCXZhbHVlIG9mIGludF9zaXplX2luX2J5dGVzIGFnYWluc3QgLTEuCgkqIGNvbmZpZy9pcDJrL2lwMmsuYyAoaXAya19yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9yZXR1cm5faW5fbWVtb3J5KToKCUxpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYyAobWNvcmVfcmV0dXJuX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X3JldHVybl9pbl9tZW1vcnkpOgoJTGlrZXdpc2UuCgoyMDA0LTAyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2Zydi9mcnYtcHJvdG9zLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJZnJ2X3NldHVwX2luY29taW5nX3ZhcmFyZ3MuCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKFRBUkdFVF9TRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogTmV3LgoJKGZydl9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTWFrZSBpdCBzdGF0aWMuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBSZW1vdmUuCgoyMDA0LTAyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2ZyMzAvZnIzMC1wcm90b3MuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglmcjMwX3NldHVwX2luY29taW5nX3ZhcmFyZ3MuCglVcGRhdGUgdGhlIHByb3RvdHlwZXMgZm9yIGZyMzBfbnVtX2FyZ19yZWdzIGFuZAoJZnIzMF9mdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncy4KCSogY29uZmlnL2ZyMzAvZnIzMC5jIChUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IE5ldy4KCShUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IExpa2V3aXNlLgoJKGZyMzBfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IE1ha2UgaXQgc3RhdGljLgoJQWRkIGFyZ3VtZW50IHNlY29uZF90aW1lLiAgRG9uJ3QgZG8gYW55dGhpbmcgd2hlbiBzZWNvbmRfdGltZQoJaXMgbm9uemVyby4KCShmcjMwX251bV9hcmdfcmVncyk6IENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8KCWVudW0gbWFjaGluZV9tb2RlLgoJKGZyMzBfZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MpOiBDaGFuZ2UgdGhlIHR5cGUgb2YgdGhlCglzZWNvbmQgYXJndW1lbnQgdG8gZW51bSBtYWNoaW5lX21vZGUuCgkqIGNvbmZpZy9mcjMwL2ZyMzAuaCAoU1RSVUNUX1ZBTFVFKTogUmVtb3ZlLgoJKFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBSZW1vdmUuCgoyMDA0LTAyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FyYy9hcmMtcHJvdG9zLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJYXJjX3NldHVwX2luY29taW5nX3ZhcmFyZ3MuCgkqIGNvbmZpZy9hcmMvYXJjLmMgKFRBUkdFVF9BU01fRVhURVJOQUxfTElCQ0FMTCk6IE5ldy4KCShUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IExpa2V3aXNlLgoJKGFyY19zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTWFrZSBpdCBzdGF0aWMuCgkoYXJjX2V4dGVybmFsX2xpYmNhbGwpOiBMaWtld2lzZS4KCSogY29uZmlnL2FyYy9hcmMuaCAoU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IFJlbW92ZS4KCVJlbW92ZSB0aGUgY29tbWVudGVkLW91dCBkZWZpbml0aW9uIG9mCglBU01fT1VUUFVUX0VYVEVSTkFMX0xJQkNBTEwuCgoyMDA0LTAyLTA1ICBTVUdJT0tBIFRvc2hpbm9idSAgPHN1Z2lva2FAaXRvbmV0LmNvLmpwPgoKCSogY29uZmlnL3NoL3QtbGludXggKFNITElCX0lOU1RBTEwpOiBQcmVwZW5kICQkKERFU1RESVIpCgl0byAkJChzbGliZGlyKSBpbiB0aGUgaW5zdGFsbGF0aW9uIGNvbW1hbmRzLgoKMjAwNC0wMi0wNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcmVsb2FkLmMgKHJlZmVyc190b19yZWdub19mb3JfcmVsb2FkX3ApOiBJbmRleCBoYXJkX3JlZ25vX25yZWdzCgl3aXRoIGlubmVyX3JlZ25vLCBub3QgcmVnbm8uCgkqIHJ0bGFuYWwuYyAocmVmZXJzX3RvX3JlZ25vX3ApOiBTYW1lLgoKMjAwNC0wMi0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy5nY2M6IFJlbW92ZSBpMzcwIHN1cHBvcnQuCgoyMDA0LTAyLTA1ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogVXBkYXRlIGF1dG9tYWtlIGFuZCBhdXRvY29uZiB2ZXJzaW9uCglyZXF1aXJlbWVudHMuICBOb3RlIHdoZXJlIHRvIGZpbmQgZ2NqIGF1dG9tYWtlIHZlcnNpb24uCgoyMDA0LTAyLTA1ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGdlbmVyYXRlLW1hbnBhZ2VzKTogTW92ZSBkZXBlbmRlbmNpZXMgdG8gLi4uCgkobWFuKTogaGVyZS4KCSogZG9jL21ha2VmaWxlLnRleGk6IERvY3VtZW50IG5ldyB0YXJnZXRzLgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aSAoTWFrZS1sYW5nLmluKTogRG9jdW1lbnQgbmV3IGxhbmdob29rcy4KCjIwMDQtMDItMDUgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJUFIvMTM0ODUKCU1ha2VmaWxlLmluIChzcmNleHRyYSk6IEFkZCBhIGxldmVsIG9mIGluZGlyZWN0aW9uIHRvIC4uLgoJKGdjYy5zcmNleHRyYSk6IC4uLiBoZXJlLgoJKHBvLWdlbmVyYXRlZCk6IERlbGV0ZS4KCShwby8kKFBBQ0tBR0UpLnBvdDogVXNlIHNyY2V4dHJhIGluc3RlYWQgb2YgcG8tZ2VuZXJhdGVkLiAgRGVwZW5kIG9uCglvcHRpb25zLmMuCgkoc3RhcnQuZW5jYXApOiBSZW1vdmUgc3VwZXJmbHVvdXMgbGFuZy5zcmNleHRyYSBkZXBlbmRlbmN5LgoJb2JqYy9NYWtlLWxhbmcuaW4gKHBvLWdlbmVyYXRlZCk6IERlbGV0ZS4KCjIwMDQtMDItMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKFJFR19HUCk6IFJlbW92ZS4KCjIwMDQtMDItMDUgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMvaXJpczVnYXMuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogRGVmaW5lLgoKMjAwNC0wMi0wNSAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChmb3JjZV90eXBlX2RpZSk6IExvb2sgdXAgaW5wdXQgdHlwZSBpdHNlbGYKCWluc3RlYWQgb2Ygcm9vdF90eXBlKCkgb2YgdHlwZS4KCjIwMDQtMDItMDUgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKnRtcWlkaV9leHQiKTogTmV3IGluc24uCgkoIipleHRlbmRxaWRpMl9zaG9ydF9kaXNwbCIsICIqZXh0ZW5kc2lxaTJfc2hvcnRfZGlzcGwiKTogT2xkCglwcmUtcmVsb2FkIHNwbGl0dGVycyBhcmUgdHJhbnNmb3JtZWQgdG8gcG9zdC1yZWxvYWQKCWRlZmluZV9pbnNuX2FuZF9zcGxpdCBwYXR0ZXJucy4KCSgiKnRtcWlzaV9leHQiKTogUmVuYW1lZCBvbGQgIip0bXFpX2V4dCIuCgoyMDA0LTAyLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2NyaXMvY3Jpcy5oOiBSZXBsYWNlIFBST01PVEVfUFJPVE9UWVBFUyB3aXRoCglUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTLgoKMjAwNC0wMi0wNSAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJUFIgbWlkZGxlLWVuZC8xMzc1MAoJUmV2ZXJ0OgoJMjAwNC0wMS0xNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CglQUiBwY2gvMTMzNjEKCSogYy10eXBlY2suYyAoY29uc3RydWN0b3JfYXNtc3BlYyk6IERlbGV0ZS4KCShzdHJ1Y3QgaW5pdGlhbGl6ZXJfc3RhY2spOiBEZWxldGUgZmllbGQgJ2FzbXNwZWMnLgoJKHN0YXJ0X2luaXQpOiBEZWxldGUgc2F2aW5nIG9mIGFzbXNwZWMuCgkoZmluaXNoX2luaXQpOiBEb24ndCB1cGRhdGUgY29uc3RydWN0b3JfYXNtc3BlYy4KCSogZHdhcmYyb3V0LmMgKHJ0bF9mb3JfZGVjbF9sb2NhdGlvbik6IER1cGxpY2F0ZSBzdHJpbmcgZnJvbSB0cmVlLgoJKiBzdG10LmMgKGV4cGFuZF9hc20pOiBEdXBsaWNhdGUgc3RyaW5ncyBmcm9tIHRyZWUuCgkoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHRyZWVfc2l6ZSk6IFVwZGF0ZSBjb21wdXRhdGlvbiBvZiBzaXplIG9mIFNUUklOR19DU1QuCgkobWFrZV9ub2RlKTogRG9uJ3QgbWFrZSBTVFJJTkdfQ1NUIG5vZGVzLgoJKGJ1aWxkX3N0cmluZyk6IEFsbG9jYXRlIHN0cmluZyB3aXRoIHRyZWUgbm9kZS4KCSogdHJlZS5kZWYgKFNUUklOR19DU1QpOiBVcGRhdGUgY29tbWVudC4KCSogdHJlZS5oIChUUkVFX1NUUklOR19QT0lOVEVSKTogQWRqdXN0IGZvciBjaGFuZ2UgdG8gU1RSSU5HX0NTVC4KCSh0cmVlX3N0cmluZyk6IFBsYWNlIGNvbnRlbnRzIG9mIHN0cmluZyBpbiB0cmVlIG5vZGUuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9oYW5kbGVfc3Bfc3dpdGNoX2F0dHJpYnV0ZSk6IER1cGxpY2F0ZSBzdHJpbmcKCWZyb20gdHJlZS4KCjIwMDQtMDItMDUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZGlhZ25vc3RpYy5oIChERUZJTkVfRElBR05PU1RJQ19LSU5EKTogQ2hhbmdlIHBhcmFtZXRlciBNIHRvCgltc2dpZC4KCjIwMDQtMDItMDUgIERvcml0IE5haXNobG9zICA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoKm1vdnY0c2lfaW50ZXJuYWwpOiBBdCBsZWFzdCBvbmUKCW9wZXJhbmQgbXVzdCBiZSBhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQuCgkoKm1vdnY4aGlfaW50ZXJuYWwxKTogTGlrZXdpc2UuCgkoKm1vdnYxNnFpX2ludGVybmFsMSk6IExpa2V3aXNlLgoJKCptb3Z2NHNmX2ludGVybmFsMSk6IExpa2V3aXNlLgoKMjAwNC0wMi0wNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlndXJlLmFjIChnY2NfY3ZfYXNfcG93ZXJwY19tZmNyZik6IENvcnJlY3QgdGVzdCBmb3IgbWZjci4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wMi0wNSAgSm9uYXRoYW4gV2FrZWx5ICA8cmVkaUBnY2MuZ251Lm9yZz4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IFVwZGF0ZSBkZXNjcmlwdGlvbiBvZiAtLWd4eC1pbmNsdWRlLWRpciB0bwoJZ2l2ZSBjb3JyZWN0IGRlZmF1bHQgdmFsdWUuCgoyMDA0LTAyLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKFJFR19PS19GT1JfQkFTRV9OT05TVFJJQ1RfUCk6IFJlcGxhY2UKCTggd2l0aCBNQUNfUkVHLgoKMjAwNC0wMi0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9wYS9wYS5jIChlbWl0X2hwZGl2X2NvbnN0KTogUmVwbGFjZSBnZW5fcnR4IHdpdGgKCWdlbl9ydHhfUEFSQUxMRUwuCgoyMDA0LTAyLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZW1pdC1ydGwuYzogVXBkYXRlIHRoZSBjb21tZW50IGFib3V0IHRoZSBmaWxlLgoKMjAwNC0wMi0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBzb3VyY2VidWlsZC50ZXhpIChUZXN0IElkaW9tcyk6IFVwZGF0ZSB0ZXN0Y2FzZSBuYW1pbmcKCWNvbnZlbnRpb25zLgoKMjAwNC0wMi0wNCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJUGFydGlhbGx5IHJldmVydC9yZWRvIDIwMDMtMTAtMDEgY2hhbmdlOyBmaXggLWZ3b3JraW5nLWRpcmVjdG9yeS4KCSogYy1wcG91dHB1dC5jIChwcF9kaXJfY2hhbmdlKTogTmV3IGZ1bmN0aW9uLgoJKiBjLWNvbW1vbi5oIChwcF9kaXJfY2hhbmdlKTogTmV3IGRlY2xhcmF0aW9uLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9vcHRpb25zKTogUmVtb3ZlIHdvcmtpbmdfZGlyZWN0b3J5IGZpZWxkLgoJKiBjcHBpbml0LmMgKGNwcF9maW5kX21haW5fZmlsZSwgY3BwX3B1c2hfbWFpbl9maWxlKTogTWVyZ2UgYmFjayB0bwoJKGNwcF9yZWFkX21haW5fZmlsZSk6IGFzIGJlZm9yZSAxMC0wMS4gIENhbGwgX2NwcF9zdGFja19maWxlLgoJRG9uJ3QgaGFuZGxlIC1md29ya2luZ19kaXJlY3RvcnkgaGVyZSwgYnV0IGluIGNfY29tbW9uX3Bvc3Rfb3B0aW9ucy4KCShyZWFkX29yaWdpbmFsX2RpcmVjdG9yeSk6IERvbid0IGJhY2sgdXAgd2hlbiBkb25lLgoJRG9uJ3QgY2xlYXIgbm8tbG9uZ2VyIHVzZWQgd29ya2luZ19kaXJlY3RvcnkgZmxhZy4KCSogY3BwbGliLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbnMgdG8gbWF0Y2guCgkqIGMtbGV4LmMgKGNiX2Rpcl9jaGFuZ2UpOiBNb3ZlIHRvIGMtb3B0cy5jLgoJKGluaXRfY19sZXgpOiBEb24ndCBzZXQgZGlyX2NoYW5nZSBjYWxsYmFjayBoZXJlLCBzaW5jZSB3ZSB3YW50Cgl0byBzZXQgaXQgZXZlbiBpZiBmbGFnX3ByZXByb2Nlc3Nfb25seS4KCSogYy1vcHRzLmMgKGNiX2Rpcl9jaGFuZ2UpOiBGdW5jdGlvbiBtb3ZlZCBmcm9tIGMtbGV4LmMuCgkoY19jb21tb25fcG9zdF9vcHRpb25zKTogU2V0IGRpcl9jaGFuZ2UgY2FsbGJhY2suCglDYWxsIHBwX2Rpcl9jaGFuZ2UgaWYgYXBwcm9wb3JpYXRlLgoJKGZpbmlzaF9vcHRpb25zKTogRG9uJ3QgY2FsbCBjcHBfZmluZF9tYWluX2ZpbGUgaGVyZS4JSGVuY2UgcmVtb3ZlCgl1bm5lZWRlZCBwYXJhbWV0ZXIgYW5kIHJlc3VsdC4gRG8gTENfUkVOQU1FIGZvciA8YnVpbHQtaW4+LgoJKGNfY29tbW9uX3Bvc3Rfb3B0aW9ucyk6IENhbGwgY3BwX3JlYWRfbWFpbl9maWxlIGhlcmUgaW5zdGVhZC4KCShjX2NvbW1vbl9pbml0KTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKHB1c2hfY29tbWFuZF9saW5lX2luY2x1ZGUpOiBEb24ndCBjcHBfcHVzaF9tYWluX2ZpbGUuCglEbyBMQ19SRU5BTUUgcmF0aGVyIHRoYW4gTENfTEVBU0UgdG8gZ2V0IGJhY2sgdG8gbWFpbiBmaWxlLgoJQ29tcGFyZWQgdG8gcHJlLTEwLTAxIHZlcnNpb24sIGlubGluZSBjcHBfcmVuYW1lX3RvX21haW5fZmlsZS4KCShjX2NvbW1vbl9wYXJzZV9maWxlKTogQ2FsbCBjcHBfcmVhZF9tYWluX2ZpbGUgZm9yIHN1YnNlcXVlbnQgbWFpbgoJZmlsZXMsIGJ1dCBjYWxsIGZpbmlzaF9vcHRpb25zIGZvciBhbGwgZmlsZXMuCgkqIGMtb3B0cy5jIChzYW5pdGl6ZV9jcHBfb3B0cyk6IERvbid0IHNldCBjcHBfb3B0cy0+d29ya2luZ19kaXJlY3RvcnkuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBDYWxsIGNwcF9yZWFkX21haW5fZmlsZSBpbnN0ZWFkIG9mCgljcHBfZmluZF9tYWluX2ZpbGUgKyBjcHBfcHVzaF9tYWluX2ZpbGUuCgkqIGMtbGV4LmMgKGZlX2ZpbGVfY2hhbmdlKTogRG9uJ3Qgc2V0IG1haW5faW5wdXRfZmlsZW5hbWUgaGVyZS4KCSogb3B0cy5jIChoYW5kbGVfb3B0aW9ucyk6IE9ubHkgc2V0IG1haW5faW5wdXRfZmlsZW5hbWUgZmlyc3QgdGltZS4KCjIwMDQtMDItMDUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5oIChSRUdfQ0xBU1NfTkFNRVMpOiBBZGQgbWlzc2luZyBjb21tYS4KCjIwMDQtMDItMDQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfZXF1aXZfcmVnKTogV2hlbiBjaGVja2luZyBmb3IgcmVnaXN0ZXIgb3ZlcmxhcCwKCWRvbid0IGluZGV4IGhhcmRfcmVnbm9fbnJlZ3Mgd2l0aCBhIHBzZXVkby1yZWcuCgoyMDA0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfdHJhbXBvbGluZV90ZW1wbGF0ZSk6IFJlbW92ZSBnZW5fcnR4KCkuCgoyMDA0LTAyLTA0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByZWxvYWQuYyAocmVmZXJzX3RvX3JlZ25vX2Zvcl9yZWxvYWRfcCk6IFRlc3QgcmVnbm8sIG5vdCBpbm5lcl9yZWdubywKCWFnYWluc3QgRklSU1RfUFNFVURPX1JFR0lTVEVSLgoKMjAwNC0wMi0wNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBNYWtlZmlsZS5pbjogTW92ZSB0YXJnZXQsIGhvc3Qgb3ZlcnJpZGVzIGFmdGVyIHBlci1sYW5ndWFnZQoJZnJhZ21lbnRzLgoKCSogY29uZmlnL21pcHMvdC1pcmlzNS1hcyAoRk9SQ0VfREVCVUdfQURBRkxBR1MpOiBDbGVhci4KCShHTkFUTElCQ0ZMQUdTKTogUmVtb3ZlIC1nLgoKMjAwNC0wMi0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jLCBjb25maWcvYXJjL2FyYy5jLCBjb25maWcvYXZyL2F2ci5jLAoJY29uZmlnL2kzODYvaTM4Ni5jLCBjb25maWcvaTM4Ni9pMzg2LmgsIGNvbmZpZy9pMzg2L2kzODYubWQsCgljb25maWcvaWE2NC9pYTY0LmMsIGNvbmZpZy9pYTY0L3Vud2luZC1pYTY0LmMsCgljb25maWcvbTMyci9tMzJyLmMsIGNvbmZpZy9uczMyay9uczMyay5jLCBjb25maWcvcGEvcGEuYywKCWNvbmZpZy9wZHAxMS9wZHAxMS5jLCBjb25maWcvcnM2MDAwL3JzNjAwMC5jLAoJY29uZmlnL3NwYXJjL3NwYXJjLmMsIGNvbmZpZy92YXgvdmF4LmM6IFJldmVydCB0aGUKCXJlcGxhY2VtZW50cyBvZiAiRkFMTFRIUlUiIHdpdGggIkZhbGwgdGhyb3VnaCIgZG9uZSBpbiB0aGUKCXByZXZpb3VzIHBhdGNoLgoKMjAwNC0wMi0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9kYXJ3aW4uYywgY29uZmlnL2Rhcndpbi5oLCBjb25maWcvZnJlZWJzZC1zcGVjLmgsCgljb25maWcvYXJtL2FybS5jLCBjb25maWcvYXJtL2FybS5tZCwKCWNvbmZpZy9jcmlzL2NyaXMtcHJvdG9zLmgsIGNvbmZpZy9mcjMwL2ZyMzAuYywKCWNvbmZpZy9mcjMwL2ZyMzAuaCwgY29uZmlnL2g4MzAwL2g4MzAwLmMsIGNvbmZpZy9pMzg2L2kzODYuaCwKCWNvbmZpZy9pODYwL2k4NjAuYywgY29uZmlnL2k4NjAvaTg2MC5oLCBjb25maWcvaWE2NC9pYTY0LWMuYywKCWNvbmZpZy9pYTY0L2lhNjQuYywgY29uZmlnL2lhNjQvaWE2NC5oLCBjb25maWcvaXAyay9pcDJrLmgsCgljb25maWcvaXAyay9pcDJrLm1kLCBjb25maWcvaXAyay9saWJnY2MuUywKCWNvbmZpZy9tMzJyL2xpbnV4LmgsIGNvbmZpZy9tMzJyL20zMnIuYywgY29uZmlnL20zMnIvbTMyci5oLAoJY29uZmlnL202OGsvbTY4ay5jLCBjb25maWcvbTY4ay9uZXRic2QtZWxmLmgsCgljb25maWcvbWlwcy9taXBzLmMsIGNvbmZpZy9tbWl4L21taXguYywgY29uZmlnL21taXgvbW1peC5tZCwKCWNvbmZpZy9uczMyay9uZXRic2QuaCwgY29uZmlnL25zMzJrL25zMzJrLmMsCgljb25maWcvbnMzMmsvbnMzMmsuaCwgY29uZmlnL3BkcDExL3BkcDExLmgsCgljb25maWcvcnM2MDAwL2Rhcndpbi1sZG91YmxlLmMsIGNvbmZpZy9zMzkwL3MzOTAuaCwKCWNvbmZpZy9zMzkwL3MzOTAubWQsIGNvbmZpZy9zcGFyYy9uZXRic2QtZWxmLmgsCgljb25maWcvc3BhcmMvb3BlbmJzZC5oLCBjb25maWcvc3BhcmMvc3BhcmMuYywKCWNvbmZpZy94dGVuc2EvbGliMmZ1bmNzLlM6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgoyMDA0LTAyLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMsIGNvbmZpZy9hcmMvYXJjLmMsCgljb25maWcvYXJtL2FybS1jb3Jlcy5kZWYsIGNvbmZpZy9hcm0vYXJtLmMsIGNvbmZpZy9hcm0vYXJtLmgsCgljb25maWcvYXJtL2FybTEwMjZlanMubWQsIGNvbmZpZy9hcm0vYXJtMTEzNmpmcy5tZCwKCWNvbmZpZy9hcm0vYXJtOTI2ZWpzLm1kLCBjb25maWcvYXJtL3ZmcC5tZCwgY29uZmlnL2F2ci9hdnIuYywKCWNvbmZpZy9jNHgvYzR4LmMsIGNvbmZpZy9jcmlzL2NyaXMuYywgY29uZmlnL2Zydi9mcnYubWQsCgljb25maWcvaTM4Ni9pMzg2LmMsIGNvbmZpZy9pMzg2L2kzODYuaCwgY29uZmlnL2kzODYvaTM4Ni5tZCwKCWNvbmZpZy9pYTY0L2lhNjQuYywgY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYywKCWNvbmZpZy9pcTIwMDAvaXEyMDAwLmMsIGNvbmZpZy9tMzJyL20zMnIuYywKCWNvbmZpZy9taXBzL21pcHMuYywgY29uZmlnL21taXgvbW1peC5jLCBjb25maWcvbW1peC9tbWl4LmgsCgljb25maWcvbnMzMmsvbnMzMmsuYywgY29uZmlnL3BhL3BhLmMsIGNvbmZpZy9wZHAxMS9wZHAxMS5jLAoJY29uZmlnL3JzNjAwMC9kYXJ3aW4tbGRvdWJsZS5jLCBjb25maWcvcnM2MDAwL3JzNjAwMC5jLAoJY29uZmlnL3JzNjAwMC9yczYwMDAuaCwgY29uZmlnL3NwYXJjL3NwYXJjLmMsCgljb25maWcvdmF4L3ZheC5jOiBGaXggY29tbWVudCB0eXBvcy4gIEZvbGxvdyBzcGVsbGluZwoJY29udmVudGlvbnMuCgoyMDA0LTAyLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYWxsb2MtcG9vbC5oLCBjLWNvbnZlcnQuYywgYy1sYW5nLmMsIGMtdHJlZS5oLAoJY2FsbGVyLXNhdmUuYywgZGYuaCwgZ2VuY29uZmlnLmMsIGdsb2JhbC5jLCBsY20uYywKCXJhLXJld3JpdGUuYywgcmEuYywgcmVnY2xhc3MuYywgcmVncy5oLCByZXNvdXJjZS5jLAoJc2NoZWQtcmduLmMsIGNvbmZpZy9hcm0vYW9mLmgsIGNvbmZpZy9hcm0vY2lycnVzLm1kLAoJY29uZmlnL2FybS9mcGEubWQsIGNvbmZpZy9hcm0vaXdtbXh0Lm1kLAoJY29uZmlnL2FybS9uZXRic2QtZWxmLmgsIGNvbmZpZy9hcm0vbmV0YnNkLmgsCgljb25maWcvbTY4aGMxMS9tNjhoYzExLm1kLCBjb25maWcvbWlwcy9pcmlzNS5oLAoJY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCwgY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kLAoJY29uZmlnL3NwYXJjL25ldGJzZC1lbGYuaDogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDQtMDItMDQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogUmV0dXJuIDEKCWZvciBhbGwgbW9kZXMgd2hvc2Ugc2l6ZSBpcyBncmVhdGVyIHRoYW4gOCBieXRlcyBpZiBBUkNIMzIuCgkoc3BhcmNfdmFfYXJnKTogSGFuZGxlIGFsbCBtb2RlcyB3aG9zZSBzaXplIGlzIGdyZWF0ZXIgdGhhbiA4IGJ5dGVzCglieSByZWZlcmVuY2UgaWYgQVJDSDMyLgoKMjAwNC0wMi0wNCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfcG9zdG9yZGVyKTogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDQtMDItMDQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqbGFfNjQiICsgcGVlcGhvbGVzLCAicmVsb2FkX2luZGkiKTogTW92ZQoJdG8gYmVmb3JlIGFkZGRpMyBpbnNuIHBhdHRlcm5zLgoJKCIqbGFfMzEiICsgcGVlcGhvbGVzLCAiKmxhXzMxX2FuZCIsICIqbGFfMzFfYW5kX2NjIiwgImZvcmNlX2xhXzMxIiwKCSJyZWxvYWRfaW5zaSIpOiBNb3ZlIHRvIGJlZm9yZSBhZGRzaTMgaW5zbiBwYXR0ZXJucy4KCjIwMDQtMDItMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogQWRkIENBTExfRlJPTV9USFVOS19QCglwYXJhbWV0ZXIuICBVc2UgaXQgaW5zdGVhZCBvZiBjdXJyZW50X2Z1bmN0aW9uX2lzX3RodW5rLgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IgaXNfdGh1bmsuCgkqIHRyZWUuaCAoQ0FMTF9GUk9NX1RIVU5LX1ApOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9zYV9tYXNrKTogRG8gbm90IGNoZWNrCglub19uZXdfcHNldWRvcyB3aGVuIHRlc3RpbmcgY3VycmVudF9mdW5jdGlvbl9pc190aHVuay4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3JhX2V2ZXJfa2lsbGVkKTogTGlrZWl3c2UuCgoyMDA0LTAyLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL3RtLnRleGk6IFJlcGxhY2UgU0VUVVBfSU5DT01JTkdfVkFSQVJHUyB3aXRoCglUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUy4KCjIwMDQtMDItMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBlbWl0LXJ0bC5jIChnZW5fcnR4KTogUmVtb3ZlLgoJKiBnZW5hdHRydGFiLmM6IERvbid0IG1lbnRpb24gZ2VuX3J0eCBpbiBhIGNvbW1lbnQuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgZ2VuX3J0eC4KCSogZG9jL21kLnRleGk6IFJlcGxhY2UgZ2VuX3J0eCB3aXRoIGdlbl9ydHhfUkVHLgoKMjAwNC0wMi0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9hcmMvYXJjLmgsIGNvbmZpZy9mcjMwL2ZyMzAuaAoJKFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBSZW1vdmUgdGhlIHRhcmdldC1pbmRlcGVuZGVudAoJY29tbWVudHMuCgkqIGRvYy90bS50ZXhpOiBEb24ndCBtZW50aW9uIGRlcHJlY2F0ZWQgdGFyZ2V0IG1hY3Jvcy4KCjIwMDQtMDItMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvZnIzMC9mcjMwLmggKEZVTkNUSU9OX1ZBTFVFKTogUmVtb3ZlIHRoZQoJdGFyZ2V0LWluZGVwZW5kZW50IGNvbW1lbnQuCgoyMDA0LTAyLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2ludGVyZmFjZS50ZXhpLCBkb2MvdG0udGV4aSwgZG9jL3Ryb3VibGUudGV4aTogRG9uJ3QKCW1lbnRpb24gZGVwcmVjYXRlZCB0YXJnZXQgbWFjcm9zLgoKMjAwNC0wMi0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy5nY2M6IFJlbW92ZSBvYnNvbGV0ZSBwb3J0cyBhbmQgY29uZmlndXJhdGlvbnMuCgkqIGNvbmZpZy9saW51eC1hb3V0LmgsIGNvbmZpZy9uZXR3YXJlLmgsCgljb25maWcvdC1saW51eC1nbnVsaWJjMSwgY29uZmlnL2QzMHYvYWJpLAoJY29uZmlnL2QzMHYvZDMwdi1wcm90b3MuaCwgY29uZmlnL2QzMHYvZDMwdi5jLAoJY29uZmlnL2QzMHYvZDMwdi5oLCBjb25maWcvZDMwdi9kMzB2Lm1kLAoJY29uZmlnL2QzMHYvbGliZ2NjMS5hc20sIGNvbmZpZy9kMzB2L3QtZDMwdiwKCWNvbmZpZy9kc3AxNnh4L2RzcDE2eHgtbW9kZXMuZGVmLAoJY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC1wcm90b3MuaCwgY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC5jLAoJY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC5oLCBjb25maWcvZHNwMTZ4eC9kc3AxNnh4Lm1kLAoJY29uZmlnL2kzNzAvUkVBRE1FLCBjb25maWcvaTM3MC9pMzcwLWMuYywKCWNvbmZpZy9pMzcwL2kzNzAtcHJvdG9zLmgsIGNvbmZpZy9pMzcwL2kzNzAuYywKCWNvbmZpZy9pMzcwL2kzNzAuaCwgY29uZmlnL2kzNzAvaTM3MC5tZCwgY29uZmlnL2kzNzAvbGludXguaCwKCWNvbmZpZy9pMzcwL212cy5oLCBjb25maWcvaTM3MC9vZS5oLCBjb25maWcvaTM3MC90LWkzNzAsCgljb25maWcvaTM4Ni9mcmVlYnNkLWFvdXQuaCwgY29uZmlnL2kzODYvbGludXgtYW91dC5oLAoJY29uZmlnL2kzODYvbW9zcy5oLCBjb25maWcvaTM4Ni9uZXR3YXJlLmgsCgljb25maWcvaTM4Ni9zdnIzLmlmaWxlLCBjb25maWcvaTM4Ni9zdnIzZGJ4LmgsCgljb25maWcvaTM4Ni9zdnIzZ2FzLmgsIGNvbmZpZy9pMzg2L3N2cjN6LmlmaWxlLAoJY29uZmlnL2kzODYvdC11ZGssIGNvbmZpZy9pMzg2L3Vkay5oLCBjb25maWcvaTM4Ni92c3RhLmgsCgljb25maWcvaTk2MC9pOTYwLWMuYywgY29uZmlnL2k5NjAvaTk2MC1jb2ZmLmgsCgljb25maWcvaTk2MC9pOTYwLW1vZGVzLmRlZiwgY29uZmlnL2k5NjAvaTk2MC1wcm90b3MuaCwKCWNvbmZpZy9pOTYwL2k5NjAuYywgY29uZmlnL2k5NjAvaTk2MC5oLCBjb25maWcvaTk2MC9pOTYwLm1kLAoJY29uZmlnL2k5NjAvcnRlbXMuaCwgY29uZmlnL2k5NjAvdC05NjBiYXJlLAoJY29uZmlnL202OGsvaHAzMTAuaCwgY29uZmlnL202OGsvaHAzMjAuaCwKCWNvbmZpZy9tNjhrL2hwMzIwYmFzZS5oLCBjb25maWcvbTY4ay9tNjhrdjQuaCwKCWNvbmZpZy9tNjhrL25ldGJzZC5oLCBjb25maWcvbTY4ay9zZ3MuaCwgY29uZmlnL202OGsvdC1ocDMyMDoKCVJlbW92ZS4KCSogZG9jL2V4dGVuZC50ZXhpLCBkb2MvaW5zdGFsbC50ZXhpLCBkb2MvaW52b2tlLnRleGksCglkb2MvbWQudGV4aTogUmVtb3ZlIG1lbnRpb25zIG9mIG9ic29sZXRlIHBvcnRzLgoKMjAwNC0wMi0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYWxpYXMuYyAoZmluZF9iYXNlX3Rlcm0sIGdldF9hZGRyKTogRG8gbm90IGRlcmVmZXJlbmNlIE5VTEwKCXBvaW50ZXIgd2hlbiBhbGwgVkFMVUUncyBsb2NhdGlvbnMgaGFzIGJlZW4gaW52YWxpZGF0ZWQuCgkocnR4X2VxdWFsX2Zvcl9tZW1yZWZfcCk6IFNpbXBsaWZ5IGNoZWNraW5nIG9mIFZBTFVFcy4KCjIwMDQtMDItMDMgIFdvbGZnYW5nIEJhbmdlcnRoICA8YmFuZ2VydGhAZGVhbGlpLm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aSAoeDg2IG9wdGlvbnMpOiBGaXggc3BlbGxpbmcvd29yZGluZy4KCjIwMDQtMDItMDMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKEFTTV9PVVRQVVRfQVNDSUkpOiBVc2UgbWlwc19vdXRwdXRfYXNjaWkgdG8KCXB1dCB0aGUgb3JpZ2luYWwgc3RyaW5nIGluIGEgY29tbWVudC4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19vdXRwdXRfYXNjaWkpOiBBZGQgcHJlZml4IGFyZ3VtZW50LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfb3V0cHV0X2FzY2lpKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQVNNX09VVFBVVF9BU0NJSSk6IEFkanVzdCBhY2NvcmRpbmdseS4KCjIwMDQtMDItMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzeXN0ZW0uaCAoR0lWX1NPUlRfQ1JJVEVSSU9OKTogUG9pc29uLgoJKiBjb25maWcvYXZyL2F2ci5oIChHSVZfU09SVF9DUklURVJJT04pOiBSZW1vdmUuCgkqIGNvbmZpZy9pcDJrL2lwMmsuaCAoR0lWX1NPUlRfQ1JJVEVSSU9OKTogTGlrZXdpc2UuCgoyMDA0LTAyLTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0YXJnZXQvOTM0OAoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWwpIDxNVUxUX0VYUFI+OiBXaGVuIHBlcmZvcm1pbmcgd2lkZW5pbmcKCW11bHRpcGxpZXMgd2l0aCBhIG11bHRpcGxpY2F0aW9uIG9mIHRoZSB3cm9uZyBzaWduZWRuZXNzLCBpdHMgdGhlCglzaWduZWRuZXNzIG9mIHRoZSBtdWx0aXBsaWNhdGlvbiB0aGF0IHdlJ3ZlIHBlcmZvcm1lZCB0aGF0IG5lZWRzIHRvCgliZSBwYXNzZWQgdG8gZXhwYW5kX211bHRfaGlnaHBhcnRfYWRqdXN0LiAgQXZvaWQgZW1pdHRpbmcgYSBub3AtbW92ZQoJaWYgZXhwYW5kX211bHRfaGlnaHBhcnRfYWRqdXN0IHBsYWNlcyB0aGUgcmVzdWx0IGluIHRhcmdldC4KCjIwMDQtMDItMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB2YXJhc20uYyAoY29uc3RfZGVzY19ydHhfc3ltX2VxKTogQ29tcGFyZSBzeW1ib2wgc3RyaW5ncy4KCjIwMDQtMDItMDMgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogY29uZmlnLmdjYyAoc2hbMjM0XWwpOiBVc2UgbGl0dGxlIGVuZGlhbiBmcmFnbWVudHMuCgoyMDA0LTAyLTAzICBQYXVsIEtvbmluZyAgPHBrb25pbmdAZXF1YWxsb2dpYy5jb20+CgoJKiBjb25maWcvcGRwMTEvcGRwMTEtbW9kZXMuZGVmOiBBZGQgUkVTRVRfRkxPQVRfRk9STUFUIGNhbGxzLgoJKiBjb25maWcvcGRwMTEvcGRwMTEtcHJvdG9zLmggKGxlZ2l0aW1hdGVfY29uc3RfZG91YmxlX3ApOiBBZGQuCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS5jIChlbmNvZGVfcGRwMTFfZiwgZGVjb2RlX3BkcDExX2YsCgllbmNvZGVfcGRwMTFfZCwgZGVjb2RlX3BkcDExX2QpOiBOZXcgZnVuY3Rpb25zIHRvIGhhbmRsZSBQRFAxMQoJZmxvYXRpbmcgcG9pbnQgZm9ybWF0LgoJKHBkcDExX2ZfZm9ybWF0LCBwZHAxMV9kX2Zvcm1hdCk6IE5ldyByZWFsX2Zvcm1hdCBkZXNjcmlwdG9ycyBmb3IKCXRoZSBhYm92ZSBmdW5jdGlvbnMuCgkob3V0cHV0X21vdmVfcXVhZCk6IE91dHB1dCBmbG9hdCB2YWx1ZXMgaW4gY29ycmVjdCB0YXJnZXQgZm9ybWF0LgoJKGxlZ2l0aW1hdGVfY29uc3RfZG91YmxlX3ApOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS5oOiBGaXggdHlwb3MuCgkoRkxPQVRfV09SRFNfQklHX0VORElBTik6IEFkZCBkZWZpbml0aW9uLgoJKFRBUkdFVF9GTE9BVF9GT1JNQVQpOiBEaXR0by4KCShwZHAxMV9mX2Zvcm1hdCwgcGRwMTFfZF9mb3JtYXQpOiBBZGQgZXh0ZXJuYWwgZGVjbGFyYXRpb25zLgoJKE1BWF9SRUdTX1BFUl9BRERSRVNTKTogQ29ycmVjdGVkLgoJKExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IFVzZSBsZWdpdGltYXRlX2NvbnN0X2RvdWJsZV9wKCkuCgkoUFJJTlRfT1BFUkFORCk6IE91dHB1dCBmbG9hdCBsaXRlcmFscyBpbiB0YXJnZXQgZm9ybWF0LgoKMjAwNC0wMi0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTM5NzUKCSogdHJlZS5oIChlbnVtIHRyZWVfaW5kZXgpOiBBZGQgVElfUFVCTElDLCBUSV9QUk9URUNURUQsIGFuZAoJVElfUFJJVkFURS4KCShhY2Nlc3NfcHVibGljX25vZGUpOiBSZWRlZmluZS4KCShhY2Nlc3NfcHJvdGVjdGVkX25vZGUpOiBMaWtld2lzZS4KCShhY2Nlc3NfcHJpdmF0ZV9ub2RlKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXMpOiBDcmVhdGUgYWNjZXNzX3B1YmxpY19ub2RlLAoJYWNjZXNzX3Byb3RlY3RlZF9ub2RlLCBhbmQgYWNjZXNzX3ByaXZhdGVfbm9kZS4KCjIwMDQtMDItMDMgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChNQVNLX0lOTElORV9JTlRfRElWX0xBVCk6IENoYW5nZSB2YWx1ZS4KCShNQVNLX0lOTElORV9JTlRfRElWX1RIUik6IERpdHRvLgoJKE1BU0tfSU5MSU5FX1NRUlRfTEFUKTogRGl0dG8uCgkoTUFTS19JTkxJTkVfU1FSVF9USFIpOiBEaXR0by4KCShNQVNLX0RXQVJGMl9BU00pOiBEaXR0by4KCShNQVNLX0VBUkxZX1NUT1BfQklUUyk6IERpdHRvLgoKMjAwNC0wMi0wMiAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCglNZXJnZSBmcm9tIGNzbC1hcm0tYnJhbmNoLgoKCTIwMDQtMDEtMzAgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBhb2YuaCAoUkVHSVNURVJfTkFNRVMpOiBBZGQgdmZwIHJlZyBuYW1lcwoJKEFERElUSU9OQUxfUkVHSVNURVJfTkFNRVMpOiBEaXR0by4KCSogYW91dC5oIChSRUdJU1RFUl9OQU1FUyk6IERpdHRvLgoJKEFERElUSU9OQUxfUkVHSVNURVJfTkFNRVMpOiBEaXR0by4KCSogYXJtLXByb3Rvcy5oOiBVcGRhdGUvQWRkIFByb3RvdHlwZXMuCgkqIGFybS5jIChpbml0X2ZwX3RhYmxlKTogUmVuYW1lIGZyb20gaW5pdF9mcGFfdGFibGUuIFVwZGF0ZSB1c2Vycy4KCU9ubHkgYWxsb3cgMC4wIGZvciBWRlAuCgkoZnBfY29uc3RzX2luaXRlZCk6IFJlbmFtZSBmcm9tIGZwYV9jb25zdHNfaW5pdGVkLiAgVXBkYXRlIHVzZXJzLgoJKHZhbHVlc19mcCk6IFJlbmFtZSBmcm9tIHZhbHVlc19mcGEuICBVcGRhdGUgVXNlcnMuCgkoYXJtX2NvbnN0X2RvdWJsZV9ydHgpOiBSZW5hbWUgZnJvbSBjb25zdF9kb3VibGVfcnR4X29rX2Zvcl9mcGEuCglVcGRhdGUgdXNlcnMuICBPbmx5IGNoZWNrIHZhbGlkIGNvbnN0YW50cyBmb3IgdGhpcyBoYXJkd2FyZS4KCShhcm1fZmxvYXRfcmhzX29wZXJhbmQpOiBSZW5hbWUgZnJvbSBmcGFfcmhzX29wZXJhbmQuICBVcGRhdGUgVXNlcnMuCglPbmx5IGFsbG93IGNvbnN0cyBmb3IgRlBBLgoJKGFybV9mbG9hdF9hZGRfb3BlcmFuZCk6IFJlbmFtZSBmcm9tIGZwYV9hZGRfb3BlcmFuZC4gIFVwZGF0ZSB1c2Vycy4KCU9ubHkgYWxsb3cgY29uc3RzIGZvciBGUEEuCgkodXNlX3JldHVybl9pbnNuKTogQ2hlY2sgZm9yIHNhdmVkIFZGUCByZWdzLgoJKGFybV9sZWdpdGltYXRlX2FkZHJlc3NfcCk6IEhhbmRsZSBWRlAgREZtb2RlIGFkZHJlc3NpbmcuCgkoYXJtX2xlZ2l0aW1pemVfYWRkcmVzcyk6IERpdHRvLgoJKGFybV9nZW5lcmFsX3JlZ2lzdGVyX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkodmZwX21lbV9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKHZmcF9jb21wYXJlX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkodmZwX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkoYXJtX2Zsb2F0X2NvbXBhcmVfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSh2ZnBfcHJpbnRfbXVsdGkpOiBOZXcgZnVuY3Rpb24uCgkodmZwX291dHB1dF9mc3RteCk6IE5ldyBmdW5jdGlvbi4KCSh2ZnBfZW1pdF9mc3RtKTogTmV3IGZ1bmN0aW9uLgoJKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBPdXRwdXQgVlBGIHJlZyByZXN0b3JlIGNvZGUuCgkoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IE91dHB1dCBWRlAgcmVnIHNhdmUgY29kZS4KCShhcm1fcHJpbnRfb3BlcmFuZCk6IEFkZCAnUCcuCgkoYXJtX2hhcmRfcmVnbm9fbW9kZV9vayk6IFJldHVybiBtb2RlcyBmb3IgVkZQIHJlZ3MuCgkoYXJtX3JlZ25vX2NsYXNzKTogUmV0dXJuIGNsYXNzZXMgZm9yIFZGUCByZWdzLgoJKGFybV9jb21wdXRlX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogSW5jbHVkZSBzcGFjZSBmb3IgVkZQIHJlZ3MuCgkoYXJtX2dldF9mcmFtZV9zaXplKTogRGl0dG8uCgkqIGFybS5oIChGSVhFRF9SRUdJU1RFUlMpOiBBZGQgVkZQIHJlZ3MuCgkoQ0FMTF9VU0VEX1JFR0lTVEVSUyk6IERpdHRvLgoJKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogRW5hYmxlIFZGUCByZWdzLgoJKEZJUlNUX1ZGUF9SRUdOVU0pOiBEZWZpbmUuCgkoTEFTVF9WRlBfUkVHTlVNKTogRGVmaW5lLgoJKElTX1ZGUF9SRUdOVU0pOiBEZWZpbmUuCgkoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogSW5jbHVkZSBWRlAgcmVncy4KCShIQVJEX1JFR05PX05SRUdTKTogSGFuZGxlIFZGUCByZWdzLgoJKFJFR19BTExPQ19PUkRFUik6IEFkZCBWRlAgcmVncy4KCShlbnVtIHJlZ19jbGFzcyk6IEFkZCBWRlBfUkVHUy4KCShSRUdfQ0xBU1NfTkFNRVMpOiBEaXR0by4KCShSRUdfQ0xBU1NfQ09OVEVOVFMpOiBEaXR0by4KCShDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpIEhhbmRsZSBWRlAgUmVncy4KCShSRUdfQ0xBU1NfRlJPTV9MRVRURVIpOiBBZGQgJ3cnLgoJKEVYVFJBX0NPTlNUUkFJTlRfQVJNKTogQWRkICdVJy4KCShFWFRSQV9NRU1PUllfQ09OU1RSQUlOVCk6IERlZmluZS4KCShTRUNPTkRBUllfT1VUUFVUX1JFTE9BRF9DTEFTUyk6IEhhbmRsZSBWRlAgcmVncy4KCShTRUNPTkRBUllfSU5QVVRfUkVMT0FEX0NMQVNTKTogRGl0dG8uCgkoUkVHSVNURVJfTU9WRV9DT1NUKTogRGl0dG8uCgkoUFJFRElDQVRFX0NPREVTKTogQWRkIGFybV9nZW5lcmFsX3JlZ2lzdGVyX29wZXJhbmQsCglhcm1fZmxvYXRfY29tcGFyZV9vcGVyYW5kIGFuZCB2ZnBfY29tcGFyZV9vcGVyYW5kLgoJKiBhcm0ubWQgKHZhcmlvdXMpOiBSZW5hbWUgYXMgYWJvdmUuCgkoZGl2c2YzKTogRW5hYmxlIHdoZW4gVEFSR0VUX1ZGUC4KCShkaXZkZjMpOiBEaXR0by4KCShtb3ZkZmNjKTogRGl0dG8uCgkoc3FydHNmMik6IERpdHRvLgoJKHNxcnRkZjIpOiBEaXR0by4KCShhcm1fbW92ZGkpOiBEaXNhYmxlIHdoZW4gVEFSR0VUX1ZGUC4KCShhcm1fbW92c2lfaW5zbik6IERpdHRvLgoJKG1vdnNpKTogT25seSBzcGxpdCB3aXRoIGdlbmVyYWwgcmVncy4KCShjbXBzZik6IFVzZSBhcm1fZmxvYXRfY29tcGFyZV9vcGVyYW5kLgoJKHB1c2hfZnBfbXVsdGkpOiBSZXN0cmljdCB0byBUQVJHRVRfRlBBLgoJKHZmcC5tZCk6IEluY2x1ZGUuCgkqIHZmcC5tZDogTmV3IGZpbGUuCgkqIGZwYS5tZCAodmFyaW91cyk6IFJlbmFtZSBhcyBhYm92ZS4KCSogZG9jL21kLnRleGk6IERvY3VtZW50IEFSTSB3IGFuZCBVIGNvbnN0cmFpbnRzLgoKCTIwMDQtMDEtMTUgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjOiBBZGQgd2l0aF9mcHUuICBBbGxvdyB3aXRoLWZsb2F0PXNvZnRmcC4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBSZW5hbWUgKi1zIHRvICpzLgoJQnJlYWsgb3V0IG9mIGxvb3Agd2hlbiB3ZSBmaW5kIGEgZmxvYXQtYWJpLiAgRml4IHR5cG8uCgkqIGNvbmZpZy9hcm0vYXJtLmggKE9QVElPTl9ERUZBVUxUX1NQRUNTKTogQWRkICJmcHUiLgoJU2V0IC1tZmxvYXQtYWJpPS4KCSogZG9jL2luc3RhbGwudGV4aTogRG9jdW1lbnQgLS13aXRoLWZwdS4KCgkyMDAzLTAxLTE0ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAod2l0aF9hcmNoKTogQWRkIGFybXY2LgoJKiBjb25maWcvYXJtL2FybS5oOiBSZW5hbWUgVEFSR0VUX0NQVV8qX3MgdG8gVEFSR0VUX0NQVV8qcy4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJycmlkZV9vcHRpb25zKTogRGl0dG8uCgoJMjAwNC0wMS0wOCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoRkxfQVJDSDNNKTogUmVuYW1lZCBmcm9tIEZMX0ZBU1RfTVVMVC4KCShGTF9BUkNINik6IFJlbmFtZWQgZnJvbSBGTF9BUkNINkouCgkoYXJtX2FyY2gzbSk6IFJlbmFtZWQgZnJvbSBhcm1fZmFzdF9tdWx0aXBseS4KCShhcm1fYXJjaDYpOiBSZW5hbWVkIGZyb20gYXJtX2FyY2g2ai4KCSogYXJtLmg6IFVwZGF0ZSBhbGwgdXNlcyBvZiBhYm92ZS4KCSogYXJtLWNvcmVzLmRlZjogTGlrZXdpc2UuCgkqIGFybS5tZDogTGlrZXdpc2UuCgoJKiBhcm0uaCAoQ1BQX0NQVV9BUkNIX1NQRUMpOiBFbWl0IF9fQVJNX0FSQ0hfNkpfXyBkZWZpbmUgZm9yIGFybVY2aiwKCW5vdCBhcm02ai4gIEFkZCBlbnRyeSBmb3IgYXJjaCBhcm12Ni4KCgkyMDA0LTAxLTA3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChhcm1fZW1pdF9leHRlbmRzaSk6IERlbGV0ZS4KCSogYXJtLXByb3Rvcy5oIChhcm1fZW1pdF9leHRlbmRzaSk6IERlbGV0ZS4KCSogYXJtLm1kICh6ZXJvX2V4dGVuZGhpc2kyKTogQWxzbyBoYW5kbGUgemVyby1leHRlbnNpb24gb2YKCW5vbi1zdWJyZWdzLgoJKHplcm9fZXh0ZW5kcWlzaTIsIGV4dGVuZGhpc2kyLCBleHRlbmRxaXNpMik6IExpa2V3aXNlLgoJKHRodW1iX3plcm9fZXh0ZW5kaGlzaTIpOiBPbmx5IG1hdGNoIGlmIG5vdCB2Ni4KCShhcm1femVyb19leHRlbmRoaXNpMiwgdGh1bWJfemVyb19leHRlbmRxaXNpMiwgYXJtX3plcm9fZXh0ZW5kcWlzaTIpCgkodGh1bWJfZXh0ZW5kaGlzaTIsIGFybV9leHRlbmRoaXNpMiwgYXJtX2V4dGVuZHFpc2kpCgkodGh1bWJfZXh0ZW5kcWlzaTIpOiBMaWtld2lzZS4KCSh0aHVtYl96ZXJvX2V4dGVuZGhpc2kyX3Y2LCBhcm1femVyb19leHRlbmRoaXNpMl92Nik6IE5ldyBwYXR0ZXJucy4KCSh0aHVtYl96ZXJvX2V4dGVuZHFpc2kyX3Y2LCBhcm1femVyb19leHRlbmRxaXNpMl92Nik6IE5ldyBwYXR0ZXJucy4KCSh0aHVtYl9leHRlbmRoaXNpMl9pbnNuX3Y2LCBhcm1fZXh0ZW5kaGlzaTJfdjYpOiBOZXcgcGF0dGVybnMuCgkodGh1bWJfZXh0ZW5kcWlzaTJfdjYsIGFybV9leHRlbmRxaXNpX3Y2KTogTmV3IHBhdHRlcm5zLgoJKGFybV96ZXJvX2V4dGVuZGhpc2kyX3JlZywgYXJtX3plcm9fZXh0ZW5kcWlzaTJfcmVnKTogRGVsZXRlLgoJKGFybV9leHRlbmRoaXNpMl9yZWcsIGFybV9leHRlbmRxaXNpMl9yZWcpOiBEZWxldGUuCgkoYXJtX3plcm9fZXh0ZW5kaGlzaTJhZGRzaSk6IFJlbW92ZSBzdWJyZWcuICBBZGQgYXR0cmlidXRlcy4KCShhcm1femVyb19leHRlbmRxaXNpMmFkZHNpLCBhcm1fZXh0ZW5kaGlzaTJhZGRzaSk6IExpa2V3aXNlLgoJKGFybV9leHRlbmRxaXNpMmFkZHNpKTogTGlrZXdpc2UuCgoJMjAwMy0xMi0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglSZXZlcnQgdGhpcyBjaGFuZ2U6CgkqIGNvbmZpZy9hcm0vYXJtLmggKFRIVU1CX0xFR1RJVElNSVpFX1JFTE9BRF9BRERSRVNTKTogUmVsb2FkIFJFRwoJKyBSRUcgYWRkcmVzc2luZyBtb2Rlcy4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKFRIVU1CX0xFR1RJVElNSVpFX1JFTE9BRF9BRERSRVNTKTogUmVsb2FkIFJFRwoJKyBSRUcgYWRkcmVzc2luZyBtb2Rlcy4KCgkyMDAzLTEyLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAoVEhVTUJfTEVHSVRJTUFURV9DT05TVEFOVF9QKTogQWNjZXB0CglDT05TVEFOVF9QX1JUWC4KCgkyMDAzLTMwLTEyICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogbG9uZ2xvbmcuaDogcHJvdGVjdCBhcm0gaW5saW5lcyB3aXRoICFkZWZpbmVkIChfX3RodW1iX18pCgoJMjAwMy0zMC0xMiAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogQWx3YXlzIGRlZmluZSBfX2FybV9fLgoKCTIwMDMtMTItMzAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9hcHBseV9hcmdzXzEpOiBGaXggdHlwbyBpbiBwcmV2aW91cwoJY2hhbmdlLgoKCTIwMDMtMTItMjkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9hcHBseV9hcmdzXzEpOiBBZGQgcHJldGVuZCBhcmdzIHNpemUKCXRvIHRoZSB2aXJ0dWFsIGluY29taW5nIGFyZ3MgcG9pbnRlciBmb3IgZG93bndhcmQgc3RhY2tzLgoKCTIwMDMtMTItMjkgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS1jb3Jlcy5kZWY6IEFkZCBjb3N0IGZ1bmN0aW9uLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fKl9ydHhfY29zdHMpOiBOZXcgZnVuY3Rpb25zLgoJKGFybV9ydHhfY29zdHMpOiBSZW1vdmUKCShzdHJ1Y3QgcHJvY2Vzc29ycyk6IEFkZCBydHhfY29zdHMgZmllbGQuCgkoYWxsX2NvcmVzLCBhbGxfYXJjaGl0ZWN0dXJlcyk6IERpdHRvLgoJKGFybV9vdmVycmlkZV9vcHRpb25zKTogU2V0IHRhcmdldG0ucnR4X2Nvc3RzLgoJKHRodW1iX3J0eF9jb3N0cyk6IE5ldyBmdW5jdGlvbi4KCShhcm1fcnR4X2Nvc3RzXzEpOiBSZW1vdmUgY2FzZXMgaGFuZGxlZCBlbHNld2hlcmUuCgkqIGNvbmZpZy9hcm0vYXJtLmggKHByb2Nlc3Nvcl90eXBlKTogQWRkIENPU1RTIHBhcmFtZXRlci4KCgkyMDAzLTEyLTI5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKGdlbmVyaWNfc2NoZWQpOiBhcm05MjYgaGFzIGl0cyBvd24gc2NoZWR1bGVyLgoJKGFybTkyNmVqcy5tZCk6IEluY2x1ZGUgaXQuCgkqIGNvbmZpZy9hcm0vYXJtOTI2ZWpzLm1kOiBOZXcgcGlwZWxpbmUgZGVzY3JpcHRpb24uCgoJMjAwMy0xMi0yNCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9hcmNoNmopOiBOZXcgdmFyaWFibGUuCgkoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBTZXQgaXQuCgkoYXJtX2VtaXRfZXh0ZW5kc2kpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhcm1fZW1pdF9leHRlbmRzaSk6IEFkZCBwcm90b3R5cGUuCgkqIGNvbmZpZy9hcm0vYXJtLmggKGFybV9hcmNoNmopOiBEZWNsYXJlLgoJKiBjb25maWcvYXJtL2FybS5tZDogQWRkIHNpZ24vemVybyBleHRlbmQgaW5zbnMuCgoJMjAwMy0xMi0yMyAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFsbF9hcmNoaXRlY3R1cmVzKTogQWRkIGFybXY2LgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IGl0LgoKCTIwMDMtMTItMTkgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZDogQWRkIGxvYWQxIGFuZCBsb2FkX2J5dGUgInR5cGUiIGF0dHJzLiAgTW9kaWZ5CglpbnNuIHBhdHRlcm5zIHRvIG1hdGNoLgoJKiBjb25maWcvYXJtL2FybS1nZW5lcmljLm1kOiBEaXR0by4KCSogY29uZmlnL2FybS9jaXJydXMubWQ6IERpdHRvLgoJKiBjb25maWcvYXJtL2ZwYS5tZDogRGl0dG8uCgkqIGNvbmZpZy9hbW0vaXdtbXh0Lm1kOiBEaXR0by4KCSogY29uZmlnL2FybS9hcm0xMDI2ZWpzLm1kOiBEaXR0by4KCSogY29uZmlnL2FybS9hcm0xMTM1amZzLm1kOiBEaXR0by4gIEFkZCBpbnNuX3Jlc2VydmF0aW9uIGFuZCBieXBhc3NlcwoJZm9yIDExX2xvYWRiLgoKCTIwMDMtMTItMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX25vX2Vhcmx5X2FsdV9zaGlmdF92YWx1ZV9kZXApOiBEZWNsYXJlLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fYWRqdXN0X2Nvc3QpOiBDaGVjayBzaGlmdCBjb3N0IGZvcgoJVFlQRV9BTFVfU0hJRlQgYW5kIFRZUEVfQUxVX1NISUZUX1JFRy4KCShhcm1fbm9fZWFybHlfc3RvcmVfYWRkcl9kZXAsIGFybV9ub19lYXJseV9hbHVfc2hpZnRfZGVwLAoJYXJtX25vX2Vhcmx5X211bF9kZXApOiBDb3JyZWN0bHkgZGVhbCB3aXRoIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbiwKCXBhcmFsbGVscyBhbmQgc2luZ2xlIHNoaWZ0IG9wZXJhdGlvbnMuCgkoYXJtX25vX2Vhcmx5X2FsdV9zaGlmdF92YWx1ZV9kZXApOiBEZWZpbmUuCgkqIGFybS5tZCAoYXR0ciB0eXBlKTogUmVwbGFjZSAnbm9ybWFsJyB3aXRoICdhbHUnLAoJJ2FsdV9zaGlmdCcgYW5kICdhbHVfc2hpZnRfcmVnJy4KCShhdHRyIGNvcmVfY3ljbGVzKTogQWRqdXN0LgoJKCphZGRzaTNfY2Fycnlpbl9zaGlmdCwgYW5kc2lfbm90X3NoaWZ0c2lfc2ksICphcm1fc2hpZnRzaTMsCgkqc2hpZnRzaTNfY29tcGFyZTAsICpub3RzaV9zaGlmdHNpLCAqbm90c2lfc2hpZnRzaV9jb21wYXJlMCwKCSpub3Rfc2hpZnRzaV9jb21wYXJlMF9zY3JhdGNoLCAqY21wc2lfc2hpZnRzaSwgKmNtcHNpX3NoaWZ0c2lfc3dwLAoJKmNtcHNpX25lZ19zaGlmdHNpLCAqYXJpdGhfc2hpZnRzaSwgKmFyaXRoX3NoaWZ0c2lfY29tcGFyZTAsCgkqYXJpdGhfc2hpZnRzaV9jb21wYXJlMF9zY3JhdGNoLCAqc3ViX3NoaWZ0c2ksCgkqc3ViX3NoaWZ0c2lfY29tcGFyZTAsICpzdWJfc2hpZnRzaV9jb21wYXJlMF9zY3JhdGNoLAoJKmlmX3NoaWZ0X21vdmUsICppZl9tb3ZlX3NoaWZ0LCAqaWZfc2hpZnRfc2hpZnQpOiBTZXQgdHlwZQoJYXR0cmlidXRlIGFwcHJvcHJpYXRlbHkuCgkqIGNvbmZpZy9hcm0vYXJtMTAyNmVqcy5tZCAoYWx1X29wKTogQWRqdXN0LgoJKGFsdV9zaGlmdF9vcCwgYWx1X3NoaWZ0X3JlZ19vcCk6IE5ldy4KCSogY29uZmlnL2FybS9hcm0xMTM2Lm1kOiBBZGQgYmV0dGVyIGJ5cGFzc2VzIGZvciBlYXJseQoJcmVnaXN0ZXJzLiBSZW1vdmUgbG9hZFsyMzRdIGFuZCBzdG9yZVsyMzRdIGJ5cGFzc2VzLgoJKDExX2FsdV9vcCk6IEFkanVzdC4KCSgxMV9hbHVfc2hpZnRfb3AsIDExX2FsdV9zaGlmdF9yZWdfb3ApOiBOZXcuCgoJMjAwMy0xMi0xNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhcm1fbm9fZWFybHlfc3RvcmVfYWRkcl9kZXAsCglhcm1fbm9fZWFybHlfYWx1X3NoaWZ0X2RlcCwgYXJtX25vX2Vhcmx5X211bF9kZXApOiBEZWNsYXJlLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fbm9fZWFybHlfc3RvcmVfYWRkcl9kZXAsCglhcm1fbm9fZWFybHlfYWx1X3NoaWZ0X2RlcCwgYXJtX25vX2Vhcmx5X211bF9kZXApOiBEZWZpbmUuCgkqIGNvbmZpZy9hcm0vYXJtMTAyNmVqcy5tZDogQWRkIGxvYWQtc3RvcmUgYnlwYXNzLgoJKiBjb25maWcvYXJtL2FybTExMzZqZnMubWQgKDExX2FsdV9vcCk6IFRha2UgMiBjeWNsZXMuCglBZGQgYnlwYXNzZXMgYmV0d2VlbiBpbnN0cnVjdGlvbnMuCgoJMjAwMy0xMi0xMCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9mcHVfbW9kZWwpOiBOZXcgdmFyaWFibGUuCgkoYXJtX2Zsb2FkX2FiaSk6IE5ldyB2YXJpYWJsZS4KCSh0YXJnZXRfZnBlX25hbWUpOiBSZW5hbWUgZnJvbSB0YXJnZXRfZnBfbmFtZS4KCSh0YXJnZXRfZnB1X25hbWUpOiBOZXcgdmFyaWFibGUuCgkoYXJtX2lzX2NpcnJ1cyk6IFJlbW92ZS4KCShmcHVfZGVzYyk6IE5ldyBzdHJ1Y3QuCgkoYWxsX2ZwdXMpOiBEZWZpbmUuCgkocGZfbW9kZWxfZm9yX2ZwdSk6IERlZmluZS4KCShhbGxfbG9hdF9hYmlzKTogRGVmaW5lLgoJKGFybV9vdmVycmlkZV9vcHRpb25zKTogU2V0IGZwIGFyY2ggZmxhZ3MgYmFzZWQgb24gLW1mcHU9CglhbmQgLWZsb2F0LWFiaT0uCgkoRklSU1RfRlBBX1JFR05VTSk6IFJlbmFtZSBmcm9tIEZJUlNUX0FSTV9GUF9SRUdOVU0uCgkoTEFTVF9GUEFfUkVHTlVNKTogUmVuYW1lIGZyb20gTEFTVF9BUk1fRlBfUkVHTlVNLgoJKCopOiBVc2UgbmV3IFRBUkdFVF8qIGZsYWdzLgoJKiBjb25maWcvYXJtL2FybS5oIChUQVJHRVRfQU5ZX0hBUkRfRkxPQVQpOiBSZW1vdmUuCgkoVEFSR0VUX0hBUkRfRkxPQVQpOiBObyBsb25nZXIgaW1wbGllcyBUQVJHRVRfRlBBLgoJKFRBUkdFVF9TT0ZUX0ZMT0FUKTogRGl0dG8uCgkoVEFSR0VUX1NPRlRfRkxPQVRfQUJJKTogTmV3LgoJKFRBUkdFVF9NQVZFUklDSyk6IFJlbmFtZSBmcm9tIFRBUkdFVF9DSVJSVVMuICBObyBsb25nZXIgaW1wbGllcwoJVEFSR0VUX0hBUkRfRkxPQVQuCgkoVEFSR0VUX1ZGUCk6IE5vIGxvbmdlciBpbXBsaWVzIFRBUkdFVF9IQVJEX0ZMT0FULgoJKFRBUkdFVF9PUFRJT05TKTogQWRkIC1tZnB1PS4KCShGSVJTVF9GUEFfUkVHTlVNKTogUmVuYW1lIGZyb20gRklSU1RfQVJNX0ZQX1JFR05VTS4KCShMQVNUX0ZQQV9SRUdOVU0pOiBSZW5hbWUgZnJvbSBMQVNUX0FSTV9GUF9SRUdOVU0uCgkoYXJtX3BmX21vZGVsKTogRGVmaW5lLgoJKGFybV9mbG9hdF9hYmlfdHlwZSk6IERlZmluZS4KCShmcHV0eXBlKTogQWRkIEZQVVRZUEVfVkZQLiAgQ2hhbmdlIFNPRlRfRlBBLT5OT05FCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBVc2UgbmV3IFRBUkdFVF8qIGZsYWdzLgoJKiBjb25maWcvYXJtL2NpcnJ1cy5tZDogRGl0dG8uCgkqIGNvbmZpZy9hcm0vZnBhLm1kOiBEaXR0by4KCSogY29uZmlnL2FybS9lbGYuaCAoQVNNX1NQRUMpOiBQYXNzIC1tZmxvYXQtYWJpPSBhbmQgLW1mcHU9LgoJKiBjb25maWcvYXJtL3NlbWkuaCAoQVNNX1NQRUMpOiBEaXR0by4KCSogY29uZmlnL2FybS9uZXRic2QtZWxmLmggKFNVQlRBUkdFVF9BU01fRkxPQVRfU1BFQyk6IFNwZWNpZnkgdmZwLgoJKEZQVVRZUEVfREVGQVVMVCk6IFNldCB0byBWRlAuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1mcHU9IGFuZCAtbWZsb2F0LWFiaT0uCgoJMjAwMy0xMS0yMiAgUGhpbCBFZHdhcmRzICA8cGhpbEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8xMjQ3NgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fb3V0cHV0X21pX3RodW5rKTogSW4gVGh1bWIgbW9kZSwgdXNlCgknYngnIGluc3RlYWQgb2YgJ2InIHRvIGF2b2lkIGJyYW5jaCByYW5nZSByZXN0cmljdGlvbnMuICBPdXRwdXQKCXRoZSB0aHVuayBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIHRodW5rZWQtdG8gZnVuY3Rpb24uCgkqIGNvbmZpZy9hcm0vYXJtLmggKEFSTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBEbyBub3QgZW1pdAoJLnRodW1iX2Z1bmMgaWYgYSB0aHVuayBpcyBiZWluZyBnZW5lcmF0ZWQuICBFbWl0IC5jb2RlIDE2IGFsb25nCgl3aXRoIC50aHVtYl9mdW5jIGlmIGEgdGh1bmsgaXMgbm90IGJlaW5nIGdlbmVyYXRlZC4KCgkyMDAzLTExLTE1ICBOaWNvbGFzIFBpdHJlIDxuaWNvQGNhbS5vcmc+CgoJKiBjb25maWcvYXJtL2FybS5tZCAoYXNobGRpMywgYXJtX2FzaGxkaTNfMWJpdCwgYXNocmRpMywKCWFybV9hc2hyZGkzXzFiaXQsIGxzaHJkaTMsIGFybV9sc2hyZGkzXzFiaXQpOiBOZXcgcGF0dGVybnMuCgkqIGNvbmZpZy9hcm0vaXdtbXh0Lm1kIChhc2hyZGkzX2l3bW14dCk6IFJlbmFtZWQgZnJvbSBhc2hyZGkzLgoJKGxzaHJkaTNfaXdtbXh0KTogUmVuYW1lZCBmcm9tIGxzaHJkaTMuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKElXTU1YVF9CVUlMVElOMik6IFJlbmFtZWQgYXJndW1lbnQgYWNjb3JkaW5nbHkuCgoJMjAwMy0xMS0xMiAgU3RldmUgV29vZGZvcmQgIDxzY3dAd2FzYWJpc3lzdGVtcy5jb20+CgkgICAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbmZpZy9hcm0vbGliMWZ1bmNzLmFzbSAoQVJNX0RJVl9CT0RZLCBBUk1fTU9EX0JPRFkpOiBBZGQgbmV3Cgljb2RlIGZvciBfX0FSTV9BUkNIX18gPj0gNSAmJiAhIGRlZmluZWQgKF9fT1BUSU1JWkVfU0laRV9fKS4KCgkyMDAzLTExLTA1ICBQaGlsIEVkd2FyZHMgIDxwaGlsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAoaW5zbik6IEFkZCBuZXcgVjYgaW5zdHJ1Y3Rpb24gbmFtZXMuCgkoZ2VuZXJpY19zY2hlZCk6IE5ldyBhdHRyLgoJKiBjb25maWcvYXJtL2FybS1nZW5lcmljLm1kOiBVc2UgZ2VuZXJpY19zY2hlZCBoZXJlLgoJKiBjb25maWcvYXJtL2FybTEwMjZlanMubWQ6IERvIG5vdCBtb2RlbCBmZXRjaC9pc3N1ZS9kZWNvZGUKCXN0YWdlcyBvZiBwaXBlbGluZS4gIEFkanVzdCBsYXRlbmN5IGNvdW50cyBhY2NvcmRpbmdseS4KCSogY29uZmlnL2FybS9hcm0xMTM2amZzLm1kOiBOZXcgZmlsZS4KCgkyMDAzLTEwLTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAocHJvY2Vzc29yX3R5cGUpOiBOZXcgZW51bWVyYXRpb24gdHlwZS4KCShDUFBfQVJDSF9ERUZBVUxUX1NQRUMpOiBTZXQgYXBwcm9wcmlhdGVseSBmb3IgQVJNIDkyNkVKLVMsCglBUk0xMDI2RUotUywgQVJNMTEzNkotUywgYW5kIEFSTTExMzZKRi1TIHByb2Nlc3NvciBjb3Jlcy4KCShDUFBfQ1BVX0FSQ0hfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fdHVuZSk6IE5ldyB2YXJpYWJsZS4KCShhbGxfY29yZXMpOiBVc2UgY29yZXMuZGVmLgoJKGFsbF9hcmNoaXRlY3R1cmVzKTogQWRkIHJlcHJlc2VudGF0aXZlIHByb2Nlc3Nvci4KCShhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IFJlc3RydWN0dXJlIHdheSBpbiB3aGljaCB0dW5pbmcKCWluZm9ybWF0aW9uIGlzIGRlZHVjZWQuCgkqIGFybS5tZDogVXBkYXRlICJpbnNuIiBhbmQgInR5cGUiIGF0dHJpYnV0ZXMgdGhyb3VnaG91dC4KCShpbnNuKTogTmV3IGF0dHJpYnV0ZS4KCSh0eXBlKTogQ29tcHV0ZSAibXVsdCIgZnJvbSAiaW5zbiIgYXR0cmlidXRlLiAgQWRkIGxvYWQyLAoJbG9hZDMsIGxvYWQ0IGFsdGVybmF0aXZlcy4KCShhcm0gYXV0b21hdG9uKTogTW92ZSB0byBhcm0tZ2VuZXJpYy5tZC4KCSogY29uZmlnL2FybS9hcm0tY29yZXMuZGVmOiBOZXcgZmlsZS4KCSogY29uZmlnL2FybS9hcm0tZ2VuZXJpYy5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtMTAyNmVqcy5tZDogTGlrZXdpc2UuCgoyMDA0LTAyLTAzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL2ludm9rZS50ZXhpIChTUEFSQyBvcHRpb25zKTogUmVtb3ZlIC1tZmxhdCBhbmQKCWFsbCAtbXh4eCAoeHh4OmNoaXApIG9wdGlvbnMuCgkqIGNvbmZpZy9zcGFyYy9hb3V0LmggKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBEZWxldGUuCgkqIGNvbmZpZy9zcGFyYy9saXRlY29mZi5oIChEQlhfUkVHSVNURVJfTlVNQkVSKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9uZXRic2QtZWxmLmggKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NvbDIuaCAoREJYX1JFR0lTVEVSX05VTUJFUik6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMtcHJvdG9zLmg6IERlbGV0ZSBzcGFyY19mbGF0XyogcHJvdG90eXBlcy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmM6IExpa2V3aXNlLgoJKHNwYXJjX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFJlbW92ZSBUQVJHRVRfRkxBVCBoYW5kbGluZy4KCShzcGFyY19ub25mbGF0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogUmVuYW1lIGludG8gc3BhcmNfZnVuY3Rpb25fcHJvbG9ndWUuCgkoc3BhcmNfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogUmVtb3ZlIFRBUkdFVF9GTEFUIGhhbmRsaW5nLgoJKHNwYXJjX25vbmZsYXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBSZW5hbWUgaW50byBzcGFyY19mdW5jdGlvbl9lcGlsb2d1ZS4KCShzdHJ1Y3Qgc3BhcmNfZnJhbWVfaW5mbywgY3VycmVudF9mcmFtZV9pbmZvLCB6ZXJvX2ZyYW1lX2luZm8pOiBEZWxldGUuCgkoc3BhcmNfZmxhdF9tdXN0X3NhdmVfcmVnaXN0ZXJfcCk6IExpa2V3aXNlLgoJKHNwYXJjX2ZsYXRfY29tcHV0ZV9mcmFtZV9zaXplKTogTGlrZXdpc2UuCgkoc3BhcmNfZmxhdF9zYXZlX3Jlc3RvcmUpOiBMaWtld2lzZS4KCShzcGFyY19mbGF0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkoc3BhcmNfZmxhdF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKHNwYXJjX2ZsYXRfZXBpbG9ndWVfZGVsYXlfc2xvdHMpOiBMaWtld2lzZS4KCShzcGFyY19mbGF0X2VsaWdpYmxlX2Zvcl9lcGlsb2d1ZV9kZWxheSk6IExpa2V3aXNlLgoJKHNwYXJjX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogUmVtb3ZlIFRBUkdFVF9GTEFUIGhhbmRsaW5nLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoTUFTS19GTEFULCBUQVJHRVRfRkxBVCk6IERlbGV0ZS4KCShUQVJHRVRfU1dJVENIRVMpOiBSZW1vdmUgLW1mbGF0IGFuZCBhbGwgLW14eHggKHh4eDpjaGlwKSBvcHRpb25zLgoJKFNQQVJDX0lOQ09NSU5HX0lOVF9BUkdfRklSU1QpOiBSZW1vdmUgVEFSR0VUX0ZMQVQgaGFuZGxpbmcuCgkoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBMaWtld2lzZS4KCShGUkFNRV9QT0lOVEVSX1JFUVVJUkVEKTogTGlrZXdpc2UuCgkoSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBMaWtld2lzZS4KCShCQVNFX1JFVFVSTl9WQUxVRV9SRUcpOiBMaWtld2lzZS4KCShCQVNFX09VVEdPSU5HX1ZBTFVFX1JFRyk6IExpa2V3aXNlLgoJKEJBU0VfUEFTU0lOR19BUkdfUkVHKTogTGlrZXdpc2UuCgkoQkFTRV9JTkNPTUlOR19BUkdfUkVHKTogTGlrZXdpc2UuCgkoSU5DT01JTkdfUkVHTk8pOiBMaWtld2lzZS4KCShPVVRHT0lOR19SRUdOTyk6IExpa2V3aXNlLgoJKExPQ0FMX1JFR05PKTogTGlrZXdpc2UuCgkoREVMQVlfU0xPVFNfRk9SX0VQSUxPR1VFKTogTGlrZXdpc2UuCgkoRUxJR0lCTEVfRk9SX0VQSUxPR1VFX0RFTEFZKTogTGlrZXdpc2UuCgkoRVBJTE9HVUVfVVNFUyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKCJpc2EiIGF0dHJpYnV0ZSk6IENoYW5nZSAidjYiIGludG8gInY3Ii4KCSgiZmxhdCIgYXR0cmlidXRlKTogRGVsZXRlLgoJKGRvX2J1aWx0aW5fc2V0am1wX3NldHVwKTogUmVtb3ZlIFRBUkdFVF9GTEFUIGFuZCAiZmxhdCIgYXR0cmlidXRlCgloYW5kbGluZy4KCShjYWxsIGZvbGxvd2VkIGJ5IGp1bXAgZGVmaW5lX3BlZXBob2xlJ3MpOiBEZWxldGUuCgkoZXhjZXB0aW9uX3JlY2VpdmVyKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3Qtc3BhcmNsaXRlIChNVUxUSUxJQl9PUFRJT05TKTogUmVtb3ZlIC1tZmxhdC4KCjIwMDQtMDItMDMgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgYy8xMTY1OAoJUFIgYy8xMzk5NAoJKiBNYWtlZmlsZS5pbiAoYy1wYXJzZS5vLCBjLWNvbnZlcnQubywgYy10eXBlY2subyk6IERlcGVuZAoJb24gbGFuZ2hvb2tzLmguCgkqIG9iamMvTWFrZS1sYW5nLmluIChvYmpjLXBhcnNlLm8pOiBEZXBlbmQgb24gbGFuZ2hvb2tzLmguCgkqIGMtcGFyc2UuaW4sIGMtY29udmVydC5jLCBjLXR5cGVjay5jLCBvYmpjL29iamMtYWN0LmM6CglJbmNsdWRlIGxhbmdob29rcy5oLiAgUmVwbGFjZSBjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24KCXdpdGggdGhlIHRydXRodmFsdWVfY29udmVyc2lvbiBsYW5ndWFnZSBob29rIHRocm91Z2hvdXQuCgkoZXhwcl9ub19jb21tYXMpOiBDYWxsIGRlZmF1bHRfY29udmVyc2lvbiBiZWZvcmUgc2F2ZV9leHByCglmb3IgdGhlIGZpcnN0IHRlcm0gb2YgdGhlIHByb2R1Y3Rpb24gJ3ggPyA6IHknLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBSZW1vdmUKCW9ic29sZXRlIGJsb2NrLiAgSW52b2tlIHJlY3Vyc2l2ZWx5IHRoZSBob29rIGluc3RlYWQKCW9mIHRoaXMgZnVuY3Rpb24uCgkqIGMtY29udmVydC5jIChjb252ZXJ0KTogaGFuZGxlIEVSUk9SX01BUktfTk9ERS4KCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogaGFuZGxlIEVSUk9SX01BUktfTk9ERQoJcmV0dXJuZWQgYnkgdGhlIHRydXRodmFsdWVfY29udmVyc2lvbiBsYW5ndWFnZSBob29rLgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19UUlVUSFZBTFVFX0NPTlZFUlNJT04pOiBVc2UKCWNfb2JqY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uLgoJKiBjLW9iamMtY29tbW9uLmMgKGNfb2JqY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uKToKCU5ldyBmdW5jdGlvbi4KCSogYy10cmVlLmggKGNfb2JqY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uKTogRGVjbGFyZSBpdC4KCSogb2JqYy9vYmpjLWxhbmcuYyAoTEFOR19IT09LU19UUlVUSFZBTFVFX0NPTlZFUlNJT04pOiBVc2UKCWNfb2JqY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uLgoKMjAwNC0wMi0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKEZVTkNUSU9OX1ZBTFVFKTogVXNlIGdlbl9ydHhfUkVHIGluc3RlYWQKCW9mIGdlbl9ydHguCgkoTElCQ0FMTF9WQUxVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvaXAyay9pcDJrLmMgKG1kcl90cnlfcHJvcGFnYXRlX2Nscl9zZXF1ZW5jZSk6IFVzZQoJZ2VuX3J0eF9DQzAgaW5zdGVhZCBvZiBnZW5fcnR4LgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKG02OGhjMTFfZW1pdF9saWJjYWxsKTogVXNlCglnZW5fcnR4X2ZtdF9lIGFuZCBnZW5fcnR4X2ZtdF9lZSBpbnN0ZWFkIG9mIGdlbl9ydHguCgkobTY4aGMxMV9leHBhbmRfY29tcGFyZSk6IFVzZSBnZW5fcnR4X2ZtdF9lZSBpbnN0ZWFkIG9mCglnZW5fcnR4LgoJKG02OGhjMTFfZW1pdF9sb2dpY2FsKTogTGlrZXdpc2UuCgoyMDA0LTAyLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMsIGNvbmZpZy9hcm0vYXJtLmMsIGNvbmZpZy9jNHgvYzR4LmMsCgljb25maWcvZnIzMC9mcjMwLm1kLCBjb25maWcvZnJ2L2Zydi5jLCBjb25maWcvZnJ2L2Zydi5tZCwKCWNvbmZpZy9oODMwMC9oODMwMC5jLCBjb25maWcvaWE2NC9pYTY0LmMsIGNvbmZpZy9pcDJrL2lwMmsubWQsCgljb25maWcvbTMyci9tMzJyLm1kLCBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMsCgljb25maWcvbWlwcy9taXBzLm1kLCBjb25maWcvbW1peC9tbWl4LmMsCgljb25maWcvbW4xMDMwMC9tbjEwMzAwLmMsIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQsCgljb25maWcvbnMzMmsvbnMzMmsuYywgY29uZmlnL3BhL3BhLm1kLCBjb25maWcvcGRwMTEvcGRwMTEuYywKCWNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCwgY29uZmlnL3MzOTAvczM5MC5jLAoJY29uZmlnL3MzOTAvczM5MC5oLCBjb25maWcvczM5MC9zMzkwLm1kLCBjb25maWcvc2gvc2guYywKCWNvbmZpZy9zaC9zaC5oLCBjb25maWcvc2gvc2gubWQsIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jOgoJVXNlIGNvbnN0MF9ydHggaW5zdGVhZCBvZiBHRU5fSU5UICgwKS4gIERvIHRoZSBzYW1lIGZvciBvdGhlcgoJY29uc3RhbnRzIHRoYXQgYXJlIHJlYWRpbHkgYXZhaWxhYmxlLgoKMjAwNC0wMi0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvbG9vcC5jLCBvcHRhYnMuYywgcmVnbW92ZS5jLCBzY2hlZC1kZXBzLmMsCgljb25maWcvaTM4Ni9pMzg2LmMsIGNvbmZpZy9pMzg2L2kzODYubWQ6IFVzZSBjb25zdDBfcnR4CglpbnN0ZWFkIG9mIEdFTl9JTlQgKDApLiAgRG8gdGhlIHNhbWUgZm9yIG90aGVyIGNvbnN0YW50cyB0aGF0CglhcmUgcmVhZGlseSBhdmFpbGFibGUuCgoyMDA0LTAyLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zZXQpOiBVc2UgZ2VuX3J0eF9mbXRfZSBpbnN0ZWFkIG9mCglnZW5fcnR4LgoJKiBlbWl0LXJ0bC5jIChpbml0X2VtaXRfb25jZSk6IFVzZSBnZW5fcnR4X1BDIGFuZCBnZW5fcnR4X0NDMAoJaW5zdGVhZCBvZiBnZW5fcnR4LgoJKiByZWxvYWQxLmMgKGluaXRfZWxpbV90YWJsZSk6IFVzZSBnZW5fcnR4X2ZtdF9lIGluc3RlYWQgb2YKCWdlbl9ydHguCgkqIGNvbmZpZy9uczMyay9uczMyay5tZCAodWRpdm1vZGhpNCk6IFVzZSBnZW5fcnR4X0lPUiBhbmQKCWdlbl9ydHhfQVNISUZUIGluc3RlYWQgb2YgZ2VuX3J0eC4KCSh1ZGl2bW9kcWk0KTogTGlrZXdpc2UuCgoyMDA0LTAyLTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xMzc4OQoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBVc2UgZm9yY2Vfb3BlcmFuZCBiZWZvcmUgZW1pdF9tb3ZlX2luc24uCgoyMDA0LTAyLTAyICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoJICAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHJlZS5jIChjb21tdXRhdGl2ZV90cmVlX2NvZGUsIGFzc29jaWF0aXZlX3RyZWVfY29kZSk6IE5ldwoJZnVuY3Rpb25zLgoJKGl0ZXJhdGl2ZV9oYXNoX2V4cHIpOiBVc2UgY29tbXV0YXRpdmVfdHJlZV9jb2RlLgoJKiB0cmVlLmggKGNvbW11dGF0aXZlX3RyZWVfY29kZSwgYXNzb2NpYXRpdmVfdHJlZV9jb2RlKTogRGVjbGFyZS4KCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3ApOiBVc2UgY29tbXV0YXRpdmVfdHJlZV9jb2RlCglyYXRoZXIgdGhhbiBpbmxpbmluZyB0aGUgY29tbXV0YXRpdml0eSBjaGVjay4KCShmb2xkKTogTGlrZXdpc2UuCgoyMDA0LTAyLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc3lzdGVtLmggKEZVTkNUSU9OX0FSR19LRUVQX0FTX1JFRkVSRU5DRSk6IFBvaXNvbi4KCSogY29uZmlnL2Zydi9mcnYtcHJvdG9zLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJZnJ2X2Z1bmN0aW9uX2FyZ19rZWVwX2FzX3JlZmVyZW5jZS4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2Z1bmN0aW9uX2FyZ19rZWVwX2FzX3JlZmVyZW5jZSk6CglSZW1vdmUuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKEZVTkNUSU9OX0FSR19LRUVQX0FTX1JFRkVSRU5DRSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaDogUmVtb3ZlIHRoZSBjb21tZW50ZWQtb3V0CglkZWZpbml0aW9uIG9mIEZVTkNUSU9OX0FSR19LRUVQX0FTX1JFRkVSRU5DRS4KCjIwMDQtMDItMDMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0LzEzOTE0CgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiBVc2UgYXAKCWZvciByZXRhZGRyX2NvbHVtbi4KCjIwMDQtMDItMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnZW5lbWl0LmMgKGdlbl9leHApOiBHZW5lcmF0ZSBnZW5fcnR4X2ZtdF9lKiBpbnN0ZWFkIG9mCglnZW5fcnR4LgoKMjAwNC0wMi0wMiAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogQWRkIC1maW5wdXQtY2hhcnNldC4KCSogYy5vcHQ6IERpdHRvLgoJKiBjcHBjaGFyc2V0LmMgKG9uZV9pc284ODU5MV90b191dGY4KTogUmVtb3ZlLgoJKGNvbnZlcnRfaXNvODg1OTFfdXRmOCk6IERpdHRvLgoJKGNvbnZlcnNpb25fdGFiKTogUmVtb3ZlIDg4NTktMSBjb252ZXJ0ZXIuCgkoX2NwcF9pbnB1dF90b191dGY4KTogUmVtb3ZlLgoJKF9jcHBfaW5pdF9pY29udl9idWZmZXIpOiBEaXR0by4KCShfY3BwX2Nsb3NlX2ljb252X2J1ZmZlcik6IERpdHRvLgoJKF9jcHBfY29udmVydF9pbnB1dCk6IE5ldyBmdW5jdGlvbi4KCShfY3BwX2RlZmF1bHRfZW5jb2RpbmcpOiBEaXR0by4KCSogY3BwaGFzaC5oOiBBZGQvcmVtb3ZlIHByb3RvdHlwZXMgZm9yIGFib3ZlLgoJKiBjcHBmaWxlcy5jIChyZWFkX2ZpbGVfZ3V0cyk6IFVzZSBfY3BwX2NvbnZlcnRfaW5wdXQuCgkqIGNwcGluaXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIpOiBVc2UgX2NwcF9kZWZhdWx0X2VuY29kaW5nCglmb3IgbmFycm93IGV4ZWN1dGlvbiBhbmQgaW5wdXQgY2hhcmFjdGVyIHNldHMuCgkqIGNwcGxpYi5jIChjcHBfcHVzaF9idWZmZXIpOiBEZWxldGUgdXNlcyBvZiByZW1vdmVkIGZ1bmN0aW9ucy4KCSogZG9jL2NwcG9wdHMudGV4aTogRG9jdW1lbnQgLWZpbnB1dC1jaGFyc2V0LgoKMjAwNC0wMi0wMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnRsYW5hbC5jIChyZWZlcnNfdG9fcmVnbm9fcCk6IFRlc3QgcmVnbm8sIG5vdCBpbm5lcl9yZWdubywKCWFnYWluc3QgRklSU1RfUFNFVURPX1JFR0lTVEVSLgoKMjAwNC0wMi0wMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGRvYy9pbnZva2UudGV4aSAoU1BBUkMgb3B0aW9ucyk6IEZ1cnRoZXIgaW1wcm92ZS4KCjIwMDQtMDItMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXJtL2FybS5tZCwgY29uZmlnL2M0eC9jNHgubWQsIGNvbmZpZy9jcmlzL2NyaXMubWQsCgljb25maWcvaDgzMDAvaDgzMDAuYywgY29uZmlnL2lwMmsvaXAyay5tZCwKCWNvbmZpZy9pcTIwMDAvaXEyMDAwLmMsIGNvbmZpZy9taXBzL21pcHMuYywKCWNvbmZpZy9yczYwMDAvcnM2MDAwLmMsIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kLAoJY29uZmlnL3NoL3NoLmMsIGNvbmZpZy9zaC9zaC5tZCwgY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMsCgljb25maWcvdjg1MC92ODUwLm1kOiBGaXggaW5kZW50YXRpb24uCgoyMDA0LTAyLTAyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGZ1bmN0aW9uX2FyZ19zbG90bm8pOiBBbGlnbiBUSW1vZGUKCWFyZ3VtZW50cyBvbiBhIDE2LWJ5dGUgYm91bmRhcnkgaW4gdGhlIHBhcmFtZXRlciBhcnJheSBpZiBBUkNINjQuCglTcGxpdCBoYW5kbGluZyBvZiBURm1vZGUuCgoyMDA0LTAyLTAyICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogcnRsYW5hbC5jIChyZWdfb3ZlcmxhcF9tZW50aW9uZWRfcCkgWyFFTkFCTEVfQ0hFQ0tJTkddOgoJRG9uJ3QgdGVzdCBDT05TVEFOVF9QICh4KS4KCShyZWdfb3ZlcmxhcF9tZW50aW9uZWRfcCk6IE1lcmdlIGNoZWNrIGZvciBTVFJJQ1RfTE9XUEFSVCwKCVpFUk9fRVhUUkFDVCwgU0lHTl9FWFRSQUNUIHdpdGggdGhlIHN3aXRjaCBzdGF0ZW1lbnQuCglGaXggbWlzaW5kZW50YXRpb24uCgoyMDA0LTAyLTAyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL2ludm9rZS50ZXhpIChTUEFSQyBvcHRpb25zKTogRG9jdW1lbnQgdGhhdCAtbWZsYXQgaXMgZGVwcmVjYXRlZC4KCjIwMDQtMDItMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXJjL2FyYy5tZCwgY29uZmlnL2FybS9hcm0uYywgY29uZmlnL2FybS9hcm0ubWQsCgljb25maWcvYzR4L2M0eC5jLCBjb25maWcvYzR4L2M0eC5tZCwgY29uZmlnL2NyaXMvY3Jpcy5tZCwKCWNvbmZpZy9mcnYvZnJ2LmMsIGNvbmZpZy9oODMwMC9oODMwMC5jLCBjb25maWcvaXAyay9pcDJrLm1kLAoJY29uZmlnL2lxMjAwMC9pcTIwMDAuYywgY29uZmlnL20zMnIvbTMyci5jLAoJY29uZmlnL21jb3JlL21jb3JlLmMsIGNvbmZpZy9taXBzL21pcHMuYywgY29uZmlnL21taXgvbW1peC5tZCwKCWNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYywgY29uZmlnL3JzNjAwMC9yczYwMDAuYywKCWNvbmZpZy9yczYwMDAvcnM2MDAwLm1kLCBjb25maWcvc2gvc2guYywgY29uZmlnL3NoL3NoLm1kLAoJY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMsIGNvbmZpZy92ODUwL3Y4NTAubWQsCgljb25maWcveHRlbnNhL3h0ZW5zYS5jOiBSZXBsYWNlIGdlbl9ydHggd2l0aCBnZW5fcnR4X2ZtdF9lKi4KCjIwMDQtMDItMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYyAoYmxvY2tfbW92ZV9zZXF1ZW5jZSk6IFJlcGxhY2UKCWdlbl9ydHhfQ09OU1RfSU5UIHdpdGggR0VOX0lOVC4KCjIwMDQtMDItMDIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGFsaWFzLmMgKHJlY29yZF9zZXQpOiBVc2UgaGFyZF9yZWdub19ucmVncy4KCSogYnQtbG9hZC5jIChmaW5kX2J0cl9yZWZlcmVuY2UsIG5vdGVfYnRyX3NldCk6IExpa2V3aXNlLgoJKiBidWlsdGlucy5jIChhcHBseV9hcmdzX3NpemUpOiBMaWtld2lzZS4KCSogY2FsbGVyLXNhdmUuYyAoc2V0dXBfc2F2ZV9hcmVhcywgc2F2ZV9jYWxsX2Nsb2JiZXJlZF9yZWdzLAoJbWFya19zZXRfcmVncywgYWRkX3N0b3JlZF9yZWdzLCBtYXJrX3JlZmVyZW5jZWRfcmVncywKCWluc2VydF9yZXN0b3JlLCBpbnNlcnRfc2F2ZSwgaW5zZXJ0X29uZV9pbnNuKTogTGlrZXdpc2UuCgkqIGNmZ2NsZWFudXAuYzogSW5jbHVkZSByZWdzLmgKCShtYXJrX2VmZmVjdCwgbWVudGlvbnNfbm9uZXF1YWxfcmVncyk6IExpa2V3aXNlLgoJKiBjZmdydGwuYyAobWFya19raWxsZWRfcmVncyk6IExpa2V3aXNlCgkqIGNvbWJpbmUuYyAodXBkYXRlX3RhYmxlX3RpY2ssIHJlY29yZF92YWx1ZV9mb3JfcmVnLAoJcmVjb3JkX2RlYWRfYW5kX3NldF9yZWdzLCBnZXRfbGFzdF92YWx1ZV92YWxpZGF0ZSwgdXNlX2Nyb3NzZXNfc2V0X3AsCglyZWdfZGVhZF9hdF9wXzEsIHJlZ19kZWFkX2F0X3AsIG1hcmtfdXNlZF9yZWdzX2NvbWJpbmUsIG1vdmVfZGVhdGhzLAoJcmVnX2JpdGZpZWxkX3RhcmdldF9wLCBkaXN0cmlidXRlX25vdGVzKTogTGlrZXdpc2UuCgkqIGNzZS5jIChtZW50aW9uX3JlZ3MsIGluc2VydCwgaW52YWxpZGF0ZSwgaW52YWxpZGF0ZV9mb3JfY2FsbCwKCWV4cF9lcXVpdl9wLCBjc2VfaW5zbik6IExpa2V3aXNlLgoJKiBjc2VsaWIuYyAoY3NlbGliX2xvb2t1cCk6IExpa2V3aXNlLgoJKGNzZWxpYl9pbnZhbGlkYXRlX3JlZ25vLCBjc2VsaWJfcmVjb3JkX3NldCk6IExpa2V3aXNlLgoJKiBkZi5jIChkZl9yZWZfcmVjb3JkKTogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jIChyZWdfbG9jX2Rlc2NyaXB0b3IsIG11bHRpcGxlX3JlZ19sb2NfZGVzY3JpcHRvcik6CglMaWtld2lzZS4KCSogZmxvdy5jIChtYXJrX3JlZywgaW5zbl9kZWFkX3AsIG1hcmtfc2V0XzEsIG1hcmtfdXNlZF9yZWcsCgljb3VudF9vcl9yZW1vdmVfZGVhdGhfbm90ZXNfYmIpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYWdncmVnYXRlX3ZhbHVlX3AsIGtlZXBfc3RhY2tfZGVwcmVzc2VkKTogTGlrZXdpc2UuCgkqIGdsb3ZhbC5jIChnbG9iYWxfYWxsb2MsIGZpbmRfcmVnLCBtYXJrX3JlZ19zdG9yZSwgbWFya19yZWdfY29uZmxpY3RzLAoJbWFya19yZWdfZGVhdGgsIHNldF9wcmVmZXJlbmNlLCByZWdfYmVjb21lc19saXZlLCByZWdfZGllcyk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAobWFya19zdG9yZXMpOiBMaWtld2lzZS4KCSoganVtcC5jIChkZWxldGVfcHJpb3JfY29tcHV0YXRpb24pOiBMaWtld2lzZS4KCSogbGNtLmMgKHJlZ19kaWVzLCByZWdfYmVjb21lc19saXZlKTogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmMgKGNvbWJpbmVfcmVncywgZmluZF9mcmVlX3JlZywgcG9zdF9tYXJrX2xpZmUpOiBMaWtld2lzZS4KCSogbG9vcC5jIChMT09QX1JFR05PX05SRUdTKTogTGlrZXdpc2UuCgkqIHBvc3RyZWxvYWQuYyAocmVsb2FkX2NvbWJpbmUsIHJlbG9hZF9jb21iaW5lX25vdGVfc3RvcmUsCglyZWxvYWRfY29tYmluZV9ub3RlX3VzZSwgcmVsb2FkX2NzZV9tb3ZlMmFkZCwgbW92ZTJhZGRfbm90ZV9zdG9yZSk6IExpa2V3aXNlLgoJKiByYS1jb2xvcml6ZS5jIChjb21iaW5lLCBjb2xvcl91c2FibGVfcCwgZ2V0X2ZyZWVfcmVnLAoJY2FsY3VsYXRlX2RvbnRfYmVnaW4sIGNhbGN1bGF0ZV9kb250X2JlZ2luLCBjb2xvcml6ZV9vbmVfd2ViLAoJdHJ5X3JlY29sb3Jfd2ViLCBpbnNlcnRfY29hbGVzY2VkX2NvbmZsaWN0cywgY2hlY2tfY29sb3JzLAoJYnJlYWtfcHJlY29sb3JlZF9hbGlhcyk6IExpa2V3aXNlLgoJKiByYS1kZWJ1Zy5jOiBJbmNsdWRlIHJlZ3MuaAoJKHJhX3ByaW50X3J0eF9vYmplY3QpOiBMaWtld2lzZS4KCSogcmEtcmV3cml0ZSAoY2hvb3NlX3NwaWxsX2NvbG9ycyk6IExpa2V3aXNlLgoJKHNwaWxsX3NhbWVfY29sb3JfcCwgdXBkYXRlX3NwaWxsX2NvbG9ycywgc3BpbGxfaXNfZnJlZSk6IExpa2V3aXNlLgoJKiByYS5jIChpbml0X3JhKTogTGlrZXdpc2UuCgkqIHJlY29nLmMgKHJlZ19maXRzX2NsYXNzX3AsIHBlZXAyX3JlZ19kZWFkX3AsCglwZWVwMl9maW5kX2ZyZWVfcmVnaXN0ZXIpOiBMaWtld2lzZS4KCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0LCBjb252ZXJ0X3JlZ3NfZXhpdCk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChoYXJkX3JlZ25vX25yZWdzKTogTmV3IGFycmF5LgoJKGluaXRfcmVnX21vZGVzX29uY2UpOiBJbml0aWFsaXplIGl0LgoJKGNob29zZV9oYXJkX3JlZ19tb2RlKTogVXNlIGl0LgoJKHJlY29yZF9yZWdfY2xhc3Nlcyk6IExpa2V3aXNlLgoJKiByZWdtb3ZlLmMgKG1hcmtfZmxhZ3NfbGlmZV96b25lcyk6IExpa2V3aXNlLgoJKiByZWdyZW5hbWUuYyAobm90ZV9zZXRzLCBjbGVhcl9kZWFkX3JlZ3MsIHJlZ3JlbmFtZV9vcHRpbWl6ZSwKCXNjYW5fcnR4X3JlZywgZHVtcF9kZWZfdXNlX2NoYWluLCBraWxsX3ZhbHVlLCBzZXRfdmFsdWVfcmVnbm8sCgljb3B5X3ZhbHVlLCBtYXliZV9tb2RlX2NoYW5nZSwgZmluZF9vbGRlc3RfdmFsdWVfcmVnLAoJY29weXByb3BfaGFyZHJlZ19mb3J3YXJkXzEpOgoJKiByZWdzLmggKGhhcmRfcmVnbm9fbnJlZ3MpOiBEZWNsYXJlLgoJKiByZWFsb2QuYyAocmVsb2FkX2lubmVyX3JlZ19vZl9zdWJyZWcpOiBVc2UgaXQuCgkocHVzaF9yZWxvYWQsIGNvbWJpbmVfcmVsb2FkcywgZmluZF9kdW1teV9yZWxvYWQsCgloYXJkX3JlZ19zZXRfaGVyZV9wLCBvcGVyYW5kc19tYXRjaF9wLCBkZWNvbXBvc2UsIGZpbmRfcmVsb2FkcywKCXJlZmVyc190b19yZWdub19mb3JfcmVsb2FkX3AsIGZpbmRfZXF1aXZfcmVnLCByZWdub19jbG9iYmVyZWRfcCwKCXJlbG9hZF9hZGp1c3RfcmVnX2Zvcl9tb2RlKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoY29tcHV0ZV91c2VfYnlfcHNldWRvcywgY291bnRfcHNldWRvLAoJY291bnRfc3BpbGxlZF9wc2V1ZG8sIGZpbmRfcmVnLCBmaW5kX3JlbG9hZF9yZWdzLCBtYXJrX2hvbWVfbGl2ZSwKCXNwaWxsX2hhcmRfcmVnLCBmb3JnZXRfb2xkX3JlbG9hZHNfMSwgbWFya19yZWxvYWRfcmVnX2luX3VzZSwKCWNsZWFyX3JlbG9hZF9yZWdfaW5fdXNlLCByZWxvYWRfcmVnX2ZyZWVfZm9yX3ZhbHVlX3AsIGZyZWVfZm9yX3ZhbHVlX3AKCWFsbG9jYXRlX3JlbG9hZF9yZWcsIGNob29zZV9yZWxvYWRfcmVncywgZW1pdF9yZWxvYWRfaW5zbnMsCglkZWxldGVfb3V0cHV0X3JlbG9hZCk6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jICh1cGRhdGVfbGl2ZV9zdGF0dXMsIG1hcmtfcmVmZXJlbmNlZF9yZXNvdXJjZXMsCgltYXJrX3NldF9yZXNvdXJjZXMsIG1hcmtfdGFyZ2V0X2xpdmVfcmVncyk6IExpa2V3aXNlLgoJKiBydGxhbmFsLmM6IEluY2x1ZGUgcmVncy5oCgkocmVmZXJzX3RvX3JlZ25vX3AsIHJlZ19vdmVybGFwX21lbnRpb25lZF9wLCBkZWFkX29yX3NldF9wLAoJZGVhZF9vcl9zZXRfcmVnbm9fcCwgZmluZF9yZWdub19ub3RlLCBmaW5kX3JlZ19mdXNhZ2UsCglzdWJyZWdfcmVnbm9fb2Zmc2V0LCBzdWJyZWdfb2Zmc2V0X3JlcHJlc2VudGFibGVfcCwKCWhvaXN0X3Rlc3Rfc3RvcmUpOiBMaWtld2lzZS4KCSogc2NoZWQtZGVwcy5jIChzY2hlZF9hbmFseXplXzEsIHNjaGVkX2FuYWx5emVfMik6IExpa2V3aXNlLgoJKiBzY2hlZC1yZ24uYyAoY2hlY2tfbGl2ZV8xLCB1cGRhdGVfbGl2ZV8xKTogTGlrZXdpc2UuCgkqIHN0bXQuYzogSW5jbHVkZSByZWdzLmgKCShkZWNsX2NvbmZsaWN0c193aXRoX2Nsb2JiZXJzX3ApOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9ydGwpOiBMaWtld2lzZS4KCSogTWFrZWZpbGUuaW4gKGNmZ2NsZWFudXAubywgcnRsYW5hbC5vLCByYS1kZWJ1Zy5vKTogQWRkIHJlZ3MuaCBkZXBlbmRuZWN5LgoKMjAwNC0wMi0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMsIGNvbmZpZy9hcm0vYXJtLmgsIGNvbmZpZy9hcm0vYXJtLm1kLAoJY29uZmlnL2FybS9saW51eC1nYXMuaCwgY29uZmlnL2FybS9uZXRic2QtZWxmLmgsCgljb25maWcvYXJtL25ldGJzZC5oLCBjb25maWcvYXJtL3BlLmMsIGNvbmZpZy9hdnIvYXZyLmMsCgljb25maWcvYXZyL2F2ci5oLCBjb25maWcvYXZyL2F2ci5tZCwgY29uZmlnL2M0eC9jNHguaCwKCWNvbmZpZy9jcmlzL2NyaXMuaCwgY29uZmlnL2ZyMzAvZnIzMC5oLCBjb25maWcvZnJ2L2Zydi5jLAoJY29uZmlnL2Zydi9mcnYuaCwgY29uZmlnL2lwMmsvaXAyay5jLCBjb25maWcvaXEyMDAwL2lxMjAwMC5jLAoJY29uZmlnL2lxMjAwMC9pcTIwMDAuaCwgY29uZmlnL20zMnIvbTMyci5jLAoJY29uZmlnL202OGhjMTEvbTY4aGMxMS5jLCBjb25maWcvbTY4aGMxMS9tNjhoYzExLmgsCgljb25maWcvbTY4aGMxMS9tNjhoYzExLm1kLCBjb25maWcvbTY4ay9tNjhrLm1kLAoJY29uZmlnL21jb3JlL21jb3JlLmMsIGNvbmZpZy9tY29yZS9tY29yZS5oLAoJY29uZmlnL21jb3JlL21jb3JlLm1kLCBjb25maWcvbWlwcy9taXBzLmMsCgljb25maWcvbnMzMmsvbnMzMmsuaCwgY29uZmlnL25zMzJrL25zMzJrLm1kLAoJY29uZmlnL3JzNjAwMC9yczYwMDAuYywgY29uZmlnL3MzOTAvczM5MC5jLAoJY29uZmlnL3MzOTAvczM5MC5tZCwgY29uZmlnL3NwYXJjL3NwYXJjLmMsIGNvbmZpZy92ODUwL3Y4NTAuYywKCWNvbmZpZy94dGVuc2EveHRlbnNhLmgsIGNvbmZpZy94dGVuc2EveHRlbnNhLm1kOiBSZXBsYWNlCgkiZ2VuX3J0eCAoRk9PLCAiIHdpdGggImdlbl9ydHhfRk9PICgiLgoKMjAwNC0wMi0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAodHdvIHBlZXBob2xlMidzKTogTmV3LgoKMjAwNC0wMi0wMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zb2wyLWJpLmg6IEhhbmRsZSBUQVJHRVRfQ1BVX3VsdHJhc3BhcmMzLgoJKENQUF9DUFVfU1BFQyk6IEhhbmRsZSAtbWNwdT11bHRyYXNwYXJjMy4KCShBU01fQ1BVX1NQRUMpOiBMaWtld2lzZQoJKiBjb25maWcvc3BhcmMvc29sMi5oOiBIYW5kbGUgVEFSR0VUX0NQVV91bHRyYXNwYXJjMy4KCShBU01fQ1BVX1NQRUMpOiBSZW1vdmUgLW1jcHU9djhwbHVzLiAgSGFuZGxlIC1tY3B1PXVsdHJhc3BhcmMzLgoKMjAwNC0wMi0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9wb3cpOiBJZiBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMKCWlzbid0IHNldCwgZG9uJ3QgY2FsbCBleHBhbmRfYnVpbHRpbl9tYXRoZm5fMiB0byB1c2UgdGhlIHBvdyBvcHRhYi4KCShleHBhbmRfYnVpbHRpbik6IEFsd2F5cyBjYWxsIGV4cGFuZF9idWlsdGluX3Bvdy4KCjIwMDQtMDItMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9TSUdOQklULCBCVUlMVF9JTl9TSUdOQklURiwKCUJVSUxUX0lOX1NJR05CSVRMKTogTmV3IEdDQyBidWlsdGlucy4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc2lnbmJpdCk6IE5ldyBmdW5jdGlvbiB0byBSVEwgZXhwYW5kCgljYWxscyB0byBzaWduYml0LCBzaWduYml0ZiBhbmQgc2lnbmJpdGwgYXMgaW5saW5lIGludHJpbnNpY3MuCgkoZXhwYW5kX2J1aWx0aW4pOiBDYWxsIGV4cGFuZF9idWlsdGluX3NpZ25iaXQgZm9yIEJVSUxUX0lOX1NJR05CSVQqLgoJKGZvbGRfYnVpbHRpbl9zaWduYml0KTogTmV3IGZ1bmN0aW9uIHRvIHBlcmZvcm0gY29uc3RhbnQgZm9sZGluZwoJb2Ygc2lnbmJpdCwgc2lnbmJpdGYgYW5kIHNpZ25iaXRsLgoJKGZvbGRfYnVpbHRpbik6IENhbGwgZm9sZF9idWlsdGluX3NpZ25iaXQgZm9yIEJVSUxUX0lOX1NJR05CSVQqLgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBuZXcgc2lnbmJpdHssZixsfSBidWlsdGlucy4KCjIwMDQtMDItMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGFkZGRpM19pbnRlcm5hbF8yKTogUmVtb3ZlIHN1cGVyZmx1b3VzICVzLgoKMjAwNC0wMi0wMSAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQGJyb2FkY29tLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoUFJFRElDQVRFX0NPREVTKTogUmVtb3ZlIGVudHJpZXMgZm9yCgkibWlwc19jb25zdF9kb3VibGVfb2siIGFuZCAic2ltcGxlX21lbW9yeV9vcGVyYW5kIiwgd2hpY2ggd2VyZQoJcmVtb3ZlZCBmcm9tIHRoZSBNSVBTIHBvcnQgd2l0aCB0aGUgbWlwcy0zXzQtcmV3cml0ZSBicmFuY2ggbWVyZ2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwczE2X2xheV9vdXRfY29uc3RhbnRzKTogVXBkYXRlIGNvbW1lbnQKCWZvciByZW1vdmFsIG9mIHNpbXBsZV9tZW1vcnlfb3BlcmFuZC4KCjIwMDQtMDEtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYzR4L2M0eC5tZDogVXNlIEdFTl9JTlQgaW5zdGVhZCBvZgoJZ2VuX3J0eCAoQ09OU1RfSU5ULCAuLi4pLgoKMjAwNC0wMS0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RhbnRfcG9vbCk6IERvbid0IHphcCB0aGUgcG9vbC4KCjIwMDQtMDEtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnZW5yZWNvZy5jIChkZWNpc2lvbl90eXBlKTogQWRkIERUX2NvbnN0X2ludC4KCSh3cml0ZV9jb25kKSBbRFRfY29uc3RfaW50XTogUHJpbnQgYSBjb21wYXJpc29uIGFnYWluc3Qgc21hbGwKCWNvbnN0YW50LgoJKHdyaXRlX25vZGUpOiBTaW1wbGlmeSBjb21wYXJpc29ucyBhZ2FpbnN0IHNtYWxsIGNvbnN0YW50cwoJYmVmb3JlIHByaW50aW5nIHRlc3RzLgoKMjAwNC0wMS0zMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAobTMycl9sb2FkX3BpY19yZWdpc3Rlcik6IFVzZSBHRU5fSU5UCglpbnN0ZWFkIG9mIGdlbl9ydHhfQ09OU1RfSU5ULgoKMjAwNC0wMS0zMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKERZTkFNSUNfQ0hBSU5fQUREUkVTUyk6IFVzZSBHRU5fSU5UCglpbnN0ZWFkIG9mIGdlbl9ydHhfQ09OU1RfSU5ULgoKMjAwNC0wMS0zMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX1NUUklDVF9BUkdVTUVOVF9OQU1JTkcpOiBEZWZpbmUgYXMKCWhvb2tfYm9vbF9DVU1VTEFUSVZFX0FSR1NfZmFsc2UuCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X3N0cmljdF9hcmd1bWVudF9uYW1pbmcpOiBSZW5hbWUgdG8KCWhvb2tfYm9vbF9DVU1VTEFUSVZFX0FSR1NfZmFsc2UuCgkqIHRhcmdob29rcy5oOiBVcGRhdGUgdGhlIHByb3RvdHlwZSBmb3IKCWRlZmF1bHRfc3RyaWN0X2FyZ3VtZW50X25hbWluZy4KCjIwMDQtMDEtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvc2gvc2guYzogUmVwbGFjZSAiZ2VuX3J0eCAoRk9PLCAiIHdpdGggImdlbl9ydHhfRk9PICgiLgoJKiBjb25maWcvc2gvc2guaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5tZDogTGlrZXdpc2UuCgoyMDA0LTAxLTMxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL2ludm9rZS50ZXhpIChTUEFSQyBvcHRpb25zKTogUmVzdHJ1Y3R1cmUgYW5kIHVwZGF0ZS4KCjIwMDQtMDEtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzeXN0ZW0uaCAoUFJPTU9URV9GVU5DVElPTl9BUkdTLCBTVFJVQ1RfVkFMVUVfSU5DT01JTkcsIGFuZAoJU1RSSUNUX0FSR1VNRU5UX05BTUlORyk6IFBvaXNvbi4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTKTogRGVmaW5lIGFzCglob29rX2Jvb2xfdHJlZV9mYWxzZS4KCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfcHJvbW90ZV9mdW5jdGlvbl9hcmdzKTogUmVtb3ZlLgoJKGRlZmF1bHRfc3RydWN0X3ZhbHVlX3J0eCk6IERvbid0IHVzZSBTVFJVQ1RfVkFMVUVfSU5DT01JTkcuCglEb24ndCBjaGVjayBpbmNvbWluZy4KCShkZWZhdWx0X3N0cmljdF9hcmd1bWVudF9uYW1pbmcpOiBEb24ndCB1c2UKCVNUUklDVF9BUkdVTUVOVF9OQU1JTkcuCgkqIHRhcmdob29rcy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWRlZmF1bHRfcHJvbW90ZV9mdW5jdGlvbl9hcmdzLgoKMjAwNC0wMS0zMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJaXg4Nl9zZXR1cF9pbmNvbWluZ192YXJhcmdzLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKFRBUkdFVF9TRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogTmV3LgoJKGl4ODZfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IE1ha2UgaXQgc3RhdGljLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBSZW1vdmUuCgoyMDA0LTAxLTMxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYWxsb2MtcG9vbC5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogYnVpbHRpbi10eXBlcy5kZWY6IExpa2V3aXNlLgoJKiBidWlsdGlucy5kZWY6IExpa2V3aXNlLgoJKiBjLXByZXR0eS1wcmludC5jOiBMaWtld2lzZS4KCSogZGYuaDogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYzogTGlrZXdpc2UuCgoyMDA0LTAxLTMxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2ludm9rZS50ZXhpOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGRvYy90bS50ZXhpOiBMaWtld2lzZS4KCjIwMDQtMDEtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBGaXggdHlwb3MuCgkqIGRvYy9pbnZva2UudGV4aTogTGlrZXdpc2UuCgoyMDA0LTAxLTMxICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZGVjb21wb3NlX2FkZHJlc3MpOiBEbyBub3QgdHJlYXQgdmlydHVhbAoJcmVnaXN0ZXJzIGFzIHBvaW50ZXJzLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmxhXzMxIiBzZWNvbmQgcGVlcGhvbGUyKTogRml4IGluY29ycmVjdCBtb2RlLgoKMjAwNC0wMS0zMSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbWJpbmUuYyAoY3NlX21haW4pOiBTZXQgZ2VuX2xvd3BhcnQgdG8gZ2VuX2xvd3BhcnRfZm9yX2NvbWJpbmUKCWFuZCByZXN0b3JlIGl0IHRvIGdlbl9sb3dwYXJ0X2dlbmVyYWwgb24gZXhpdC4KCShnZW5fbG93cGFydF9mb3JfY29tYmluZSk6IEFkanVzdCBhbGwgY2FsbGVycyB0byBnbyB0aHJvdWdoCglnZW5fbG93cGFydC4KCSogY3NlLmMgKGNzZV9tYWluKTogU2V0IGdlbl9sb3dwYXJ0IHRvIGdlbl9sb3dwYXJ0X2lmX3Bvc3NpYmxlCglhbmQgcmVzdG9yZSBpdCB0byBnZW5fbG93cGFydF9nZW5lcmFsIG9uIGV4aXQuCgkoZ2VuX2xvd3BhcnRfaWZfcG9zc2libGUpOiBBZGp1c3QgYWxsIGNhbGxlcnMgdG8gZ28gdGhyb3VnaAoJZ2VuX2xvd3BhcnQuCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0X2dlbmVyYWwpOiBOZXcgbmFtZSBvZiBnZW5fbG93cGFydC4KCShnZW5fbG93cGFydCk6IERlY2xhcmUgYXMgcG9pbnRlciB0byBmdW5jdGlvbiwgaW5pdGlhbGl6ZWQgdG8KCWdlbl9sb3dwYXJ0X2dlbmVyYWwuCgkqIHJ0bC5oIChnZW5fbG93cGFydCk6IERlY2xhcmUgYXMgcG9pbnRlciB0byBmdW5jdGlvbi4KCjIwMDQtMDEtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBidC1sb2FkLmM6IFJlcGxhY2UgImdlbl9ydHggKEZPTywgIiB3aXRoICJnZW5fcnR4X0ZPTyAoIi4KCSogY2FsbHMuYzogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmM6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvY3lnbWluZy5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvd2lubnQuYzogTGlrZXdpc2UuCgoyMDA0LTAxLTMwICBEYXJhIEhhemVnaGkgIDxkaGF6ZWdoaUB5YWhvby5jb20+CgoJUFIgYm9vdHN0cmFwLzkyNDkKCSogZG9jL2luc3RhbGwudGV4aTogZG9jdW1lbnQgLS1lbmFibGUtX19jeGFfYXRleGl0IG9wdGlvbi4KCSogY29uZmlndXJlLmFjOiBEaXNhYmxlIF9fY3hhX2F0ZXhpdCBpZiBub3Qgc3VwcG9ydGVkLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTAxLTMwICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGdnYy16b25lLmMgKGdnY19mcmVlKTogTmV3IGZ1bmN0aW9uLgoKMjAwNC0wMS0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglhbGxvYy1wb29sLmMsIGMtbGV4LmMsIGMtcHJhZ21hLmgsIGMtc2VtYW50aWNzLmMsIGNmZ2hvb2tzLmMsCgljZmdob29rcy5oLCBjZmdsYXlvdXQuYywgY2ZnbG9vcG1hbmlwLmMsIGRlYnVnLmMsIGRlYnVnLmgsCglmbG93LmMsIGdlbmV4dHJhY3QuYywgZ2djLWNvbW1vbi5jLCBnZ2MtcGFnZS5jLCBnZ2MuaCwKCWlmY3Z0LmMsIGp1bXAuYywgbG9vcC11bnN3aXRjaC5jLCB0aW1ldmFyLmMsIHRpbWV2YXIuZGVmLAoJdHJlZS1vcHRpbWl6ZS5jLCB2bXNkYmdvdXQuYywgY29uZmlnL2ZwLWJpdC5jLAoJY29uZmlnL2FscGhhL2FscGhhLmMsIGNvbmZpZy9hbHBoYS9hbHBoYS5oLAoJY29uZmlnL2FscGhhL2FscGhhLm1kLCBjb25maWcvYWxwaGEvdW5pY29zbWsuaCwKCWNvbmZpZy9hbHBoYS92bXMuaCwgY29uZmlnL2FybS9saW51eC1lbGYuaCwgY29uZmlnL2F2ci9hdnIuYywKCWNvbmZpZy9jNHgvYzR4LXByb3Rvcy5oLCBjb25maWcvYzR4L2M0eC5tZCwKCWNvbmZpZy9kMzB2L2QzMHYuaCwgY29uZmlnL2Zydi9mcnYubWQsIGNvbmZpZy9mcnYvZnJ2YmVnaW4uYywKCWNvbmZpZy9mcnYvZnJ2ZW5kLmMsIGNvbmZpZy9pMzg2L2N5Z21pbmcuaCwKCWNvbmZpZy9pMzg2L2RqZ3BwLmgsIGNvbmZpZy9pMzg2L2VtbWludHJpbi5oLAoJY29uZmlnL2kzODYvZ3Roci13aW4zMi5jLCBjb25maWcvaTM4Ni9pMzg2LWludGVyaXguaCwKCWNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgsIGNvbmZpZy9pMzg2L29wZW5ic2QuaCwKCWNvbmZpZy9pMzg2L3dpbm50LmMsIGNvbmZpZy9pMzg2L3htLW1pbmd3MzIuaCwKCWNvbmZpZy9pMzg2L3htbWludHJpbi5oLCBjb25maWcvaWE2NC9pYTY0Lm1kLAoJY29uZmlnL2lxMjAwMC9pcTIwMDAubWQsIGNvbmZpZy9tMzJyL20zMnIubWQsCgljb25maWcvbTY4ay9tNjhrLm1kLCBjb25maWcvbWNvcmUvbWNvcmUtZWxmLmgsCgljb25maWcvbWNvcmUvbWNvcmUubWQsIGNvbmZpZy9taXBzL2VsZi5oLCBjb25maWcvbWlwcy9lbGY2NC5oLAoJY29uZmlnL21pcHMvaXJpczVnYXMuaCwgY29uZmlnL21pcHMvaXJpczYuaCwKCWNvbmZpZy9taXBzL2lyaXM2Z2FzLmgsIGNvbmZpZy9taXBzL2xpbnV4LmgsCgljb25maWcvbWlwcy9taXBzLm1kLCBjb25maWcvbWlwcy9uZXRic2QuaCwKCWNvbmZpZy9taXBzL29wZW5ic2QuaCwgY29uZmlnL21pcHMvd2luZGlzcy5oLAoJY29uZmlnL3BhL2ZwdHIuYywgY29uZmlnL3JzNjAwMC9haXguaCwKCWNvbmZpZy9yczYwMDAvYWx0aXZlYy5oLCBjb25maWcvcnM2MDAwL2Rhcndpbi5oLAoJY29uZmlnL3JzNjAwMC94Y29mZi5oLCBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oLAoJY29uZmlnL3MzOTAvczM5MC5jLCBjb25maWcvczM5MC9zMzkwLmgsIGNvbmZpZy9zMzkwL3MzOTAubWQsCgljb25maWcvc2gvbmV0YnNkLWVsZi5oLCBjb25maWcvc2gvc2guaCwgY29uZmlnL3NoL3Z4d29ya3MuaCwKCWNvbmZpZy9zcGFyYy9zb2wyLmg6IFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA0LTAxLTMwICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGFic19kb2NkaXIsIGFic19zcmNkaXIpOiBEZWZpbmUuCgkoZG9jLyUuZHZpLCBkb2MvZ2NjaW5zdGFsbC5kdmkpOiBVc2UgJChhYnNfZG9jZGlyKS4KCjIwMDQtMDEtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnZW5jb25maWcuYyAobWFpbik6IEhhdmUgQ0MwX1AgY2hlY2sgaXRzIG9wZXJhbmQgZXZlbiBvbiBhCgl0YXJnZXQgd2l0aG91dCBjYzAuCgoyMDA0LTAxLTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FscGhhL2FscGhhLmM6IFJlbW92ZSBtZW50aW9ucyBvZiBkZXByZWNhdGVzIG1hY3JvcwoJaW4gY29tbWVudHMsIHJlbW92ZSBzb21lIHRhcmdldC1pbmRlcGVuZGVudCBjb21tZW50cyBhYm91dCB0YXJnZXQKCW1hY3JvcywgYW5kL29yIGFkZCBtaW5pbWFsIGZ1bmN0aW9uIGNvbW1lbnRzIGZvciB0YXJnZXQgaG9vawoJaW1wbGVtZW50YXRpb25zLgoJKiBjb25maWcvYXZyL2F2ci5jOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oOiBMaWtld2lzZS4KCSogY29uZmlnL2lwMmsvaXAyay5jOiBMaWtld2lzZS4KCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jOiBMaWtld2lzZS4KCSogY29uZmlnL21taXgvbW1peC5jOiBMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLmM6IExpa2V3aXNlLgoJKiBjb25maWcvcGRwMTEvcGRwMTEuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmM6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jOiBMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYzogTGlrZXdpc2UuCgoyMDA0LTAxLTMwICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEyMTQ3CgkqIHJlbG9hZDEuYyAocmVsb2FkX3JlZ19mcmVlX3ApOiBSRUxPQURfT1RIRVIgY29uZmxpY3RzIHdpdGgKCVJFTE9BRF9GT1JfT1BBRERSX0FERFIuCgkocmVsb2FkX3JlZ19yZWFjaGVzX2VuZF9wKTogUkVMT0FEX0ZPUl9PVEhFUl9BRERSRVNTIHJlZ2lzdGVyCgltaWdodCBiZSByZXVzZWQgYXMgUkVMT0FEX0ZPUl9PUEFERFJfQUREUiByZWdpc3Rlci4KCjIwMDQtMDEtMzAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlbG9hZC5jIChnZXRfc2Vjb25kYXJ5X21lbSk6IEZpeCB1cGRhdGluZyBvZgoJc2Vjb25kYXJ5X21lbWxvY3NfZWxpbV91c2VkLgoKMjAwNC0wMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChzdHJ1Y3QgcnR4X2NvbnN0LCBzdHJ1Y3QgcG9vbF9jb25zdGFudCk6IFJlbW92ZS4KCShNQVhfUlRYX0hBU0hfVEFCTEUpOiBSZW1vdmUuCgkoY29uc3RfcnR4X2hhc2hfdGFibGUsIGNvbnN0X3J0eF9zeW1faGFzaF90YWJsZSk6IFJlbW92ZS4KCShmaXJzdF9wb29sLCBsYXN0X3Bvb2wsIHBvb2xfb2Zmc2V0KTogUmVtb3ZlLgoJKHN0cnVjdCBydHhfY29uc3RhbnRfcG9vbCk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKHN0cnVjdCB2YXJhc21fc3RhdHVzKTogLi4uIGhlcmUuICBSZWZlcmVuY2Ugb25lIHZpYSBwb2ludGVyLgoJKHN0cnVjdCBjb25zdGFudF9kZXNjcmlwdG9yX3J0eCk6IE1lcmdlIHN0cnVjdCBwb29sX2NvbnN0YW50LgoJKFNZTUhBU0gpOiBSZW1vdmUuCgkoZGVjb2RlX3J0eF9jb25zdCk6IFJlbW92ZS4KCShjb25zdF9oYXNoX3J0eCwgY29tcGFyZV9jb25zdGFudF9ydHgpOiBSZW1vdmUuCgkocmVjb3JkX2NvbnN0YW50X3J0eCk6IFJlbW92ZS4KCShjb25zdF9kZXNjX3J0eF9oYXNoLCBjb25zdF9kZXNjX3J0eF9lcSk6IE5ldy4KCShjb25zdF9kZXNjX3J0eF9zeW1faGFzaCwgY29uc3RfZGVzY19ydHhfc3ltX2VxKTogTmV3LgoJKGNvbnN0X3J0eF9oYXNoXzEsIGNvbnN0X3J0eF9oYXNoKTogTmV3LgoJKGluaXRfdmFyYXNtX3N0YXR1cyk6IEFsbG9jYXRlIGEgcnR4X2NvbnN0YW50X3Bvb2wsIGFuZCBpdHMgaGFzaGVzLgoJKHNpbXBsaWZ5X3N1YnRyYWN0aW9uKTogVXNlIHNpbXBsaWZ5X3J0eC4KCShmb3JjZV9jb25zdF9tZW0pOiBSZXdyaXRlIHRvIHVzZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLgoJKGZpbmRfcG9vbF9jb25zdGFudCk6IExpa2V3aXNlLgoJKGdldF9wb29sX2NvbnN0YW50LCBnZXRfcG9vbF9jb25zdGFudF9tYXJrLAoJZ2V0X3Bvb2xfY29uc3RhbnRfZm9yX2Z1bmN0aW9uLCBnZXRfcG9vbF9tb2RlLAoJZ2V0X3Bvb2xfbW9kZV9mb3JfZnVuY3Rpb24sIGdldF9wb29sX29mZnNldCwgZ2V0X3Bvb2xfc2l6ZSk6IExpa2V3aXNlLgoJKG91dHB1dF9jb25zdGFudF9wb29sXzIpOiBTcGxpdCBvdXQgZnJvbSBvdXRwdXRfY29uc3RhbnRfcG9vbC4KCShvdXRwdXRfY29uc3RhbnRfcG9vbF8xKTogTGlrZXdpc2UuICBVc2UgbmV3IHBvb2wgZGF0YXN0cnVjdHVyZXMuCgkob3V0cHV0X2NvbnN0YW50X3Bvb2wpOiBaYXAgZW50aXJlIHBvb2wgZGF0YXN0cnVjdHVyZS4KCShtYXJrX2NvbnN0YW50KTogVXNlIG5ldyBwb29sIGRhdGFzdHJ1Y3R1cmVzLgoJKG1hcmtfY29uc3RhbnRzKTogVXNlIGZvcl9lYWNoX3J0eC4KCShtYXJrX2NvbnN0YW50X3Bvb2wpOiBVc2UgbmV3IHBvb2wgZGF0YXN0cnVjdHVyZXMuCgoyMDA0LTAxLTMwICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X21vdmUpOiBSZW1vdmUgI2lmIDAuCglDb3B5IG9wZXJhbmRzWzFdIHRvIHBzZXVkbyBmb3Igc2ltcGxpZnlfZ2VuX3N1YnJlZy4KCjIwMDQtMDEtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnY3NlLmMgKGJ5cGFzc19ibG9jayk6IEZpeCBhIHR5cG8gaW4gdGhlIHByZXZpb3VzIGNoZWNrLWluCgl0byB0aGUgZmlsZS4KCjIwMDQtMDEtMzAgIEFuZHJldyBQaW5za2kgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB0b3BsZXYuYzogSW5jbHVkZSBhbGxvYy1wb29sLmguCgkqIE1ha2VmaWxlLmluICh0b3BsZXYuYyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDA0LTAxLTMwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zaGlmdF9jb25zdCwgY2FzZSBYT1IpOiBCZSBjYXJlZnVsIHdoZW4KCWNvbW11dGluZyBYT1Igd2l0aCBBU0hJRlRSVC4KCjIwMDQtMDEtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglzcGFyY19idWlsdGluX3NhdmVyZWdzLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUyk6IE5ldy4KCShUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4pOiBMaWtld2lzZS4KCShUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBMaWtld2lzZS4KCShUQVJHRVRfUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoJKFRBUkdFVF9FWFBBTkRfQlVJTFRJTl9TQVZFUkVHUyk6IExpa2V3aXNlLgoJKFRBUkdFVF9TVFJJQ1RfQVJHVU1FTlRfTkFNSU5HKTogTGlrZXdpc2UuCgkoc3BhcmNfYnVpbHRpbl9zYXZlcmVncyk6IE1ha2UgaXQgc3RhdGljLgoJKHNwYXJjX3Byb21vdGVfcHJvdG90eXBlcyk6IE5ldy4KCShzcGFyY19zdHJ1Y3RfdmFsdWVfcnR4KTogTGlrZXdpc2UuCgkoc3BhcmNfcmV0dXJuX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaDogKFBST01PVEVfRlVOQ1RJT05fQVJHUyk6IFJlbW92ZS4KCShQUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IExpa2V3aXNlLgoJKFJFVFVSTl9JTl9NRU1PUlkpOiBMaWtld2lzZS4KCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCShTVFJVQ1RfVkFMVUVfSU5DT01JTkcpOiBMaWtld2lzZS4KCShFWFBBTkRfQlVJTFRJTl9TQVZFUkVHUyk6IExpa2V3aXNlLgoJKFNUUklDVF9BUkdVTUVOVF9OQU1JTkcpOiBMaWtld2lzZS4KCShQUk9NT1RFX1BST1RPVFlQRVMpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChQUk9NT1RFX01PREUpOiBVc2Ugd29yZF9tb2RlLgoKMjAwNC0wMS0zMCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBjLzEyODE4CgkqIHZhcmFzbS5jIChjb25zdF9oYXNoXzEpIDxTVFJJTkdfQ1NUPjogVXNlIHRoZQoJYWRkcmVzcyB0byBjb21wdXRlIHRoZSBoYXNoIHZhbHVlIGlmIGZsYWdfd3JpdGFibGVfc3RyaW5ncy4KCShjb21wYXJlX2NvbnN0YW50KSA8U1RSSU5HX0NTVD46IENvbXBhcmUgdGhlIGFkZHJlc3NlcwoJaWYgZmxhZ193cml0YWJsZV9zdHJpbmdzLgoJKGJ1aWxkX2NvbnN0YW50X2Rlc2MpOiBEbyBub3QgY29weSB0aGUgZXhwcmVzc2lvbiBmb3IgYQoJU1RSSU5HX0NTVCBpZiBmbGFnX3dyaXRhYmxlX3N0cmluZ3MuCgoyMDA0LTAxLTMwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBhbGxvYy1wb29sLmM6IEluY2x1ZGUgaGFzaHRhYi5oCgkoYWxsb2NfcG9vbF9kZXNjcmlwdG9yKTogTmV3IHN0cnVjdHVyZQoJKGFsbG9jX3Bvb2xfaGFzaCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoaGFzaF9kZXNjcmlwdG9yLCBlcV9kZXNjcmlwdG9yLCBhbGxvY19wb29sX2Rlc2NyaXB0b3IpOiBOZXcuCgkoY3JlYXRlX2FsbG9jX3Bvb2wpOiBVcGRhdGUgc3RhdGlzdGljcy4KCShmcmVlX2FsbG9jX3Bvb2wpOiBMaWtld2lzZS4KCShwb29sX2FsbG9jKTogTGlrZXdpc2UuCgkob3V0cHV0X2luZm8pOiBOZXcgc3RydWN0dXJlCgkocHJpbnRfc3RhdGlzdGljcywgZHVtcF9hbGxvY19wb29sX3N0YXRpc3RpY3MpOiBOZXcgZnVuY3Rpb24uCgkqIGFsbG9jLXBvb2wuaCAoYWxsb2NfcG9vbF9kZWYpOiBUdXJuIG5hbWUgdG8gYmUgY29uc3RhbnQuCgkoZHVtcF9hbGxvY19wb29sX3N0YXRpc3RpY3MpOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAoZmluYWxpemUpOiBEdW1wIHN0YXRpc3RpY3MuCgoJKiByZWxvYWQuYyAoc2Vjb25kYXJ5X21lbWxvY3NfZWxpbV91c2VkKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShnZXRfc2Vjb25kYXJ5X21lbSk6IFVwZGF0ZSBpdC4KCShmaW5kX3JlbG9hZHMpOiBVc2UgaXQuCgoyMDA0LTAxLTMwICBTdGV2ZW4gQm9zc2NoZXIgPHMuYm9zc2NoZXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoKCSogdG9wbGV2LmM6IEZpeCBicm9rZW4gY2hlY2tpbiBvZiAyMDAzLTEyLTMwLCBhZ2Fpbi4KCjIwMDQtMDEtMzAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAoZ2NjX2N2X2FzX2R3YXJmMl9kZWJ1Z19saW5lKTogRW5hYmxlIHRlc3QgZm9yCglzMzkwKi0qLSogdGFyZ2V0cyBieSBzcGVjaWZ5aW5nIGEgJ25vcCcgaW5zbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wMS0zMCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTE0NzUKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChtb3ZoaV9sb19zdW0pOiBUaWdodGVuIHByZWRpY2F0ZXMuCgoyMDA0LTAxLTI5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGNoYW5nZV9hZGRyZXNzKTogVXNlIFhFWFAgKG1lbXJlZiwgMCkgaW5zdGVhZAoJb2YgYWRkciB3aGVuIGNyZWF0aW5nIE1FTSBjb3B5LgoKMjAwNC0wMS0yOSAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChnZW5fZmllbGRfZGllKTogRG8gbm90IGVxdWF0ZSBkZWNsIG51bWJlciB0byBkaWUuCgoyMDA0LTAxLTI4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCVBSIGlubGluZS1hc20vNjE2MgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzKTogT25seSBzdXBwb3J0IG9uZSBwYWlyIG9mIGNvbW11dGF0aXZlCglvcGVyYW5kcy4KCjIwMDQtMDEtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGphdmEvMTM4MjQKCSogdHJlZS5jICh1bnNhZmVfZm9yX3JlZXZhbCk6IEhhbmRsZSBFWElUX0JMT0NLX0VYUFIgbm9kZXMgc3BlY2lhbGx5CglhcyB0aGVpciBFWElUX0JMT0NLX0xBQkVMRURfQkxPQ0sgb3BlcmFuZHMgY2FuIGxlYWQgdG8gdW5ib3VuZGVkCglyZWN1cnNpb24uCgoyMDA0LTAxLTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2Zydi9mcnYuYzogRG9uJ3QgbWVudGlvbiBkZXByZWNhdGVkIG1hY3JvcyBpbgoJY29tbWVudHMuICBSZW1vdmUgc29tZSB0YXJnZXQtaW5kZXBlbmRlbnQgY29tbWVudHMgYWJvdXQKCXRhcmdldCBtYWNyb3MuCgkqIGNvbmZpZy9mcnYvZnJ2Lmg6IExpa2V3aXNlLgoKMjAwNC0wMS0yOSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY2ZnaG9va3MuYyAoc3BsaXRfYmxvY2spOiBTZXQgcHJvYmFiaWxpdHkgYW5kIGNvdW50IG9mIHRoZQoJbmV3IGVkZ2UuCgoyMDA0LTAxLTI5ICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBkd2FyZjJvdXQuYyAoc3RydWN0IGRpZV9zdHJ1Y3QpOiBBZGRlZCBmaWVsZCBkZWNsX2lkLgoJKGRlY2xfZGllX3RhYmxlKTogQ2hhbmdlZCB0byBoYXNoIHRhYmxlLgoJKGRlY2xfZGllX3RhYmxlX2FsbG9jYXRlZCk6IERlbGV0ZWQuCgkoZGVjbF9kaWVfdGFibGVfaW5fdXNlKTogRGVsZXRlZC4KCShERUNMX0RJRV9UQUJMRV9JTkNSRU1FTlQpOiBEZWxldGVkLgoJKGRlY2xfZGllX3RhYmxlX2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkoZGVjbF9kaWVfdGFibGVfZXEpOiBOZXcgZnVuY3Rpb24uCgkobG9va3VwX2RlY2xfZGllKTogTG9va3VwIGluIGEgaGFzaCB0YWJsZS4KCShlcXVhdGVfZGVjbF9udW1iZXJfdG9fZGllKTogSW5zZXJ0IGludG8gYSBoYXNoIHRhYmxlLgoJKGR3YXJmMm91dF9pbml0KTogSW5pdCBoYXNoIHRhYmxlIGRlY2xfZGllX3RhYmxlLgoKMjAwNC0wMS0yOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEzNDI0CgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3IpOiBSZXZlcnQgMjAwMy0xMi0wMyBjaGFuZ2UuCgoJKiBlbWl0LXJ0bC5jIChjaGFuZ2VfYWRkcmVzcyk6IENoZWNrIGFsc28gaWYgTUVNX0FUVFJTIGlzIHNldCBhcwoJZXhwZWN0ZWQgYmVmb3JlIHJldHVybmluZyBlYXJseS4gIEF2b2lkIHNoYXJpbmcgUlRMIGlmIHRoZXkKCW5lZWQgdG8gYmUgY2hhbmdlZC4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfbW92c3RyKTogUmV3b3JrIHJlcF9tb3YgYW5kIHN0cm1vdgoJaGFuZGxpbmcgc28gdGhhdCBtZW1vcnkgYXR0cmlidXRlcyBhcmUgcHJlc2VydmVkLiAgRG9uJ3QgY2FsbAoJaXg4Nl9zZXRfbW92ZV9tZW1fYXR0cnMuCgkoaXg4Nl9zZXRfbW92ZV9tZW1fYXR0cnNfMSwgaXg4Nl9zZXRfbW92ZV9tZW1fYXR0cnMpOiBSZW1vdmVkLgoJKGl4ODZfZXhwYW5kX2NscnN0cik6IFJlbmFtZSBzcmMgYXJndW1lbnQgdG8KCWRzdC4gIFJld29yayByZXBfc3RvcyBhbmQgc3Ryc2V0IGhhbmRsaW5nIHNvIHRoYXQgbWVtb3J5IGF0dHJpYnV0ZXMKCWFyZSBwcmVzZXJ2ZWQuCgkoaXg4Nl9leHBhbmRfc3RybGVuKTogUGFzcyBzcmMgYXJndW1lbnQgdG8KCWl4ODZfZXhwYW5kX3N0cmxlbnNpX3Vucm9sbF8xLiAgUmV3b3JrIHN0cmxlbnFpXzEgaGFuZGxpbmcgc28gdGhhdAoJbWVtb3J5IGF0dHJpYnV0ZXMgYXJlIHByZXNlcnZlZC4KCShpeDg2X2V4cGFuZF9zdHJsZW5zaV91bnJvbGxfMSk6IEFkZCBzcmMgYXJndW1lbnQuICBVc2UKCWNoYW5nZV9hZGRyZXNzIGluc3RlYWQgb2YgZ2VuX3J0eF9NRU0uCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHN0cm1vdiwgc3RybW92X3NpbmdsZW9wLCByZXBfbW92KTogTmV3CglleHBhbmRlcnMuCgkoc3RybW92ZGlfcmV4NjQsIHN0cm1vdnNpLCBzdHJtb3ZzaV9yZXg2NCwgc3RybW92aGksIHN0cm1vdmhpX3JleDY0LAoJc3RybW92cWksIHN0cm1vdnFpX3JleDY0KTogUmVtb3ZlLgoJKHJlcF9tb3YqLCBzdHJtb3YqKTogUHJlZml4IGluc24gbmFtZXMgd2l0aCAqLgoJKHN0cnNldCwgc3Ryc2V0X3NpbmdsZW9wLCByZXBfc3Rvcyk6IE5ldyBleHBhbmRlcnMuCgkoc3Ryc2V0ZGlfcmV4NjQsIHN0cnNldHNpLCBzdHJzZXRzaV9yZXg2NCwgc3Ryc2V0aGksIHN0cnNldGhpX3JleDY0LAoJc3Ryc2V0cWksIHN0cnNldHFpX3JleDY0KTogUmVtb3ZlLgoJKHJlcF9zdG9zKiwgc3Ryc2V0Kik6IFByZWZpeCBpbnNuIG5hbWVzIHdpdGggKi4KCShyZXBfc3Rvc3FpX3JleDY0KTogTGlrZXdpc2UuICBGaXggbW9kZSBvZiBkaXJmbGFnIHJlZyBmcm9tIERJbW9kZQoJdG8gU0ltb2RlLgoJKGNtcHN0cnNpKTogUmV3b3JrIGNtcHN0cnFpXzEgaGFuZGxpbmcgc28gdGhhdCBtZW1vcnkgYXR0cmlidXRlcwoJYXJlIHByZXNlcnZlZC4KCShjbXBzdHJxaV9uel8xLCBjbXBzdHJxaV9uel9yZXhfMSwgY21wc3RycWlfMSwgY21wc3RycWlfcmV4XzEpOgoJUHJlZml4IGluc24gbmFtZXMgd2l0aCAqLgoJKGNtcHN0cnFpX256XzEsIGNtcHN0cnFpXzEpOiBOZXcgZXhwYW5kZXJzLgoJKHN0cmxlbnFpXzEsIHN0cmxlbnFpX3JleF8xKTogUHJlZml4IGluc24gbmFtZXMgd2l0aCAqLgoJKHN0cmxlbnFpXzEpOiBOZXcgZXhwYW5kZXIuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoaXg4Nl9zZXRfbW92ZV9tZW1fYXR0cnMpOiBSZW1vdmUgcHJvdG90eXBlLgoKMjAwNC0wMS0yOSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogTWFrZWZpbGUuaW4gKGNmZ2hvb2tzLm8pOiBBZGQgVElNRVZBUl9IIGFuZCB0b3BsZXYuaCBkZXBlbmRlbmN5LgoJKiBiYXNpYy1ibG9jay5oICh0aWR5X2ZhbGx0aHJ1X2VkZ2UsIHRpZHlfZmFsbHRocnVfZWRnZXMsIGR1bXBfYmIsCgl2ZXJpZnlfZmxvd19pbmZvKTogRGVjbGFyYXRpb24gcmVtb3ZlZC4KCSogY2ZnLmMgKHZlcmlmeV9mbG93X2luZm8sIGR1bXBfYmIpOiBNb3ZlZCB0byBjZmdob29rcy5jLgoJKGRlYnVnX2JiLCBkZWJ1Z19iYl9uKTogQWRkIGFyZ3VtZW50IHRvIGR1bXBfYmIgY2FsbC4KCSogY2ZnY2xlYW51cC5jICh0cnlfc2ltcGxpZnlfY29uZGp1bXAsIHRyeV9jcm9zc2p1bXBfdG9fZWRnZSwKCXRyeV9vcHRpbWl6ZV9jZmcsIGRlbGV0ZV91bnJlYWNoYWJsZV9ibG9ja3MpOiBVc2UgZGVsZXRlX2Jhc2ljX2Jsb2NrCglpbnN0ZWFkIG9mIGRlbGV0ZV9ibG9jay4KCSogY2ZnaG9va3MuYzogSW5jbHVkZSB0aW1ldmFyLmggYW5kIHRvcGxldi5oLgoJKGNmZ19ob29rcyk6IERlZmluZSBoZXJlLgoJKHZlcmlmeV9mbG93X2luZm8sIGR1bXBfYmIpOiBNb3ZlZCBmcm9tIGNmZy5jLgoJKHJlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCwgcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoX2ZvcmNlLAoJc3BsaXRfYmxvY2ssIHNwbGl0X2Jsb2NrX2FmdGVyX2xhYmVscywgbW92ZV9ibG9ja19hZnRlciwKCWRlbGV0ZV9iYXNpY19ibG9jaywgc3BsaXRfZWRnZSwgY3JlYXRlX2Jhc2ljX2Jsb2NrLAoJY3JlYXRlX2VtcHR5X2JiLCBjYW5fbWVyZ2VfYmxvY2tzX3AsIG1lcmdlX2Jsb2NrcywKCW1ha2VfZm9yd2FyZGVyX2Jsb2NrLCB0aWR5X2ZhbGx0aHJ1X2VkZ2UsIHRpZHlfZmFsbHRocnVfZWRnZXMpOgoJTmV3IGZ1bmN0aW9ucy4KCSogY2ZnaG9va3MuaCAoc3RydWN0IGNmZ19ob29rcyk6IEFkZGVkIGZpZWxkcyBuYW1lLAoJbWFrZV9mb3J3YXJkZXJfYmxvY2ssIHRpZHlfZmFsbHRocnVfZWRnZSBhbmQKCW1vdmVfYmxvY2tfYWZ0ZXIuIENoYW5nZWQgdHlwZSBvZiB2ZXJpZnlfZmxvd19pbmZvLCBkdW1wX2JiLAoJc3BsaXRfYmxvY2sgZmllbGRzLiBSZW5hbWVkIGNmZ2hfc3BsaXRfZWRnZSBhbmQgZGVsZXRlX2Jsb2NrCglmaWVsZHMuCgkocmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoLCByZWRpcmVjdF9lZGdlX2FuZF9icmFuY2hfZm9yY2UsCglzcGxpdF9ibG9jaywgZGVsZXRlX2Jsb2NrLCBzcGxpdF9lZGdlLCBjcmVhdGVfYmFzaWNfYmxvY2ssCgljYW5fbWVyZ2VfYmxvY2tzX3AsIG1lcmdlX2Jsb2Nrcyk6IE1hY3JvcyByZW1vdmVkLgoJKGNmZ19ob29rcyk6IERvIG5vdCBleHBvcnQuCgkodmVyaWZ5X2Zsb3dfaW5mbywgZHVtcF9iYiwgcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoLAoJcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoX2ZvcmNlLCBzcGxpdF9ibG9jaywgc3BsaXRfYmxvY2tfYWZ0ZXJfbGFiZWxzLAoJbW92ZV9ibG9ja19hZnRlciwgZGVsZXRlX2Jhc2ljX2Jsb2NrLCBzcGxpdF9lZGdlLCBjcmVhdGVfYmFzaWNfYmxvY2ssCgljcmVhdGVfZW1wdHlfYmIsIGNhbl9tZXJnZV9ibG9ja3NfcCwgbWVyZ2VfYmxvY2tzLAoJbWFrZV9mb3J3YXJkZXJfYmxvY2ssIHRpZHlfZmFsbHRocnVfZWRnZSwgdGlkeV9mYWxsdGhydV9lZGdlcyk6CglEZWNsYXJlLgoJKGNmZ19sYXlvdXRfcnRsX2NmZ19ob29rcyk6IERlY2xhcmUuCgkqIGNmZ2xvb3AuYyAodXBkYXRlX2xhdGNoX2luZm8sIG1mYl9rZWVwX2p1c3QsIG1mYl9rZWVwX25vbmxhdGNoKToKCU5ldyBmdW5jdGlvbnMuCgkoY2Fub25pY2FsaXplX2xvb3BfaGVhZGVycyk6IFVzZSBuZXcgc2VtYW50aWNzIG9mIG1ha2VfZm9yd2FyZGVyX2Jsb2NrLgoJKHJlZGlyZWN0X2VkZ2Vfd2l0aF9sYXRjaF91cGRhdGUpOiBSZW1vdmVkLgoJKG1ha2VfZm9yd2FyZGVyX2Jsb2NrKTogTW92ZWQgdG8gY2ZnaG9va3MuYywgc2VtYW50aWNzIGNoYW5nZWQuCgkqIGNmZ2xvb3BtYW5pcC5jIChyZW1vdmVfYmJzKTogRG8gbm90IHVwZGF0ZSBkb21pbmF0b3JzIGhlcmUuCgkqIGNmZ3J0bC5jIChjZmdfbGF5b3V0X3NwbGl0X2Jsb2NrLCBydGxfc3BsaXRfYmxvY2ssIHJ0bF9kdW1wX2JiLAoJcnRsX2RlbGV0ZV9ibG9jaywgcnRsX3NwbGl0X2Jsb2NrLCBydGxfbWVyZ2VfYmxvY2tzLAoJdGlkeV9mYWxsdGhydV9lZGdlLCBydGxfc3BsaXRfZWRnZSwgY2ZnX2xheW91dF9kZWxldGVfYmxvY2ssCgljZmdfbGF5b3V0X21lcmdlX2Jsb2NrcywgY2ZnX2xheW91dF9zcGxpdF9lZGdlKTogUGFydGx5IG1vdmVkIHRvCgljZmdob29rcy5jLgoJKHJ0bF9jcmVhdGVfYmFzaWNfYmxvY2spOiBDb2Rpbmcgc3R5bGUgZml4LgoJKHJ0bF90aWR5X2ZhbGx0aHJ1X2VkZ2UsIHJ0bF9tb3ZlX2Jsb2NrX2FmdGVyLAoJcnRsX21ha2VfZm9yd2FyZGVyX2Jsb2NrKTogTmV3IGZ1bmN0aW9ucy4KCSh1cGRhdGVfY2ZnX2FmdGVyX2Jsb2NrX21lcmdpbmcpOiBSZW1vdmVkLgoJKHJ0bF9jZmdfaG9va3MsIGNmZ19sYXlvdXRfcnRsX2NmZ19ob29rcyk6IEZpbGwgaW4gbmV3IGVudHJpZXMuCgkqIGZsb3cuYyAodmVyaWZ5X3dpZGVfcmVnLCB2ZXJpZnlfbG9jYWxfbGl2ZV9hdF9zdGFydCk6IEFkZCBhcmd1bWVudAoJdG8gZHVtcF9iYi4KCSogaWZjdnQuYyAobWVyZ2VfaWZfYmxvY2ssIGZpbmRfY29uZF90cmFwLCBmaW5kX2lmX2Nhc2VfMSwKCWZpbmRfaWZfY2FzZV8yKTogRG9uJ3QgdXBkYXRlIGRvbWluYXRvcnMuCgkqIHRpbWV2YXIuZGVmIChUVl9DRkdfVkVSSUZZKTogTmV3LgoJKiBsb29wLXVuc3dpdGNoLmMgKHVuc3dpdGNoX2xvb3ApOiBEb24ndCBjYWxsIGFkZF90b19kb21pbmFuY2VfaW5mby4KCSogY2ZnbGF5b3V0LmMgKGNvcHlfYmJzKTogRG9uJ3QgY2FsbCBhZGRfdG9fZG9taW5hbmNlX2luZm8uCgkqIGNmZ2xvb3BtYW5pcC5jIChzcGxpdF9sb29wX2JiKTogRG9uJ3QgdXBkYXRlIGRvbWluYXRvcnMuCgkocmVtb3ZlX2Jicyk6IERvbid0IGNhbGwgcmVtb3ZlX2Jicy4KCShjcmVhdGVfcHJlaGVhZGVyKTogVXNlIG1ha2VfZm9yd2FyZGVyX2Jsb2NrLgoJKG1mYl9rZWVwX2p1c3QsIG1mYl91cGRhdGVfbG9vcHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCjIwMDQtMDEtMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXZyL2F2ci5oOiBSZW1vdmUgdGFyZ2V0LWluZGVwZW5kZW50IGNvbW1lbnRzIGFib3V0Cgl0YXJnZXQgbWFjcm9zLgoKMjAwNC0wMS0yOCAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0aW1ldmFyLmMgKHRpbWV2YXJfcHJpbnQpOiBNZW50aW9uIHdoZW4gY2hlY2tpbmcgaXMgZW5hYmxlZC4KCjIwMDQtMDEtMjggIEdpb3Zhbm5pIEJham8gIDxnaW92YW5uaWJham9AZ2NjLmdudS5vcmc+CgoJKiBjLWxleC5jIChjX2xleCk6IFJlbmFtZSB0by4uLgoJKGNfbGV4X3dpdGhfZmxhZ3MpOiBBZGQgbmV3IHBhcmFtZXRlciB0byBnZXQgQ1BQIGZsYWdzLgoJKGNfbGV4KTogVGh1bmsgdG8gY19sZXhfd2l0aF9mbGFncyB3aGlsZSBrZWVwaW5nIHRoZSBvbGQgaW50ZXJmYWNlLgoJKiBjLXByYWdtYS5oIChjX2xleF93aXRoX2ZsYWdzKTogRGVjbGFyZS4KCjIwMDQtMDEtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYyAobWNvcmVfZXh0ZXJuYWxfbGliY2FsbCk6IEFkZCBhCgljb21tZW50LgoJKG1jb3JlX3JldHVybl9pbl9tZW1vcnkpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUtcHJvdG9zLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJbWNvcmVfc2V0dXBfaW5jb21pbmdfdmFyYXJncy4KCSogY29uZmlnL21jb3JlL21jb3JlLmMgKFRBUkdFVF9BU01fRVhURVJOQUxfTElCQ0FMTCk6IE5ldy4KCShUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTKTogTGlrZXdpc2UuCgkoVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fUkVUVVJOKTogTGlrZXdpc2UuCgkoVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUyk6IExpa2V3aXNlLgoJKFRBUkdFVF9TVFJVQ1RfVkFMVUVfUlRYKTogTGlrZXdpc2UuCgkoVEFSR0VUX1JFVFVSTl9JTl9NRU1PUlkpOiBMaWtld2lzZS4KCShUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IExpa2V3aXNlLgoJKG1jb3JlX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBNYWtlIGl0IHN0YXRpYy4gIFJlY2VpdmUgdGhlCglmaXJzdCBhcmd1bWVudCBieSByZWZlcmVuY2UuICBBZGQgYXJndW1lbnQgc2Vjb25kX3RpbWUuCgkobWNvcmVfZXh0ZXJuYWxfbGliY2FsbCk6IE5ldy4KCShtY29yZV9yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5oIChQUk9NT1RFX0ZVTkNUSU9OX0FSR1MpOiBOZXcuCgkoUFJPTU9URV9GVU5DVElPTl9SRVRVUk4pOiBMaWtld2lzZS4KCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCShSRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkoU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IExpa2V3aXNlLgoJKFBST01PVEVfUFJPVE9UWVBFUyk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfRVhURVJOQUxfTElCQ0FMTCk6IExpa2V3aXNlLgoKMjAwNC0wMS0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9tMzJyL20zMnItcHJvdG9zLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJbTMycl9zZXR1cF9pbmNvbWluZ192YXJhcmdzLgoJKiBjb25maWcvbTMyci9tMzJyLmMgKFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOiBOZXcuCgkoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBMaWtld2lzZS4KCShUQVJHRVRfUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoJKFRBUkdFVF9TRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogTGlrZXdpc2UuCgkobTMycl9yZXR1cm5faW5fbWVtb3J5KTogTmV3LgoJKG0zMnJfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IE1ha2UgaXQgc3RhdGljLgoJKiBjb25maWcvbTMyci9tMzJyLmg6IFJlbW92ZSAjdW5kZWYgb2YKCUFTTV9PVVRQVVRfRVhURVJOQUxfTElCQ0FMTC4gIFJlbW92ZSB0aGUgY29tbWVudGVkLW91dAoJZGVmaW5pdGlvbnMgb2YgUFJPTU9URV9GVU5DVElPTl9BUkdTIGFuZAoJUFJPTU9URV9GVU5DVElPTl9SRVRVUk4uCgkoUFJPTU9URV9QUk9UT1RZUEVTKTogUmVtb3ZlLgoJKFJFVFVSTl9JTl9NRU1PUlkpOiBMaWtld2lzZS4KCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOiBOZXcuCgkoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBMaWtld2lzZS4KCShtNjhrX3N0cnVjdF92YWx1ZV9ydHgpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5oIChTVFJVQ1RfVkFMVUVfUkVHTlVNKTogUmVuYW1lIHRvCglTVFJVQ1RfVkFMVUVfUkVHTlVNLgoJKFBST01PVEVfUFJPVE9UWVBFUyk6IFJlbW92ZS4KCSogY29uZmlnL202OGsvbTY4a2VsZi5oIChTVFJVQ1RfVkFMVUVfUkVHTlVNKTogUmVuYW1lIHRvCglTVFJVQ1RfVkFMVUVfUkVHTlVNLgoJKiBjb25maWcvbTY4ay9tNjhrdjQuaCAoU1RSVUNUX1ZBTFVFX1JFR05VTSk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmggKFNUUlVDVF9WQUxVRV9SRUdOVU0pOiBMaWtld2lzZS4KCjIwMDQtMDEtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYwoJKFRBUkdFVF9CVUlMRF9CVUlMVElOX1ZBX0xJU1RfVFlQRSk6IFJlbmFtZSB0bwoJVEFSR0VUX0JVSUxEX0JVSUxUSU5fVkFfTElTVC4KCjIwMDQtMDEtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvdjg1MC92ODUwLmMgKFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOiBOZXcuCgkoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBMaWtld2lzZS4KCShUQVJHRVRfUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoJKFRBUkdFVF9TRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogTGlrZXdpc2UuCgkodjg1MF9yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkodjg1MF9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy92ODUwL3Y4NTAuaCAoUFJPTU9URV9QUk9UT1RZUEVTKTogUmVtb3ZlLgoJKFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBMaWtld2lzZS4KCShSRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkoU1RSVUNUX1ZBTFVFKTogTGlrZXdpc2UuCgoyMDA0LTAxLTI4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2ZyMzAvZnIzMC5jIChUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTKTogTmV3LgoJKGZyMzBfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IERvbid0IHVzZQoJU1RSSUNUX0FSR1VNRU5UX05BTUlORy4KCSogY29uZmlnL2ZyMzAvZnIzMC5oIChQUk9NT1RFX1BST1RPVFlQRVMpOiBSZW1vdmUuCgkoU1RSSUNUX0FSR1VNRU5UX05BTUlORyk6IExpa2V3aXNlLgoKMjAwNC0wMS0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9mcnYvZnJ2LXByb3Rvcy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWZydl9leHBhbmRfYnVpbHRpbl9zYXZlcmVncy4KCSogY29uZmlnL2Zydi9mcnYuYyAoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBMaWtld2lzZS4KCShUQVJHRVRfRVhQQU5EX0JVSUxUSU5fU0FWRVJFR1MpOiBMaWtld2lzZS4KCShmcnZfc3RhY2tfaW5mbyk6IFVzZSBGUlZfU1RSVUNUX1ZBTFVFX1JFR05VTSBpbnN0ZWFkIG9mCglTVFJVQ1RfVkFMVUVfUkVHTlVNLgoJKGZydl9leHBhbmRfYnVpbHRpbl9zYXZlcmVncyk6IE1ha2UgaXQgc3RhdGljLgoJKGZydl9zdHJ1Y3RfdmFsdWVfcnR4KTogTmV3LgoJKiBjb25maWcvZnJ2L2Zydi5oIChFWFBBTkRfQlVJTFRJTl9TQVZFUkVHUyk6IFJlbW92ZS4KCjIwMDQtMDEtMjkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBjKysvMTI4NTAKCSogY2dyYXBoLmMgKGNncmFwaF9yZW1vdmVfbm9kZSk6IENsZWFyIG91dCBzYXZlZC9pbnNucy9hcmd1bWVudHMgYW5kCglpbml0aWFsIHBvaW50ZXJzLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IENsZWFyIG91dCBERUNMX1NBVkVEX0lOU05TCglmb3IgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBvbmx5IGlubGluZWQuCgkoY2dyYXBoX21hcmtfZnVuY3Rpb25fdG9fb3V0cHV0KTogTGlrZXdpc2UuCgkoY2dyYXBoX2V4cGFuZF9mdW5jdGlvbik6IFNhbml0eSBjaGVjayB0aGF0IERFQ0xfREVGRVJfT1VUUFVUIGlzIGNsZWFyOwoJZG8gbm90IGNsZWFyIGZ1bmN0aW9uIGJvZHkuCgkqIHRyZWUtb3B0aW1pemUuYyAoY2xlYXJfZGVjbF9ydGwpOiBVc2UgZGVjbF9mdW5jdGlvbl9jb250ZXh0LgoJKHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbik6IFJlb3JnYW5pemUgdGhlIGxvZ2ljIHJlbGVhc2luZyBmdW5jdGlvbgoJYm9keSB0byB1c2UgY2FsbGdyYXBoIGRhdGFzdHJ1Y3R1cmUuCgoyMDA0LTAxLTI4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEubWQ6IENoYW5nZSBwcmVkaWNhdGUgb2YgYSBwZWVwaG9sZTIgcGF0dGVybiBmcm9tIHJlZ19vcl8wX29wZXJhbmQKCXRvIHJlZ2lzdGVyX29wZXJhbmQuCgoyMDA0LTAxLTI4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoZmV0Y2hhZGRfYWNxX3NpLCBmZXRjaGFkZF9hY3FfZGkpCgkoY21weGNoZ19hY3Ffc2ksIGNtcHhjaGdfYWNxX2RpKTogRXhjaGFuZ2UgbWF0Y2hfZHVwIGFuZAoJbWF0Y2hfb3BlcmFuZCBleHByZXNzaW9ucyBzbyB0aGF0IGFsbCBtYXRjaF9kdXBzIGFwcGVhcgoJbGV4aWNhbGx5IGFmdGVyIHRoZWlyIGNvcnJlc3BvbmRpbmcgbWF0Y2hfb3BlcmFuZHMuCgoyMDA0LTAxLTI4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKFdPUkRfUkVHX1VTRUQpOiBVc2UKCUhBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0gaW5zdGVhZCBvZiBGUkFNRV9QT0lOVEVSX1JFR05VTS4KCShjb21wdXRlX3NhdmVkX3JlZ3MpOiBMaWtld2lzZS4KCShoODMwMF9leHBhbmRfcHJvbG9ndWUpOiBMaWtld2lzZS4gIEFsbG9jYXRlIGxvY2FscyBhZnRlcgoJc2F2aW5nIHJlZ2lzdGVycy4KCShoODMwMF9leHBhbmRfZXBpbG9ndWUpOiBVc2UgSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTSBpbnN0ZWFkCglvZiBGUkFNRV9QT0lOVEVSX1JFR05VTS4gIERlYWxsb2NhdGUgbG9jYWxzIGJlZm9yZSBzYXZpbmcKCXJlZ2lzdGVycy4KCShoODMwMF9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IEFkanVzdCBmb3IgdGhlIG5ldyBmcmFtZQoJbGF5b3V0LCB3aGljaCBzd2FwcyBmbGlwcyB0aGUgb3JkZXIgb2YgbG9jYWxzIGFuZCBzYXZlZAoJcmVnaXN0ZXJzLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogQ2hhbmdlIHRvIDEyLgoJKEhBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0pOiBOZXcuCgkoRUxJTUlOQUJMRV9SRUdTKTogQWRkIGFuIGVsaW1pbmF0aW9uIHJ1bGUgZnJvbQoJRlJBTUVfUE9JTlRFUl9SRUdOVU0gdG8gSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTS4KCShSRUdJU1RFUl9OQU1FUyk6IEFkZCBmcC4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChGUF9SRUcpOiBDaGFuZ2UgdG8gMTEuCgkoSEZQX1JFRyk6IE5ldy4KCjIwMDQtMDEtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnZW5yZWNvZy5jICh3cml0ZV9ub2RlKTogUmVtb3ZlIGEgdXNlbGVzcyBsb2NhbCB2YXJpYWJsZS4KCjIwMDQtMDEtMjggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBNYWtlZmlsZS5pbiAob3B0aW9ucy5jIG9wdGlvbnMuaCk6IFVzZSBzdGFtcCBmaWxlIHMtb3B0aW9ucyB0bwoJYXZvaWQgdW5uZWNlc3NhcnkgcmVidWlsZHMuCgkob3B0aW9ucy5vKTogTmV3IHRhcmdldCBsaXN0aW5nIGRlcGVuZGVuY2llcy4KCShndHlwLWdlbi5oKTogVXNlIHN0YW1wIGZpbGUgcy1ndHlwLWdlbi4KCShTVEFHRVNUVUZGKTogQWRkIHMtZ3R5cC1nZW4uCgoyMDA0LTAxLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZ2djLmggKGdnY19mcmVlKTogRGVjbGFyZS4KCSogZ2djLWNvbW1vbi5jIChnZ2NfcmVhbGxvYyk6IFVzZSBpdC4KCSogZ2djLXBhZ2UuYzogUmVtb3ZlIGxvdHMgb2YgaW5saW5lIG1hcmtlcnMuCgkoZ2xvYmFscyk6IEFkZCBmcmVlX29iamVjdF9saXN0LgoJKGdnY19hbGxvYyk6IFRpZHkuCgkoZ2djX2ZyZWUsIHZhbGlkYXRlX2ZyZWVfb2JqZWN0cyk6IE5ldy4KCShwb2lzb25fcGFnZXMpOiBQcm92aWRlIGRlZmF1bHQuCgkoZ2djX2NvbGxlY3QpOiBDYWxsIHZhbGlkYXRlX2ZyZWVfb2JqZWN0czsgZW1pdCBtYXJrZXJzIHRvCgl0aGUgZGVidWcgZmlsZS4KCjIwMDQtMDEtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgSmltIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfc3BsaXRfdG1vZGUsIGlhNjRfc3BsaXRfdG1vZGVfbW92ZSk6CglSZXdyaXRlIHRvIHVzZSBQT1NUX0lOQy9QT1NUX0RFQy9QT1NUX01PRElGWSBpbnN0ZWFkIG9mIGEKCXNjcmF0Y2ggcG9pbnRlci4KCShpYTY0X3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBEZWxldGUgY2FzZSBHUl9SRUdTLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3Z0aSwgKm1vdnRpX2ludGVybmFsLCBtb3Z0ZiwgKm1vdnRmX2ludGVybmFsKToKCURvIG5vdCBhbGxvY2F0ZSBhIHNjcmF0Y2ggcmVnaXN0ZXIuCgkocmVsb2FkX2ludGksIHJlbG9hZF9vdXR0aSwgcmVsb2FkX2ludGYsIHJlbG9hZF9vdXR0Zik6IERlbGV0ZS4KCjIwMDQtMDEtMjggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGdjc2UuYyAoYnlwYXNzX2Jsb2NrKTogUHJldmVudCBlZGdlcyB0byBiZSB1bmlmaWVkIHdoZW4gd2UgYXJlCglhYm91dCB0byBlbWl0IGNvbXBlbnN0YXRpb24gY29kZS4KCjIwMDQtMDEtMjggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fZXhwYW5kX2J1aWx0aW4pOiBGb3JjZSBzZWNvbmQgYXJndW1lbnQgb2YKCXRoZSBzZXRjd3ggaW5zbiBpbnRvIGEgcmVnaXN0ZXIuCgoyMDA0LTAxLTI4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnAtYml0LmMgKHBhY2tfZCk6IFdoZW4gdXNpbmcgcGFpcmVkIGRvdWJsZXMgdG8gaW1wbGVtZW50CglhIGxvbmcgZG91YmxlLCByb3VuZCB0aGUgaGlnaCBwYXJ0IHNlcGFyYXRlbHkuCgkodW5wYWNrX2QpOiBGaXggdGhlIGNhc2UgaW4gd2hpY2ggdGhlIGhpZ2ggcGFydCBpcyBhIHBvd2VyIG9mIHR3bwoJYW5kIHRoZSBsb3cgcGFydCBpcyBhIG5vbnplcm8gdmFsdWUgb2YgdGhlIG9wcG9zaXRlIHNpZ24uCgoyMDA0LTAxLTI4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2M0eC9jNHguYyAoVEFSR0VUX0FTTV9FWFRFUk5BTF9MSUJDQUxMKTogTmV3LgoJKFRBUkdFVF9TVFJVQ1RfVkFMVUVfUlRYKTogTGlrZXdpc2UuCgkoYzR4X2V4dGVybmFsX2xpYmNhbGwpOiBMaWtld2lzZS4KCShjNHhfc3RydWN0X3ZhbHVlX3J0eCk6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5oOiBSZW1vdmUuCgkoU1RSVUNUX1ZBTFVFX1JFR05VTSk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfRVhURVJOQUxfTElCQ0FMTCk6IExpa2V3aXNlLgoKMjAwNC0wMS0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUyk6IE5ldy4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFNUUlVDVF9WQUxVRV9JTkNPTUlORyk6IFJlbW92ZS4KCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCShQUk9NT1RFX1BST1RPVFlQRVMpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL3BhL3BhLmMgKGVtaXRfbW92ZV9zZXF1ZW5jZSk6IENoZWNrIHRoYXQgb3BlcmFuZDEgaXMgYQoJQ09OU1RfSU5UIGJlZm9yZSB1c2luZyBJTlRWQUwuCgoyMDA0LTAxLTI3ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmggKFRBUkdFVF9ERUZBVUxUKTogRGVmYXVsdCB0byAhVEFSR0VUX0JBQ0tDSEFJTi4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX3JldHVybl9hZGRyX3J0eCk6IEZhaWwgZm9yIGFsbCBidXQgY3VycmVudAoJZnJhbWUgaWYgIVRBUkdFVF9CQUNLQ0hBSU4uCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJhbGxvY2F0ZV9zdGFjayIpOiBVc2UgcGF0dGVybiBvbmx5IGlmCglUQVJHRVRfQkFDS0NIQUlOLgoJKiBkb2MvaW52b2tlLnRleGkgKC1tYmFja2NoYWluLy1tbm8tYmFja2NoYWluKTogRG9jdW1lbnQgbmV3IGRlZmF1bHQuCgoyMDA0LTAxLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaWE2NC5jIChpYTY0X2Z1bmN0aW9uX2FyZyk6IFdoZW4gcGxhY2luZyBIRkFzIGluIGludGVnZXIKCXJlZ2lzdGVycywgZG8gbm90IHNwZWNpYWwgY2FzZSB0aGUgbW9kZSB1c2VkIGZvciBjb21wbGV4Cgl0eXBlcy4gIERvIG5vdCBhZHZhbmNlIGludF9yZWdzIHVudGlsIHRoZSBjdXJyZW50IHJlZ2lzdGVyCglpcyBmdWxsLgoKMjAwNC0wMS0yNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC83Mjk3CgkqIGV4Y2VwdC5jIChpbml0X2VoKTogVXNlIGEgNS13b3JkIF9famJ1ZiBmb3IgX19idWlsdGluX3NldGptcCgpLgoKMjAwNC0wMS0yNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfbW92ZSk6ICNpZiAwIHNwbGl0dGluZwoJc2xvdywgdW5hbGlnbmVkIGxvYWRzIGFuZCBzdG9yZXMgd2hpbGUgZGVidWdnaW5nLiAgRml4IGZvcm1hdHRpbmcuCgoyMDA0LTAxLTI3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoc2F2ZV9zdGFja19ub25sb2NhbCk6IFVzZSBQbW9kZSBpbnN0ZWFkCglvZiBjb21wdXRpbmcgd21vZGUuCgkocmVzdG9yZV9zdGFja19ub25sb2NhbCk6IFNhbWUuCgoyMDA0LTAxLTI3ICBEZXZhbmcgUGF0ZWwgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZHdhcmYyb3V0Lm8pOiBEZXBlbmQgb24gaW5wdXQuaAoJKiBkYnhvdXQuYyAoZGJ4X2RlYnVnX2hvb2tzKTogQWRkIG5ldyBlbXB0eSBob29rIGZvcgoJaW1wb3J0ZWRfbW9kdWxlX29yX2RlY2wuCgkoeGNvZmZfZGVidWdfaG9va3MpOiBTYW1lLgoJKiBzZGJvdXQuYyAoc2RiX2RlYnVnX2hvb2tzKTogU2FtZS4KCSogdm1zZGJnb3V0LmMgKHZtc2RiZ19kZWJ1Z19ob29rcyk6IFNhbWUuCgkqIGRlYnVnLmMgKGRvX25vdGhpbmdfZGVidWdfaG9va3MpOiBTYW1lLgoJKGRlYnVnX25vdGhpbmdfdHJlZV90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWJ1Zy5oIChnY2NfZGVidWdfaG9va3MpOiBOZXcgaG9vaywgaW1wb3J0ZWRfbW9kdWxlX29yX2RlY2wuCgkqIGR3YXJmMm91dC5jOiBJbmNsdWRlIGlucHV0LmguCgkoZHdhcmYyX2RlYnVnX2hvb2tzKTogQWRkIG5ldyBob29rIGZvciBpbXBvcnRlZF9tb2R1bGVfb3JfZGVjbC4KCShyZW1vdmVfY2hpbGRfVEFHKTogTmV3IGZ1bmN0aW9uLgoJKGR3YXJmX3RhZ19uYW1lKTogSGFuZGxlIERXX1RBR19pbXBvcnRlZF9tb2R1bGUuCgkoZ2VuX3N1YnByb2dyYW1fZGllKTogRXF1YXRlIGRlY2wgbnVtYmVyIHRvIGRlY2xhcmF0aW9uIGRpZS4gRG8gbm90CglyZW1vdmUgYWxsIGNoaWxkcmVuIGRpZXMgd2hpbGUgcmV1c2luZyBkZWNsYXJhdGlvbiBkaWUgZm9yIGRlZmluaXRpb24uCglJbnN0ZWFkLCBzZWxlY3RpdmVseSByZW1vdmUgb25seSBmb3JtYWwgcGFyYW1ldGVycy4KCShnZW5fdmFyaWFibGVfZGllKTogRXF1YXRlIHZhcmlhYmxlIGRlY2wgdG8gZGVjbGFyYXRpb24gZGllLgoJKGdlbl9maWVsZF9kaWUpOiBFcXVhdGUgZmllbGQgZGVjbCB0byBsaW5lIG51bWJlci4KCShmb3JjZV9uYW1lc3BhY2VfZGllKTogUmVwbGFjZSBpdCB3aXRoIC4uLgoJKGZvcmNlX2RlY2xfZGllKTogLi4uIHRoaXMuCgkoZm9yY2VfdHlwZV9kaWUpOiBOZXcgZnVuY3Rpb24uCgkoc2V0dXBfbmFtZXNwYWNlX2NvbnRleHQpOiBSZXBsYWNlIHVzZSBvZiBmb3JjZV9uYW1lc3BhY2VfZGllKCkgd2l0aAoJZm9yY2VfZGVjbF9kaWUoKS4KCShnZW5fbmFtZXNwYWNlX2RpZSk6IFNhbWUuCgkoZHdhcmYyb3V0X2ltcG9ydGVkX21vZHVsZV9vcl9kZWNsKTogTmV3IGZ1bmN0aW9uLgoKMjAwNC0wMS0yNyAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9jb3B5X2luY29taW5nX2E3KTogUmVtb3ZlIFNVQlJFRwoJb24gQ1FJbW9kZSBhbmQgQ0hJbW9kZSBpbmNvbWluZyBhcmd1bWVudHMgaW4gcmVnaXN0ZXIgYTcuCgkoZnVuY3Rpb25fYXJnKTogV3JhcCBCTEttb2RlIGFyZ3VtZW50IGluIHJlZ2lzdGVyIGE3IGluIGEgUEFSQUxMRUwuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKEJMT0NLX1JFR19QQURESU5HKTogRGVmaW5lLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5tZCAobW92ZGksIG1vdmRmKTogT25seSBjYWxsIGZvcmNlX3JlZyBvcgoJeHRlbnNhX2NvcHlfaW5jb21pbmdfYTcgYmVmb3JlIHJlbG9hZC4KCjIwMDQtMDEtMjcgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogY292ZXJhZ2UuYyAoZ2V0X2NvdmVyYWdlX2NvdW50cyk6IEdpdmUgYSBkaWZmZXJlbnQgbWVzc2FnZQoJaWYgZmxhZ19ndWVzc19icmFuY2hfcHJvYiBpcyBzZXQuCgkqIHByZWRpY3QuYyAoY291bnRzX3RvX2ZyZXFzKTogUmV0dXJuIGFuIGludC4KCShlc3RpbWF0ZV9iYl9mcmVxdWVuY2llcyk6IElmIGNvdW50c190b19mcmVxcyByZXR1cm5zIHplcm8sCgljYWxjdWxhdGUgZXN0aW1hdGVzLgoKMjAwNC0wMS0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLXByb3Rvcy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWlxMjAwMF9zZXR1cF9pbmNvbWluZ192YXJhcmdzLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5jIChUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTKTogTmV3LgoJKFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IExpa2V3aXNlLgoJKFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOiBMaWtld2lzZS4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IExpa2V3aXNlLgoJKFRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBMaWtld2lzZS4KCShUQVJHRVRfU1RSSUNUX0FSR1VNRU5UX05BTUlORyk6IExpa2V3aXNlLgoJKGlxMjAwMF9yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkoaXEyMDAwX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBNYWtlIGl0IHN0YXRpYy4gIFJlY2VpdmUgdGhlCglmaXJzdCBhcmd1bWVudCBieSByZWZlcmVuY2UuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmggKFBST01PVEVfRlVOQ1RJT05fQVJHUyk6IFJlbW92ZS4KCShQUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IExpa2V3aXNlLgoJKFBST01PVEVfUFJPVE9UWVBFUyk6IExpa2V3aXNlLgoJKFJFVFVSTl9JTl9NRU1PUlkpOiBMaWtld2lzZS4KCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCShTRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogTGlrZXdpc2UuCgkoU1RSSUNUX0FSR1VNRU5UX05BTUlORyk6IExpa2V3aXNlLgoKMjAwNC0wMS0yNCAgSmFtZXMgQS4gTW9ycmlzb24gIDxqYTJtb3JyaUB1d2F0ZXJsb28uY2E+CgoJKiBmaXhpbmMvZml4aW5jLmMgKHRlc3RfdGVzdCk6IEluaXRpYWxpemUgcmVzLgoJKHN0YXJ0X2ZsZXhlcik6IEluaXRpYWxpemUgcHpfY21kX3NhdmUuCgoyMDA0LTAxLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL3J0bC50ZXhpIChBcml0aG1ldGljKTogUmV3cml0ZSBlbnRyaWVzIGZvciBQTFVTLAoJU1NfUExVUywgVVNfUExVUywgTE9fU1VNLCBNSU5VUywgU1NfTUlOVVMsIFVTX01JTlVTLgoKMjAwNC0wMS0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiA3MTk4CgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKCpubWFkZHNmNCwgKm5tYWRkZGY0LCAqbm1hZGRkZjRfYWx0cykKCSgqbm1hZGRkZjRfdHJ1bmMsICpubWFkZHhmNCwgKm5tYWRkeGY0X3RydW5jc2YsICpubWFkZHhmNF90cnVuY2RmKQoJKCpubWFkZHhmNF9hbHRzLCAqbm1hZGR4ZjRfdHJ1bmNkZl9hbHRzKToKCVJld3JpdGUgcGF0dGVybiBhcyAobWludXMgKG9wIDMpIChtdWx0IChvcCAxKSAob3AgMikpKS4KCVBvc3NpYmx5IHJlbmFtZSBwYXR0ZXJuIGZvciBjb25zaXN0ZW5jeS4KCVJlbW92ZSA/Pz8gY29tbWVudHMgc3VnZ2VzdGluZyB0aGF0IHRoaXMgYmUgZG9uZS4KCSgqbm1hZGRzZjRfYWx0cywgKm5tYWRkZGY0X3RydW5jc2ZfYWx0cywgKm5tYWRkeGY0X3RydW5jc2ZfYWx0cyk6CglOZXcgcGF0dGVybnMuCgkoZGl2c2kzX2ludGVybmFsLCBkaXZkaTNfaW50ZXJuYWxfbGF0LCBkaXZkaTNfaW50ZXJuYWxfdGhyKQoJKGRpdnNmM19pbnRlcm5hbF9sYXQsIGRpdnNmM19pbnRlcm5hbF90aHIsIHNxcnRzZjJfaW50ZXJuYWxfdGhyKQoJKGRpdmRmM19pbnRlcm5hbF9sYXQsIGRpdmRmM19pbnRlcm5hbF90aHIsIHNxcnRkZjJfaW50ZXJuYWxfdGhyKQoJKGRpdnhmM19pbnRlcm5hbF9sYXQsIGRpdnhmM19pbnRlcm5hbF90aHIsIHNxcnR4ZjJfaW50ZXJuYWxfdGhyKToKCVVwZGF0ZSB0byBtYXRjaC4KCjIwMDQtMDEtMjcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChvdXRwdXRfcmV0dXJuX2luc3RydWN0aW9uKTogT25seSByZXN0b3JlIElQCglpbnRvIFNQIGlmIGZyYW1lX3BvaW50ZXJfbmVlZGVkLgoKMjAwNC0wMS0yNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBSZXR1cm4gMQoJZm9yIFNDbW9kZSBhbmQgRENtb2RlIGlmIEFSQ0gzMi4KCShzcGFyY192YV9hcmcpOiBIYW5kbGUgU0Ntb2RlIGFuZCBEQ21vZGUgYnkgcmVmZXJlbmNlIGlmIEFSQ0gzMi4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFJFVFVSTl9JTl9NRU1PUlkpOiBSZXR1cm4gMCBmb3IgVENtb2RlCglpZiBBUkNIMzIuCgkoQkFTRV9SRVRVUk5fVkFMVUVfUkVHKTogUmV0dXJuIDMyIGZvciBhbGwgRlAgbW9kZXMgZXhjZXB0IFRGbW9kZQoJaWYgQVJDSDMyLgoJKEJBU0VfT1VUR09JTkdfVkFMVUVfUkVHKTogTGlrZXdpc2UuCgoyMDA0LTAxLTI3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMDkwNAoJUFIgdGFyZ2V0LzEzMDU4CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpOiBOZXcuCglGb3JiaWQgbW9kZSBjaGFuZ2VzIGZyb20gU0ltb2RlIGZvciBsb3dlciBGUCByZWdzIGlmIEFSQ0g2NC4KCjIwMDQtMDEtMjcgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogTWFrZWZpbGUuaW4gKGJ0LWxvYWQubyk6IERlcGVuZCBvbiBleGNlcHQuaC4KCSogYnQtbG9hZC5jIChleGNlcHQuaCk6ICNpbmNsdWRlLgoJKGNvbXB1dGVfZGVmc191c2VzX2FuZF9nZW4pOiBJZiBpbnNuIGF0IGVuZCBvZiBCQiBjYW4gdGhyb3cKCXdpdGhpbiB0aGlzIGZ1bmN0aW9uLCBjb25zaWRlciByZWdpc3RlcnMgdXNlZCBieSBpdCB1bmF2YWlsYWJsZSBmb3IKCWJ0ciBtaWdyYXRpb24uCgkobW92ZV9idHJfZGVmKTogSWYgaW5zbiBhdCBlbmQgb2YgQkIgY2FuIHRocm93LCBpbnNlcnQgYmVmb3JlIHJhdGhlcgoJdGhhbiBhZnRlci4KCgkqIGZsYWdzLmggKGZsYWdfYnRyX2JiX2V4Y2x1c2l2ZSk6IERlY2xhcmUuCgkqIHRvcGxldi5jIChmbGFnX2J0cl9iYl9leGNsdXNpdmUpOiBOZXcgdmFyaWFibGUuCgkoZl9vcHRpb25zKTogQWRkIGJ0ci1iYi1leGNsdXNpdmUuCgkqIGJ0LWxvYWQuYyAoYXVnbWVudF9saXZlX3JhbmdlKTogUmVzdG9yZSBvbGQgYmVoYXZpb3VyIGlmCglmbGFnX2J0cl9iYl9leGNsdXNpdmUgaXMgc2V0LgoJKiBjb21tb24ub3B0OiBBZGQgZW50cnkgZm9yIC1mYnRyLWJiLWV4Y2x1c2l2ZS4KCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbnMpOiBTYW1lLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1mYnRyLWJiLWV4Y2x1c2l2ZS4KCgkqIGJ0LWxvYWQuYyAoYnRyc19saXZlX2F0X2VuZCk6IE5ldyB2YXJpYWJsZS4KCShjb21wdXRlX2RlZnNfdXNlc19hbmRfZ2VuKTogQ29tcHV0ZSBpdHMgcG9pbnRlZC10byBhcnJheS4KCShjbGVhcl9idHJfZnJvbV9saXZlX3JhbmdlLCBhZGRfYnRyX3RvX2xpdmVfcmFuZ2UpOiBVcGRhdGUgaXQuCgkoYXVnbWVudF9saXZlX3JhbmdlKTogV2hlbiBhdWdtZW50aW5nIHdpdGggYSBuZXcgZG9taW5hdG9yLAoJdXNlIG9ubHkgaXRzIGJ0cnNfbGl2ZV9hdF9lbmQgc2V0LCBidXQgYWxzbyBhZGQgaW4gdGhlIGZ1bGwgc2V0CglvZiB0aGUgb2xkIGRvbWluYXRvci4KCShidHJfZGVmX2xpdmVfcmFuZ2UpOiBVc2UgYnRyc19saXZlX2F0X2VuZC4KCShtb3ZlX2J0cl9kZWYpOiBTZXQgb3RoZXJfYnRyX3VzZXNfYmVmb3JlX2RlZiwgYW5kIG1vdmUgbmV3IHNldAoJdG8gdGhlIGVuZCBvZiB0aGUgYmFzaWMgYmxvY2ssIGlmIGFwcHJvcHJpYXRlLgoJKG1pZ3JhdGVfYnRyX2RlZnMpOiBBbGxvY2F0ZSBhbmQgZnJlZSBidHJzX2xpdmVfYXRfZW5kLgoKCSogYnQtbG9hZC5jIChiYXNpY19ibG9ja19mcmVxKTogUmVtb3ZlIG91dGRhdGVkIGNvbW1lbnQuCgoyMDA0LTAxLTI3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogQ29ycmVjdCB0YXJnZXRfZmxhZ3MgZnJlZSBiaXRzIGNvbW1lbnQuCgkoUFJFRElDQVRFX0NPREVTKTogUmVtb3ZlIGR1cGxpY2F0ZS4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKENQUF9TWVNWX1NQRUMpOiBEb24ndCBkZWZpbmUuCgkoU1VCU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBEaXNhbGxvdyAzMiBiaXQgVEFSR0VUX1BST0ZJTEVfS0VSTkVMLgoJKE1BU0tfUFJPRklMRV9LRVJORUwpOiBBZGp1c3QgZGVmaW5lLgoKMjAwNC0wMS0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfY29uc3RhbnRfYWxpZ25tZW50KTogRGVjcmVhc2UgYWxpZ25tZW50CglvZiBsb25nIHN0cmluZyBsaXRlcmFscyBmcm9tIDMyIGJ5dGVzIHRvIHNpemVvZiAodm9pZCAqKSB3aGVuICEtT3MKCWFuZCB0byAxIHdpdGggLU9zLgoKMjAwNC0wMS0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF90aW55X2NvbnN0YW50X2FkZHJlc3NfcCk6IEFjY2VwdAoJY29uc3RhbnQgYWRkcmVzc2VzIGluIHRoZSBub3JtYWwgbW9kZS4KCjIwMDQtMDEtMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHN5c3RlbS5oIChDSEFSX0JJVEZJRUxEKTogRGVsZXRlLgoJKEJPT0xfQklURklFTEQpOiBOZXcuCgkqIGMtZGVjbC5jIChjX3Njb3BlKTogVXNlIEJPT0xfQklURklFTEQuCgkqIGdlbmd0eXBlLWxleC5sOiBSZWNvZ25pemUgQk9PTF9CSVRGSUVMRCBpbnN0ZWFkIG9mIENIQVJfQklURklFTEQuCgoyMDA0LTAxLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FyYy9hcmMuYyAoVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUyk6IE5ldy4KCShUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4pOiBMaWtld2lzZS4KCShUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBMaWtld2lzZS4KCShUQVJHRVRfUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoJKGFyY19yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcmMvYXJjLmggKFBST01PVEVfRlVOQ1RJT05fQVJHUyk6IFJlbW92ZS4KCShQUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IExpa2V3aXNlLgoJKFJFVFVSTl9JTl9NRU1PUlkpOiBMaWtld2lzZS4KCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLXBhcnNlLmluIChleHRlbnNpb24pOiBVc2UgaXR5cGUuCgkoU0FWRV9FWFRfRkxBR1MpOiBEb24ndCBhbGxvY2F0ZSBhIHRyZWUuCgkoUkVTVE9SRV9FWFRfRkxBR1MpOiBEb24ndCByZWFkIGEgdHJlZS4KCjIwMDQtMDEtMjYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNzZWxpYi5jIChkaXNjYXJkX3VzZWxlc3NfdmFsdWVzKTogQ2xlYXIgb3V0IHZhbHVlIHBvaW50ZXIgcG9pbnRpbmcKCXRvIGRhdGFzdHJ1Y3R1cmUgdG8gYmUgcmVjeWNsZWQuCgoyMDA0LTAxLTI1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBnZW5leHRyYWN0LmMgKG1haW4pOiBEbyBub3Qgb3V0cHV0IHRoZSBtZW1zZXQgd2hlbiBub3QgY2hlY2tpbmcuCgoyMDA0LTAxLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGg4MzAwX3RpbnlfY29uc3RhbnRfYWRkcmVzc19wKTogVXNlIGEKCXN3aXRjaCBzdGF0ZW1lbnQgaW5zdGVhZCBvZiBhIGNoYWluIG9mIGlmIHN0YXRlbWVudHMuCgoyMDA0LTAxLTI2ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogZG9jL2NvbnRyaWIudGV4aTogTWlub3IgY2xlYW51cCBmb3IgUGFvbG8gQ2FybGluaSdzIGVudHJ5LiAgQWRkCglhY3V0ZSBhY2NlbnRzIGZvciBQZXR1ciBSdW5vbGZzc29uJ3MgZW50cnkuCgoyMDA0LTAxLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL3BkcDExL3BkcDExLmMgKFRBUkdFVF9TVFJVQ1RfVkFMVUVfUlRYKTogTmV3LgoJKFRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS5oIChTVFJVQ1RfVkFMVUUpOiBSZW1vdmUuCgkoUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoKMjAwNC0wMS0yNiAgRmFyaWJvcnogSmFoYW5pYW4gIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSAqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X21vdmUpOiBzcGxpdCBzbG93CgkgdW5hbGlnbmVkIGxvYWQvc3RvcmUgaW50byBzbWFsbGVyIGxvYWRzIGFuZCBzdG9yZXMuCgoyMDA0LTAxLTI2ICBGYXJpYm9yeiBKYWhhbmlhbiAgPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBEbyBub3QgYXNzaWduCglsb25nIGxvbmcgYXJndW1lbnQgdG8gbWVtb3J5IGluIHByb2xvZ3VlIGlmCglpcyBpdCBsb2FkZWQgaW50byByZWdpc3Rlci4KCjIwMDQtMDEtMjYgIEZhcmlib3J6IEphaGFuaWFuICA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkgUFIgbWlkZGxlLWVuZC8xMzc3OQoJICogZXhwci5jIChlbWl0X2dyb3VwX2xvYWQpOiBzcGxpdCBjb25zdGFudAoJIGNvcnJlY3RseSBpbnRvIHJlZ2lzdGVyIGNvbXBvbmVudHMgb2YgUEFSQUxMRUwgaW5zbi4KCjIwMDQtMDEtMjYgIEZhcmlib3J6IEphaGFuaWFuICA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChzYXZlX3N0YWNrX25vbmxvY2FsKToKCVVzZSBhZGp1c3RfYWRkcmVzc19udiBkaXJlY3RseSB3aXRoIGFwcHJvcHJpYXRlIG1vZGUuCgkocmVzdG9yZV9zdGFja19ub25sb2NhbCk6IERpdHRvLgoKMjAwNC0wMS0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLXByb3Rvcy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCXh0ZW5zYV9idWlsdGluX3NhdmVyZWdzLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jIChUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTKTogTmV3LgoJKFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IExpa2V3aXNlLgoJKFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOiBMaWtld2lzZS4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IExpa2V3aXNlLgoJKFRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkoVEFSR0VUX0VYUEFORF9CVUlMVElOX1NBVkVSRUdTKTogTGlrZXdpc2UuCgkoeHRlbnNhX2J1aWx0aW5fc2F2ZXJlZ3MpOiBNYWtlIGl0IHN0YXRpYy4KCSh4dGVuc2FfcmV0dXJuX2luX21lbW9yeSk6IE5ldy4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoUFJPTU9URV9GVU5DVElPTl9BUkdTOiBSZW1vdmUuCgkoUFJPTU9URV9GVU5DVElPTl9SRVRVUk4pOiBMaWtld2lzZS4KCShQUk9NT1RFX1BST1RPVFlQRVMpOiBMaWtld2lzZS4KCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCShSRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkoRVhQQU5EX0JVSUxUSU5fU0FWRVJFR1MpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXJtL2FybS5jIChUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IE5ldy4KCShhcm1fc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5oIChTRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogUmVtb3ZlLgoKMjAwNC0wMS0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9jcmlzL2NyaXMuYyAoVEFSR0VUX1NFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBOZXcuCgkoY3Jpc19zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jcmlzL2NyaXMuaCAoU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IFJlbW92ZS4KCjIwMDQtMDEtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbnMzMmsvbnMzMmsuYyAoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBOZXcuCgkobnMzMmtfc3RydWN0X3ZhbHVlX3J0eCk6IExpa2V3aXNlLgoJKiBjb25maWcvbnMzMmsvbnMzMmsuaCAoU1RSVUNUX1ZBTFVFX1JFR05VTSk6IFJlbmFtZSB0bwoJTlMzMktfU1RSVUNUX1ZBTFVFX1JFR05VTS4KCjIwMDQtMDEtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXJtL2FybS5jIChUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTKTogTmV3LgoJKFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOiBMaWtld2lzZS4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IExpa2V3aXNlLgoJKGFybV9zdHJ1Y3RfdmFsdWVfcnR4KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmggKFBST01PVEVfRlVOQ1RJT05fQVJHUyk6IFJlbW92ZS4KCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCShTVFJVQ1RfVkFMVUVfUkVHTlVNKTogTGlrZXdpc2UuCgkoUFJPTU9URV9QUk9UT1RZUEVTKTogTGlrZXdpc2UuCgoyMDA0LTAxLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglpYTY0X3NldHVwX2luY29taW5nX3ZhcmFyZ3MgYW5kIGlhNjRfcmV0dXJuX2luX21lbW9yeS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IE5ldy4KCShUQVJHRVRfUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoJKFRBUkdFVF9TRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NUUklDVF9BUkdVTUVOVF9OQU1JTkcpOiBMaWtld2lzZS4KCShpYTY0X3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBBZGp1c3QgdGhlIGFyZ3VtZW50cyB0byBtZWV0Cgl0aGUgcmVxdWlyZW1lbnQgb2YgVEFSR0VUX1NFVFVQX0lOQ09NSU5HX1ZBUkFSR1MuCgkoaWE2NF9yZXR1cm5faW5fbWVtb3J5KTogTWFrZSBpdCBzdGF0aWMuICBDaGFuZ2UgdGhlIHJldHVybgoJdHlwZSB0byBib29sIGZyb20gaW50LiAgQWRkIGFuIGFyZ3VtZW50LgoJKGlhNjRfc3RydWN0X3ZhbHVlX3J0eCk6IE5ldy4KCSogY29uZmlnL2lhNjQvaWE2NC5oOiBSZW1vdmUgY29tbWVudGVkLW91dCBkZWZpbml0aW9ucyBvZgoJUFJPTU9URV9GVU5DVElPTl9BUkdTLCBQUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTiwgYW5kCglQUk9NT1RFX1BST1RPVFlQRVMuCgkoUkVUVVJOX0lOX01FTU9SWSk6IFJlbW92ZS4KCShTVFJVQ1RfVkFMVUVfUkVHTlVNKTogTGlrZXdpc2UuCgkoU1RSSUNUX0FSR1VNRU5UX05BTUlORyk6IExpa2V3aXNlLgoKMjAwNC0wMS0yNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTM2NjYKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGZ1bmN0aW9uX2FyZ191bmlvbl92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCShmdW5jdGlvbl9hcmcpOiBVc2UgaXQgdG8gZGVhbCB3aXRoIHVuaW9ucy4KCShmdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLiAgRGVmaW5lICdyZWdiYXNlJyBvbmx5IGZvciBBUkNINjQuCglSZXBsYWNlIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IGJ5IGEgc2ltcGxlciBvbmUuCgoyMDA0LTAxLTI2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHMxNl9vcHRpbWl6ZV9ncCk6IERlbGV0ZS4KCShtaXBzX3Jlb3JnKTogRG9uJ3QgY2FsbCBpdC4KCjIwMDQtMDEtMjYgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChhZGRxaTNfbm9jbG9iYmVyKTogTW92ZSB1cCBwZWNraW5nIG9yZGVyLgoJKGZsb2F0dW5zcWloZjIpOiBSZW1vdmUgb3BlcmFuZCA2LgoJKGZpeGhmcWlfc2V0LCBmaXhfdHJ1bmNoZnFpMiwgZml4dW5zX3RydW5jaGZxaTIpOiBHcm91cCB3aXRoIG90aGVyCglmaXggcGF0dGVybnMuCgkobGRpX2NvbmRpdGlvbmFsLCBsZGZfY29uZGl0aW9uYWwpOiBWYWxpZGF0ZSBvcGVyYW5kcy4KCjIwMDQtMDEtMjYgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKEJDVF9DSEVDS19MT09QX0lURVJBVElPTlMpOiBSZW1vdmUuCgkoSEFWRV9HQVNfSElEREVOKTogVW5kZWZpbmUgYXMgaW50ZXJpbSBtZWFzdXJlLgoKMjAwNC0wMS0yNiAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogSW52YWxpZGF0ZSBkaXJlY3QKCW1lbW9yeSByZWZlcmVuY2VzIGlmIFRBUkdFVF9FWFBPU0VfTERQIG5vbnplcm8uCgoyMDA0LTAxLTI2ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5jIChsZWdpdGltaXplX29wZXJhbmRzKTogVHJ1bmNhdGUgaW52YWxpZCBzaGlmdCBjb3VudHMuCgoyMDA0LTAxLTI2ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfdmFsaWRfb3BlcmFuZHMpOiBNb3JlIGFnZ3Jlc3NpdmVseSByZWplY3QKCWludmFsaWQgb3BlcmFuZCBjb21iaW5hdGlvbnMuCgoyMDA0LTAxLTI2ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfY2hlY2tfbGVnaXRfYWRkcik6IFJlbmFtZSB0bwoJYzR4X2xlZ2l0aW1hdGVfYWRkcmVzc19wLiAgRml4IHBvc3RfbW9kaWZ5IGNoZWNrLgoKCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmggKGM0eF9jaGVja19sZWdpdF9hZGRyKTogQWRqdXN0LgoJKiBjb25maWcvYzR4L2M0eC5oIChjNHhfY2hlY2tfbGVnaXRfYWRkcik6IEFkanVzdC4KCjIwMDQtMDEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvcGEvcGEtcHJvdG9zLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJaHBwYV9idWlsdGluX3NhdmVyZWdzLiAgQWRkIGEgcHJvdG90eXBlIGZvcgoJcGFfcmV0dXJuX2luX21lbW9yeS4KCSogY29uZmlnL3BhL3BhLmMgKFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IE5ldy4KCShUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBMaWtld2lzZS4KCShUQVJHRVRfUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoJKFRBUkdFVF9FWFBBTkRfQlVJTFRJTl9TQVZFUkVHUyk6IExpa2V3aXNlLgoJKHBhX3N0cnVjdF92YWx1ZV9ydHgpOiBMaWtld2lzZS4KCShwYV9yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5oIChTVFJVQ1RfVkFMVUVfUkVHTlVNKTogUmVuYW1lIHRvCglQQV9TVFJVQ1RfVkFMVUVfUkVHTlVNLgoJKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogVXNlIHBhX3JldHVybl9pbl9tZW1vcnkuCgkoRVhQQU5EX0JVSUxUSU5fU0FWRVJFR1MpOiBSZW1vdmUuCgkoUFJPTU9URV9QUk9UT1RZUEVTKTogTGlrZXdpc2UuCgkoUFJPTU9URV9GVU5DVElPTl9SRVRVUk4pOiBMaWtld2lzZS4KCjIwMDQtMDEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvdmF4L3ZheC5jIChUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTKTogTmV3LgoJKFRBUkdFVF9TVFJVQ1RfVkFMVUVfUlRYKTogTGlrZXdpc2UuCgkodmF4X3N0cnVjdF92YWx1ZV9ydHgpOiBMaWtld2lzZS4KCSogY29uZmlnL3ZheC92YXguaCAoU1RSVUNUX1ZBTFVFX1JFR05VTSk6IFJlbmFtZSB0bwoJVkFYX1NUUlVDVF9WQUxVRV9SRUdOVU0uCgkoUFJPTU9URV9QUk9UT1RZUEVTKTogUmVtb3ZlLgoKMjAwNC0wMS0yNiAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoTEVHSVRJTUlaRV9SRUxPQURfQUREUkVTUyk6IEhhbmRsZSBzeW1yZWYuCgoyMDA0LTAxLTI1ICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAYnJvYWRjb20uY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChJU0FfSEFTX0hJTE9fSU5URVJMT0NLUyk6IE1JUFMzMiwgTUlQUzMycjIsCglhbmQgTUlQUzY0IGhhdmUgSEkvTE8gaW50ZXJsb2Nrcy4gIFVwZGF0ZSBjb21tZW50LgoKMjAwNC0wMS0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi1wcm90b3MuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCgl4c3Rvcm15MTZfc2V0dXBfaW5jb21pbmdfdmFyYXJncy4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMKCSh4c3Rvcm15MTZfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IFJlbW92ZS4KCSh4c3Rvcm15MTZfcmV0dXJuX2luX21lbW9yeSk6IE5ldy4KCShUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTKTogTGlrZXdpc2UuCgkoVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fUkVUVVJOKTogTGlrZXdpc2UuCgkoVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUyk6IExpa2V3aXNlLgoJKFRBUkdFVF9TVFJVQ1RfVkFMVUVfUlRYKTogTGlrZXdpc2UuCgkoVEFSR0VUX1JFVFVSTl9JTl9NRU1PUlkpOiBMaWtld2lzZS4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmggKFBST01PVEVfRlVOQ1RJT05fQVJHUyk6IFJlbW92ZS4KCShQUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IExpa2V3aXNlCgkoUFJPTU9URV9QUk9UT1RZUEVTKTogTGlrZXdpc2UKCShSRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UKCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZQoJKFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBMaWtld2lzZQoKMjAwNC0wMS0yNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX29mZnNldF93aXRoaW5fb2JqZWN0X3ApOiBOZXcgZnVuY3Rpb24uCgkobWlwc19zeW1ib2xpY19jb25zdGFudF9wKTogVXNlIGl0IGluIHRoZSBTWU1CT0xfU01BTExfREFUQSBhbmQKCVNZTUJPTF9DT05TVEFOVF9QT09MIGNhc2VzLiAgQWxzbyB1c2UgaXQgZm9yIFNZTUJPTF9HRU5FUkFMIGlmIHRoZQoJQUJJIGhhcyA2NC1iaXQgcG9pbnRlcnMgYW5kIHRoZSBvYmplY3QgZmlsZSBvbmx5IGFsbG93cyAzMi1iaXQgc3ltYm9scy4KCjIwMDQtMDEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvc2gvc2guaCAoUFJPTU9URV9GVU5DVElPTl9BUkdTKTogUmVtb3ZlLgoJKFBST01PVEVfRlVOQ1RJT05fUkVUVVJOKTogTGlrZXdpc2UuCgoyMDA0LTAxLTI1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC1wcm90b3MuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCgltbjEwMzAwX2J1aWx0aW5fc2F2ZXJlZ3MuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAoVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUyk6IE5ldy4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IExpa2V3aXNlLgoJKFRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkoVEFSR0VUX0VYUEFORF9CVUlMVElOX1NBVkVSRUdTKTogTGlrZXdpc2UuCgkobW4xMDMwMF9yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkobW4xMDMwMF9idWlsdGluX3NhdmVyZWdzKTogTWFrZSBpdCBzdGF0aWMuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUFJPTU9URV9QUk9UT1RZUEVTKTogUmVtb3ZlLgoJKFJFVFVSTl9JTl9NRU1PUlkpOiBMaWtld2lzZS4KCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCShFWFBBTkRfQlVJTFRJTl9TQVZFUkVHUyk6IExpa2V3aXNlLgoKMjAwNC0wMS0yNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhY3QtZXVyb3BlLmZyPgoKCVBSIGJvb3RzdHJhcC8xMzg1MwoJKiBjZmdjbGVhbnVwLmMgKHRyeV9vcHRpbWl6ZV9jZmcpOiBFeHBsaWNpdGx5IHRlc3QgYWdhaW5zdCAwLgoKMjAwNC0wMS0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChkaXZub3JtLCBtb2Rub3JtKTogT3B0aW1pemUgYnkKCXVzaW5nIGNjci4KCjIwMDQtMDEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaTg2MC9pODYwLXByb3Rvcy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWk4NjBfc2F2ZXJlZ3MuCgkqIGNvbmZpZy9pODYwL2k4NjAuYyAoaTg2MF9zYXZlcmVncyk6IE1ha2UgaXQgc3RhdGljLgoJKGk4NjBfc3RydWN0X3ZhbHVlX3J0eCk6IE5ldy4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IExpa2V3aXNlLgoJKFRBUkdFVF9FWFBBTkRfQlVJTFRJTl9TQVZFUkVHUyk6IExpa2V3aXNlLgoJKiBjb25maWcvaTg2MC9pODYwLmggKFNUUlVDVF9WQUxVRV9SRUdOVU0pOiBSZW5hbWUgdG8KCUk4NjBfU1RSVUNUX1ZBTFVFX1JFR05VTS4KCShFWFBBTkRfQlVJTFRJTl9TQVZFUkVHUyk6IFJlbW92ZS4KCjIwMDQtMDEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKFRBUkdFVF9TVFJVQ1RfVkFMVUVfUlRYKTogTmV3LgoJKFRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkobTY4aGMxMV9zdHJ1Y3RfdmFsdWVfcnR4KTogTGlrZXdpc2UuCgkobTY4aGMxMV9yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaDogUmVtb3ZlIGEgY29tbWVudGVkLW91dCBkZWZpbml0aW9uCglvZiBQUk9NT1RFX1BST1RPVFlQRVMuCgkoUkVUVVJOX0lOX01FTU9SWSk6IFJlbW92ZS4KCShTVFJVQ1RfVkFMVUVfUkVHTlVNKTogTGlrZXdpc2UuCgoyMDA0LTAxLTI1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL21taXgvbW1peC1wcm90b3MuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCgltbWl4X3NldHVwX2luY29taW5nX3ZhcmFyZ3MuCgkqIGNvbmZpZy9tbWl4L21taXguYyAoVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUyk6IE5ldy4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IExpa2V3aXNlLgoJKFRBUkdFVF9TRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogTGlrZXdpc2UuCgkobW1peF9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTWFrZSBpdCBzdGF0aWMuCgkobW1peF9zdHJ1Y3RfdmFsdWVfcnR4KTogTmV3LgoJKiBjb25maWcvbW1peC9tbWl4LmggKFBST01PVEVfRlVOQ1RJT05fQVJHUyk6IFJlbW92ZS4KCVJlbW92ZSBhIGNvbW1lbnRlZC1vdXQgZGVmaW5pdGlvbiBvZiBQUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTi4KCShTVFJVQ1RfVkFMVUVfUkVHTlVNKTogUmVtb3ZlLgoJKFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZXMgZm9yCgltaXBzX3NldHVwX2luY29taW5nX3ZhcmFyZ3MgYW5kIG1pcHNfcmV0dXJuX2luX21lbW9yeS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTKTogTmV3LgoJKFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IExpa2V3aXNlLgoJKFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMpOiBMaWtld2lzZS4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IExpa2V3aXNlLgoJKFRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBMaWtld2lzZS4KCShUQVJHRVRfU1RSSUNUX0FSR1VNRU5UX05BTUlORyk6IExpa2V3aXNlLgoJKG1pcHNfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IE1hdGNoIHRoZSBwcm90b3R5cGUgZm9yCglUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUy4KCShtaXBzX3JldHVybl9pbl9tZW1vcnkpOiBNYWtlIGl0IHN0YXRpYy4gIEFkZCBhcmd1bWVudCBmbnR5cGUuCgkobWlwc19zdHJpY3RfYXJndW1lbnRfbmFtaW5nKTogTmV3LgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBST01PVEVfUFJPVE9UWVBFUyk6IFJlbW92ZS4KCShQUk9NT1RFX0ZVTkNUSU9OX0FSR1MpOiBMaWtld2lzZS4KCShQUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IExpa2V3aXNlLgoJKFNUUlVDVF9WQUxVRSk6IExpa2V3aXNlLgoJKFJFVFVSTl9JTl9NRU1PUlkpOiBMaWtld2lzZS4KCShTRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogTGlrZXdpc2UuCgkoU1RSSUNUX0FSR1VNRU5UX05BTUlORyk6IExpa2V3aXNlLgoKMjAwNC0wMS0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pcDJrL2lwMmsuYyAoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBOZXcuCgkoVEFSR0VUX1JFVFVSTl9JTl9NRU1PUlkpOiBMaWtld2lzZS4KCShUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IExpa2V3aXNlLgoJKGlwMmtfcmV0dXJuX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKGlwMmtfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IExpa2V3aXNlLgoJKiBjb25maWcvaXAyay9pcDJrLmggKFJFVFVSTl9JTl9NRU1PUlkpOiBSZW1vdmUuCgkoU1RSVUNUX1ZBTFVFKTogTGlrZXdpc2UuCgkoU1RSVUNUX1ZBTFVFX0lOQ09NSU5HKTogTGlrZXdpc2UuCgkoU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IExpa2V3aXNlLgoKMjAwNC0wMS0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKFRBUkdFVF9TVFJVQ1RfVkFMVUVfUlRYKTogTmV3LgoJKFRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NUUklDVF9BUkdVTUVOVF9OQU1JTkcpOiBMaWtld2lzZS4KCShhdnJfcmV0dXJuX2luX21lbW9yeSk6IFJlbW92ZS4KCSogY29uZmlnL2F2ci9hdnIuaCAoUkVUVVJOX0lOX01FTU9SWSk6IFJlbW92ZS4KCShTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCShTVFJVQ1RfVkFMVUVfSU5DT01JTkcpOiBMaWtld2lzZS4KCShTVFJJQ1RfQVJHVU1FTlRfTkFNSU5HKTogTGlrZXdpc2UuCgoyMDA0LTAxLTI1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb21iaW5lLmMgKHJlY29nX2Zvcl9jb21iaW5lKTogQXZvaWQgYWxsb2NhdGluZyB1bm5lY2VzYXJ5IFJUWC4KCjIwMDQtMDEtMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfcmVnX21vZGVfb2tfZm9yX2Jhc2VfcCk6IERlbGV0ZS4KCShtaXBzX3JlZ25vX21vZGVfb2tfZm9yX2Jhc2VfcCk6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQVJHX1BPSU5URVJfUkVHTlVNKTogUmVudW1iZXIgdG8gNzcuCgkoRlJBTUVfUE9JTlRFUl9SRUdOVU0pOiBSZW51bWJlciB0byA3OC4KCShGSVJTVF9QU0VVRE9fUkVHSVNURVIpOiBVcGRhdGUgY29tbWVudCBhY2NvcmRpbmdseS4KCShCQVNFX1JFR19QLCBHUF9SRUdfT1JfUFNFVURPX1NUUklDVF9QKTogRGVsZXRlLgoJKEdQX1JFR19PUl9QU0VVRE9fTk9OU1RSSUNUX1ApOiBEZWxldGUuCgkoUkVHTk9fTU9ERV9PS19GT1JfQkFTRV9QKTogVXNlIG1pcHNfcmVnbm9fbW9kZV9va19mb3JfYmFzZV9wLgoJKFJFR19NT0RFX09LX0ZPUl9CQVNFX1ApOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3JlZ19uYW1lcywgbWlwc19zd19yZWdfbmFtZXMpOiBDaGFuZ2UKCWVudHJ5IGZvciA3NyB0byAiJGFyZyIgYW5kIGVudHJ5IGZvciA3OCB0byAiJGZyYW1lIi4KCShtaXBzX3JlZ25vX3RvX2NsYXNzKTogTWFwIDc3IGFuZCA3OCB0byBBTExfUkVHUy4KCShtaXBzX3JlZ19tb2RlX29rX2Zvcl9iYXNlX3ApOiBSZW1vdmUuCgkobWlwc19yZWdub19tb2RlX29rX2Zvcl9iYXNlX3ApOiBOZXcgZnVuY3Rpb24sIGRlcml2ZWQgZnJvbSBvbGQKCUJBU0VfUkVHX1AgbWFjcm8uICBEb24ndCBlbmZvcmNlIHRoZSBtaXBzMTYgc3RhY2sgcG9pbnRlcgoJcmVzdHJpY3Rpb25zIHVubGVzcyB3ZSdyZSBiZWluZyBzdHJpY3QuCgkobWlwc192YWxpZF9iYXNlX3JlZ2lzdGVyX3ApOiBVc2UgbWlwc19yZWdub19tb2RlX29rX2Zvcl9iYXNlX3AuCgoyMDA0LTAxLTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1jb21tb24uaDogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGMtZGVjbC5jOiBMaWtld2lzZS4KCSogY2dyYXBodW5pdC5jOiBMaWtld2lzZS4KCSogY29tYmluZS5jOiBMaWtld2lzZS4KCSogZXQtZm9yZXN0LmM6IExpa2V3aXNlLgoJKiBmbG93LmM6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jOiBMaWtld2lzZS4KCSogaWZjdnQuYzogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jOiBMaWtld2lzZS4KCSoganVtcC5jOiBMaWtld2lzZS4KCSogcG9zdHJlbG9hZC5jOiBMaWtld2lzZS4KCSogdmFycmF5LmM6IExpa2V3aXNlLgoKMjAwNC0wMS0yNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9mcm9udGVuZHMudGV4aTogVXBkYXRlIGNvcHlyaWdodC4KCSogZG9jL2djb3YudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9ndHkudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL3N0YW5kYXJkcy50ZXhpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjQgIEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgIDxoZXJtYW50ZW5icnVnZ2VAaG9tZS5ubD4KCglQUiB0YXJnZXQvMTI5NzgKCSogYzR4Lm1kOiAobW92c3RycWkqKSBVc2UgbWF0Y2hfc2NyYXRjaCBpbnN0ZWFkIG9mIG1hdGNoX2R1cC4KCVJlbW92ZSBtb3ZzdHJxaV9zbWFsbCBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIG1vdnN0cnFpX2xhcmdlLgoKMjAwNC0wMS0yNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9jcmlzL2NyaXMuYyAoVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUyk6IE5ldy4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IExpa2V3aXNlLgoJKGNyaXNfc3RydWN0X3ZhbHVlX3J0eCk6IExpa2V3aXNlLgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKFBST01PVEVfRlVOQ1RJT05fQVJHUyk6IFJlbW92ZS4KCShDUklTX1NUQUNLQURKX1JFRyk6IFVzZSBDUklTX1NUUlVDVF9WQUxVRV9SRUdOVU0gaW5zdGVhZCBvZgoJU1RSVUNUX1ZBTFVFX1JFR05VTS4KCShTVFJVQ1RfVkFMVUVfUkVHTlVNKTogUmVuYW1lIHRvIENSSVNfU1RSVUNUX1ZBTFVFX1JFR05VTS4KCjIwMDQtMDEtMjQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJUFIgYm9vdHN0cmFwLzEzODQ4CgkqIGNzZS5jIChjc2VfY2Nfc3VjY3MpOiBDaGFuZ2UgdGhlIG1vZGUgb2YgdGhlIHNvdXJjZSBleHByZXNzaW9uCglhcyBzb29uIGFzIGRlY2lkZSB3ZSBuZWVkIGEgbmV3IG1vZGUuICBEb24ndCBwZXJtaXQgY2hhbmdpbmcgbW9kZXMKCWlmIHdlIGZvdW5kIGEgbWF0Y2ggaW4gYSBzdWNjZXNzb3IgYmxvY2suCgkoY3NlX2NvbmRpdGlvbl9jb2RlX3JlZyk6IFNhdmUgb3JpZ2luYWwgbW9kZSBvZiBzb3VyY2UgZXhwcmVzc2lvbgoJc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIgd2UgaGF2ZSB0byBjaGFuZ2UgdGhlIG1vZGUgaW4gb3RoZXIKCWluc25zLgoKMjAwNC0wMS0yNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZW1pdC1ydGwuYyAoY2hhbmdlX2FkZHJlc3MsIGFkanVzdF9hZGRyZXNzXzEsIG9mZnNldF9hZGRyZXNzLAoJd2lkZW5fbWVtb3J5X2FjY2Vzcyk6IFJldHVybiBlYXJseSB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gY2hhbmdlLgoKMjAwNC0wMS0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBEb24ndAoJc2ltcGxpZnkgYWRkcmVzcyA9PSBjb25zdGFudCBpbnRvIGFkZHJlc3MgKyAtY29uc3RhbnQgPT0gMC4KCjIwMDQtMDEtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogRG9uJ3QgaW50ZXJuYXRpb25hbGl6ZSB0aGUKCUNvcHlyaWdodCBtZXNzYWdlLgoJKiBtaXBzLXRmaWxlLmMgKG1haW4pOiBMaWtld2lzZS4KCjIwMDQtMDEtMjQgIEFuZHJlYXMgVG9ibGVyICA8YS50b2JsZXJAc2Nod2Vpei5jaD4KCgkqIGNzZS5jOiAoY3NlX2NjX3N1Y2NzKSBGaXggY29tcGFyaXNvbiB3YXJuaW5nLgoKMjAwNC0wMS0yNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogUmVtb3ZlIGV4dHJhbmVvdXMgVVNFIGluIGV4cGFuZGVycy4KCjIwMDQtMDEtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IFByb3ZpZGUgcHJvdG90eXBlcyBmb3IKCWg4MzAwX2xlZ2l0aW1hdGVfY29uc3RhbnRfcCBhbmQgaDgzMDBfbGVnaXRpbWF0ZV9hZGRyZXNzX3AuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF9sZWdpdGltYXRlX2NvbnN0YW50X3ApOiBOZXcuCgkoaDgzMDBfcnR4X29rX2Zvcl9iYXNlX3ApOiBMaWtld2lzZS4KCShoODMwMF9sZWdpdGltYXRlX2FkZHJlc3NfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogVXNlCgloODMwMF9sZWdpdGltYXRlX2NvbnN0YW50X3AuCgkoUlRYX09LX0ZPUl9CQVNFX1ApOiBSZW1vdmUuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogVXNlIGg4MzAwX2xlZ2l0aW1hdGVfYWRkcmVzc19wLgoKMjAwNC0wMS0yNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChSRUdfT0tfRk9SX0lOREVYX05PTlNUUklDVF9QKTogTmV3LgoJKFJFR19PS19GT1JfQkFTRV9OT05TVFJJQ1RfUCk6IExpa2V3aXNlLgoJKFJFR19PS19GT1JfSU5ERVhfU1RSSUNUX1ApOiBMaWtld2lzZS4KCShSRUdfT0tfRk9SX0JBU0VfU1RSSUNUX1ApOiBMaWtld2lzZS4KCShSRUdfT0tfRk9SX0lOREVYX1NUUklDVF9QKTogVXNlIFJFR05PX09LX0ZPUl9JTkRFWF9QLgoJKFJFR19PS19GT1JfQkFTRV9TVFJJQ1RfUCk6IFVzZSBSRUdOT19PS19GT1JfQkFTRV9QLgoJKFJFR19PS19GT1JfSU5ERVhfUCk6IFVzZSBSRUdfT0tfRk9SX0lOREVYX1NUUklDVF9QLgoJKFJFR19PS19GT1JfQkFTRV9QKTogVXNlIFJFR19PS19GT1JfQkFTRV9TVFJJQ1RfUC4KCjIwMDQtMDEtMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNzZWxpYi5jIChyZW1vdmVfdXNlbGVzc192YWx1ZXMpOiBEbyBub3QgYWNjZXNzIGRpc2NhcmRlZCB2YWx1ZXMuCgoyMDA0LTAxLTI0ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBEbyBub3QgYWxsb3cgbm9uLWx2YWx1ZQoJYXJyYXlzLgoKMjAwNC0wMS0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHJlY29nLmM6IEZpeCBhIHR5cG8gaW4gY29weXJpZ2h0LgoKMjAwNC0wMS0yMyAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGNhbGwpOiBGaXggbWlzYXBwaWxlZCBwYXRjaC4KCShjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgoyMDA0LTAxLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG9wdC8xMjk0MQoJKiBjb21iaW5lLmMgKFNISUZUX0NPVU5UX1RSVU5DQVRFRCk6IFByb3ZpZGUgZGVmYXVsdCB2YWx1ZS4KCShzaW1wbGlmeV9jb21wYXJpc29uKTogRG9uJ3Qgc2ltcGxpZnkgKGVxICh6ZXJvX2V4dHJhY3QgYyAxIHIpIDApCglpZiBTSElGVF9DT1VOVF9UUlVOQ0FURUQgaXMgc2V0LgoKMjAwNC0wMS0yMyAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV92YV9hcmcpOiBIYW5kbGUgY29tcGxleCB2YWx1ZXMgYXMKCXNlcGFyYXRlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cy4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoU1BMSVRfQ09NUExFWF9BUkdTKTogRGVmaW5lLgoKMjAwNC0wMS0yMyAgSGFydG11dCBQZW5uZXIgPGhwZW5uZXJAZGUuaWJtLmNvbT4KCglQUiB0YXJnZXQvMTM2NzQKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdmRmX2hhcmRmbG9hdDY0KTogRG8gbm90IGRpc3BhcmFnZQoJbG9hZGluZyBpbnRvIEdQUi4KCjIwMDQtMDEtMjMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGVtaXQtcnRsLmMgKGNoYW5nZV9hZGRyZXNzXzEpOiBEbyBub3QgcmUtZ2VuZXJhdGUgdGhlIFJUWCBpZiBub3RoaW5nCgljaGFuZ2UuCgoJKiBhbGxvYy1wb29sLmMgKGFsaWduX2ZvdXIpOiBLaWxsLgoJKGNyZWF0ZV9hbGxvY19wb29sKTogQWxpZ24gc2l6ZSB0byBlaWdodC4KCShmcmVlX2FsbG9jX3Bvb2wsIGZyZWVfcG9vbCk6IEludmFsaWRhdGUgZGVhbGxvY2F0ZWQgZGF0YS4KCjIwMDQtMDEtMjMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJUFIgZ2NjLzE1MzIKCSogY3NlLmMgKGNzZV9jaGFuZ2VfY2NfbW9kZSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoY3NlX2NoYW5nZV9jY19tb2RlX2luc25zLCBjc2VfY2Nfc3VjY3MpOiBMaWtld2lzZS4KCShjc2VfY29uZGl0aW9uX2NvZGVfcmVnKTogTmV3IGZ1bmN0aW9uLgoJKiBydGwuaCAoY3NlX2NvbmRpdGlvbl9jb2RlX3JlZyk6IERlY2xhcmUuCgkqIHRvcGxldi5jIChyZXN0X29mX2hhbmRsZV9jc2UyKTogQ2FsbCBjc2VfY29uZGl0aW9uX2NvZGVfcmVnLgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBBZGQgZml4ZWRfY29uZGl0aW9uX2NvZGVfcmVncyBhbmQKCWNjX21vZGVzX2NvbXBhdGlibGUuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0ZJWEVEX0NPTkRJVElPTl9DT0RFX1JFR1MpOiBEZWZpbmUuCgkoVEFSR0VUX0NDX01PREVTX0NPTVBBVElCTEUpOiBEZWZpbmUuCgkoVEFSR0VUX0lOSVRJQUxJWkVSKTogQWRkIG5ldyBpbml0aWFsaXplcnMuCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X2NjX21vZGVzX2NvbXBhdGlibGUpOiBOZXcgZnVuY3Rpb24uCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X2NjX21vZGVzX2NvbXBhdGlibGUpOiBEZWNsYXJlLgoJKiBob29rcy5jIChob29rX2Jvb2xfaW50cF9pbnRwX2ZhbHNlKTogTmV3IGZ1bmN0aW9uLgoJKiBob29rcy5oIChob29rX2Jvb2xfaW50cF9pbnRwX2ZhbHNlKTogRGVjbGFyZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChUQVJHRVRfRklYRURfQ09ORElUSU9OX0NPREVfUkVHUyk6IERlZmluZS4KCShUQVJHRVRfQ0NfTU9ERVNfQ09NUEFUSUJMRSk6IERlZmluZS4KCShpeDg2X2ZpeGVkX2NvbmRpdGlvbl9jb2RlX3JlZ3MpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGl4ODZfY2NfbW9kZXNfY29tcGF0aWJsZSk6IExpa2V3aXNlLgoJKiBkb2MvdG0udGV4aSAoQ29uZGl0aW9uIENvZGUpOiBEb2N1bWVudCBuZXcgaG9va3MuCgoyMDA0LTAxLTIzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGJhZF9sdmFsKTogUmVuYW1lZCB0byAuLi4KCShhbHBoYV9iYWRfbHZhbCk6IC4uLiB0aGlzLgoJUmVtb3ZlZCBmaWxlIGxpc3QuCglSZXN0cmljdCB0byBhbHBoYSotZGVjLW9zZiouCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgkqIGZpeGluYy90ZXN0cy9iYXNlL2RpcmVudC5oOiBSZW1vdmUsIG1vdmluZyB0ZXN0IC4uLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS90ZXN0aW5nLmg6IC4uLiBoZXJlLCByZWZsZWN0aW5nIG5ldyBuYW1lLgoKMjAwNC0wMS0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjLzEzODE0CgkqIGMtZGVjbC5jIChkaWFnbm9zZV9taXNtYXRjaGVkX2RlY2xzKTogQWxzbyBkaXNjYXJkIGEKCWJ1aWx0LWluIGlmIHdlIGVuY291bnRlciBhbiBvbGQtc3R5bGUgZGVmaW5pdGlvbiB3aXRoIHRoZQoJc2FtZSBuYW1lLgoKMjAwNC0wMS0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjIChwb3dlcnBjKi0qKTogQ2xlYXIgJHdpdGhfY3B1IG9yICR3aXRoX3R1bmUgaWYgaXQgd2FzCglzZXQgdG8gZGVmYXVsdHszMiw2NH0uCgoyMDA0LTAxLTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpCglbIV9fcG93ZXJwYzY0X19dOiBDb3JyZWN0ZWQgdG8gaGFuZGxlIGtlcm5lbHMgd2l0aCBjaGFuZ2VkIHVjb250ZXh0LgoKMjAwNC0wMS0yMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhY3QtZXVyb3BlLmZyPgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnlfb3Bfd2l0aF9jb25kaXRpb25hbF9hcmcpOiBPbmx5CglidWlsZCBhIENPTVBPVU5EX0VYUFIgaWYgJ2FyZycgaXMgcmVhbGx5IGEgU0FWRV9FWFBSLgoKMjAwNC0wMS0yMyAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBEb24ndCBjaGVjayB0aGUgbW9kZQoJc2l6ZSBmb3IgbWluaXBvb2wgcmVmZXJlbmNlcy4KCjIwMDQtMDEtMjMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogcmVhbC5jIChyZWFsX2Zsb29yLCByZWFsX2NlaWwpOiBUd2VhayB0byBhbGxvdyBpbnB1dCBhbmQgb3V0cHV0Cglhcmd1bWVudHMgdG8gb3ZlcmxhcC4KCShyZWFsX3JvdW5kKTogTmV3IGZ1bmN0aW9uIHRvIGltcGxlbWVudCByb3VuZCgzbSkgc2VtYW50aWNzLgoJKiByZWFsLmggKHJlYWxfcm91bmQpOiBQcm90b3R5cGUgaGVyZS4KCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX3JvdW5kKTogTmV3IGZ1bmN0aW9uIHRvIGNvbnN0YW50IGZvbGQKCXJvdW5kLCByb3VuZGYgYW5kIHJvdW5kbC4KCShmb2xkX2J1aWx0aW4pOiBDYWxsIGZvbGRfYnVpbHRpbl9yb3VuZCBmb3IgQlVJTFRfSU5fUk9VTkR7LEYsTH0uCgoyMDA0LTAxLTIzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTM4MTkKCSogY29uZmlnL3NoL3NoLmMgKHNoX3Jlb3JnKTogQ29tcGVuc2F0ZSBmb3Igc2hhcmluZyBvZiBDTE9CQkVScwoJaW50cm9kdWNlZCBieSAyMDA0LTAxLTIwJ3MgSmFuIEh1Ymlja2EncyBjb3B5X2luc24gY2hhbmdlLgoJKHNoX2hhbmRsZV9zcF9zd2l0Y2hfYXR0cmlidXRlKTogUmVtb3ZlIHdhcm5pbmcuCgoyMDA0LTAxLTIzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGl4ODZfZW1pdF9yZXN0b3JlX3JlZ3NfdXNpbmdfbW92KTogRGVhbCB3aXRoIGxhcmdlIG9mZnNldHMuCgoyMDA0LTAxLTIzICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGRvYy90bS50ZXhpOiBJbnNlcnQgc29tZSB3ZWFzZWwgd29yZHMgd2hlbiBMT0FEX0VYVEVORF9PUAoJbWF5IG9yIG1heSBub3QgcmV0dXJuIG5vbi1OSUwuCgkqIHBvc3RyZWxvYWQuYyAocmVsb2FkX2NzZV9zaW1wbGlmeV9vcGVyYW5kcyk6IEluIExPQURfRVhURU5EX09QIGNvZGUsCgljaGVjayBDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MKCjIwMDQtMDEtMjMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGJhc2ljLWJsb2NrLmggKFBST1BfUE9TVFJFTE9BRCk6IE5ldyBtYWNyby4KCShDTEVBTlVQX0xPR19MSU5LUyk6IE5ldy4KCSogY2ZnY2xlYW51cC5jIChjbGVhbnVwX2NmZyk6IE9ubHkgUFJPUF9MT0dfTElOS1Mgd2hlbiBhc2tlZCB0by4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX2xpZmUpOiBQcmVzZXJ2ZSBMT0dfTElOS1MgdHJvdWdodCBjbGVhbnVwX2NmZy4KCgkqIGNzZWxpYi5jICh2YWx1ZV9wb29sKTogTmV3LgoJKG5ld19jc2VsaWJfdmFsKTogVXNlIHBvb2wuCgkoY3NlbGliX2luaXQpOiBJbml0aWFsaXplIHZhbHVlX3Bvb2wKCShjc2VsaWJfZmluaXNoKTogRnJlZSBwb29sLgoKMjAwNC0wMS0yMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzY2FuX3JlY29yZF90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKGZ1bmN0aW9uX2FyZ19zbG90bm8pOiBVc2UgaXQgdG8gZGV0ZXJtaW5lIHdoaWNoIGtpbmRzIG9mCglyZWdpc3RlcnMgdGhlIHJlY29yZCBjYW4gYmUgcGFzc2VkIGluLgoKMjAwNC0wMS0yMiAgSmFtZXMgQS4gTW1vcnJpc29uICA8amEybW9ycmlAdXdhdGVybG9vLmNhPgoKCSogY29uZmlnL3BhL2ZwdHIuYzogRml4IG9sZC1zdHlsZSBkZWZpbml0aW9uLgoKMjAwNC0wMS0yMiAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiBvcHRpbWl6YXRpb24vMTM3MjQKCSogY3NlLmMgKGZvbGRfcnR4KSA8U1VCUkVHPjogRm9sZCBhIFNVQlJFRyB0byB6ZXJvIGlmIGl0CglyZXByZXNlbnRzIHRoZSB6ZXJvIGJpdHMgcHJvZHVjZWQgYnkgYSBaRVJPX0VYVEVORCBvcGVyYXRpb24uCgoyMDA0LTAxLTIyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTM4MjEKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3N1YnJlZyk6IFVzZSBzdWJyZWdfbG93cGFydF9vZmZzZXQgdG8KCWNvcnJlY3RseSBjYWxjdWxhdGUgdGhlIGxvd3BhcnQgb2Zmc2V0IG9mIHRoZSBjb250cmFjdGVkIHN1YnJlZy4KCjIwMDQtMDEtMjIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGltaXplIE9wdGlvbnMpOiBOb3RlIHRoYXQgLS1wYXJhbSBhcmd1bWVudHMKCWFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KCjIwMDQtMDEtMjIgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnLmdjYyAobWlwcy1zZ2ktaXJpeDYqbzMyKTogUmVtb3ZlZC4KCSogY29uZmlnL21pcHMvaXJpczYtbzMyLWFzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9pcmlzNi1vMzItZ2FzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9pcmlzNi1vMzIuaDogTGlrZXdpc2UuCgoyMDA0LTAxLTIyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZmdjbGVhbnVwLmMgKGZpcnN0X3Bhc3MpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHRyeV9mb3J3YXJkX2VkZ2VzKTogQWRkIHdvcmsgbGltaXRpbmcgY2hlY2sgZm9yIHRocmVhZGluZy4KCSh0cnlfY3Jvc3NqdW1wX2JiKTogQWRkIHdvcmsgbGltaXRpbmcgY2hlY2sgZm9yIGNyb3NzanVtcGluZy4KCSh0cnlfb3B0aW1pemVfY2ZnKTogTWFpbnRhaW4gZmlyc3QgcGFzcyB2YXJpYWJsZS4KCjIwMDQtMDEtMjIgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jIChmdW5jdGlvbl9hcmcpOiBHZW5lcmFsaXplIGxvZ2ljIHNvIHRoYXQgaXQKCWhhbmRsZXMgY29tcGxleCBhbmQgdmVjdG9yIG1vZGVzLgoKMjAwNC0wMS0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChSRUdfT0tfRk9SX0lOREVYX1BfU1RSSUNUKTogUmVtb3ZlLgoJKFJFR19PS19GT1JfQkFTRV9QX1NUUklDVCk6IExpa2V3aXNlLgoJKFNUUklDVCk6IExpa2V3aXNlLgoKMjAwNC0wMS0yMiAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfd2hpbGVfc3RtdCwgZ2VucnRsX2RvX3N0bXRfMSkKCShnZW5ydGxfZm9yX3N0bXQpOiBSZW1vdmUgZW1pdF9ub3AgY2FsbHMuCgoyMDA0LTAxLTIyICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIHRhcmdldC8xMzcxMwoJUFIgdGFyZ2V0LzEzMzI0CgkqIHBhLm1kIChtb3ZzdHJzaV9wcmVyZWxvYWQsIG1vdnN0cnNpX3Bvc3RyZWxvYWQsIG1vdnN0cmRpX3ByZXJlbG9hZCwKCW1vdnN0cmRpX3Bvc3RyZWxvYWQsIGNscnN0cnNpX3ByZXJlbG9hZCwgY2xyc3Ryc2lfcG9zdHJlbG9hZCwKCWNscnN0cmRpX3ByZXJlbG9hZCwgY2xyc3RyZGlfcG9zdHJlbG9hZCk6IEZpeCBjb25zdHJhaW50cy4KCjIwMDQtMDEtMjIgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYzogSW5jbHVkZSAiZGVidWcuaCIuCgkodGh1bWJfcHVzaHBvcCk6IFRha2UgdHdvIG5ldyBhcmd1bWVudHMuICBBZGQgc29tZSBjb21tZW50YXJ5LgoJT3V0cHV0IGZyYW1lIGluZm9ybWF0aW9uIHdoZW4gcHVzaGluZy4KCSh0aHVtYl9leGl0LCB0aHVtYl91bmV4cGFuZGVkX2VwaWxvZ3VlKTogVXBkYXRlIGNhbGxzIHRvCgl0aHVtYl9wdXNocG9wLgoJKHRodW1iX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IExpa2V3aXNlLiAgQWNjdW11bGF0ZSBhIENGQQoJb2Zmc2V0LCBhbmQgcGFzcyBpdCB0byB0aHVtYl9wdXNocG9wLiAgT3V0cHV0IENGSSBpbmZvcm1hdGlvbi4KCSh0aHVtYl9leHBhbmRfcHJvbG9ndWUpOiBBZGQgc29tZSBmcmFtZS1yZWxhdGVkIG1hcmtlcnMgYW5kIG5vdGVzLgoKMjAwNC0wMS0yMiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2ZyYW1lX2luZm8pOiBBbGxvdyBsYXJnZSBmcmFtZSBzaXplcwoJZm9yIFRBUkdFVF82NEJJVC4KCShzMzkwX2FyZ19mcmFtZV9vZmZzZXQpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gSE9TVF9XSURFX0lOVC4KCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9hcmdfZnJhbWVfb2Zmc2V0KTogTGlrZXdpc2UuCgoyMDA0LTAxLTIyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogcnRsYW5hbC5jIChzdWJyZWdfbHNiXzEpOiBOZXcgZnVuY3Rpb24gc3BsaXQgb3V0IGZyb20gc3VicmVnX2xzYi4KCShzdWJyZWdfbHNiKTogQ2hhbmdlIHRvIGNhbGwgbmV3IHN1YnJlZ19sc2JfMSBoZWxwZXIgZnVuY3Rpb24uCgkqIHJ0bC5oIChzdWJyZWdfbHNiXzEpOiBQcm90b3R5cGUgaGVyZS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3N1YnJlZyk6IE9wdGltaXplIHN1YnJlZ3Mgb2YgemVybyBhbmQKCXNpZ24gZXh0ZW5zaW9ucy4KCjIwMDQtMDEtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvdG0udGV4aSAoQ0FTRV9WRUNUT1JfUENfUkVMQVRJVkUpOiBNZW50aW9uIHRoYXQgdGhlCgltYWNybyBuZWVkIG5vdCBiZSBkZWZpbmVkIGlmIGp1bXAtdGFibGVzIHNob3VsZCBjb250YWluCglyZWxhdGl2ZSBhZGRyZXNzZXMgb25seSB3aGVuIC1mUElDIG9yIC1mUElDIGlzIGluIGVmZmVjdC4KCjIwMDQtMDEtMjIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGFsaWFzLmMgKHJlZ19iYXNlX3ZhbHVlKTogVHVybiBpbnRvIHZhcnJheS4KCShyZWdfYmFzZV92YWx1ZV9zaXplKTogS2lsbC4KCShvbGRfcmVnX2Jhc2VfdmFsdWUpOiBOZXcgZGVsZXRhYmxlIHZhcnJheS4KCShhbGlhc19pbnZhcmlhbnRfc2l6ZSk6IE5ldyB2YXJpYWJsZS4KCShSRUdfQkFTRV9WQUxVRSk6IFVwZGF0ZSB0byB1c2UgdmFycmF5LgoJKGZpbmRfYmFzZV92YWx1ZSk6IExpa2V3aXNlLgoJKHJlY29yZF9zZXQpOiBMaWtld2lzZS4KCShyZWNvcmRfYmFzZV92YWx1ZSk6IExpa2V3aXNlLgoJKG1lbXJlZnNfY29uZmxpY3RfcCk6IExpa2V3aXNlLgoJKHJlY29yZF9zZXQpOiBMaWtld2lzZQoJKHJlY29yZF9iYXNlX3ZhbHVlKTogTGlrZXdpc2UuCgkobWVtcmVmc19jb25mbGljdF9wKTogVXNlIGFsaWFzX2ludmFyaWFudF9zaXplLgoJKGluaXRfYWxpYXNfYW5hbHlzaXMpOiBVc2UgdmFycmF5OyBzZXQgYWxpYXNfaW52YXJpYW50X3NpemU7CglyZXNjYWxlIG90aGVyIGFycmF5cyB0byBiZSBzaXplZCBieSBtYXhyZWcuCgkoZW5kX2FsaWFzX2FuYWx5c2lzKTogU2F2ZSByZWdfYmFzZV92YWx1ZTsgY2xlYXIgYWxpYXNfaW52YXJpYW50X3NpemUuCgoyMDA0LTAxLTIyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGZ1bmN0aW9uX2FyZ19zbG90bm8pOiBVc2UKCUZMT0FUX1RZUEVfUCB0byBkZXRlY3QgRlAgZmllbGRzIGluIHN0cnVjdHVyZXMuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8xKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8yKTogTGlrZXdpc2UuCgoyMDA0LTAxLTIyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmdW5jdGlvbi5jIChhbGxvY2F0ZV9zdHJ1Y3RfZnVuY3Rpb24pOiBEbyBub3QgaW5pdGlhbGl6ZSBleHByLCBlbWl0CglhbmQgdmFyYXNtLgoJKHByZXBhcmVfZnVuY3Rpb25fc3RhcnQpOiBEbyBpdCBoZXJlLgoJKiBjLXBhcnNlLmluIChtYXliZV90eXBlX3F1YWwpOiBEbyBub3QgcHJvZHVjZSBsaW5lIG51bWJlciBub3Rlcy4KCjIwMDQtMDEtMjIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdGFyZ2V0LzEzNTU5CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzMpOiBSZXZlcnQKCXRvICd3b3JkX21vZGUnIG9uY2UgdGhlIGZpcnN0IHNsb3QgaGFzIGJlZW4gZmlsbGVkLgoKMjAwNC0wMS0yMiAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWVfMSk6IEZpeAoJY29tcHV0YXRpb24gb2YgdGhlIG51bWJlciBvZiBpbnRlZ2VyIHJlZ2lzdGVycyByZXF1aXJlZC4KCjIwMDQtMDEtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBTaW1wbGlmeSBjZXJ0YWluIGNvbXBhcmlzb25zIG9mCgljb25zdF9pbnQuCgoyMDA0LTAxLTIxICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJUFIgdGFyZ2V0LzEzNzg1CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChjYWxsX3ZhbHVlKTogRm9yY2Ugb3BlcmFuZAoJMSBub3Qgb3BlcmFuZCAwIGludG8gYSByZWdpc3Rlci4KCjIwMDQtMDEtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjcHBlcnJvci5jLCBjcHB0cmFkLmMsIGxvbmdsb25nLmgsIHBhcmFtcy5kZWYsIHJ0bC5kZWYsCgl1bndpbmQtZHcyLWZkZS5oOiBVcGRhdGUgY29weXJpZ2h0LgoKMjAwNC0wMS0yMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLXByb3Rvcy5oOiBVcGRhdGUgY29weXJpZ2h0LgoJKiBwYS5oOiBMaWtld2lzZS4KCSogcGEubWQ6IExpa2V3aXNlLgoKMjAwNC0wMS0yMSAgQ2Fyb2xpbmUgVGljZSAgPGN0aWNlQGFwcGxlLmNvbT4KCglQUiB0YXJnZXQvMTIzMDgKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZml4X3RydW5jeGZkaTIpOiBBZGQgY2xhdXNlIHRvIGNsb2JiZXIKCWZsYWdzIHJlZ2lzdGVyLgoJKGZpeF90cnVuY2RmZGkyKTogTGlrZXdpc2UuCgkoZml4X3RydW5jc2ZkaTIpOiBMaWtld2lzZS4KCSgqZml4X3RydW5jZGlfMSk6IExpa2V3aXNlLgoJKGZpeF90cnVuY3hmc2kyKTogTGlrZXdpc2UuCgkoZml4X3RydW5jZGZzaTIpOiBMaWtld2lzZS4KCShmaXhfdHJ1bmNzZnNpMik6IExpa2V3aXNlLgoJKCpmaXhfdHJ1bmNzaV8xKTogTGlrZXdpc2UuCgkoZml4X3RydW5jeGZoaTIpOiBMaWtld2lzZS4KCShmaXhfdHJ1bmNkZmhpMik6IExpa2V3aXNlLgoJKGZpeF90cnVuY3NmaGkyKTogTGlrZXdpc2UuCgkoKmZpeF90cnVuY2hpXzEpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBhbGlhcy5jLCBiYXNpYy1ibG9jay5oLCBjLWNvbW1vbi5jLCBjLWNvbW1vbi5oLAoJYy1jcHBidWlsdGluLmMsIGMtb3B0cy5jLCBjLXByYWdtYS5jLCBjLXByZXR0eS1wcmludC5jLAoJY2FsbHMuYywgY2ZnLmMsIGNmZ2NsZWFudXAuYywgY2ZncnRsLmMsIGNncmFwaC5oLCBjb2xsZWN0Mi5jLAoJY29tYmluZS5jLCBjcHBjaGFyc2V0LmMsIGNwcGhhc2guaCwgY3BwaW5pdC5jLCBjcHBsaWIuYywKCWNwcGxpYi5oLCBjcHBtYWNyby5jLCBjcnRzdHVmZi5jLCBjc2VsaWIuYywgY3NlbGliLmgsCglkZWZhdWx0cy5oLCBkZi5jLCBkb21pbmFuY2UuYywgZXQtZm9yZXN0LmMsIGV4cG1lZC5jLCBleHByLmMsCglleHByLmgsIGZpeC1oZWFkZXIuYywgZnVuY3Rpb24uaCwgZ2NjLmMsIGdjc2UuYywgZ2VuYXR0cnRhYi5jLAoJZ2VuYXV0b21hdGEuYywgZ2VuY29uZGl0aW9ucy5jLCBnZW5lbWl0LmMsIGdlbmZsYWdzLmMsCglnZW5ndHlwZS5jLCBnZW5ndHlwZS5oLCBnZW5vcGluaXQuYywgZ2VucmVjb2cuYywgZ2Vuc3VwcG9ydC5jLAoJZ2djLXpvbmUuYywgZ3JhcGguYywgaGFpZmEtc2NoZWQuYywgaW5wdXQuaCwgaW50ZWdyYXRlLmMsCglsYW5naG9va3MtZGVmLmgsIGxhbmdob29rcy5jLCBsYW5naG9va3MuaCwgbGluZS1tYXAuYywKCWxpbmUtbWFwLmgsIGxvY2FsLWFsbG9jLmMsIG9wdGFicy5jLCBvcHRhYnMuaCwgcG9zdHJlbG9hZC5jLAoJcmEuaCwgcmVjb2cuYywgcmVnLXN0YWNrLmMsIHJlZ21vdmUuYywgcmVsb2FkLmMsIHJlb3JnLmMsCglydGwuYywgc2NoZWQtZGVwcy5jLCBzY2hlZC1lYmIuYywgc2Rib3V0LmMsIHN5c3RlbS5oLAoJdGFyZ2V0LmgsIHRhcmdob29rcy5jLCB0b3BsZXYuaCwgdHJlZS1pbmxpbmUuYywgdW53aW5kLXBlLmgsCgl1bndpbmQuaCwgdmFycmF5LmMsIHZhcnJheS5oOiBVcGRhdGUgY29weXJpZ2h0LgoKMjAwNC0wMS0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9jb2ZmLmg6IFVwZGF0ZSBjb3B5cmlnaHQuCgkqIGNvbmZpZy9oODMwMC9lbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IExpa2V3aXNlLgoKMjAwNC0wMS0yMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGhwdXgxMF9zdGRpb19kZWNsYXJhdGlvbnMsIHVsdHJpeF9jb25zdDMsCgl1bHRyaXhfbG9jYWxlLCB1bHRyaXhfc3RkbGliLCB1bHRyaXhfc3RyaW5ncywgdWx0cml4X3N5c190aW1lLAoJdWx0cml4X3VuaXN0ZCk6IE5ldyBoYWNrcy4KCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3RkaW8uaCAoSFBVWDEwX1NURElPX0RFQ0xBUkFUSU9OU19DSEVDSywKCVVMVFJJWF9DT05TVDJfQ0hFQ0spOiBBZGQgY2hlY2tzLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zdGRsaWIuaCAoVUxUUklYX1NURExJQl9DSEVDSyk6IExpa2V3aXNlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zdHJpbmdzLmggKFVMVFJJWF9TVFJJTkdTMl9DSEVDSyk6IExpa2V3aXNlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS91bmlzdGQuaCAoVUxUUklYX1VOSVNURF9DSEVDSyk6IExpa2V3aXNlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zeXMvdGltZS5oIChVTFRSSVhfU1lTX1RJTUVfQ0hFQ0spOiBMaWtld2lzZS4KCSogZml4aW5jL3Rlc3RzL2Jhc2UvbG9jYWxlLmg6IE5ldyBmaWxlLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWJ1aWx0LgoKMjAwNC0wMS0yMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoJICAgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIGRvYy9leHRlbmQudGV4aSAoRXh0ZW5kZWQgQXNtKTogQ2xhcmlmeSBtZW1vcnkgY2xvYmJlci4KCjIwMDQtMDEtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY3J0c3R1ZmYuYyAoZnJhbWVfZHVtbXksIF9fZG9fZ2xvYmFsX2N0b3JzXzEpOiBDYWxsCglfSnZfUmVnaXN0ZXJDbGFzc2VzIHRocm91Z2ggYSBmdW5jdGlvbiBwb2ludGVyLgoKMjAwNC0wMS0yMSAgRmFsayBIdWVmZm5lciAgPGZhbGtAZGViaWFuLm9yZz4KCglQUiB0YXJnZXQvMTI4OTgKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfc2V0X2NvbnN0XzEpOiBJZgoJbm9fbmV3X3BzZXVkb3MsIHVzZSBnZW5fcnR4X1NFVCBkaXJlY3RseSBmb3IgU0ltb2RlIGNvbnN0YW50cwoJd2hpY2ggbmVlZCBtdWx0aXBsZSBpbnN0cnVjdGlvbnMgdG8gZW1pdC4KCjIwMDQtMDEtMjEgIEluYW9rYSBLYXp1aGlybyAgPGluYW9rYS5rYXp1aGlyb0ByZW5lc2FzLmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoQ1BQX1NQRUMpOiBEZWZpbmUuCgoyMDA0LTAxLTIxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKG1lcmdlX2RlY2xzKTogS2lsbCBkaWZmZXJlbnRfYmluZGluZ19sZXZlbCBhbmQKCWRpZmZlcmVudF90dSBhcmd1bWVudHM7IHNpbXBsaWZ5IHRocm91Z2hvdXQuCgkoZHVwbGljYXRlX2RlY2xzKTogTGlrZXdpc2UuCgkocHVzaGRlY2wsIG1lcmdlX3RyYW5zbGF0aW9uX3VuaXRfZGVjbHMpOiBVcGRhdGUgY2FsbHMgdG8KCWR1cGxpY2F0ZV9kZWNscy4KCjIwMDQtMDEtMjAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChwcmV0dHktcHJpbnQubyk6IERlcGVuZCBvbiAkKENPTkZJR19IKSBhbmQKCSQoU1lTVEVNX0gpLgoJKHByaW50LXJ0bDEubyk6IERlcGVuZCBvbiAkKFNZU1RFTV9IKS4KCjIwMDQtMDEtMjAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJUFIgYm9vdHN0cmFwLzEyNzMwCgkqIGNvbmZpZ3VyZS5hYzogRGVsZXRlIGRlZmluaXRpb24gYW5kIHN1YnNpdHV0aW9uIG9mIGRvY2Rpci4KCUFkZCBpbmZvLCBtYW4sIHNyY21hbiBhbmQgc3JjaW5mbyB0byB0YXJnZXQgaG9va3MuIENyZWF0ZSBkb2MvCglkaXJlY3RvcnkuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuaW46IERvbid0IHN1YnN0aXR1dGUgZG9jZGlyIGFuZCBkZWxldGUgYWxsIHJlZmVyZW5jZXMKCXRocm91Z2hvdXQuCgkoTUFLRUlORk9GTEFHUyk6IERlZmluZS4KCShzdG1wLWRvY29iamRpcik6IERlbGV0ZS4KCShJTkZPRklMRVMsIE1BTkZJTEVTKTogRGVmaW5lLgoJKGluZm8pOiBDYWxsIGxhbmcuaW5mbywgc3JjaW5mbyBhbmQgbGFuZy5zcmNpbmZvLgoJKGdlbmVyYXRlZC1tYW5wYWdlcyk6IENhbGwgbGFuZy5tYW4sIHNyY21hbiBhbmQgbGFuZy5zcmNtYW4uCgkoc3JjaW5mbywgc3JjbWFuKTogTmV3IHJ1bGVzIHRvIGNvcHkgYmFjayBmaWxlcyB0byBzb3VyY2UgZGlyZWN0b3J5LgoJKGRvYy8lLmluZm8sIGRvYy8lLmR2aSwgZG9jLyUuMSwgZG9jLyUuNyk6IE5ldyBpbXBsaWN0IHJ1bGUuCgkoaW5zdGFsbC1tYW4pOiBSZXZhbXAgcnVsZS4KCShjbGVhbik6IFVwZGF0ZSBkdmkgZGlyZWN0b3J5LgoJKGRpc3RjbGVhbik6IERlbGV0ZSBUQUdTIGZyb20gZnJvbnQgZW5kIGRpcmVjdG9yeXMuCgkobWFpbnRhaW5lci1jbGVhbik6IERlbGV0ZSBhbGwgZG9jdW1lbnQgZmlsZXMgaW4gc291cmNlIGRpcmVjdG9yeS4KCglvYmpjL01ha2UtbGFuZy5pbiAob2JqYy5tYW4sIG9iamMuaW5mbyk6IER1bW15IGVudHJpZXMuCgkob2JqYy5zcmNtYW4sIG9iamMuc3JjaW5mbyk6IExpa2V3aXNlLgoKMjAwNC0wMS0yMCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmKG1hdGhfZXhjZXB0aW9uKTogYnlwYXNzIG9ubHkgZm9yIGdsaWJjLgoJKG1hdGhlcnJfZGVjbCk6IHJlbmFtZSAmIHJlbG9jYXRlIGFzIGV4Y2VwdGlvbl9zdHJ1Y3R1cmUuCglUaGlzIGZpeCBtdXN0IHByZWNlZGUgdGhlIG1hdGhfZXhjZXB0aW9uIGZpeC4KCjIwMDQtMDEtMjAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbnZlcnQpOiBSZW5hbWUgdG8gZm9sZF9jb252ZXJ0X2NvbnN0LgoJKGZvbGRfY29udmVydF9jb25zdCk6IENoYW5nZSBhcmd1bWVudHMgdG8gdGFrZSBhIHRyZWVfY29kZSwKCWEgdHlwZSBhbmQgdGhlIG9wZXJhbmQvZXhwcmVzc2lvbiB0byBiZSBjb252ZXJ0ZWQuICBSZXR1cm4KCU5VTExfVFJFRSBpZiBubyBzaW1wbGlmaWNhdGlvbiBpcyBwb3NzaWJsZS4gIEFkZCBzdXBwb3J0IGZvcgoJRklYX0NFSUxfRVhQUiBhbmQgRklYX0ZMT09SX0VYUFIgaW4gYWRkaXRpb24gdG8gRklYX1RSVU5DX0VYUFIuCgkoZm9sZCk6IEhhbmRsZSBGSVhfQ0VJTF9FWFBSIGFuZCBGSVhfRkxPT1JfRVhQUi4KCUFkanVzdCBjYWxsIHRvIGZvbGRfY29udmVydCB0byBtYXRjaCBuZXcgZm9sZF9jb252ZXJ0X2NvbnN0LgoJQXZvaWQgbW9kaWZ5aW5nIHRoZSB0cmVlIHBhc3NlZCB0byBmb2xkIGluLXBsYWNlLgoKMjAwNC0wMS0yMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoRFdBUkYyX0ZSQU1FX1JFR19PVVQpOiBEZWZpbmUuCgkqIGR3YXJmMm91dC5jIChvdXRwdXRfY2ZpKTogTWFwIHJlZ3MgdXNpbmcgRFdBUkYyX0ZSQU1FX1JFR19PVVQuCgkqIGRvYy90bS50ZXhpIChEV0FSRl9GUkFNRV9SRUdOVU0sIERXQVJGMl9GUkFNRV9SRUdfT1VUKTogRG9jdW1lbnQuCgoyMDA0LTAxLTIwICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEtcHJvdG9zLmggKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IFVzZSBIT1NUX1dJREVfSU5UIGZvciBmcmFtZSBzaXplcy4KCSogcGEuYyAoc3RvcmVfcmVnLCBzdG9yZV9yZWdfbW9kaWZ5LCBsb2FkX3JlZywgc2V0X3JlZ19wbHVzX2QpOgoJTGlrZXdpc2UuICBIYW5kbGUgZnJhbWVzIGxhcmdlciB0aGFuIDB4N2ZmZmZmZmYgb24gNjQtYml0IHBvcnRzLgoJKGVtaXRfbW92ZV9zZXF1ZW5jZSk6IENoZWNrIHNjcmF0Y2hfcmVnIGZpcnN0IGluIHZhcmlvdXMgaWYgc3RhdGVtZW50cy4KCUV4dGVuZCBzb3VyY2Ugc2ltcGxpZmljYXRpb24gdG8gaGFuZGxlIGFsbCA2NC1iaXQgQ09OU1RfSU5Ucy4KCShwYV9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVF9ERUMgZm9yIHByaW50aW5nCglmcmFtZSBzaXplLgoJKGhwcGFfZXhwYW5kX3Byb2xvZ3VlLCBocHBhX2V4cGFuZF9lcGlsb2d1ZSk6IFVzZSBIT1NUX1dJREVfSU5UIGZvcgoJZnJhbWUgb2Zmc2V0IGNhbGN1bGF0aW9ucy4KCSogcGEuaCAoTkVXX0hQX0FTU0VNQkxFUik6IEFkZCBjb21tZW50LgoJKE1BWF9MRUdJVF82NEJJVF9DT05TVF9JTlQsIE1JTl9MRUdJVF82NEJJVF9DT05TVF9JTlQsCglMRUdJVElNQVRFXzY0QklUX0NPTlNUX0lOVF9QKTogRGVmaW5lLgoJKExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IFVzZSBMRUdJVElNQVRFXzY0QklUX0NPTlNUX0lOVF9QLiAgVHJlYXQKCWFueSBDT05TVF9JTlQgYXMgbGVnaXRpbWF0ZSBkdXJpbmcgYW5kIGFmdGVyIHJlbG9hZC4KCShWQUxfMzJfQklUU19QLCBJTlRfMzJfQklUUyk6IERlZmluZS4KCShMRUdJVElNSVpFX1JFTE9BRF9BRERSRVNTKTogSGFuZGxlIGxhcmdlIGZyYW1lIG9mZnNldHMuCgoyMDA0LTAxLTIwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBlbWl0LXJ0bC5jICh2ZXJpZnlfcnR4X3NoYXJpbmcsIGNvcHlfaW5zbl8xLAoJZW1pdF9jb3B5X29mX2luc25fYWZ0ZXIsIGVtaXRfY29weV9vZl9pbnNuX2FmdGVyKTogQ2xvYmJlcnMKCWNvbnRhaW5pbmcgaGFyZCByZWdzIGFyZSBzaGFyZWQuCgkoZ2VuX2hhcmRfcmVnX2Nsb2JiZXIpOiBOZXcgZnVuY3Rpb24uCgkoaGFyZF9yZWdfY2xvYmJlcnMpOiBOZXcgYXJyYXkuCgkqIGdlbmVtaXQuYyAoZ2VuX2V4cCk6IFVzZSBnZW5faGFyZF9yZWdfY2xvYmJlci4KCShjb3B5X3J0eCk6IERvIG5vdCBjb3B5IGNsb2JiZXJzIGNvbnRhaW5pbmcgaGFyZCByZWdzLgoJKiBydGwuaCAoZ2VuX2hhcmRfcmVnX2Nsb2JiZXIpOiBEZWNsYXJlLgoKMjAwNC0wMS0yMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdmFycmF5LmM6IEluY2x1ZGUgaGFzaHRhYi5oCgkodmFycmF5X2Rlc2NyaXB0b3IpOiBOZXcgc3RydWN0dXJlLgoJKGhhc2hfZGVzY3JpcHRvciwgZXFfZGVzY3JpcHRvciwgdmFycmF5X2Rlc2NyaXB0b3IsCglwcmludF9zdGF0aXN0aWNzKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMKCSh2YXJyYXlfaW5pdCwgdmFycmF5X2dyb3cpOiBVcGRhdGUgc3RhdGlzdGljcwoJKGR1bXBfdmFycmF5X3N0YXRpc3RpY3MpOiBOZXcgZnVuY3Rpb24uCgkqIHZhcnJheS5oIChkdW1wX3ZhcnJheV9zdGF0aXN0aWNzKTogRGVjbGFyZS4KCSogdG9wbGV2LmMgKGZpbmFsaXplKTogQ2FsbCBpdC4KCSogTWFrZWZpbGUuaW4gKHZhcnJheS5vKTogQWRkIGRlcGVuZGVuY3kuCgoyMDA0LTAxLTIwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjc2VsaWIuYzogSW5jbHVkZSBhbGxvYy1wb29sLmgKCShlbXB0eV92YWxzLCBlbXB0eV9lbHRfbGlzdHMsIGVtcHR5X2VsdF9sb2NfbGlzdHMpOiBLaWxsLgoJKGVsdF9sb2NfbGlzdF9wb29sLCBlbHRfbGlzdF9wb29sLCBjc2VsaWJfdmFsX3Bvb2wpOiBEZWNsYXJlLgoJKG5ld19lbHRfbGlzdCwgbmV3X2VsdF9sb2NfbGlzdCwgdW5jaGFpbl9vbmVfZWx0X2xpc3QsCgl1bmNoYWluX29uZV9lbHRfbG9jX2xpc3RfcG9vbCwgdW5jaGFpbl9vbmVfdmFsdWUsCgluZXdfY3NlbGliX3ZhbCk6IFNpbXBsaWZ5IHVzaW5nIGFsbG9jcG9vbC4KCShjc2VsaWJfaW5pdCk6IEluaXRpYWxpemUgYWxsb2Nwb29scy4KCShjc2VsaWJfZmluaXNoKTogRmluaXNoIGFsbG9jcG9vbHMuCgkqIE1ha2VmaWxlLmluIChjc2VsaWIubyk6IERlcGVuZCBvbiBhbGxvYy1wb29sLmgKCjIwMDQtMDEtMjAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19sb2FkX2NhbGxfYWRkcmVzcyk6IE1ha2UgdGhlIGNhbGwgaW5zbgoJdXNlICRncCBpZiBpdCBjb3VsZCBiZSBjYWxsaW5nIGEgbGF6eSBiaW5kaW5nIHN0dWIuCgoyMDA0LTAxLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTKTogRGVmaW5lLgoJKFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IExpa2V3aXNlLgoJKFRBUkdFVF9TVFJVQ1RfVkFMVUVfUlRYKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoUFJPTU9URV9GVU5DVElPTl9BUkdTKTogUmVtb3ZlLgoJKFBST01PVEVfRlVOQ1RJT05fUkVUVVJOKTogUmVtb3ZlLgoJKFNUUlVDVF9WQUxVRSk6IFJlbW92ZS4KCjIwMDQtMDEtMjAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJUFIgYm9vdHN0cmFwLzEzNzM1CgkqIGNvbmZpZy9hdnIvYXZyLmggKEJBU0VfUkVHX0NMQVNTKTogRG9uJ3QgcGVybWl0IHRvIHVzZSBYCglyZWdpc3RlciBhcyBwb2ludGVyIGFmdGVyIHJlbG9hZC4KCjIwMDQtMDEtMjAgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCglQUiBvcHRpbWl6YXRpb24vMTI0NDAKCSogbG9vcC5jOiBJbmNsdWRlIGdnYy5oLgoJKGxvb3Bfb3B0aW1pemUpOiBSdW4gZ2FyYmFnZSBjb2xsZWN0b3IgYmV0d2VlbiBvcHRpbWl6YXRpb24gb2YgbG9vcHMuCgkqIE1ha2VmaWxlLmluIChsb29wLm8pOiBBZGQgR0dDX0ggZGVwZW5kZW5jeS4KCjIwMDQtMDEtMjAgIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZnVuY3Rpb25fYXJnKSBIYW5kbGUKCXZlY3RvciByZWdpc3RlciBzcGVjaWFsIGluIGZ1bmN0aW9uIHdpdGhvdXQgcHJvdG90eXBlLgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogVmVjdG9yIHBhcmFtZXRlcnMgZ2V0IGFsd2F5cwoJR1BScyBhbGxvY2F0ZWQgZm9yIHRoZSBsaW51eDY0IHRhcmdldC4KCjIwMDQtMDEtMjAgIEthenVoaXJvIEluYW9rYSAgPGluYW9rYS5rYXp1aGlyb0ByZW5lc2FzLmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoVEFSR0VUX00zMlIyKS4gVGVzdCBmb3IgVEFSR0VUX00zMlIyX01BU0sKCW5vdCBUQVJHRVRfTTMyUlhfTUFTSy4KCjIwMDQtMDEtMjAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdGFyZ2V0LzEzNTU3CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChmdW5jdGlvbl9hcmcpOiBSZW9yZGVyIHRoZSBjYXNlcy4KCjIwMDQtMDEtMTkgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCU1vdmUgY3BwX3JlYWRlcidzIGxpbmVfbWFwcyBmaWVsZCB0byBhIHNoYXJlZCBnbG9iYWwuCgkqIGNwcGhhc2guaCAoY3BwX3JlYWRlcik6IFJlbmFtZSBsaW5lX21hcHMgZmllbGQgdG8gbGluZV90YWJsZQoJYW5kIGNoYW5nZSB0aGUgdHlwZSB0byBhIHBvaW50ZXIgcmF0aGVyIHRoYW4gYSBzdHJ1Y3QuCgkqIGNwcGluaXQuYyAoY3BwX3B1c2hfbWFpbl9maWVsZCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCSogY3BwbGliLmMgKGRvX2luY2x1ZGVfY29tbW9uLCBfY3BwX2RvX2ZpbGVfY2hhbmdlLCBjcHBfZ2V0X2NhbGxiYWNrcyk6CglMaWtld2lzZS4KCSogY3BwZmlsZXMuYyAodmFsaWRhdGVfcGNoKTogTGlrZXdpc2UuCgkqIGNwcG1hY3JvLmMgKF9jcHBfd2Fybl9pZl91bnVzZWRfbWFjcm8sIF9jcHBfYnVpbHRpbl9tYWNyb190ZXh0KToKCUxpa2V3aXNlLgoJKiBjcHBlcnJvci5jIChwcmludF9sb2NhdGlvbik6IExpa2V3aXNlLgoJKiBjcHBsaWIuaCAoY3BwX2NyZWF0ZV9yZWFkZXIpOiBOZXcgbGluZV9tYXBzIHBvaW50ZXIgcGFyYW1ldGVyLgoJKiBjcHBpbml0LmMgKGNwcF9jcmVhdGVfcmVhZGVyKTogSGFuZGxlIG5ldyBwYXJhbWV0ZXIuCgkoY3BwX2Rlc3Ryb3kpOiBEb24ndCBmcmVlIGxpbmVfbWFwcyAtIHRoYXQncyBubyBsb25nZXIgb3VyIGpvYi4KCSogaW5wdXQuaCAobGluZV90YWJsZSk6IE5ldyB2YXJpYWJsZS4KCSogdG9wbGV2LmMgKGxpbmVfdGFibGUpOiBEZWNsYXJlIHZhcmlhYmxlLgoJKGdlbmVyYWxfaW5pdCk6IEluaXRpYWxpemUgbGluZV90YWJsZS4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2luaXRfb3B0aW9ucyk6IFBhc3MgbGluZV90YWJsZSB0bwoJY3BwX2NyZWF0ZV9yZWFkZXIuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBOZXcgbG9jYWwgdmFyaWFibGUgbGluZV90YWJsZS4KCUluaXRpYWxpemUsIGFuZCBwYXNzIGl0IHRvIGNwcF9jcmVhdGVfcmVhZGVyLgoJKiBNYWtlZmlsZS5pbiAoTElCUywgTElCREVQUyk6IEFkZCBsaWJjcHAuYS4KCShDX0FORF9PQkpDX09CSlMsIGZpeC1oZWFkZXIpOiBSZW1vdmUgcmVkdW5kYW50IGxpYmNwcC5hLgoKMjAwNC0wMS0xOSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJSW1wbGVtZW50IGEgY2FjaGUgZm9yIGxpbmVtYXBfbG9va3VwLgoJKiBsaW5lLW1hcC5oIChzdHJ1Y3RfbGluZV9tYXBzKTogQWRkIGNhY2hlIGZpZWxkLgoJKiBsaW5lLW1hcC5jIChsaW5lbWFwX2luaXQpOiBaZXJvIGNhY2hlIGZpZWxkLgoJKGxpbmVtYXBfYWRkKTogU2V0IGNhY2hlIGZpZWxkIHRvIG9mZnNldCBvZiBuZXdseSBhbGxvY2F0ZWQgbWFwLgoJKGxpbmVtYXBfbG9va3VwKTogVXNlIGFuZCBzZXQgY2FjaGUgZmllbGQuCgoyMDA0LTAxLTIwICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCglQUiBvcHRpbWl6YXRpb24vMTM1NjcKCSogY3NlLmMgKGNzZV9iYXNpY19ibG9jayk6IENhbGwgY3NlX2luc24gd2l0aCBhIG5vbi1udWxsCglsaWJjYWxsX2luc24gZm9yIHRoZSBsYXN0IFNFVCBpbnNuIG9mIGEgbm8tY29uZmlsaWN0IGJsb2NrLgoKMjAwNC0wMS0yMCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluICh0YXJnZXRfbm9uY2Fub25pY2FsLCBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKTogVXNlCglpbW1lZGlhdGUgZGVmaW5lIGluc3RlYWQgb2YgZGVmZXJyZWQuCgkoR0NDX0lOU1RBTExfTkFNRSwgR0NDX1RBUkdFVF9JTlNUQUxMX05BTUUsIENQUF9JTlNUQUxMX05BTUUsCglQUk9UT0laRV9JTlNUQUxMX05BTUUsIFVOUFJPVE9JWkVfSU5TVEFMTF9OQU1FLCBHQ09WX0lOU1RBTExfTkFNRSwKCUdDQ0JVR19JTlNUQUxMX05BTUUpOiBEZWZpbmUgdmlhIGEgaW1tZWRpYXRlICQoc2hlbGwpIGluc3RlYWQgb2YKCWRlZmVycmVkIGJhY2txdW90ZS4KCjIwMDQtMDEtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1kZWNsLmMgKGNfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgcGVkYW50aWNfbHZhbHVlcyB0bwoJdHJ1ZSB1bmNvbmRpdGlvbmFsbHkuCgkqIGMtdHlwZWNrLmMgKHVuYXJ5X2NvbXBsZXhfbHZhbHVlLCBwZWRhbnRpY19sdmFsdWVfd2FybmluZyk6CglSZW1vdmUuCgkoYnVpbGRfdW5hcnlfb3AsIGJ1aWxkX21vZGlmeV9leHByKTogRG9uJ3QgaGFuZGxlIGV4dGVuZGVkCglsdmFsdWVzLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYsIGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBDYWxsIG5vbl9sdmFsdWUKCWluc3RlYWQgb2YgcGVkYW50aWNfbm9uX2x2YWx1ZS4KCShidWlsZF9jX2Nhc3QpOiBEb24ndCBjb25kaXRpb24gdXNlIG9mIG5vbl9sdmFsdWUgb24gcGVkYW50aWMuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IERvbid0IGNoZWNrIHBlZGFudGljIGRpcmVjdGx5IGZvcgoJQ09NUE9VTkRfRVhQUi4gIEVuc3VyZSB0aGF0IHJlc3VsdHMgZm9yIENPTVBPVU5EX0VYUFIgYXJlCglwYXNzZWQgdG8gcGVkYW50aWNfbm9uX2x2YWx1ZS4KCSogZG9jL2V4dGVuZC50ZXhpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBvZiBleHRlbmRlZCBsdmFsdWVzLgoKMjAwNC0wMS0xOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzUyNjMKCSogc2ltcGxpZnktcnR4LmMgKGFzc29jaWF0aXZlX2NvbnN0YW50X3ApOiBEZWxldGUuCgkoc2ltcGxpZnlfYXNzb2NpYXRpdmVfb3BlcmF0aW9uKTogUmV3cml0ZSB0byBsaW5lYXJpemUgdGVybXMsIGFuZAoJYXR0ZW1wdCB0byBzaW1wbGlmeSBuZXcgdGVybSBhZ2FpbnN0IGJvdGggbGVmdCBhbmQgcmlnaHQgc3VidGVybXMuCgkoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbik6IENhbGwgc3dhcF9jb21tdXRhdGl2ZV9vcGVyYW5kc19wIG9uCglvcDAgYW5kIG9wMSwgbm90IHRydWVvcDAgYW5kIHRydWVvcDEuICBNb3ZlIHRoZSBpbml0aWFsaXphdGlvbiBvZgoJdHJ1ZW9wMCBhbmQgdHJ1ZW9wMSBkb3duIHRvIHdoZXJlIGZpcnN0IG5lZWRlZC4KCShzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKiBydGxhbmFsLmMgKGNvbW11dGF0aXZlX29wZXJhbmRfcHJlY2VkZW5jZSk6IEFsc28gb3JkZXIgY29uc3RhbnQKCW9wZXJhbmRzIHVzaW5nIGF2b2lkX2NvbnN0YW50X3Bvb2xfcmVmZXJlbmNlLgoKMjAwNC0wMS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbGlnbmVkX21lbW9yeV9vcGVyYW5kKTogQ2hlY2sgTUVNX0FMSUdOLAoJZG9uJ3QgY2hlY2sgbWVtb3J5IG1vZGUuCgkodW5hbGlnbmVkX21lbW9yeV9vcGVyYW5kKTogTGlrZXdpc2UuCgkocmVsb2FkX2lucWksIHJlbG9hZF9pbmhpLCByZWxvYWRfb3V0cWksIHJlbG9hZF9vdXRoaSk6IERvbid0CglhYm9ydCBmb3Igb3AwIG5vdCBNRU0uCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZXhwYW5kX21vdl9ub2J3eCk6IElmIHRoZSBkZXN0aW5hdGlvbgoJaXMgbm90IGEgcmVnLCBjb3B5IHRvIGEgc2NyYXRjaCBmaXJzdC4KCShhbGlnbmVkX2xvYWRxaSwgYWxpZ25lZF9sb2FkaGksIHVuYWxpZ25lZF9sb2FkcWksIHVuYWxpZ25lZF9sb2FkaGksCgl1bmFsaWduZWRfbG9hZHFpX2xlLCB1bmFsaWduZWRfbG9hZHFpX2JlLCB1bmFsaWduZWRfbG9hZGhpX2xlLAoJdW5hbGlnbmVkX2xvYWRoaV9iZSk6IEV4cGVjdCBvcDAgaW4gREltb2RlOyBkb24ndCBTVUJSRUcuCgkocmVsb2FkX2lucWksIHJlbG9hZF9pbmhpKTogRml4IG1vZGUgb2Ygb3AwLgoJKHJlbG9hZF9pbnFpX2hlbHAsIHJlbG9hZF9pbmhpX2hlbHAsIHJlbG9hZF9vdXRxaV9oZWxwLAoJcmVsb2FkX291dGhpX2hlbHApOiBMaWtld2lzZS4gIFVzZSBkZWZpbmVfaW5zbl9hbmRfc3BsaXQuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGNhbGwgcGVlcGhvbGVzKTogQ2hlY2sgZm9yIFJFR19OT1JFVFVSTgoJYXMgd2VsbCBhcyAkMjkgZGVhZC4KCjIwMDQtMDEtMTkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc29sMi5oIChBU01fREVDTEFSRV9PQkpFQ1RfTkFNRSk6IE5ldy4gIEVtaXQKCSJ0bHNfb2JqZWN0IiBmb3IgdGhyZWFkLWxvY2FsIG9iamVjdHMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19lbGZfYXNtX25hbWVkX3NlY3Rpb24pOiBFbWl0CgkiI3RscyIgZm9yIHRocmVhZC1sb2NhbCBzZWN0aW9ucy4KCSogY29uZmlndXJlLmFjICh0aHJlYWQtbG9jYWwgY2hlY2tzKTogU3BlY2lmeSAtLWZhdGFsLXdhcm5pbmdzIGluCglldmVyeSBiaW51dGlscy1zcGVjaWZpYyBjaGVja3MuICBGb3Igc3BhcmMqLSotKiwgdGVzdCB3aGV0aGVyIHRoZQoJT1MgaXMgU29sYXJpcyBhbmQgdGhlIHRvb2xzIGFyZSBuYXRpdmUgYW5kIGFjdCBhY2NvcmRpbmdseS4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKMjAwNC0wMS0xOSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGNvbnRyaWIudGV4aTogVXBkYXRlIFBhb2xvIENhcmxpbmkncyBlbnRyeS4gIE5ldyBlbnRyaWVzIGZvcgoJSmVycnkgUXVpbm4gYW5kIFBldHVyIFJ1bm9sZnNzb24uCgoyMDA0LTAxLTE5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCptb3ZoaV8xLCAqbW92cWlfMSk6IFdoZW4gb3B0aW1pemluZyBmb3IKCXNpemUsIGRvbid0IHVzZSB0aGUgbGFyZ2VyIHplcm8tZXh0ZW5kaW5nIGxvYWRzLgoKMjAwNC0wMS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGFscGhhLmggKEhBUkRfUkVHTk9fTU9ERV9PSyk6IERpc2FsbG93IFNJbW9kZSBpbiBGUCByZWdzLgoJKiBhbHBoYS5tZCAoVU5TUEVDX05UX0xEQSk6IFJlbW92ZS4KCShVTlNQRUNfQ1ZUTFEsIGN2dGxxKTogTmV3LgoJKGV4dGVuZHNpZGkyXzEpOiBSZW5hbWUgZnJvbSBleHRlbmRzaWRpMl9ub2ZpeDsgcmVtb3ZlIGYvZi4KCShleHRlbmRzaWRpMl9maXgpOiBSZW1vdmUuCgkoZXh0ZW5kc2lkaTIgc3BsaXR0ZXIpOiBVc2UgY3Z0bHEuCgkoZXh0ZW5kc2lkaTIgZnAgcGVlcGhvbGVzKTogUmVtb3ZlLgoJKGN2dHFsKTogVXNlIFNGbW9kZSBpbnN0ZWFkIG9mIFNJbW9kZS4KCShmaXhfdHJ1bmM/ZnNpKTogVXBkYXRlIHRvIG1hdGNoLgoJKGZsb2F0c2lzZjJfaWVlZSwgZmxvYXRzaXNmMiwgZmxvYXRzaWRmMl9pZWVlLCBmbG9hdHNpZGYyKTogTmV3LgoJKG1vdnNpKTogUmVuYW1lIGZyb20gbW92c2lfbm9maXgsIHJlbW92ZSBmIGFsdGVybmF0aXZlcy4KCShtb3ZzaV9udF92bXMpOiBTaW1pbGFybHkuCgkobW92c2lfZml4LCBtb3ZzaV9udF92bXNfZml4KTogUmVtb3ZlLgoJKG50X2xkYSk6IFJlbW92ZS4KCSogYWxwaGEuYyAoYWxwaGFfZXhwYW5kX3Byb2xvZ3VlKTogVXNlIGFkZGRpMywgbm90IG50X2xkYS4KCjIwMDQtMDEtMTkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5jIChjZ3JhcGhfcmVtb3ZlX25vZGUpOiBGaXggcmVtb3ZhbCBmcm9tIGxpbmtlZCBsaXN0LgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogQ2xlYXIgbmV4dF9uZWVkZWQKCWxpc3QuCgkoY2dyYXBoX3JlbW92ZV91bnJlYWNoYWJsZV9ub2Rlcyk6IE5ldyBmdW5jdGlvbgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmdfb2Zfc21hbGxfZnVuY3Rpb24pOiBGaXggcGFzdG8uCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19pbmNyZW1lbnRhbGx5KTogRml4IHBhc3RvLgoJKGNncnBhaF9kZWNpZGVfaW5saW5pbmcpOiBMaWtld2lzZTsgcmVtb3ZlIHVucmVhY2hhYmxlIG5vZGVzLgoKMjAwNC0wMS0xOSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogZ2VuZ3R5cGUuYyAoaGVhZGVyX2ZpbGUpOiBNYWtlIGl0IHN0YXRpYy4KCSh3cml0ZV90eXBlc19wcm9jZXNzX2ZpZWxkLCB3cml0ZV9lbnVtX2RlZm4pOiBNaW5vciB3aGl0ZXNwYWNlIGZpeGVzLgoJKiBnZW5ndHlwZS5oIChoZWFkZXJfZmlsZSk6IE5vIGxvbmdlciBleHRlcm4uCgoyMDA0LTAxLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZGVmYXVsdHMuaCAoQ0FTRV9WRUNUT1JfUENfUkVMQVRJVkUpOiBQcm92aWRlIHRoZSBkZWZhdWx0LgoJKiBleHByLmMgKENBU0VfVkVDVE9SX1BDX1JFTEFUSVZFKTogUmVtb3ZlLgoJKiBzdG10LmMgKENBU0VfVkVDVE9SX1BDX1JFTEFUSVZFKTogTGlrZXdpc2UuCgoyMDA0LTAxLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc3RtdC5jIChIQVZFX2Nhc2VzaSk6IERlZmluZSBpdCBub3QgYWxyZWFkeSBkZWZpbmVkLgoJKEhBVkVfdGFibGVqdW1wKTogTGlrZXdpc2UuCgkoZXhwYW5kX2VuZF9jYXNlX3R5cGUpOiBSZXNvcnQgdG8gdGhlIGJpbmFyeSB0cmVlIG1ldGhvZCBpZgoJbmVpdGhlciBjYXNlc2kgb3IgdGFibGVqdW1wIGlzIGF2YWlsYWJsZS4KCjIwMDQtMDEtMTggIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogTWFrZSBub24tc3RhdGljIGFnYWluLgoJKiBvdXRwdXQuaCAoZmluYWxfc2Nhbl9pbnNuKTogUmUtYWRkIHByb3RvdHlwZS4KCSogY29uZmlnL2FyYy9hcmMuYyAoYXJjX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IEFkZCBOVUxMCgl0byBmaW5hbF9zY2FuX2luc24gY2FsbC4KCSogY29uZmlnL2NyaXMvY3Jpcy5jIChjcmlzX3RhcmdldF9hc21fZnVuY3Rpb25fZXBpbG9ndWUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9jb25kaXRpb25hbF9icmFuY2gpOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLmMgKG91dHB1dF9sYnJhbmNoLCBvdXRwdXRfY2FsbCk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYyAocHJpbnRfc2xvdCk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfbm9uZmxhdF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKG91dHB1dF9zaWJjYWxsLCBzcGFyY19mbGF0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgoyMDA0LTAxLTE4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBiYXNpYy1ibG9jay5oICh0cnlfcmVkaXJlY3RfYnlfcmVwbGFjaW5nX2p1bXApOiBEZWNsYXJlLgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9vcHRpbWl6ZV9jZmcpOiBVc2UgaXQuCgkqIGNmZ3J0bC5jICh0cnlfcmVkaXJlY3RfYnlfcmVwbGFjaW5nX2p1bXApOiBFeHBvcnQuCgkocnRsX3JlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCwgY2ZnX2xheW91dF9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gpOgoJS2lsbCBoYWNrLgoJKGNmZ19sYXlvdXRfbWVyZ2VfYmxvY2tzKTogVXNlIHRyeV9yZWRpcmVjdF9ieV9yZXBsYWNpbmdfanVtcC4KCglSZXZlcnQ6CgkyMDA0LTAxLTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkJKiBjZmdydGwuYyAodHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogT3B0aW1pemUgdGFibGVqdW1wcwoJCWV2ZW4gYWZ0ZXIgcmVsb2FkLCBqdXN0IGRvbid0IHJlbW92ZSB0aGUgYWN0dWFsIGp1bXAgdGFibGVzLgoKMjAwNC0wMS0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFNUUklDVF9BUkdVTUVOVF9OQU1JTkcpOiBSZW1vdmUuCgoyMDA0LTAxLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZGVmYXVsdHMuaCAoQVNNX09VVFBVVF9BRERSX1ZFQ19FTFQpOiBGaXggdGhlIGNvbXB1dGF0aW9uIG9mCgl0aGUgc2l6ZSBvZiBhIHBvaW50ZXIgaW4gYnl0ZXMuCgoyMDA0LTAxLTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2V4cGVjdF9qdW1wKTogRml4IHRoaW5rbyBvZiByZXVzaW5nCglsaXZlICJuZXh0IiB2YXJpYWJsZSwgd2hpY2ggY291bGQgbGVhZCB0byBhbiBpbmZpbml0ZSBsb29wLgoKMjAwNC0wMS0xOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMuaDogV3JhcCBDKysgZnVuY3Rpb25zIGluIGV4dGVybiAiQysrIgoJYmxvY2suCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc3BlY2lhbF9yb3VuZF90eXBlX2FsaWduKToKCUNoZWNrIGZvciBOVUxMIGluIHRoZSBjaGFpbiBhbmQgcmVtb3ZlIHJlcGVhdGVkIGNvZGUuCgoyMDA0LTAxLTE4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb3ZlcmFnZS5jIChjaGVja3N1bV9zdHJpbmcpOiBSZW5hbWUgdG8gLi4uCgkoY292ZXJhZ2VfY2hlY2tzdW1fc3RyaW5nKTogLi4uIHRoaXMgb25lLCBVc2UgY3JjMzJfc3RyaW5nOyByZWNvZ25pemUKCW5hbWVzIGNvbnRhaW5pbmcgcmFuZG9tIG51bWJlciBhbmQgemVybyB0aGUgbnVtYmVyIG91dCBpbiBvcmRlciB0byBnZXQKCW1hdGNoLgoKMjAwNC0wMS0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2dvdF9hbGlhc19zZXQpOiBNYXJrIGZvciBQQ0guCgoyMDA0LTAxLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9jLXRyZWUudGV4aSwgZG9jL2NwcC50ZXhpLCBkb2MvZXh0ZW5kLnRleGksCglkb2MvZnJvbnRlbmRzLnRleGksIGRvYy9nY292LnRleGksIGRvYy9ndHkudGV4aSwgZG9jL2luc3RhbGwudGV4aSwKCWRvYy9pbnZva2UudGV4aSwgZG9jL2xpYmdjYy50ZXhpLCBkb2MvbWQudGV4aSwgZG9jL3J0bC50ZXhpLAoJZG9jL3NvdXJjZWJ1aWxkLnRleGksIGRvYy9zdGFuZGFyZHMudGV4aSwgZG9jL3RtLnRleGksCglkb2MvdHJvdWJsZS50ZXhpOiBSZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KCjIwMDQtMDEtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvNzYxOAoJKiBjb25maWcvbWlwcy9taXBzLmM6IEluY2x1ZGUgY2ZnbGF5b3V0LmguCgkoVEFSR0VUX0FTTV9PVVRQVVRfTUlfVEhVTkssIFRBUkdFVF9BU01fQ0FOX09VVFBVVF9NSV9USFVOSyk6IERlZmluZS4KCShtaXBzX3Vuc3BlY19vZmZzZXRfaGlnaCk6IEFkZCB0ZW1wb3JhcnkgcmVnaXN0ZXIgYXJndW1lbnQuCgkobWlwc19sb2FkX2NhbGxfYWRkcmVzcyk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20uLi4KCShtaXBzX2V4cGFuZF9jYWxsKTogLi4uaGVyZS4KCShtaXBzX291dHB1dF9jcGxvY2FsKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlLCBtaXBzX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IFVzZSBpdC4KCShtaXBzX2VtaXRfbG9hZGdwKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbS4uLgoJKG1pcHNfZXhwYW5kX3Byb2xvZ3VlKTogLi4uaGVyZS4KCShtaXBzX291dHB1dF9taV90aHVuayk6IE5ldyBmdW5jdGlvbi4KCjIwMDQtMDEtMTcgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGxvbmdsb25nLmggKG1jNjgwMjAsIF9fbWM2ODAzMF9fLCBtYzY4MDMwLCBfX21jNjgwNDBfXywgbWM2ODA0MCwKCW1jcHUzMik6IFJlbW92ZSByZWR1bmRhbnQgY2hlY2tzIGZvciBpbXBsaWVkIHRhcmdldCBwcmVkZWZpbmVzLgoKMjAwNC0xLTE3ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9zcGVjaWFsX3JvdW5kX3R5cGVfYWxpZ24pOgoJUmV0dXJuIHR5cGUgaXMgdW5zaWduZWQgaW50IG5vdCBpbnQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfc3BlY2lhbF9yb3VuZF90eXBlX2FsaWduKToKCUxpa2V3aXNlLgoKMjAwNC0wMS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvY29udHJpYi50ZXhpLCBkb2MvY3BwZW52LnRleGksIGRvYy9leHRlbmQudGV4aSwKCWRvYy9pbnN0YWxsLnRleGksIGRvYy9pbnZva2UudGV4aSwgZG9jL3RtLnRleGk6IENvbnNpc3RlbnRseSB1c2UKCSJHTlUvTGludXgiIGFuZCAiTWljcm9zb2Z0IFdpbmRvd3MiIHRlcm1pbm9sb2d5LgoKMjAwNC0wMS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvYy10cmVlLnRleGksIGRvYy9jb21wYXQudGV4aSwgZG9jL2NwcC50ZXhpLAoJZG9jL2NwcG9wdHMudGV4aSwgZG9jL2V4dGVuZC50ZXhpLCBkb2MvaW5zdGFsbC50ZXhpLAoJZG9jL2ludGVyZmFjZS50ZXhpLCBkb2MvaW52b2tlLnRleGksIGRvYy9saWJnY2MudGV4aSwgZG9jL21kLnRleGksCglkb2Mvb2JqYy50ZXhpLCBkb2MvcnRsLnRleGksIGRvYy90bS50ZXhpLCBkb2MvdHJvdWJsZS50ZXhpOiBVc2UKCUBzbWFsbGV4YW1wbGUgaW5zdGVhZCBvZiBAZXhhbXBsZS4KCjIwMDQtMDEtMTcgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMvb2JqYy1hY3QuYyAoYnVpbGRfb2JqY19tZXRob2RfY2FsbCk6IFVzZSB0YXJnZXQKCWhvb2tzIGluc3RlYWQgb2YgbWFjcm9zIHRvIGRldGVybWluZSBpZiAuLi5fc3RyZXQKCWRpc3BhdGNoZXJzIHNob3VsZCBiZSB1c2VkIChOZVhUIHJ1bnRpbWUgb25seSkuCgoyMDA0LTAxLTE3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2V4cGVjdF9qdW1wKTogRml4IG1pc3Rha2UgaW4gbXkKCWxhc3QgcGF0Y2guICBVc2UgWEVYUCAoeCwgMCkgdG8gZ2V0IGEgTEFCRUxfUkVGJ3MgQ09ERV9MQUJFTC4KCjIwMDQtMDEtMTcgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogcnRsLmggKGVtaXRfaW5zbl9iZWZvcmVfc2FtZWxvYywgZW1pdF9qdW1wX2luc25fYmVmb3JlX3NhbWVsb2MpCgkoZW1pdF9jYWxsX2luc25fYmVmb3JlX3NhbWVsb2MsIGVtaXRfaW5zbl9hZnRlcl9zYW1lbG9jKQoJKGVtaXRfanVtcF9pbnNuX2FmdGVyX3NhbWVsb2MsIGVtaXRfY2FsbF9pbnNuX2FmdGVyX3NhbWVsb2MpOiBOZXcKCW1hY3Jvcy4KCSogcmVsb2FkMS5jIChlbWl0X3JlbG9hZF9pbnNucyk6IFVzZSB0aGVtLgoJKiBlbWl0LXJ0bC5jIChlbWl0X2luc25fYmVmb3JlX3NhbWVsb2MsIGVtaXRfaW5zbl9hZnRlcl9zYW1lbG9jKQoJKGVtaXRfanVtcF9pbnNuX2FmdGVyX3NhbWVsb2MsIGVtaXRfY2FsbF9pbnNuX2FmdGVyX3NhbWVsb2MpOiBDaGVjawoJZm9yIE5VTEwgUEFUVEVSTi4KCjIwMDQtMDEtMTcgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogZmluYWwuYyAoU0VFTl9CQiwgU0VFTl9OT1RFLCBTRUVOX0VNSVRURUQpOiBEZWZpbmUuCgkoZmluYWxfc2Nhbl9pbnNuKTogVXBkYXRlIHRvIHRha2UgYW4gYWRkaXRpb25hbCBTRUVOIGFyZ3VtZW50LiAgRW1pdAoJYSBsaW5lIG5vdGUgYWZ0ZXIgdGhlIHByb2xvZ3VlLiAgTWFrZSBzdGF0aWMuCgkobGluZV9ub3RlX2V4aXN0cyk6IFJlbW92ZS4KCShmaW5hbCk6IERvbid0IGluaXRpYWxpemUgbGluZV9ub3RlX2V4aXN0cy4gIFVwZGF0ZSBjYWxsIHRvCglmaW5hbF9zY2FuX2luc24uCgkqIG91dHB1dC5oIChmaW5hbF9zY2FuX2luc24pOiBSZW1vdmUgcHJvbG9ndWUuCgkqIGZ1bmN0aW9uLmMgKHNldF9pbnNuX2xvY2F0b3JzKTogVXBkYXRlIGNvbW1lbnQuCgkodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IEFkZCBhIGNvbW1lbnQuCgoyMDA0LTAxLTE3ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0YXJnZXQvMTA3ODEKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKHJzNjAwMF9zcGVjaWFsX3JvdW5kX3R5cGVfYWxpZ24pOgoJUHJvdG90eXBlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc3BlY2lhbF9yb3VuZF90eXBlX2FsaWduKToKCU5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKFJPVU5EX1RZUEVfQUxJR04pOiBVc2UgaXQuCgkqIGNvbmZpZy9yczYwMDAvYWl4LmggKFJPVU5EX1RZUEVfQUxJR04pOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoUk9VTkRfVFlQRV9BTElHTik6IExpa2V3aXNlLgoKMjAwNC0wMS0xNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX3Jlb3JkZXJfYmxvY2tzKTogRml4IHBhc3RvIGluIHByZXZpb3VzCgljb21taXQuCgoJKiB0b3BsZXYuYyAoSEFWRV9jb25kaXRpb25hbF9leGVjdXRpb24pOiBQcm92aWRlIGRlZmF1bHQuCgkocmVzdF9vZl9oYW5kbGVfcmVvcmRlcl9ibG9ja3MpOiBGb3IgY29uZGl0aW9uYWxfZXhlY3V0aW9uIHRhcmdldAoJdXBkYXRlIGxpdmVuZXNzIG9uY2UgYWZ0ZXIgYWxsIHRyYW5zZm9ybWF0aW9ucwoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEbyBjcm9zc2p1bXBpbmcgYmVmb3JlIGNlMy4KCjIwMDQtMDEtMTcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogYWxpYXMuYyAobmV3X2FsaWFzX3NldCk6IE1hcmsgbGFzdF9hbGlhc19zZXQgZm9yIFBDSC4KCShnZXRfdmFyYXJnc19hbGlhc19zZXQpOiBSZW5hbWUgJ3NldCcgdG8gJ3ZhcmFyZ3Nfc2V0JyBhbmQgbWFyayBpdAoJZm9yIFBDSC4KCShnZXRfZnJhbWVfYWxpYXNfc2V0KTogTGlrZXdpc2UsIGV4Y2VwdCByZW5hbWUgaXQgdG8gJ2ZyYW1lX3NldCcuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9zcl9hbGlhc19zZXQpOiBNYXJrIGZvciBQQ0guCgkoZ2V0X1RPQ19hbGlhc19zZXQpOiBNYXJrICdzZXQnIGZvciBQQ0guCgoyMDA0LTAxLTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNmZ3J0bC5jICh0cnlfcmVkaXJlY3RfYnlfcmVwbGFjaW5nX2p1bXApOiBPcHRpbWl6ZSB0YWJsZWp1bXBzCglldmVuIGFmdGVyIHJlbG9hZCwganVzdCBkb24ndCByZW1vdmUgdGhlIGFjdHVhbCBqdW1wIHRhYmxlcy4KCjIwMDQtMDEtMTcgIEouIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChpc19zdWJyYW5nZV90eXBlKTogUmVuYW1lZCBmcm9tIGlzX2FkYV9zdWJyYW5nZV90eXBlKCkuCglSZW1vdmUgY2hlY2tzIGZvciBpc19hZGEoKSBhbmQgVFJFRV9VTlNJR05FRC4KCShzdWJyYW5nZV90eXBlX2RpZSk6IEVtaXQgYSBieXRlX3NpemUgYXR0cmlidXRlIGlmIHRoZSBzdWJyYW5nZQoJdHlwZSBzaXplIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBiYXNlIHR5cGUgc2l6ZS4KCShtb2RpZmllZF90eXBlX2RpZSk6IFJlcGxhY2UgY2FsbCB0byBpc19hZGFfc3VicmFuZ2VfdHlwZSgpIGJ5CgljYWxsIHRvIGlzX3N1YnJhbmdlX3R5cGUoKS4KCjIwMDQtMDEtMTYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL3NoL3NoLmM6IEluY2x1ZGUgZ2djLmguCgoyMDA0LTAxLTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIE1ha2VmaWxlLmluIChNRDVfSCk6IE5ldy4KCShmb2xkLWNvbnN0Lm8pOiBEZXBlbmQgb24gbWQ1LmguCgkoZHdhcmYyb3V0Lm8pOiBMaWtld2lzZS4KCShjcHBmaWxlcy5vKTogTGlrZXdpc2UuCgkqIGNwcGZpbGVzLmM6IEluY2x1ZGUgbWQ1LmguCgkoc2hvdWxkX3N0YWNrX2ZpbGUpOiBDaGVjayBhZ2FpbnN0IGxpc3QgcmVhZCBmcm9tIFBDSCBmaWxlLgoJKHN0cnVjdCBwY2hmX2RhdGEpOiBOZXcuCgkocGNoZik6IE5ldyB2YXJpYWJsZS4KCShzdHJ1Y3QgcGNoZl9hZGRlcl9pbmZvKTogTmV3LgoJKHBjaGZfYWRkZXIpOiBOZXcuCgkocGNoZl9zYXZlX2NvbXBhcmUpOiBOZXcuCgkoX2NwcF9zYXZlX2ZpbGVfZW50cmllcyk6IE5ldy4KCShfY3BwX3JlYWRfZmlsZV9lbnRyaWVzKTogTmV3LgoJKHN0cnVjdCBwY2hmX2NvbXBhcmVfZGF0YSk6IE5ldy4KCShwY2hmX2NvbXBhcmUpOiBOZXcuCgkoY2hlY2tfZmlsZV9hZ2FpbnN0X2VudHJpZXMpOiBOZXcuCgkqIGNwcGhhc2guaCAoX2NwcF9zYXZlX2ZpbGVfZW50cmllcyk6IFByb3RvdHlwZS4KCShfY3BwX3JlYWRfZmlsZV9lbnRyaWVzKTogUHJvdG90eXBlLgoJKiBjcHBwY2guYyAoY3BwX3dyaXRlX3BjaF9zdGF0ZSk6IFdyaXRlIHRoZSBsaXN0IG9mIGhlYWRlcnMuCgkoY3BwX3JlYWRfc3RhdGUpOiBSZWFkIHRoZSBsaXN0IG9mIGhlYWRlcnMuCgoyMDA0LTAxLTE3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjLWNvbW1vbi5jIChjX2VzdGltYXRlX251bV9pbnNuc18xKTogSGFuZGxlIGJ1aWx0aW5fY29uc3RhbnRfcCBhbmQKCWJ1aWx0aW5fZXhwZWN0IHNwZWNpYWxseS4KCSogcGFyYW1zLmRlZiAoUEFSQU1fTUFYX0lOTElORV9JTlNOU19BVVRPKTogU2V0IHRvIDEwMC4KCShQQVJBTV9MQVJHRV9GVU5DVElPTl9JTlNOUyk6IFNldCB0byAzMDAwLgoJKiBpbnZva2UudGV4aSAobWF4LWlubGluZS1pbnNucy1zaW5nbGUpOiBTZXQgdG8gMTAwLgoJKGxhcmdlLWZ1bmN0aW9uLWluc25zKTogU2V0IHRvIDMwMDAuCgoyMDA0LTAxLTE2ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCSAgICBDaGFuZHJha2FsYSBDaGF2dmEgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIGNwcGNoYXJzZXQuYyAob25lX2lzbzg4NTkxX3RvX3V0ZjgpOiBOZXcgZnVuY3Rpb24uCgkoY29udmVydF9pc284ODU5MV91dGY4KTogRGl0dG8uIFVzZS4KCShjb252ZXJzaW9uX3RhYik6IFVzZS4KCShfY3BwX2lucHV0X3RvX3V0ZjgpOiBOZXcgZnVuY3Rpb24uCgkoX2NwcF9pbml0X2ljb252X2J1ZmZlcik6IERpdHRvLgoJKF9jcHBfY2xvc2VfaWNvbnZfYnVmZmVyKTogRGl0dG8uCgkqIGNwcGhhc2guaDogUHJvdG90eXBlIG5ldyBmdW5jdGlvbnMuCgkoY3BwX2J1ZmZlcik6IEFkZCBpbnB1dF9jc2V0X2Rlc2MuCgkqIGNwcGluaXQuYzogQWRkIGlucHV0X2NoYXJzZXQgZGVmYXVsdC4KCSogY3BwbGliLmMgKGNwcF9wdXNoX2J1ZmZlcik6IFN1cHBvcnQgaW5pdCBhbmQKCWNsb3NlIG9mIGljb252LgoJKiBjcHBsaWIuaCAoY3BwX29wdGlvbnMpOiBBZGQgaW5wdXRfY2hhcnNldC4KCjIwMDQtMDEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzeXN0ZW0uaCAoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBQb2lzb24uCgkqIGNvbmZpZy9hbHBoYS91bmljb3Ntay5oOiBSZW1vdmUgYSBjb21tZW50ZWQtb3V0IGRlZmluaXRpb24KCW9mIEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaDogTGlrZXdpc2UuCgoyMDA0LTAxLTE2ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGFscGhhX19fZXh0ZXJuX3ByZWZpeCk6IFJlbmFtZWQgdG8gLi4uCgkoYWxwaGFfX19leHRlcm5fcHJlZml4X3N5c19zdGF0KTogLi4uIHRoaXMuCglBcHBseSB0byA8c3lzL21vdW50Lmg+LCB0b28uCglUd2VhayB0byBtYXRjaCBtb3JlIHZhcmlhdGlvbnMuCgkqIGZpeGluYy90ZXN0cy9iYXNlL3N5cy9zdGF0Lmg6IEFkYXB0IGZvciBuZXcgaGFja25hbWUuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhbHBoYV9fX2V4dGVybl9wcmVmaXgsCglhbHBoYV9fX2V4dGVybl9wcmVmaXhfc3RhbmRhcmRzKTogTmV3IGhhY2tzIHRvIG9iZXkKCV9fUFJBR01BX0VYVEVSTl9QUkVGSVguCgkqIGZpeGluYy90ZXN0cy9iYXNlL3Rlc3RpbmcuaCBbQUxQSEFfX19FWFRFUk5fUFJFRklYX0NIRUNLXTogTmV3Cgl0ZXN0LgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zdGFuZGFyZHMuaDogTGlrZXdpc2UuCgoJKiBmaXhpbmNsL2luY2xoYWNrLmRlZiAoYWxwaGFfcHRocmVhZCk6IFR3ZWFrIHRvIG1hdGNoIG1vcmUKCXZhcmlhdGlvbnMuCglOZXcgdGVzdGNhc2UuCgkqIGZpeGluYy90ZXN0cy9iYXNlL3B0aHJlYWQuaDogSGFuZGxlIGl0LgoKCSogZml4aW5jbC9pbmNsaGFjay5kZWYgKGJhZF9sdmFsKTogU29ydCBmaWxlIGxpc3QuCglBZGQgbWFueSBtaXNzaW5nIGZpbGVzIHVwIHRvIFRydTY0IFVOSVggVjUuMUIuCgkqIGZpeGluYy90ZXN0cy9iYXNlL2xpYmdlbi5oOiBSZW5hbWVkIHRvIC4uLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9kaXJlbnQuaDogLi4uIHRoaXMgdG8gbWF0Y2ggbmV3IGZpbGUgbGlzdAoJb3JkZXIuCgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKMjAwNC0wMS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHZlcnNpb24uYyAodmVyc2lvbl9zdHJpbmcpOiBDaGFuZ2UgdG8gMy41LjAuCgkqIGRvYy9pbmNsdWRlL2djYy1jb21tb24udGV4aSAodmVyc2lvbi1HQ0MpOiBMaWtld2lzZS4KCjIwMDQtMDEtMTYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGxvYWRfdHBfZGkpOiBGaXggcGFzdG8uCgoJUFIgb3B0LzEzNjA4CgkqIGkzODYuYyAoaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCk6IEZpeCBmb3IgYWxsb2NhIG9uIGxlYWYgZnVuY3Rpb24uCgoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX3R5cGVfY2FzdCwgcHBfY19hYnN0cmFjdF9kZWNsYXJhdG9yLAoJcHBfY19jaGFyYWN0ZXJfY29uc3RhbnQsIHBwX2NfZmxvYXRpbmdfY29uc3RhbnQsCglwcF9jX2FkZGl0aXZlX2V4cHJlc3Npb24sIHBwX2Nfc2hpZnRfZXhwcmVzc2lvbiwKCXBwX2NfZXF1YWxpdHlfZXhwcmVzc2lvbiwgcHBfY19hbmRfZXhwcmVzc2lvbiwKCXBwX2NfZXhjbHVzaXZlX29yX2V4cHJlc3Npb24sIHBwX2NfaW5jbHVzaXZlX29yX2V4cHJlc3Npb24sCglwcF9jX2xvZ2ljYWxfYW5kX2V4cHJlc3Npb24pOiBSZW1vdmUgaW5saW5lIG1vZGlmaWVyLgoJKiBkd2FyZjJvdXQuYyAoZ2V0X0FUKTogTGlrZXdpc2UuCgkqIGV0LWZvcmVzdC5jIChldF9zcGxheSk6IExpa2V3aXNlLgoJKiByYS5oIChyYV9hbGxvYywgcmFfY2FsbG9jKTogTGlrZXdpc2UKCjIwMDQtMDEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvZnJ2L2Zydi1wcm90b3MuaDogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogY29uZmlnL2Zydi9mcnYuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2YmVnaW4uYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2ZW5kLmM6IExpa2V3aXNlLgoKMjAwNC0wMS0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHN5c3RlbS5oIChMSU5LRVJfRE9FU19OT1RfV09SS19XSVRIX0RXQVJGMik6IFBvaXNvbi4KCSogZG9jL3RtLnRleGkgKFBSRUZFUlJFRF9ERUJVR0dJTkdfVFlQRSk6IERvbid0IG1lbnRpb24KCUxJTktFUl9ET0VTX05PVF9XT1JLX1dJVEhfRFdBUkYyLgoJKExJTktFUl9ET0VTX05PVF9XT1JLX1dJVEhfRFdBUkYyKTogUmVtb3ZlLgoKMjAwNC0wMS0xNiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJUFIgMTE4NjQKCSogcG9zdHJlbG9hZC5jIChyZWxvYWRfY3NlX3NpbXBsaWZ5X29wZXJhbmRzKTogRG9uJ3QgcmVtb3ZlCglpbXBsaWNpdCBleHRlbnNpb24gZnJvbSBMT0FEX0VYVEVORF9PUC4KCjIwMDQtMDEtMTYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBvcHQvMTEzNTAKCSogY2ZnY2xlYW51cC5jICh0cnlfb3B0aW1pemVfY2ZnKTogU3VwcHJlc3MgdGFibGVqdW1wIHJlbW92YWwKCWFmdGVyIHJlbG9hZC4KCSogY2ZncnRsLmMgKHJ0bF9jYW5fbWVyZ2VfYmxvY2tzLCBjZmdsYXlvdXRfY2FuX21lcmdlX2Jsb2NrcywKCXJ0bF90cnlfcmVkaXJlY3RfYnlfcmVwbGFjaW5nX2JyYW5jaCk6IExpa2V3aXNlLgoKMjAwNC0wMS0xNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUFIgcGNoLzEzNjg5CgkqIGFsaWFzLmMgKHN0cnVjdCBhbGlhc19zZXRfZW50cnkpOiBNYXJrIGZvciBHQy4KCShhbGlhc19zZXRzKTogTWFrZSBzdGF0aWMsIG1hcmsgZm9yIEdDLgoJKHJlY29yZF9hbGlhc19zdWJzZXQpOiBVc2UgR0MgdG8gYWxsb2NhdGUgYWxpYXMgc3RydWN0dXJlcy4KCSogdmFycmF5LmMgKGVsZW1lbnQpOiBNYWtlIGdlbmVyaWMgdmFycmF5cyBHQ2VkLgoKCVBSIHBjaC8xMzM2MQoJKiBjLXR5cGVjay5jIChjb25zdHJ1Y3Rvcl9hc21zcGVjKTogRGVsZXRlLgoJKHN0cnVjdCBpbml0aWFsaXplcl9zdGFjayk6IERlbGV0ZSBmaWVsZCAnYXNtc3BlYycuCgkoc3RhcnRfaW5pdCk6IERlbGV0ZSBzYXZpbmcgb2YgYXNtc3BlYy4KCShmaW5pc2hfaW5pdCk6IERvbid0IHVwZGF0ZSBjb25zdHJ1Y3Rvcl9hc21zcGVjLgoJKiBkd2FyZjJvdXQuYyAocnRsX2Zvcl9kZWNsX2xvY2F0aW9uKTogRHVwbGljYXRlIHN0cmluZyBmcm9tIHRyZWUuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbSk6IER1cGxpY2F0ZSBzdHJpbmdzIGZyb20gdHJlZS4KCShleHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAodHJlZV9zaXplKTogVXBkYXRlIGNvbXB1dGF0aW9uIG9mIHNpemUgb2YgU1RSSU5HX0NTVC4KCShtYWtlX25vZGUpOiBEb24ndCBtYWtlIFNUUklOR19DU1Qgbm9kZXMuCgkoYnVpbGRfc3RyaW5nKTogQWxsb2NhdGUgc3RyaW5nIHdpdGggdHJlZSBub2RlLgoJKiB0cmVlLmRlZiAoU1RSSU5HX0NTVCk6IFVwZGF0ZSBjb21tZW50LgoJKiB0cmVlLmggKFRSRUVfU1RSSU5HX1BPSU5URVIpOiBBZGp1c3QgZm9yIGNoYW5nZSB0byBTVFJJTkdfQ1NULgoJKHRyZWVfc3RyaW5nKTogUGxhY2UgY29udGVudHMgb2Ygc3RyaW5nIGluIHRyZWUgbm9kZS4KCSogY29uZmlnL3NoL3NoLmMgKHNoX2hhbmRsZV9zcF9zd2l0Y2hfYXR0cmlidXRlKTogRHVwbGljYXRlIHN0cmluZwoJZnJvbSB0cmVlLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3ZhX2FyZyk6IE5vIG5lZWQgdG8gc3BlY2lhbC1jYXNlCglhbHRpdmVjIG9wZXJhbmRzLgoKMjAwNC0wMS0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGMtY29tbW9uLmg6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGMtY3BwYnVpbHRpbi5jOiBMaWtld2lzZS4KCSogYy1wcmFnbWEuYzogTGlrZXdpc2UuCgkqIGNhbGxzLmM6IExpa2V3aXNlLgoJKiBjb2xsZWN0Mi5jOiBMaWtld2lzZS4KCSogY3BwY2hhcnNldC5jOiBMaWtld2lzZS4KCSogY3BwdHJhZC5jOiBMaWtld2lzZS4KCSogZGJ4b3V0LmM6IExpa2V3aXNlLgoJKiBkZWZhdWx0cy5oOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmM6IExpa2V3aXNlLgoJKiBnZW5hdXRvbWF0YS5jOiBMaWtld2lzZS4KCSogZ2VuY29uZGl0aW9ucy5jOiBMaWtld2lzZS4KCSogZ2VuZmxhZ3MuYzogTGlrZXdpc2UuCgkqIGdlbmd0eXBlLmM6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYzogTGlrZXdpc2UuCgkqIGxvb3AuYzogTGlrZXdpc2UuCgkqIHByZWRpY3QuYzogTGlrZXdpc2UuCgkqIHNkYm91dC5jOiBMaWtld2lzZS4KCjIwMDQtMDEtMTUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kICgqbW92dGlfaW50ZXJuYWwpOiBDIG91dHB1dCB0ZW1wbGF0ZQoJZXh0cmFjdGVkIHRvIGlhNjQuYy4KCSgqbW92dGlfaW50ZXJuYWxfcmVnKTogRGVsZXRlLgoJKHJlbG9hZF9pbnRpLCByZWxvYWRfb3V0dGkpOiBVc2UgdGhlIGNvcnJlY3QgbW9kZSBvbiBvcGVyYW5kIDIKCWluIHRoZSBmaXJzdCBwbGFjZSwgZG9uJ3QgZml4IGl0IHVwIGluIHRoZSBvdXRwdXQgdGVtcGxhdGUuCgkobW92dGYsIHJlbG9hZF9vaW50ZiwgcmVsb2FkX291dHRmKTogTmV3IGV4cGFuZGVycy4KCSgqbW92dGZfaW50ZXJuYWwpOiBOZXcgZGVmaW5lX2luc25fYW5kX3NwbGl0LgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfc3BsaXRfdGltb2RlKTogUmVuYW1lIHRvIGlhNjRfc3BsaXRfdG1vZGU7CgltYWtlIHN0YXRpYzsgZG8gbm90IGhhbmQgVEZtb2RlIENPTlNUX0RPVUJMRXMgdG8gc3BsaXRfZG91YmxlLgoJKGlhNjRfc3BsaXRfdG1vZGVfbW92ZSk6IE5ldyBmdW5jdGlvbiwgYm9keSBtb3N0bHkgcHVsbGVkCglmcm9tIGlhNjQubWQ6Km1vdnRpX2ludGVybmFsLgoJKGlhNjRfZnVuY3Rpb25fYXJnX3dvcmRzKTogTmV3IGZ1bmN0aW9uLCBleHRyYWN0ZWQgY29tbW9uCglsb2dpYyBmcm9tIGlhNjRfZnVuY3Rpb25fYXJnIGV0IHNlcS4KCShpYTY0X2Z1bmN0aW9uX2FyZ19vZmZzZXQpOiBMaWtld2lzZS4gIEhhbmRsZSBjb3JyZWN0bHkgdGhlCgljYXNlIG9mIGEgc2NhbGFyIHF1YW50aXR5IDE2IGJ5dGVzIHdpZGUgd2l0aCBvbmx5IDgtYnl0ZSBhbGlnbm1lbnQuCgkoaWE2NF9mdW5jdGlvbl9hcmcsIGlhNjRfZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MpCgkoaWE2NF9mdW5jdGlvbl9hcmdfYWR2YW5jZSk6IFVzZSBpYTY0X2Z1bmN0aW9uX2FyZ193b3JkcyBhbmQKCWlhNjRfZnVuY3Rpb25fYXJnX29mZnNldC4KCShpYTY0X2Z1bmN0aW9uX3ZhbHVlKTogVENtb2RlIGRvZXMgbm90IGdvIGluIGZsb2F0IHJlZ3MuCgkoaWE2NF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogQWxzbyBoYW5kbGUgVEZtb2RlLgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBSZW1vdmUgcHJvdG90eXBlIGZvcgoJaWE2NF9zcGxpdF90aW1vZGU7IGFkZCBwcm90b3R5cGUgZm9yIGlhNjRfc3BsaXRfdG1vZGVfbW92ZS4KCjIwMDQtMDEtMTUgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoTUFJTlQpOiBNYWtlIGl0IGFuIGltbWVkaWF0ZSBhc3NpZ25tZW50LgoKMjAwNC0wMS0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9tMzJyL20zMnIubWQ6IFJlbW92ZSB1c2VsZXNzIGNhbGxzIHRvIGdlbl9sb3dwYXJ0LgoKMjAwNC0wMS0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9jb2ZmLmg6IFJlcGxhY2UgSGl0YWNoaSB3aXRoIFJlbmVzYXMuCgkqIGNvbmZpZy9oODMwMC9lbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbTogTGlrZXdpc2UuCgoyMDA0LTAxLTE1ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jICh1c2VzX1RPQyk6IFdyYXAgI2lmIFRBUkdFVF9FTEYKCWFyb3VuZCBpdC4KCjIwMDQtMDEtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfcmV0dXJuX2luX21lbW9yeSk6IE5ldy4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IExpa2V3aXNlLgoJKFRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChTVFJVQ1RfVkFMVUUpOiBSZW1vdmUuCgkoUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoKMjAwNC0wMS0xNSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEzMzc1CgkqIGdjc2UuYyAoaGFuZGxlX2F2YWlsX2V4cHIpOiBKdXN0IHJldHVybiBpZiB0aGUgc291cmNlIGlzIG5vdCBhCglzaW5nbGUgc2V0LgoKMjAwNC0wMS0xNSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgkgICAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBhcm0vbGliMWZ1bmNzLmFzbSAoQVJNX0ZVTkNfU1RBUlQpOiBDb3JyZWN0IGludGVyd29ya2luZyBjYXNlLgoJKEVRVUlWKTogRGVmaW5lLgoJKEFSTV9GVU5DX0FMSUFTKTogTmV3IG1hY3JvLgoJKiBhcm0vaWVlZTc1NC1kZi5TIChnZWRmMiwgbGVkZjIsIG5lZGYyLCBlcWRmMik6IFVzZSBpdC4KCSogYXJtL2llZWU3NTQtc2YuUyAoZ2VzZjIsIGxlc2YyLCBuZXNmMiwgZXFzZjIpOiBVc2UgaXQuCgoyMDA0LTAxLTE1ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIG9wdGltaXphdGlvbi8xMjM3MgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IEFkZCBjYWxsX2Z1c2FnZSBkYXRhIGZvciBzdGFjayBhcmd1bWVudHMgaW4KCWNvbnN0YW50IGNhbGxzLgoKMjAwNC0wMS0xNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHVzZXNfVE9DKTogQ29ycmVjdCBjb21tZW50LiAgTWFrZSBzdGF0aWMuCgkocnM2MDAwX2VsZl9kZWNsYXJlX2Z1bmN0aW9uX25hbWUpOiBGb3JtYXR0aW5nLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAodXNlc19UT0MpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgoyMDA0LTAxLTE1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgYm9vdHN0cmFwLzEzNjkyCgkqIHNjaGVkLWRlcHMuYyAoc2NoZWRfYW5hbHl6ZV8xLCBzY2hlZF9hbmFseXplXzIpOiBGaXggdGhpbmtvIGluCglwcmV2aW91cyBwYXRjaC4KCjIwMDQtMDEtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoUkVHX0FMTE9DX09SREVSKTogUmVvcmRlciBmcCByZWdzIGFmdGVyCglpbnRlZ2VyIHJlZ3Mgb2YgdGhlIHNhbWUgY2FsbC1zYXZlZG5lc3MuCgoyMDA0LTAxLTE1ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCVBSIGJvb3RzdHJhcC8xMzU2MgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG91dHB1dF9tb3ZlX2NvbnN0X2ludG9fZGF0YV9yZWcpOiBDbGVhciBjYwoJc3RhdHVzIGZvciBOT1RCL05PVFcvTkVHVyBtZXRob2RzLgoKMjAwNC0wMS0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9pbnZva2UudGV4aTogVXBkYXRlIGR1bXAgZmlsZSBuYW1lcy4gIEZpeCBhIHR5cG8uCgoyMDA0LTAxLTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fdmFfZW5kKTogRG9uJ3QgdXNlCglFWFBBTkRfQlVJTFRJTl9WQV9FTkQuCgkqIHN5c3RlbS5oIChFWFBBTkRfQlVJTFRJTl9WQV9FTkQpOiBQb2lzb24uCgkqIGNvbmZpZy9kMzB2L2QzMHYuaDogUmVtb3ZlIGEgY29tbWVudGVkLW91dCBkZWZpbml0aW9uIG9mCglFWFBBTkRfQlVJTFRJTl9WQV9FTkQuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oOiBMaWtld2lzZS4KCjIwMDQtMDEtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzeXN0ZW0uaCAoU1RSVUNUX1ZBTFVFX0lOQ09NSU5HX1JFR05VTSk6IFBvaXNvbi4KCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfc3RydWN0X3ZhbHVlX3J0eCk6IERvbid0IHVzZQoJU1RSVUNUX1ZBTFVFX0lOQ09NSU5HX1JFR05VTS4KCjIwMDQtMDEtMTUgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJUFIgYm9vdHN0cmFwLzEyNzQ0CgkqIGNvbmZpZ3VyZS5pbjogUmV2YW1wIGVuYWJsZS1nZW5lcmF0ZWQtZmlsZXMtaW4tc3JjZGlyIHJ1bGUgdG8gZGVmaW5lCglHRU5JTlNSQyBhbmQgbm90IHBhcnNlZGlyLiAgRGVmaW5lIHNyY2V4dHJhIGFzIGEgbGFuZ2hvb2suCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuaW46IFN1cHByZXNzIGRlZmF1bHQgLmwuYyBydWxlLiAgRG9uJ3Qgc3Vic3RpdHV0ZQoJcGFyc2VkaXIgYW5kIGRlbGV0ZSBhbGwgcmVmZXJlbmNlcyB0aHJvdWdob3V0LiAgQ29uZGl0aW9uYWxseSBkZWZpbmUKCXJ1bGUgZm9yIHNyY2V4dHJhIGRlcGVuZGVudCBvbiBHRU5JTlNSQy4KCShzdG1wLWRvY29iamRpcik6IERlbGV0ZS4KCShjLXBhcnNlLm8sIGdlbmd0eXBlLWxleC5vLCBnZW5ndHlwZS15YWNjLm8pOiBVc2UgaW1wbGljaXQgYnVpbGQgcnVsZS4KCShzcmNleHRyYSk6IENvcHkgYy1wYXJzZS55LCBjLXBhcnNlLmMsIGdlbmd0eXBlLWxleC5jLCBnZW5ndHlwZS15YWNjLmMsCglhbmQgZ2VuZ3R5cGUteWFjYy5oIGJhY2sgdG8gc291cmNlIGRpcmVjdG9yeS4KCShtYWludGFpbmVyLWNsZWFuKTogRGVsZXRlIGFsbCBwYXJzZSBmaWxlcyBpbiBzb3VyY2UgZGlyZWN0b3J5LgoJKGRpc3RjbGVhbik6IERlbGV0ZSBnZW5lcmF0ZWQgZmlsZXMuCgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy1wYXJzZS5vKTogVXNlIGltcGxpY2l0IGJ1aWxkIHJ1bGUuCgkob2JqYy1wYXJzZS5jLCBvYmpjLXBhcnNlLnkpOiBEb24ndCB1c2UgcGFyc2VkaXIuCgkob2JqYy5zcmNleHRyYSk6IENvcHkgb2JqYy1wYXJzZS55IGFuZCBvYmpjLXBhcnNlLmMgYmFjayB0byBzb3VyY2UKCWRpcmVjdG9yeSBpZiByZXF1ZXN0ZWQuCgkocG8tZ2VuZXJhdGVkKTogRG9uJ3QgdXNlIHBhcnNlZGlyLgoJKG9iamMubWFpbnRhaW5lci1jbGVhbik6IERlbGV0ZSBhYm92ZSBmaWxlcyBmcm9tIHNvdXJjZSBkaXJlY3RvcnkuCgoyMDA0LTAxLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL3RtLnRleGkgKEZVTkNUSU9OX1ZBTFVFKTogRml4IGEgdHlwby4KCjIwMDQtMDEtMTQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvdG0udGV4aTogUmVwbGFjZSBSRVRVUk5fSU5fTUVNT1JZIHdpdGgKCVRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZLgoKMjAwNC0wMS0xNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYnVpbHRpbnMuYyAoc3RkX2V4cGFuZF9idWlsdGluX3ZhX2FyZyk6IEFsaWduIG9wZXJhbmQgd2hlbiBuZWVkZWQuCgkqIGkzODYuYyAoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBTZXQgd2Fybl9zc2U7IGZpeCBoYW5kbGluZyBvZiB2YXJpYWRpYwoJZnVuY3Rpb25zIGFjY2VwdGluZyBTU0UgYXJndW1lbnRzCgkoZnVuY3Rpb25fYXJnKTogV2FybiBvbmx5IHdoZW4gYXNrZWQgdG8gd2Fybi4KCSogaTM4Ni5oIChpeDg2X2FyZ3MpOiBBZGQgd2Fybl9zc2Uvd2Fybl9tbXggZmllbHMuCgoyMDA0LTAxLTE0ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtcGFyc2UuaW4gKHN0bXRzX2FuZF9kZWNscyk6IE1ha2UgbGFiZWwgYXQgZW5kIG9mIGNvbXBvdW5kCglzdGF0ZW1lbnQgYSBoYXJkIGVycm9yLgoKMjAwNC0wMS0xNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBoLmMgKGNyZWF0ZV9lZGdlKTogVXNlIGxvY2FsLnJlZGVmaW5lZF9leHRlcm5faW5saW5lLgoJKiBjZ3JhcGguaCAoY2dyYXBoX2xvY2FsX2luZm8pOiBTb3J0IGZpZWxkcyBieSBzaXplOyBhZGQKCXJlZGVmaW5lZF9leHRlcm5faW5saW5lCgkoY2dyYXBoX2dsb2JhbF9pbmZvKTogU29ydCBmaWVsZHMgYnkgc2l6ZS4KCShjZ3JhcGhfbm9kZSk6IExpa2V3aXNlLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IFNlCglsb2NhbC5yZWRlZmluZWRfZXh0ZXJuX2lubGluZSBvbiByZWRlZmluaXRpb24uCgkoY2dyYXBoX2FuYWx5emVfZnVuY3Rpb24pOiBVc2UgaXQ7IGZpeCBmb3JtYXRpbmcuCgoyMDA0LTAxLTE0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgYysrLzEwNzc2CgkqIHNjaGVkLWRlcHMuYyAodHJ5ZV9kZXBlbmRlbmN5X2NhY2hlLCBhbnRpX2RlcGVuZGVuY3lfY2FjaGUsCglvdXRwdHVfZGVwZW5kZW5jeV9jYWNoZSwgZm9yd2FyZF9kZXBlbmRlbmN5X2NhaGUpOiBUcnVuIHRvIHZlY3RvcnMgb2YKCWJpdG1hcHMKCShjYWNoZV9zaXplKTogTmV3IHZhcmlhYmxlCgkoYWRkX2RlcGVuZGVuY2UpOiBVcGRhdGUgdXNlOyBjYW5vbml6ZSBlYXJseSBtZW1vcnkgbG9jYXRpb25zCgkoc2NoZWRfYW5hbHl6ZV8xKTogTGlrZXdpc2UuCgkoc2NoZWRfYW5hbHl6ZV8yKTogTGlrZXdpc2UuCgkoaW5pdF9kZXBlbmRlbmN5X2NhY2hlcyk6IEluaXRpYWxpemUgYml0bWFwcy4KCShmcmVlX2RlcGVuZGVuY3lfY2FjaGVzKTogRnJlZSBiaXRtYXBzCgoyMDA0LTAxLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2FsbHMuYzogUmVwbGFjZSBTVFJJQ1RfQVJHVU1FTlRfTkFNSU5HIGluIGNvbW1lbnRzIHdpdGgKCXRhcmdldG0uY2FsbHMuc3RyaWN0X2FyZ3VtZW50X25hbWluZygpLgoJKiB0YXJnZXQuaDogTGlrZXdpc2UuCgoyMDA0LTAxLTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGRlYnVnLzEzMjMxCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfc3RhY2tfYWRqdXN0KTogU2tpcCBwcm9sb2d1ZSBhbmQgZXBpbG9ndWUKCWluc3RydWN0aW9ucy4KCjIwMDQtMDEtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgYysrLzEyNDkxCgkqIGV4Y2VwdC5jIChzdHJ1Y3QgZWhfcmVnaW9uKTogQWRkIHUuZml4dXAucmVzb2x2ZWQuCgkocmVzb2x2ZV9vbmVfZml4dXBfcmVnaW9uKTogU3BsaXQgb3V0IGZyb20gLi4uCgkocmVzb2x2ZV9maXh1cF9yZWdpb25zKTogLi4uIGhlcmUuCgoyMDA0LTAxLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChTVFJVQ1RfVkFMVUUpOiBDaGFuZ2UgdG8gMC4KCjIwMDQtMDEtMTQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoU1RSVUNUX1ZBTFVFKTogUmVtb3ZlLgoJKiBjb25maWcvYWxwaGEvdm1zLmggKFNUUlVDVF9WQUxVRV9SRUdOVU0pOiBSZW1vdmUgI3VuZGVmLgoJKFNUUlVDVF9WQUxVRSk6IFJlbW92ZS4KCjIwMDQtMDEtMTQgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHN5c3RlbS5oOiBQb2lzb24gUFJPTU9URURfTU9ERQoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IERvbid0IG1lbnRpb24gdGhlCglQUk9NT1RFRF9NT0RFLgoJKiBsb29wLmMgKHVwZGF0ZV9naXZfZGVyaXZlKTogU2FtZS4KCSogdHJlZS5oIChERUNMX1JUTCk6IFNhbWUuCgoyMDA0LTAxLTE0ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCglQUiB0YXJnZXQvOTM2NQoJKiBzaC5jIChnZW5fYmxvY2tfcmVkaXJlY3QpOiBBZGQgc3BlY2lhbCBoYW5kbGluZyBvZiBSRVRVUk4uCgkoZ2VuX2Zhcl9icmFuY2gpIERvbid0IGNhbGwgZ2VuX3N0dWZmX2RlbGF5X3Nsb3QgaWYgdGhlcmUgaXMgbm8KCWZhciBicmFuY2ggdGFyZ2V0IChpLmUuIGl0J3MgYSByZXR1cm4pLgoKMjAwNC0wMS0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHJlZ3JlbmFtZS5jIChmaW5kX29sZGVzdF92YWx1ZV9yZWcpOiBGaXggYSB3YXJuaW5nLgoKMjAwNC0wMS0xNCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJUFIgYm9vdHN0cmFwLzEyNTI3CgkqIGNvbmZpZy5nY2MgKGFybSotKi1saW51eCopOiBEb24ndCBpbmNsdWRlIHVua25vd24tZWxmLmggaW4gdG1fZmlsZS4KCU1vdmUgbGludXgtZ2FzLmggYW5kIGxpbnV4LWVsZi5oIGJlZm9yZSBhb3V0LmguCgkqIGFybS9hcm0uaCAoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogT25seSBkZWZpbmUgaWYgbm90IGFscmVhZHkuCgkqIGFybS9saW51eC1lbGYuaCAoU1VCVEFSR0VUX0NQVV9ERUZBVUxUKTogRGVmaW5lLgoKMjAwNC0wMS0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9tMzJyL20zMnIubWQ6IFVzZSBHRU5fSU5UIGluc3RlYWQgb2YgZ2VuX3J0eAoJKENPTlNUX0lOVCwgVk9JRG1vZGUsIC4uLikuCgoyMDA0LTAxLTE0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChmaW5kX29sZGVzdF92YWx1ZV9yZWcpOiBJZiB0aGUgcmVwbGFjZW1lbnQgdXNlcwoJbXVsdGlwbGUgaGFyZCByZWdpc3RlcnMsIGNoZWNrIHRoYXQgYWxsIG9mIHRoZW0gYXJlIGluIENMQVNTLgoKMjAwNC0wMS0xNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYWxpYXMuYyAoZ2V0X2FsaWFzX3NldCk6IEluaXRpYWxpemUgYWxpYXMgc2V0IHRvIDAgd2hlbiBzdWJzZXQgaXMKCWltcG9zc2libGUuCgoyMDA0LTAxLTE0ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW46IERlZmluZSBNQUlOVCBmcm9tIC0tZW5hYmxlLW1haW50YWluZXItbW9kZS4KCjIwMDQtMDEtMTQgIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3N0YWNrX2luZm8pCglDYWxjdWxhdGUgYWx3YXlzIHZyc2F2ZV9tYXNrIGlmIFRBUkdFVF9BTFRJVkVDLgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogRW1pdCBjb2RlIGZvciB2cnNhdmUKCW9ubHkgaWYgVEFSR0VUX0FMVElWRUNfVlJTQVZFLgoJKHJzNjAwMF9lbWl0X2VwaWxvZ3VlKTogTGlrZXdpc2UuCgoyMDA0LTAxLTE0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kICh0aWVfYWRkMzIpOiBGaXggcGFzdG8uCgkodGllX2FkZDY0KTogTGlrZXdpc2UuCgoyMDA0LTAxLTE0ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqYWRkcWlfMV9zbHApOiBEbyBub3QgYWNjZXNzIG9wZXJhbmRzWzJdLgoKMjAwNC0wMS0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLXByb3Rvcy5oOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2lxMjAwMC9pcTIwMDAubWQ6IExpa2V3aXNlLgoKMjAwNC0wMS0xNCAgSi4gQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGlzX2FkYV9zdWJyYW5nZV90eXBlKTogTm8gbG9uZ2VyIGNoZWNrIHRoZSBUWVBFX05BTUUuCgkoc3VicmFuZ2VfdHlwZV9kaWUpOiBBZGQgaGFuZGxlIGZvciBuYW1lbGVzcyBzdWJyYW5nZSB0eXBlcy4KCjIwMDQtMDEtMTMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IFJlcGxhY2UgZG9fbW92c2kgd2l0aAoJaDgzMDBfZXhwYW5kX21vdnNpLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoZG9fbW92c2kpOiBDaGFuZ2UgdG8KCWg4MzAwX2V4cGFuZF9tb3ZzaS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChtb3ZzaSk6IFJlcGxhY2UgZG9fbW92c2kgd2l0aAoJaDgzMDBfZXhwYW5kX21vdnNpLgoJKG1vdnNmKTogTGlrZXdpc2UuCgoyMDA0LTAxLTEzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGRvc2l6ZSk6IENoYW5nZSB0bwoJaDgzMDBfZW1pdF9zdGFja19hZGp1c3RtZW50LiAgVXBkYXRlIGNhbGxlcnMuCgoyMDA0LTAxLTEzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChtb3ZzdHJpY3RxaSk6IEFkZCBhbiBhbHRlcm5hdGl2ZSB3aXRoCgl0aGUgc291cmNlIGJlaW5nIHBvc3RfaW5jLiAgVGlnaHRlbiB0aGUgcHJlZGljYXRlIGZvciB0aGUKCWRlc3RpbmF0aW9uIHRvIHJlZ2lzdGVyX29wZXJhbmQuCgkobW92c3RyaWN0aGkpOiBMaWtld2lzZS4KCjIwMDQtMDEtMTMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzeXN0ZW0uaCAoU0hBUkVEX0JTU19TRUNUSU9OX0FTTV9PUCk6IFBvaXNvbi4KCSogdmFyYXNtLmMgKGJzc19zZWN0aW9uKTogRG9uJ3QgdXNlIFNIQVJFRF9CU1NfU0VDVElPTl9BU01fT1AuCgkqIGRvYy90bS50ZXhpIChTSEFSRURfQlNTX1NFQ1RJT05fQVNNX09QKTogUmVtb3ZlLgoKMjAwNC0wMS0xNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBhcnRpYWwgZml4IFBSIGMrKy8xMjg1MAoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IEFsd2F5cyBnZ2NfY29sbGVjdCB3aGVuCglhdCB6ZXJvIG5lc3QgbGV2ZWwuCgoyMDA0LTAxLTEzICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmggKFJFR0lTVEVSX05BTUVTKTogQWRkIG1pc3NpbmcgImFyZ3B0ciIKCXBzZXVkby1yZWdpc3Rlci4KCjIwMDQtMDEtMTMgIERldmFuZyBQYXRlbCA8ZHBhdGVsQGFwcGxlLmNvbQoKCVBSIGRlYnVnLzcwNzgKCSogZGJ4b3V0LmMgKGRieG91dF9zeW1ib2xfbmFtZSk6IEVtaXQgbWFuZ2xlZCBuYW1lcyBmb3IKCU5BTUVTUEFDRV9ERUNMIG1lbWViZXJzLgoKMjAwNC0wMS0xMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYysrLzEyNzA5CgkqIGMtY29tbW9uLmMgKGZpbmlzaF9mbmFtZV9kZWNscyk6IFVzZSB0aGUgY2hhaW4gb25seSBpZiB0aGUKCXRyZWUgaXMgYW4gZXhwcl9zdG10LgoKMjAwNC0wMS0xMyAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBydGwuZGVmOiBBZGQgY29tbWVudCBhYm91dCBuZXcgb3B0aW9uIGluIGF1dG9tYXRhX29wdGlvbi4KCgkqIGdlbmF1dG9tYXRhLmMgKFBST0dSRVNTX09QVElPTik6IE5ldyBtYWNyby4KCShwcm9ncmVzc19mbGFnKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShnZW5fYXV0b21hdGFfb3B0aW9uKTogUHJvY2VzcyBgcHJvZ3Jlc3MnLgoJKHRyYW5zZm9ybV9pbnNuX3JlZ2V4cHMsIGNoZWNrX3VuaXRfZGlzdHJpYnV0aW9uc190b19hdXRvbWF0YSwKCW1ha2VfYXV0b21hdG9uLCBOREZBX3RvX0RGQSwgYnVpbGRfYXV0b21hdG9uLCBjcmVhdGVfYXV0b21hdGEsCglleHBhbmRfYXV0b21hdGEsIHdyaXRlX2F1dG9tYXRhKTogUHJpbnQgYWJvdXQgdGhlIHByb2dyZXNzIG9ubHkgaWYKCXByb2dyZXNzX2ZsYWcuICBSZW1vdmUgZmZsdXNoLgoJKGluaXRpYXRlX2F1dG9tYXRvbl9nZW4pOiBQcm9jZXNzIGNvbW1hbmQgbGluZSBmbGFnIGAtcHJvZ3Jlc3MnLgoKCSogZG9jL21kLnRleGk6IERlc2NyaWJlIHRoZSBuZXcgb3B0aW9uLgoKMjAwNC0wMS0xMyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY2ZnLmMgKGR1bXBfYmIpOiBEdW1wIGVudHJ5IGVkZ2VzLgoKMjAwNC0wMS0xMyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAodGh1bWJfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBPbmx5IGFsbG93IGNvbnN0YW50IHBvb2wKCXJlZmVyZW5jZXMgZnJvbSBTSW1vZGUuCgkqIGFybS5tZCAodGh1bWJfbW92aGlfaW5zbik6IERvbid0IGFsbG93IG1pbmlwb29sIHJlZmVyZW5jZXMuCgoyMDA0LTAxLTEzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc3lzdGVtLmggKFRFWFRfU0VDVElPTik6IFBvaXNvbi4KCSogdmFyYXNtLmMgKHRleHRfc2VjdGlvbik6IERvbid0IHVzZSBURVhUX1NFQ1RJT04uCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9maWxlX3N0YXJ0KTogRml4IGEgY29tbWVudCB0eXBvLgoJKiBkb2MvdG0udGV4aSAoVEVYVF9TRUNUSU9OKTogUmVtb3ZlLgoKMjAwNC0wMS0xMyAgQmVuIEVsbGlzdG9uICA8YmplQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogZG9jL3J0bC50ZXhpIChWZWN0b3IgT3BlcmF0aW9ucyk6IFJlbW92ZSBkZWZ1bmN0IHZlY19jb25zdCBpdGVtLgoKMjAwNC0wMS0xMiAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogdW53aW5kLWxpYnVud2luZC5jOiBEZWxldGUuCgoyMDA0LTAxLTEyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIDEzNjU2CgkqIGMtZGVjbC5jIChkaWFnbm9zZV9taXNtYXRjaGVkX2RlY2xzKTogV2hlbmV2ZXIgbmV3dHlwZSBvcgoJb2xkdHlwZSBpcyBzZXQsIHNldCAqbmV3dHlwZXAgb3IgKm9sZHR5cGVwIHRvby4gIERvIG5vdCBzZXQKCXRoZW0gYXQgdGhlIHZlcnkgZW5kLgoJKHZhbGlkYXRlX3Byb3RvX2FmdGVyX29sZF9kZWZuKTogUmVzdHJ1Y3R1cmUgZm9yIGNvbXByZWhlbnNpYmlsaXR5OwoJbWFrZSBlcnJvciBtZXNzYWdlcyBjbGVhcmVyLgoKMjAwNC0wMS0xMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHZhcnJheS5oIChWQVJSQVlfUE9QKTogQWRkIGNoZWNraW5nIHZhcmlhbnQsIGFib3J0cyBvbiB1bmRlcmZsb3cuCgkoVkFSUkFZX1RPUCk6IFVzZSBWQVJSQVlfQ0hFQ0sgc28gdGhlIGFjY2VzcyBpcyBib3VuZHMtY2hlY2tlZC4KCSogdmFycmF5LmM6IE5vIG5lZWQgdG8gcHJvdG90eXBlIGVycm9yLgoJKHZhcnJheV9jaGVja19mYWlsZWQpOiBXcmFwIGxvbmcgc3RyaW5nIG9udG8gdHdvIGxpbmVzLgoJKHZhcnJheV91bmRlcmZsb3cpOiBOZXcgZnVuY3Rpb24uCgoyMDA0LTAxLTEzICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJUFIgYysrLzEzMzc2CgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IEtpbGwgYG5hbWUnIGZpZWxkLgoJKGN1cnJlbnRfZnVuY3Rpb25fbmFtZSk6IE1ha2UgaXQgYW4gZXh0ZXJuIGZ1bmN0aW9uLgoJKiBmdW5jdGlvbi5jIChjdXJyZW50X2Z1bmN0aW9uX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkqIGdyYXBoLmM6IFVwZGF0ZSBhbGwgdXNlcyBvZiBjdXJyZW50X2Z1bmN0aW9uX25hbWUuCgkqIGdjc2UuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jLCBjb25maWcvYXZyL2F2ci5jLCBjb25maWcvYzR4L2M0eC5jLAoJY29uZmlnL21pcHMvbWlwcy5jLCBjb25maWcvcGRwMTEvcGRwMTEuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pcDJrL2lwMmsuYyAoZnVuY3Rpb25fcHJvbG9ndWUpOiBVc2UgTUFJTl9OQU1FX1AKCWluc3RlYWQgb2YgYSBzdHJjbXAgd2l0aCAibWFpbiIuCgoyMDA0LTAxLTEzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjLWRlY2wuYyAoZGlhZ25vc2VfbWlzbWF0Y2hlZF9kZWNscyk6IEZpeCB3YXJuaW5nIGNhbGxzLgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfb3B0aW1pemVfZnVuY3Rpb24pOiBBbHdheXMgZG8KCW9wdGltaXplX2lubGluZV9jYWxscyB3aGVuIHRoZXJlIGlzIGFsd2F5c19pbmxpbmUgY2FsbGVlLgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmcpOiBGaXggZm9ybWF0aW5nLgoJKiB0cmVlLWlubGluZS5jIChpbmxpbmFibGVfZnVuY3Rpb25fcCk6IERvIHNvcnJ5IGZvciBhbHdheXNpbmxpbmUKCWZ1bmN0aW9ucy4KCShleHBhbmRfY2FsbF9pbmxpbmUpOiBMaWtld2lzZS4KCSogdG9wbGV2LmggKHNvcnJ5KTogRml4IHByb3RvdHlwZS4KCjIwMDQtMDEtMTIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZXhwZWN0X2p1bXApOiBTaW1wbGlmeSBsb2dpYy4gSGFuZGxlCgljb25kaXRpb25hbCBqdW1wcyB0aGF0IGRyb3AgdGhyb3VnaCB0byB1bmNvbmRpdGlvbmFsIGp1bXBzIG9yIHRoZQoJZW5kIG9mIHRoZSBzZXF1ZW5jZS4KCjIwMDQtMDEtMTMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGFsaWFzLmMgKG5ld19hbGlhc19zZXQpOiBDb25zdHJ1Y3QgdGhlIGFsaWFzX3NldCB2YXJyYXkuCgkoaW5pdF9hbGlhc19vbmNlKTogRG9uJ3QgZG8gaXQgaGVyZS4KCjIwMDQtMDEtMTIgIE1hcmMgRXNwaWUgPGVzcGllQG9wZW5ic2Qub3JnPgoKCSogc3lzdGVtLmg6IGhhbmRsZSBZWUJZQUNDIGxpa2UgWVlCSVNPTi4KCjIwMDQtMDEtMTIgIEpvbmF0aGFuIE1lcnJpbWFuIDxqb25tQGR1YWxpdHltZWRpYS5jb20+CgoJUFIgdGFyZ2V0LzEwODQ3CgkqIGNvbmZpZy5nY2M6IE5vIGxvbmdlciBpbmNsdWRlcyBjb25mbGljdGluZyBoZWFkZXIgc3BhcmMvc29sMi5oIHdoZW4KCWJ1aWxkaW5nIG9uIHNwYXJjNjQtKi1vcGVuYnNkKi4KCjIwMDQtMDEtMTIgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGRlYnVnLzEzNTM5CgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IFByb3RlY3RlZCBpbmhlcml0YW5jZSBpcyBub3QKCXByaXZhdGUgYnV0IHByb3RlY3RlZC4KCjIwMDQtMDEtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zeW1ib2xpY19jb25zdGFudF9wKTogUmV2ZXJ0IGxhc3QgcGF0Y2guCgoyMDA0LTAxLTEyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCVBSIG9wdGltaXphdGlvbi8xMjUwOC4KCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IFJlbW92ZSBhIGRlYWQgc2V0IGluIGEgcGFyYWxsZWwKCWV2ZW4gaWYgaXRzIGRlc3RpbmF0aW9uIGlzIGEgc3VicmVnLgoKCVJldmVydDoKCTIwMDMtMDYtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfc2V0KTogRG9uJ3QgbW92ZSBhIHN1YnJlZyBpbiBTRVRfU1JDIHRvCglTRVRfREVTVCBpZiBXT1JEX1JFR0lTVEVSX09QRVJBVElPTlMgaXMgbm90IGRlZmluZWQuCgoyMDA0LTAxLTEyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHJlYWwuYzogVXBkYXRlIGNvcHlyaWdodCBkYXRlLgoJKiBlbWl0LXJ0bC5jOiBMaWtld2lzZS4KCSogcnRsLmg6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLWxkb3VibGUuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBMaWtld2lzZS4KCjIwMDQtMDEtMTIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9pbml0X2xpYmZ1bmNzKTogQWRkIEFJWAoJVEZtb2RlIHRvIFNJbW9kZSBsaWJmdW5jcy4KCjIwMDQtMDEtMTIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTEzOTcKCSogdmFyYXNtLmMgKGFzc2VtYmxlX2FsaWFzKTogUmVtb3ZlIHdlYWsgYWxpYXNlcyBmcm9tIHdlYWtfZGVjbHMuCgoyMDA0LTAxLTEyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgb3B0LzEyODI2CgkqIGxvb3AuYyAoaW5zZXJ0X2xvb3BfbWVtKTogUHJlZmZlciBWT0xBVElMRSBtZW1vcnkgcmVmZXJlbmNlcyB0byBiZQoJc3RvcmVkLgoKCVBSIG9wdC8xMjg2MwoJKiBjZmdjbGVhbnVwLmMgKGxhYmVsX2lzX2p1bXBfdGFyZ2V0X3ApOiBNb3ZlIHRvLi4uCgkqIHJ0bGFuYWwuYyAobGFiZWxfaXNfanVtcF90YXJnZXRfcCk6IC4uLiBoZXJlLgoJKiBjZmdydGwuYyAoY2ZnX2xheW91dF9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gpOiBGaXggcmVkaXJlY3Rpbmcgb2YgZmFsbHRocnUKCWVkZ2VzIHVuaWZpZWQgd2l0aCBicmFuY2ggZWRnZXMuCgoyMDA0LTAxLTEyICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9pbW1lZF9zdWJyZWcpOiBDb3JyZWN0bHkgZXh0cmFjdCB0aGUKCWhpZ2ggd29yZCBvZiBhbiBpbnRlZ3JhbCBDT05TVF9ET1VCTEUuCgoyMDA0LTAxLTEyICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3BsdXNfbWludXMpOiBBbHdheXMgZ2VuZXJhdGUgY2Fub25pY2FsIGZvcm0uCgoyMDA0LTAxLTEyICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCglQUiB0YXJnZXQvMTM1ODUKCSogc2gtcHJvdG9zLmggKGNoZWNrX3VzZV9zZnVuY19hZGRyKTogRGVjbGFyZS4KCSogc2guYyAoZXh0cmFjdF9zZnVuY19hZGRyLCBjaGVja191c2Vfc2Z1bmNfYWRkcik6IE5ldyBmdW5jdGlvbnMuCgkqIHNoLm1kICh1c2Vfc2Z1bmNfYWRkcik6IFVzZSBjaGVja191c2Vfc2Z1bmNfYWRkciBpbiBpbnNuIHByZWRpY2F0ZS4KCjIwMDQtMDEtMTIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGFsaWFzLmM6IEludmx1ZGUgdmFycmF5LmgKCShhbGlhc19zZXRzKTogVHVybiBpbnRvIHZhcnJheS4KCShnZXRfYWxpYXNfc2V0X2VudHJ5KTogVXNlIFZBUlJBWTsgbWFyayBpbmxpbmUuCgkobWVtc19pbl9kaXNqb2ludF9hbGlhc19zZXRzX3ApOiBNYXJrIGlubGluZS4KCShyZWNvcmRfYWxpYXNfc3Vic2V0KTogVXNlIHZhcnJheS4KCShpbml0X2FsaWFzX29uY2UpOiBJbml0aWFsaXplIHZhcnJheS4KCShuZXdfYWxpYXNfc2V0KTogR3JvdyBhcnJheS4KCSogdmFycmF5LmM6IE1ha2UgVkFSUkFZX0dFTkVSSUNfUFRSIG5vbiBHVFlpemVkLgoKMjAwNC0wMS0xMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBhcnRpYWwgZml4IGZvciBQUiBvcHQvMTA3NzYgSUkKCSogY3NlbGliLmM6IEluY2x1ZGUgcGFyYW1zLmgKCShjc2VsaWJfaW52YWxpZGF0ZV9tZW0pOiBMaW1pdCBhbW91bnQgb2Ygbm9uY29uZmxpY3RpbmcgbWVtb3J5Cglsb2NhdGlvbnMuCgkqIHBhcmFtcy5kZWYgKFBBUkFNX01BWF9DU0VMSUJfTUVNT1JZX0xPQ0FUSU9OUyk6IE5ldy4KCSogTWFrZWZpbGUuaW4gKGNzZWxpYi5vKTogRGVwZW5kIG9uIHBhcmFtcy5oCgoyMDA0LTAxLTEyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfc2ltcGxpZnlfcnR4KTogRG9uJ3QgcGFzcyBWT0lEbW9kZSB0bwoJc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uIGlmIHRoZSBvcGVyYW5kIGhhcyBhIGtub3duIG1vZGUuCgoyMDA0LTAxLTEyICBIYXJ0bXV0IFBlbm5lciAgPGhwZW5uZXJAZGUuaWJtLmNvbT4KCglQUiB0YXJnZXQvMTM1MzQKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAod29yZF9vZmZzZXRfbWVtcmVmX29wZXJhbmQpOiBOZXcKCXByZWRpY2F0ZSB0byBoYW5kbGUgJ2xkJyBjb25mb3JtIGFkZHJlc3Nlcy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoRVhUUkFfQ09OU1RSQUlOVCk6IE5ldyAnWScKCWNvbnRyYWludC4KCShFWFRSQV9NRU1PUllfQ09OU1RSQUlOVCk6IFRlbGwgcmVsb2FkIHdoaWNoIGNvbnN0cmFpbnQKCWFyZSBtZW1vcnkgY29udHJhaW50cy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKHdvcmRfb2Zmc2V0X21lbXJlZl9vcGVyYW5kKToKCU5ldyBwcm90b3R5cGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICgqbW92ZGZfaGFyZGZsb2F0NjQpOgoJQ2hhbmdlICdvJyB0byAnWScgY29uc3RyYWludC4KCSgqbW92ZGZfc29mdGZsb2F0NjQpOiBEaXR0by4KCjIwMDQtMDEtMTIgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsubWQ6IFN3aXRjaCBmcm9tIHRoZSAiKi4uLiIgc3ludGF4IHRvIHRoZQoJYnJhY2UtZW5jbG9zZWQgc3ludGF4IGluIGFsbCBDIG91dHB1dCBzdGF0ZW1lbnRzLgoKMjAwNC0wMS0xMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVBSIHRhcmdldC8xMzQwMQoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKToKCU9iamVjdGl2ZS1DIGxhbmd1YWdlIHR5cGUgdmFsdWUgaXMgMTQuCgoyMDA0LTAxLTEyICBNYXJrdXMgRi5YLkouIE9iZXJodW1lciAgPG1hcmt1c0BvYmVyaHVtZXIuY29tPgoKCVBSIGMvMTIxNDgKCSogY29uZmlnL202OGsvZnBnbnVsaWIuYzogRml4IGAtbXNob3J0JyBidWdzOiBVc2UgYGxvbmcnIGluc3RlYWQgb2YKCWBpbnQnIGluIGEgbnVtYmVyIG9mIHBsYWNlcyB0byBtYWtlIHN1cmUgd2UgYWx3YXlzIGhhdmUgYSBTSW1vZGUKCWFuZCBub3QgYSBISW1vZGUuICBBZGQgYSAnTCcgc3VmZml4IHRvIGEgbnVtYmVyIG9mIGNvbnN0YW50cy4KCjIwMDQtMDEtMTEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jOiBEb24ndCBpbmNsdWRlIG9ic3RhY2suaC4KCgkqIHBhLm1kOiBDb3JyZWN0IGNvbnN0cmFpbnQgaW4gcGF0dGVybiBmb3IgbG9hZGluZyBQSUMgbGFiZWwgYWRkcmVzcy4KCjIwMDQtMDEtMTEgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL2xpbnV4LmggKEFTTV9QUkVGRVJSRURfRUhfREFUQV9GT1JNQVQpOiBVbmRlZmluZQoJIGJlZm9yZSBkZWZpbmluZy4KCjIwMDQtMDEtMTEgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCglQUiBmb3J0cmFuLzk5NzIKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX2lubGluZSk6IEFsc28gY29uc2lkZXIgZnVuY3Rpb25zCglmb3IgZGVmZXJyYWwgaWYgdGhlIGxhbmd1YWdlIGlzIEdOVSBGNzcuCgoyMDA0LTAxLTExICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKGRpYWdub3NlX2FyZ2xpc3RfY29uZmxpY3QpOiBBZGQgbWlzc2luZyBzcGFjZSB0bwoJZGlhZ25vc3RpYyBtZXNzYWdlcy4KCjIwMDQtMDEtMTEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTMzOTIKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZXhwZWN0X2p1bXApOiBIYW5kbGUgY29uZGl0aW9uYWwganVtcHMKCXRvIGRyb3AgdGhyb3VnaCBsYWJlbC4gIERvbid0IGZhbGwgYmFjayB0byBTQ0MgZXZlbiB3aGVuIGNvbmRpdGlvbmFsCglqdW1wIGhhcyBub3QgYmVlbiBmb3VuZC4KCjIwMDQtMDEtMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGludm9rZS50ZXhpOiBGaXggc3ludGF4IGVycm9yIGluIHByZXZpb3VzIHBhdGNoLgoKCVBhcnRpYWwgZml4IGZvciBQUiBvcHQvMTA3NzYKCSogTWFrZWZpbGUuaW4gKHJlbG9hZC5vKTogSW5jbHVkZSBwYXJhbS5oCgkqIHBhcmFtcy5kZWYgKFBBUkFNX01BWF9SRUxPQURfU0VBUkNIX0lOU05TKTogTmV3IHBhcmFtZXRlci4KCSogcmVsb2FkLmM6IEluY2x1ZGUgcGFyYW1zLmguCgkoZmluZF9lcXVpdl9yZWcpOiBXb3JrIGxpbWl0aW5nIGNoZWNrLgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQuCgoyMDA0LTAxLTExICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc3ltYm9saWNfY29uc3RhbnRfcCk6IERvbid0IGFsbG93CglvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHRvIHN0cmluZyBjb25zdGFudHMuICBTaW1wbGlmeSBtaXBzMTYKCWNhc2UgYWNjb3JkaW5nbHkuCgoyMDA0LTAxLTExICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEzNDY5CgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCBwdXJnZV9hbGxfZGVhZF9lZGdlcyBhZnRlcgoJcmVsb2FkX2NzZV9yZWdzICgtZm5vbi1jYWxsLWV4Y2VwdGlvbnMgb25seSkuCgoyMDA0LTAxLTExICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL21jb3JlL2xpYjEuYXNtOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBjb25maWcvbWNvcmUvbWNvcmUtZWxmLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5oOiBMaWtld2lzZS4KCSogY29uZmlnL21jb3JlL21jb3JlLm1kOiBMaWtld2lzZS4KCjIwMDQtMDEtMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQnJlYWsgYXBhcnQgaW50by4uLgoJKGRpYWdub3NlX2FyZ2xpc3RfY29uZmxpY3QsIHZhbGlkYXRlX3Byb3RvX2FmdGVyX29sZF9kZWZuKQoJKGxvY2F0ZV9vbGRfZGVmbiwgZGlhZ25vc2VfbWlzbWF0Y2hlZF9kZWNscywgbWVyZ2VfZGVjbHMpOgoJLi4uIHRoZXNlIG5ldyBmdW5jdGlvbnMuICBSZXN0cnVjdHVyZSBmb3IgY29tcHJlaGVuc2liaWxpdHkuCglSZW1vdmUgdmFyaW91cyBhcmNoYWljIHNwZWNpYWwgY2FzZXMuICBBbHdheXMgcmVwb3J0IHRoZQoJbG9jYXRpb24gb2YgdGhlIHByZXZpb3VzIGRlY2xhcmF0aW9uIHdoZW4gYSBkaWFnbm9zdGljIGlzIGlzc3VlZC4KCShyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBGb2xkIGludG8gZGlhZ25vc2VfbWlzbWF0Y2hlZF9kZWNscy4KCShtYXRjaF9idWlsdGluX2Z1bmN0aW9uX3R5cGVzKTogRGVsZXRlIHVubmVjZXNzYXJ5IGZvcndhcmQgZGVjbGFyYXRpb24uCgoyMDA0LTAxLTEwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2VuYXV0b21hdGEuYyAobWFrZV9hdXRvbWF0b24sIE5ERkFfdG9fREZBKToKCVByaW50IHByb2dyZXNzIGJhcnMgd2l0aCAnLicgY2hhcmFjdGVycyBpbnN0ZWFkIG9mICcqJy4KCShidWlsZF9hdXRvbWF0b24pOiBDaGFuZ2Ugbm90ZXMgdG8gbWF0Y2guCgoyMDA0LTAxLTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL20zMnIvbTMyci5tZDogVXNlIGRlZmluZV9jb25zdGFudHMgZm9yIHVuc3BlYyBhbmQKCXVuc3BlY192b2xhdGlsZS4KCjIwMDQtMDEtMTAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBvcHQvMTE2MzUKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsKTogTW9yZSBjdXJlZnVsbHkgZXhwYW5kIHVuaW9uIGNhc3RzLgoKMjAwNC0wMS0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9tMzJyL20zMnIubWQgKGZsdXNoX2ljYWNoZSk6IFVzZSAxIGZvcgoJdW5zcGVjX3ZvbGF0aWxlLgoKMjAwNC0wMS0xMCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCglQUiBkZWJ1Zy8xMjg2MAoJKiBkYnhvdXQuYyAoZGJ4b3V0X3N5bWJvbCk6IFJlbW92ZSBpbml0aWFsaXphdGlvbiBvZgoJY3VycmVudF9zeW1fY29kZSwgY3VycmVudF9zeW1fdmFsdWUsIGFuZCBjdXJyZW50X3N5bV9hZGRyLgoJKGRieG91dF9zeW1ib2xfbG9jYXRpb24pOiBTYW1lLgoJKGRieG91dF9wcmVwYXJlX3N5bWJvbCk6IFplcm8gY3VycmVudF9zeW1fY29kZSwKCWN1cnJlbnRfc3ltX3ZhbHVlLCBhbmQgY3VycmVudF9zeW1fYWRkci4KCjIwMDQtMDEtMTAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAoZ2V0X3Vud2lkZW5lZCk6IFJlb3JkZXIgY29uZGl0aW9ucyBzbyB0aGF0IHRoZSBudWxsIHBvaW50ZXIKCWNoZWNrIGlzIGRvbmUgZmlyc3QuCgoyMDA0LTAxLTA5ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5jIChyZXN0X29mX2hhbmRsZV9jZmcpOiBBZGQgcmVnX3NjYW4gcGFzcwoJaWYgd2UncmUgcnVubmluZyBtYXJrX2NvbnN0YW50X2Z1bmN0aW9uLgoKMjAwNC0wMS0wOSAgSmVmZiBCYWlsZXkgIDxqYmFpbGV5QG5pc2EubmV0PgoKCVBSIHRhcmdldC8xMjU2MQoJKiBjb25maWcvdC1nbnU6IFJlbmFtZSBTWVNURU1fSEVBREVSX0RJUiB0byBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIuCgoyMDA0LTAxLTA5ICBBbmRyZXcgUGluc2tpIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGRlYnVnLzExMjMxCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZV9maWVsZHMpOiBSZXR1cm4gaWYgYW55IGl0ZW0gaXMKCWVycm9yX21hcmtfbm9kZSBvciB0aGUgdHlwZSBpcyBlcnJvcl9tYXJrX25vZGUuCgoyMDA0LTAxLTA5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLWxkb3VibGUuYzogQWRkIGJpZyBjb21tZW50IGV4cGxhaW5pbmcKCWV4YWN0bHkgd2hhdCBpcyBleHBlY3RlZCBhcyBhICdsb25nIGRvdWJsZScuCgkoX3hscWFkZCk6IFdoZW4gYSB2YWx1ZSB0byBiZSByZXR1cm5lZCBpcyByZXByZXNlbnRhYmxlIGFzIGEKCSdkb3VibGUnLCBqdXN0IHJldHVybiBpdCBkaXJlY3RseSwgZG8gbm90IGNvbnN0cnVjdCBpdCB1c2luZyBhIHVuaW9uLgoJQWxzbywgY29ycmVjdCBmaW5hbCBmaXh1cC4KCShfeGxxbXVsKTogTGlrZXdpc2UuCgkoX3hscWRpdik6IExpa2V3aXNlLgoJKiByZWFsLmMgKGVuY29kZV9pYm1fZXh0ZW5kZWQpOiBNYWtlIGNvbnNpc3RlbnQgd2l0aCBkYXJ3aW4tbGRvdWJsZS5jLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGZpeF90cnVuY3RmZGkyKTogRGVsZXRlLgoKMjAwNC0wMS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlY29nLmMgKGNvbnN0cmFpbl9vcGVyYW5kcyk6IFZhbGlkYXRlIG1lbSBvcGVyYW5kcy4KCjIwMDQtMDEtMDkgICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBnY2MuYyAoaW5pdF9zcGVjKTogUmVtb3ZlIC1sdW53aW5kIGZyb20gc2hhcmVkIGNhc2UuCgkqIGNvbmlmZy9pYTY0L3QtaHB1eCAoU0hMSUJfTElOSyk6IEFkZCAtbHVud2luZC4KCjIwMDQtMDEtMDkgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlndXJlLmFjOiAoZ2NjX2N2X2xkX2hpZGRlbikgU2V0IHRvIHRydWUgZm9yIGlhNjQqLSotaHB1eCouCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZQoKMjAwNC0wMS0wOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xMTIzNAoJKiBjLXR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBJZiBwZWRhbnRpYywgd2FybiBmb3IgY29udmVyc2lvbnMKCWJldHdlZW4gZnVuY3Rpb24gYW5kIG9iamVjdCBwb2ludGVycy4KCShkaWdlc3RfaW5pdCk6IFdoZW4gY29tcGFyaW5nIGEgcG9pbnRlciB0byBmdW5jdGlvbiB0eXBlIHRvIHRoZQoJdGFyZ2V0IHR5cGUsIG9ubHkgYXBwbHkgVFJFRV9UWVBFIG9uY2UgdG8gdGhlIHBvaW50ZXIgdG8gZnVuY3Rpb24KCXR5cGUuCgkqIGV4Y2VwdC5jIChmb3JfZWFjaF9laF9sYWJlbF8xKTogVHJlYXQgZGF0YSBhcyBhIHBvaW50ZXIgdG8gYQoJZnVuY3Rpb24gcG9pbnRlciByYXRoZXIgdGhhbiBjYXN0aW5nIGl0IHRvIGEgZnVuY3Rpb24gcG9pbnRlci4KCShmb3JfZWFjaF9laF9sYWJlbCk6IFVwZGF0ZSBjYWxsZXIuCgkqIHJlY29nLmggKHN0cnVjdCBpbnNuX2RhdGEpOiBVc2UgYSBzdHJ1Y3Qgb3IgdW5pb24gZm9yIG91dHB1dC4KCSogZ2Vub3V0cHV0LmMgKG91dHB1dF9pbnNuX2RhdGEpOiBVcGRhdGUuCgkqIGZpbmFsLmMgKGdldF9pbnNuX3RlbXBsYXRlKTogVXBkYXRlLgoKMjAwNC0wMS0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4cHIuaCAoZXhwYW5kX2V4cHIpOiBNYWtlIGl0IGEgbWFjcm8sIG5vdCBhIGZ1bmN0aW9uLgoJKGV4cGFuZF9leHByX3JlYWwpOiBOZXcgZnVuY3Rpb24uCgkqIGV4cHIuYyAoc3RvcmVfZXhwcik6IEFkanVzdCBsb2dpYyBmb3IgZGVjaWRpbmcgd2hldGhlciBvciBub3QgdG8KCWNvcHkgdGhlIHZhbHVlIHJldHVybmVkIGJ5IGV4cGFuZF9leHByLgoJKGV4cGFuZF9leHByKTogUmVuYW1lIHRvIC4uLgoJKGV4cGFuZF9leHByX3JlYWwpOiAuLi4gdGhpcy4gIEFkZCBhbHRfcnRsIHBhcmFtZXRlci4gIEFkanVzdAoJY2FsbHMgdG8gbGFuZ3VhZ2UgaG9va3MuCgkqIGMtY29tbW9uLmggKGNfZXhwYW5kX2V4cHIpOiBBZGp1c3QgcHJvdG90eXBlLgoJKiBjLWNvbW1vbi5jIChjX2V4cGFuZF9leHByKTogQWRkIGFsdF9ydGwgcGFyYW1ldGVyLgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9leHBhbmRfZXhwcik6IENoYW5nZSBwcm90b3R5cGUuCgkqIGxhbmdob29rcy5jIChsaGRfZXhwYW5kX2V4cHIpOiBBZGQgYWxsX3J0bCBwYXJhbWV0ZXIuCgkqIGxhbmdob29rcy5oIChsYW5nX2hvb2tzKTogQ2hhbmdlIHR5cGUgb2YgZXhwYW5kX2V4cHIuCgkqIHN0bXQuYyAoc3RtdF9zdGF0dXMpOiBBZGQgeF9sYXN0X2V4cHJfYWx0X3J0bC4KCShsYXN0X2V4cHJfYWx0X3J0bCk6IExpa2V3aXNlLgoJKGV4cGFuZF9leHByX3N0bXRfdmFsdWUpOiBTZXQgbGFzdF9leHByX2FsdF9ydGwuCgkoY2xlYXJfbGFzdF9leHByKTogQ2xlYXIgaXQuCgkoZXhwYW5kX2VuZF9zdG10X2V4cHIpOiBTZXQgUlRMX0VYUFJfQVRMX1JUTC4KCShleHBhbmRfZW5kX2JpbmRpbmdzKTogU2F2ZSBhbmQgcmVzdG9yIGxhc3RfZXhwcl9hbHRfcnRsLgoJKiB0cmVlLmRlZiAoUlRMX0VYUFIpOiBHaXZlIGl0IGFuIGFkZGl0aW9uYWwgb3BlcmFuZC4KCSogdHJlZS5oIChSVExfRVhQUl9BTFRfUlRMKTogTmV3IG1hY3JvLgoKMjAwNC0wMS0wOSAgS2F6dWhpcm8gSW5hb2thICA8aW5hb2thLmthenVoaXJvQHJlbmVzYXMuY29tPgoKCSogY29uZmlnL20zMnIvbTMyci5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IEFkZCBfX20zMnJfXy4KCSogY29uZmlnL20zMnIvbTMyci5jIChjYWxsMjZfb3BlcmFuZCk6IEFsbG93IGluIFBJQyBtb2RlLgoKMjAwNC0wMS0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglQUiB0YXJnZXQvMTMzODAuCgkqIGNvbmZpZy9tMzJyL20zMnIubWQ6IFJlcGxhY2UgKHJlZzpTSSAxNykgd2l0aCAocmVnOkNDIDE3KQoJb3IgKG5lOlNJIChyZWc6Q0MgMTcpIChjb25zdF9pbnQgMCkpLgoJQmUgc3BlY2lmaWMgYWJvdXQgbW9kZXMgd2hlcmV2ZXIgcG9zc2libGUuCgoyMDA0LTAxLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL20zMnIvbTMyci5jIChtMzJyX2V4cGFuZF9ibG9ja19tb3ZlKTogQ2FsbAoJZ2VuX21vdmVzdHJzaV9pbnRlcm5hbCB3aXRoIHR3byBtb3JlIGFyZ3VtZW50cy4KCShtMzJyX291dHB1dF9ibG9ja19tb3ZlKTogQWRqdXN0IG9wZXJhbmQgbnVtYmVycy4KCVByb3Blcmx5IHVwZGF0ZSB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBwb2ludGVycy4KCSogY29uZmlnL20zMnIvbTMyci5tZCAobW92c3Ryc2lfaW50ZXJuYWwpOiBVc2UgJ3InIGluc3RlYWQgb2YKCSdyKycuICBDaGFuZ2UgdGhlIHNldCBkZXRpbmF0aW9ucyB0byBtYXRjaF9vcGVyYW5kLgoKMjAwNC0wMS0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZpbmFsLmMgKEZJUlNUX0lOU05fQUREUkVTUyk6IFJlbW92ZS4KCShzaG9ydGVuX2JyYW5jaGVzKTogRG9uJ3QgdXNlIEZJUlNUX0lOU05fQUREUkVTUy4KCSogc3lzdGVtLmggKEZJUlNUX0lOU05fQUREUkVTUyk6IFBvaXNvbi4KCSogY29uZmlnL2F2ci9hdnIuaDogUmVtb3ZlIGEgY29tbWVudCBhYm91dCBGSVJTVF9JTlNOX0FERFJFU1MuCgkqIGNvbmZpZy9tMzJyL20zMnItcHJvdG9zLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJbTMycl9maXJzdF9pbnNuX2FkZHJlc3MuCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAobTMycl9maXJzdF9pbnNuX2FkZHJlc3MpOiBSZW1vdmUuCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoRklSU1RfSU5TTl9BRERSRVNTKTogTGlrZXdpc2UuCgkqIGRvYy9tZC50ZXhpIChGSVJTVF9JTlNOX0FERFJFU1MpOiBMaWtld2lzZS4KCjIwMDQtMDEtMDkgIEouIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChnZW5fZW51bWVyYXRpb25fdHlwZV9kaWUpOiBSZXR1cm4gdGhlIERJRSB0aGF0Cgl3ZSBqdXN0IGNyZWF0ZWQuCgkoaXNfYWRhX3N1YnJhbmdlX3R5cGUpOiBESUVzIGZvciBlbnVtZXJhdGlvbiBzdWJ0eXBlcyBzaG91bGQgYmUKCWVtaXR0ZWQgYXMgc3VicmFuZ2UgdHlwZXMgdG9vLgoJKHN1YnJhbmdlX3R5cGVfZGllKTogQWRkIGhhbmRsaW5nIG9mIGVudW1lcmF0aW9uIHN1YnR5cGVzLgoKMjAwNC0wMS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBvcHQvMTI0NDEKCVJldmVydDogU2F0IE1hciAzMCAxNDowODo1NSBDRVQgMjAwMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoJKiBpMzg2LmMgKGFsaWduZWRfb3BlcmFuZCk6IEJlIHByZXBhcmVkIGZvciBTVUJSRUdlZCByZWdpc3RlcnMuCgkoaXg4Nl9kZWNvbXBvc2VfYWRkcmVzcyk6IFVzZSBSRUdfUCBpbnN0ZWFkIG9mIEdFVF9DT0RFICguLi4pID09IFJFRy4KCShpeDg2X2FkZHJlc3NfY29zdCk6IEJlIHByZXBhcmVkIGZvciBTVUJSRUdlZCByZWdpc3RlcnMuCgkobGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBBY2NlcHQgU1VCUkVHZWQgcmVnaXN0ZXJzLgoKMjAwNC0wMS0wOCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluOiBSZW5hbWUgY29uZmlndXJlLmluIHRvIGNvbmZpZ3VyZS5hYwoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwNC0wMS0wOCAgU3R1YXJ0IEhhc3RpbmdzICA8c3R1YXJ0QGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IFR5cG9zIGluIE1NWC9TU0UgaW1tZWRpYXRlIHNoaWZ0cy4KCjIwMDQtMDEtMDggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2RlY2lkZV9pbmxpbmluZyk6IEZpeCB0eXBvLgoKMjAwNC0wMS0wOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoY21wdGZfaW50ZXJuYWwxKTogQ29ycmVjdCBicmFuY2ggb2Zmc2V0LgoJKFVOU1BFQ19GSVhfVFJVTkNfVEYpOiBOZXcgY29uc3RhbnQuCgkobW92dGZfaW50ZXJuYWwpOiBNYWtlIHNwbGl0dGVyIGFjdGl2ZSBvbmx5IHdoZW4gaW5zbiBpcyBhY3RpdmUuCgkoZXh0ZW5kZGZ0ZjIpOiBSZXdyaXRlIHRvIHByb3Blcmx5IGxvYWQgemVybyBpbnRvIGxvdyBwYXJ0LgoJKGV4dGVuZGRmdGYyX2ludGVybmFsKTogTmV3LgoJKGV4dGVuZHNmdGYyKTogUmV3cml0ZS4KCSh0cnVuY2RmdGYyKTogQ29ycmVjdCBsZW5ndGguCgkoZmxvYXRkaXRmMik6IERlbGV0ZS4KCShmaXhfdHJ1bmNfaGVscGVyKTogTmV3LgoJKGZpeF90cnVuY3RmZGkyKTogVXNlIGZpeF90cnVuY19oZWxwZXIuCgkoZml4X3RydW5jdGZzaTIpOiBMaWtld2lzZS5maXhfdHJ1bmMKCShmaXhfdHJ1bmN0ZnNpMl9pbnRlcm5hbCk6IE5ldy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGxlZ2l0aW1hdGVfbG9fc3VtX2FkZHJlc3NfcCk6IGxvX3N1bQoJYWRkcmVzc2VzIGFyZSBsZWdpdGltYXRlIG9uIERhcndpbiBldmVuIHdoZW4gZmxhZ19waWMuCgkocnM2MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MpIFtUQVJHRVRfTUFDSE9dOiBEb24ndCBjcmVhdGUKCW5vbi1vZmZzZXR0YWJsZSBhZGRyZXNzZXMgZm9yIGxvYWRzIG9mIFRGbW9kZSBjb25zdGFudHMuCgoyMDA0LTAxLTA4ICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJKiBjb25maWcvbTMyci9tMzJyLmggKEFTTV9PVVRQVVRfQUxJR05FRF9CU1MpOiBBY3R1YWxseSBlbWl0Cgl2YXJpYWJsZXMgaW4gdGhlIGFwcHJvcHJpYXRlIGJzcyBzZWN0aW9uLgoKMjAwNC0wMS0wOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChTVUJTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IEVuc3VyZQoJdGFyZ2V0X2ZsYWdzIGhhcyBNQVNLX1BPV0VSUEM2NCB3aGVuIC1tNjQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHByb2Nlc3Nvcl90YXJnZXRfdGFibGUpOiBBZGQgTUFTS19QT1dFUlBDNjQKCXRvIDYyMCwgNjMwLCBwb3dlcjMsIHBvd2VyNCBhbmQgcnM2NGEgZW50cmllcy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoTUFTS182NEJJVCk6IEV4cGFuZCBjb21tZW50LgoKMjAwNC0wMS0wOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2ltbWVkX3N1YnJlZyk6IEZpeCBjb25zdHJ1Y3Rpb24gb2YKCWZsb2F0aW5nLXBvaW50IGNvbnN0YW50cy4KCjIwMDQtMDEtMDggIEouIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChzdWJyYW5nZV90eXBlX2RpZSk6IEFkZCBjb250ZXh0X2RpZSBwYXJhbWV0ZXIuCglDcmVhdGUgdGhlIHN1YnJhbmdlX3R5cGUgRElFIHVzaW5nIHRoZSBnaXZlbiBjb250ZXh0IERJRS4KCShtb2RpZmllZF90eXBlX2RpZSk6IFVwZGF0ZSBjYWxsIHRvIHN1YnJhbmdlX3R5cGVfZGllLgoKMjAwNC0wMS0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR3YXJmMi5oLCB1bndpbmQtZHcyLWZkZS5oLCB1bndpbmQtcGUuaCwgdW53aW5kLmg6CglBZGQgbXVsdGlwbGUtaW5jbHVkZSBndWFyZC4KCjIwMDQtMDEtMDggIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZWFzeV92ZWN0b3JfY29uc3RhbnQpOiBBY2NlcHQKCWFsbCB2ZWN0b3IgY29uc3RhbnQgbG9hZGFibGUgYnkgdnNwbHQqLgoJKG91dHB1dF92ZWNfY29uc3RfbW92ZSk6IExpa2V3aXNlLgoKMjAwNC0wMS0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy82MDI0CgkqIGMtdHlwZWNrLmMgKGNvbXB0eXBlcyk6IE9ubHkgdHJlYXQgZW51bWVyYXRlZCB0eXBlcyBpbiB0aGUgc2FtZQoJdHJhbnNsYXRpb24gdW5pdCBhcyBjb21wYXRpYmxlIHdpdGggZWFjaCBvdGhlciB3aGVuIHRoZXkgYXJlIHRoZQoJc2FtZSB0eXBlLgoJKiBkb2MvZXh0ZW5kLnRleGk6IFVwZGF0ZS4KCjIwMDQtMDEtMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvMTIxNjUKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVGFrZSB0eXBlIHF1YWxpZmllcnMgb2YgdHlwZWRlZmVkCglhcnJheSB0eXBlIGZyb20gdGhlIGFycmF5IGVsZW1lbnQgdHlwZS4KCjIwMDQtMDEtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZGJ4X3JlZ2lzdGVyX251bWJlcik6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKHJzNjAwMF9kYnhfcmVnaXN0ZXJfbnVtYmVyKTogRGVjbGFyZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoRFdBUkZfRlJBTUVfUkVHTlVNKTogRGVmaW5lLgoJKERXQVJGX1JFR19UT19VTldJTkRfQ09MVU1OKTogQ29ycmVjdCBjb2x1bW4gYWRqdXN0bWVudCBhbmQgY29tbWVudC4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChEQlhfUkVHSVNURVJfTlVNQkVSKTogRGVmaW5lLgoKMjAwNC0wMS0wNiAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1ERUJVR19BU01fU1BFQyk6IENoYW5nZSBmb3IgZHdhcmYyIGRlZmF1bHQuCgkoRFdBUkYyX0RFQlVHR0lOR19JTkZPKTogRGVmaW5lLgoJKFBSRUZFUlJFRF9ERUJVR0dJTkdfVFlQRSk6IFNldCB0byBkd2FyZjIuCgkqIGNvbmZpZy9taXBzL29wZW5ic2QuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogUmVtb3ZlLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChTVUJUQVJHRVRfQVNNX0RFQlVHR0lOR19TUEVDKTogT25seSBwYXNzIC1nMAoJZm9yIGlyaXggYXMuCgkoU1VCVEFSR0VUX0FTTV9PUFRJTUlaSU5HX1NQRUMpOiBPbmx5IHBhc3MgTzAgZm9yIGlyaXggYXMuCgkqIGNvbmZpZy9taXBzL2lyaXM2Z2FzLmggKE1ERUJVR19BU01fU1BFQyk6IFJlbW92ZS4KCSogY29uZmlnL21pcHMvaXJpczVnYXMuaDogRGl0dG8uCgkoREJYX0RFQlVHR0lOR19JTkZPKTogUmVtb3ZlLgoJKERXQVJGMl9ERUJVR0dJTkdfSU5GTyk6IERpdHRvLgoJKE1JUFNfREVCVUdHSU5HX0lORk8pOiBEaXR0by4KCShQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUpOiBEaXR0by4KCSogY29uZmlnL21pcHMvZWxmLmggKERXQVJGMl9ERUJVR0dJTkdfSU5GTyk6IFJlbW92ZS4KCShQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUpOiBEaXR0by4KCShTVUJUQVJHRVRfQVNNX0RFQlVHR0lOR19TUEVDKTogRGl0dG8uCgkqIGNvbmZpZy9taXBzL2VsZjY0Lmg6IERpdHRvLgoKMjAwNC0wMS0wNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogTWFrZWZpbGUuaW4gKFNUQUdFUFJPRklMRV9GTEFHU19UT19QQVNTKTogVXNlIC1mcHJvZmlsZS1nZW5lcmF0ZS4KCShTVEFHRUZFRURCQUNLX0ZMQUdTX1RPX1BBU1MpOiBVc2UgLWZwcm9maWxlLXVzZS4KCjIwMDQtMDEtMDYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC90LWRhcndpbiAoTElCMkZVTkNTX0VYVFJBKTogQ29tcGlsZSBkYXJ3aW4tbGRvdWJsZS5jLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IFVzZSAtbWxvbmctZG91YmxlLTEyOC4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4tbGRvdWJsZS5jOiBOZXcuCgoJKiBlbWl0LXJ0bC5jIChnZW5fbG93cGFydF9jb21tb24pOiBVc2Ugc2ltcGxpZnlfZ2VuX3N1YnJlZwoJZm9yIGNvbnN0YW50cy4KCShjb25zdGFudF9zdWJ3b3JkKTogRGVsZXRlLgoJKiBydGwuaCAoY29uc3RhbnRfc3Vid29yZCk6IERlbGV0ZSBwcm90b3R5cGUuCgkoaW1tZWRfZG91YmxlX2NvbnN0KTogSXMgbm90IGluIHZhcmFzbS5jLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfaW1tZWRfc3VicmVnKTogTmV3LgoJKHNpbXBsaWZ5X3N1YnJlZyk6IFVzZSBzaW1wbGlmeV9pbW1lZF9zdWJyZWcuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZmxvYXRzaXRmMik6IFVzZSBleHBhbmRfZmxvYXQgcmF0aGVyCgl0aGFuIHRyeWluZyB0byBnZW5lcmF0ZSBSVEwgZGlyZWN0bHkuCgkoZml4X3RydW5jdGZzaTIpOiBVc2UgZXhwYW5kX2ZpeCByYXRoZXIgdGhhbiB0cnlpbmcgdG8gZ2VuZXJhdGUKCVJUTCBkaXJlY3RseS4KCgkqIGR3YXJmMm91dC5jIChhZGRfY29uc3RfdmFsdWVfYXR0cmlidXRlKTogUmVtb3ZlIGluY29ycmVjdCBjb21tZW50LgoKMjAwNC0wMS0wNiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC94Y29mZi5oIChFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyk6IFNwbGl0IGVhY2gKCWZ1bmN0aW9uIGludG8gYSBzZXBhcmF0ZSBtYWNyby4KCShyZWFkX29ubHlfZGF0YV9zZWN0aW9uKTogQWRkIHZvaWQgYXJndW1lbnQuCgkocHJpdmF0ZV9kYXRhX3NlY3Rpb24pOiBTYW1lLgoJKHJlYWRfb25seV9wcml2YXRlX2RhdGFfc2VjdGlvbik6IFNhbWUuCgkodG9jX3NlY3Rpb24pOiBTYW1lLgoKMjAwNC0wMS0wNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaW52b2tlLnRleGk6IFJlbW92ZSB0eXBvIGluIGxhc3QgY2hhbmdlLgoKCVBSIHRhcmdldC8xMDMwMQoJKiBjb25maWcuZ2NjOiBBY2NlcHQgb3B0ZXJvbiBhbmQgYXRobG9uLTY0IGFzIHZhcmlhbnRzCglvZiBrOC4KCSogaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogTGlrZXdpc2UuCgkqIGludm9rZS50ZXhpIChpMzg2IC1tdHVuZSk6IEV4cGFuZCBkb2N1bWVudGF0aW9uLgoKMjAwNC0wMS0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGFsaWFzLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBidWlsdGlucy5jOiBMaWtld2lzZS4KCSogY2ZnLmM6IExpa2V3aXNlLgoJKiBkZi5jOiBMaWtld2lzZS4KCSogZG9taW5hbmNlLmM6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYzogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmM6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBmaW5hbC5jOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jOiBMaWtld2lzZS4KCSogZ2NzZS5jOiBMaWtld2lzZS4KCSogZ2VuYXR0cnRhYi5jOiBMaWtld2lzZS4KCSogZ2VucmVjb2cuYzogTGlrZXdpc2UuCgkqIGdlbnN1cHBvcnQuYzogTGlrZXdpc2UuCgkqIGdnYy16b25lLmM6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYzogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmM6IExpa2V3aXNlLgoJKiBsb29wLmM6IExpa2V3aXNlLgoJKiByZWNvZy5jOiBMaWtld2lzZS4KCSogcmVnbW92ZS5jOiBMaWtld2lzZS4KCSogcmVnLXN0YWNrLmM6IExpa2V3aXNlLgoJKiByZW9yZy5jOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jOiBMaWtld2lzZS4KCSogcnRsLmg6IExpa2V3aXNlLgoJKiBzY2hlZC1lYmIuYzogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoJKiB2YXJhc20uYzogTGlrZXdpc2UuCgoyMDA0LTAxLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2luc3RhbGwudGV4aTogRml4IHR5cG9zLgoJKiBkb2MvaW52b2tlLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvbWQudGV4aTogTGlrZXdpc2UuCgoyMDA0LTAxLTA2ICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJKiBjb25maWcvbTMyci9tMzJyLmggKFRSQU1QT0xJTkVfTElORV9TSVpFKTogQ2hhbmdlZAoKMjAwNC0wMS0wNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChpbml0X2N1bXVsYXRpdmVfYXJncyk6IEFkZCBoYW5kbGluZyBvZiBNTVhfUkVHUEFSTS4KCShmdW5jdGlvbl9hcmdfYWR2YW5jZSk6IERvIG5vdCBwYXNzIGFnZ3JlZ2F0ZXMgaW4gU1NFOyBkZWFsIGhhbmRsaW5nCglvZiBNTVhfUkVHUEFSTS4KCShmdW5jdGlvbl9hcmcpOiBBZGQgbmV3IHdhcm5pbmdzIGFib3V0IEFCSSBjaGFuZ2VzOyAgZml4IFNTRV9SRUdQQVJNOwoJYWRkIE1NWF9SRUdQQVJNLgoJKiBpMzg2LmggKGl4ODZfYXJncyk6IEFkZCBtbXhfd29yZHMvbW14X3JlZ3MvbW14X3JlZ25vIGZpZWxkcy4KCShTU0VfUkVHUEFSTV9NQVgpOiBEZWZhdWx0IHRvIDMgb24gaTM4NiAtbXNzZSBBQkkuCgkoTU1YX1JFR1BBUk1fTUFYKTogU2ltaWxhcmx5IGZvciAtbW1teC4KCjIwMDQtMDEtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvc2gvbGludXguaDogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogY29uZmlnL3NoL25ldGJzZC1lbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmg6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvdnh3b3Jrcy5oOiBMaWtld2lzZS4KCjIwMDQtMDEtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzeXN0ZW0uaCAoQVNNX09VVFBVVF9NQUlOX1NPVVJDRV9GSUxFTkFNRSk6IFBvaXNvbi4KCSogdG9wbGV2LmMgKG91dHB1dF9maWxlX2RpcmVjdGl2ZSk6IERvbid0IHVzZQoJQVNNX09VVFBVVF9NQUlOX1NPVVJDRV9GSUxFTkFNRS4KCjIwMDQtMDEtMDUgIFN0ZXZlbiBCb3NzY2hlciA8cy5ib3NzY2hlckBzdHVkZW50LnR1ZGVsZnQubmw+CgoJKiB0b3BsZXYuYzogRml4IGJyb2tlbiBjaGVja2luIG9mIDIwMDMtMTItMzAuCgoyMDA0LTAxLTA1ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGdnYy16b25lLmM6IFJlbW92ZSBldmVyeXRoaW5nIGluICNpZmRlZiBVU0lOR19NQUxMT0NfUEFHRV9HUk9VUFMKCShVU0lOR19NTUFQKTogV2UgZG9uJ3Qgc3VwcG9ydCBub24tbW1hcC4KCShzdHJ1Y3QgYWxsb2NfY2h1bmspOiBTdGVhbCAxIGJpdCBmcm9tIHR5cGVjb2RlLCB1c2UgaXQgdG8gbWFyawoJbGFyZ2Ugb2JqZWN0cy4KCShzdHJ1Y3QgcGFnZV9lbnRyeSk6IFJlbW92ZSBieXRlc19mcmVlLgoJKHN0cnVjdCBwYWdlX3RhYmxlX2NoYWluKTogUmVtb3ZlLgoJKHN0cnVjdCBnbG9iYWxzKTogUmVtb3ZlIHBhZ2VfdGFibGUgbWVtYmVyLgoJKGxvb29rdXBfcGFnZV90YWJsZV9lbnRyeSk6IEZ1bmN0aW9uIGRlbGV0ZWQuCgkoc2V0X3BhZ2VfdGFibGVfZW50cnkpOiBEaXR0by4KCShnZ2NfYWxsb2NhdGVkX3ApOiBObyBsb25nZXIgbmVlZCBwYWdlIHRhYmxlIGxvb2t1cHMuCgkoZ2djX21hcmtlZF9wKTogRGl0dG8uCgkoYWxsb2Nfc21hbGxfcGFnZSk6IERvbid0IGNhcmUgYWJvdXQgYnl0ZXNfZnJlZSBhbnltb3JlLgoJKGFsbG9jX2xhcmdlX3BhZ2UpOiBSb3VuZCB1cCBzaXplLgoJKGdnY19hbGxvY196b25lXzEpOiBNYXJrIGxhcmdlIG9iamVjdHMgYXMgc3VjaCwgYW5kIGNhbGN1bGF0ZQoJdGhlaXIgc2l6ZSB0aGUgbmV3IHdheS4KCVJlbW92ZSBwYWdlIHRhYmxlIGxvb2t1cHMgYW5kIHNldHRpbmcuCgkoZ2djX2dldF9zaXplKTogQ2FsY3VsYXRlIGxhcmdlIG9iamVjdCBzaXplIHRoZSBuZXcgd2F5LgoJKHN3ZWVwX3BhZ2VzKTogUmVkbyB0byBhY2NvdW50IGZvciBmYWN0IHRoYXQgd2Ugbm8gbG9uZ2VyIGhhdmUKCWJ5dGVzX2ZyZWUuCgkoZ2djX2NvbGxlY3QpOiBObyBsb25nZXIgbmVlZCB0byByZWluY3JlbWVudCBieXRlc19mcmVlLgoJKGdnY19wY2hfYWxsb2Nfb2JqZWN0KTogSGFuZGxlIG5ldyBsYXJnZSBvYmplY3RzIHByb3Blcmx5LgoJKGdnY19wY2hfcmVhZCk6IFB1dCBQQ0ggc3R1ZmYgaW50byBpdCdzIG93biB1bmNvbGxlY3RlZCB6b25lLgoKMjAwNC0wMS0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIGEgcGFnZSBicmVhay4KCjIwMDQtMDEtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogUmVtb3ZlIGFuCglleHRyYSBwYWlyIG9mIGN1cmx5IGJyYWNlcy4KCjIwMDQtMDEtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmM6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaDogTGlrZXdpc2UuCgoyMDA0LTAxLTA1ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS5oOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBvbiBub3Rocm93X2ZsYWcuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFByaW50IFRSRUVfTk9USFJPVyBhcyAiYWxpZ24tb2siIGZvcgoJdHlwZXMuCgoyMDA0LTAxLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2ludm9rZS50ZXhpOiBSZW1vdmUgdHJhY2VzIG9mIGRlYWQgcG9ydHMuCgoyMDA0LTAxLTA1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IEFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgTUlQUyAtbWV4cGxpY2l0LXJlbG9jcwoJb3B0aW9uLgoKMjAwNC0wMS0wNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xMjk0NQoJKiBjb3ZlcmFnZS5jIChjb3ZlcmFnZV9jb3VudGVyX2FsbG9jKTogU2V0IFNZTUJPTF9GTEFHX0xPQ0FMIGZvcgoJY291bnRlciBsYWJlbHMuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoSU5URVJOQUxfU1lNQk9MX1ApOiBEZWxldGUuCgkobWlwc19jbGFzc2lmeV9zeW1ib2wpOiBBbHdheXMgdHJlYXQgU1lNQk9MX1JFRl9GTEFHIGFzIGluZGljYXRpbmcKCXN0cmluZyBjb25zdGFudHMgaWYgVEFSR0VUX01JUFMxNi4gIFVzZSBTWU1CT0xfUkVGX0RFQ0wgdG8gY2hlY2sKCXRoZSBiaW5kaW5nIG9mIGRlY2wgc3ltYm9scywgb3RoZXJ3aXNlIGNoZWNrIFNZTUJPTF9SRUZfTE9DQUxfUC4KCShtaXBzX3N5bWJvbF9pbnNucyk6IERvbid0IHRydXN0IHRoZSBsb2NhbC9nbG9iYWwgY2xhc3NpZmljYXRpb24uCgkobTE2X3VzeW04XzQsIG0xNl91c3ltNV80KTogU2FtZSBtaXBzMTYgY2hhbmdlIGFzIG1pcHNfY2xhc3NpZnlfc3ltYm9sLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBNYWtlIC1tYWJpY2FsbHMgLWZuby11bml0LWF0LWEtdGltZSBpbXBseQoJLW1uby1leHBsaWNpdC1yZWxvY3MuCgkobWlwc19lbmNvZGVfc2VjdGlvbl9pbmZvKTogRG9uJ3QgdXNlIFNZTUJPTF9SRUZfRkxBRyB0byBkaXN0aW5ndWlzaAoJYmV0d2VlbiBsb2NhbCBhbmQgZ2xvYmFsIHN5bWJvbHMuCgoyMDA0LTAxLTA1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2Rhbmdlcm91c19mb3JfbGEyNV9wKTogRGVjbGFyZS4KCShtaXBzX3ByZWZlcnJlZF9yZWxvYWRfY2xhc3MpOiBEZWNsYXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKERBTkdFUk9VU19GT1JfTEEyNV9QKTogUmVwbGFjZSB3aXRoIGZ1bmN0aW9uLgoJKEVYVFJBX0NPTlNUUkFJTlQpOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgkoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IFVzZSBtaXBzX3ByZWZlcnJlZF9yZWxvYWRfY2xhc3MuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19kYW5nZXJvdXNfZm9yX2xhMjVfcCk6IE5ldyBmdW5jdGlvbi4KCShtaXBzX3ByZWZlcnJlZF9yZWxvYWRfY2xhc3MpOiBOZXcgZnVuY3Rpb24uICBQcmVmZXIgTEVBX1JFR1MgaWYKCW1pcHNfZGFuZ2Vyb3VzX2Zvcl9sYTI1X3AuCgkobWlwc19zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogVXNlIExFQV9SRUdTIHJhdGhlciB0aGFuIEdSX1JFR1MKCWlmIG1pcHNfZGFuZ2Vyb3VzX2Zvcl9sYTI1X3AuCgoyMDA0LTAxLTA1ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG91dHB1dF9hbmRzaTMpOiBGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24KCXdhcm5pbmcuCgoyMDA0LTAxLTA0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogVXNlIEFDX1BST0dfQ1BQX1dFUlJPUi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wMS0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIC5jdnNpZ25vcmU6IEFkZCBhdXRvbTR0ZS5jYWNoZS4KCjIwMDQtMDEtMDQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogUmV2YW1wIGRvY3VtZW50YXRpb24gb2YgTUlQUyBvcHRpb25zLiAgUmVtb3ZlCgktbWFiaT1tZWFiaSwgLW1hYmktZmFrZS1kZWZhdWx0LCAtbW1pcHMtYXMsIC1tZ2FzLCAtbW1pcHMtdGZpbGUsCgktbTQ2NTAsIC1tZml4NzAwMCBhbmQgLShtKW5vLWNydDAuICBQdXQgZW5kaWFubmVzcyBvcHRpb25zIGZpcnN0LAoJdGhlbiBhcmNoaXRlY3R1cmUgb3B0aW9ucywgdGhlbiBBQkkgb3B0aW9ucy4gIEdlbmVyYWwgcmV3b3JkaW5nLgoKMjAwNC0wMS0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8zNDE0CgkqIGRvYy9leHRlbmQudGV4aTogQ2xhcmlmeSBkZWZpbml0aW9uIG9mIG1hbGxvYyBhdHRyaWJ1dGUuCgoyMDA0LTAxLTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBNYWtlZmlsZS5pbiAoY2dyYXBoLm8sIGNncmFwaHVuaXQubyk6IEFkZCBpbnRsLmggZGVwZW5kZW5jeS4KCSogY2dyYXBoLmMgKGNyZWF0ZV9lZGdlLCBkdW1wX2NncmFwaCk6IFVwZGF0ZSB0byB1c2UgaW5saW5lX2ZhaWxlZAoJKiBjZ3JhcGguaCAoY2dyYXBoX2VkZ2UpOiBSZXBsYWNlIGlubGluZV9jYWxsIGJ5IGlubGluZV9mYWlsZWQKCShjZ3JhcGhfaW5saW5lX3ApOiBBZGQgZXh0cmEgYXJndW1lbnQgcmVhc29uLgoJKiBjZ3JhcGh1bml0LmM6IE1pbm9yIGZvcm1hdGluZyBmaXhlcy4KCWNncmFwaF9maXJzdF9pbmxpbmVkX2NhbGxlZSk6IE5ldyBmdW5jdGlvbnMuCgkocmVjb3JkX2NhbGxfMSk6IFJlY29yZCBidWlsdGlucyB0b28uCgkoY2dyYXBoX2FuYWx5emVfZnVuY3Rpb24pOiBVcGRhdGUgaW5saW5lX2ZhaWxlZCBtZXNzYWdlcy4KCShjZ3JhcGhfbWFya19mdW5jdGlvbnNfdG9fb3V0cHV0LCBjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uLCBjZ3JhcGhfaW5saW5lZF9pbnRvLAoJY2dyYXBoX2lubGluZWRfY2FsbGVlcywgY2dyYXBoX2VzdGltYXRlX2dyb3d0aCk6IFVwZGF0ZSB0byB1c2UgaW5saW5lX2ZhaWxlZC4KCShjZ3JhcGhfY2hlY2tfaW5saW5lX2xpbWl0cyk6IExpa2V3aXNlOyBBZGQgYXJndW1lbnQgcmVhc29uLgoJKGNncmFwaF9zZXRfaW5saW5lX2ZhaWxlZCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19vZl9zbWFsbF9mdW5jdGlvbiwgY2dyYXBoX2RlY2lkZV9pbmxpbmluZyk6IFNldAoJcmVhc29ucy4KCShjZ3JhcGhfaW5saW5lX3ApOiBBZGQgbmV3IGFyZ3VtZW50IHJlYXNvbi4KCSogdHJlZS1pbmxpbmUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogVXBkYXRlIHdhcm5pbmcuCgoyMDA0LTAxLTAzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogUmVwbGFjZSBBQ19JTklULCBBQ19PVVRQVVQsIEFDX0NBTk9OSUNBTF9TWVNURU0KCXdpdGggbW9kZXJuIGVxdWl2YWxlbnRzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBjb25maWd1cmUuYWM6IFJlcGxhY2UgZ2NjX0FDX0NIRUNLX1RZUEUgd2l0aCBBQ19DSEVDS19UWVBFLgoJKiBhY2xvY2FsLm00IChnY2NfQUNfQ0hFQ0tfVFlQRSk6IFJlbW92ZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogZG9jL2luc3RhbGwudGV4aTogTm90ZSB0aGF0ICdnY2MnIGlzIG5vdyBhIDIuNTcgZGlyZWN0b3J5LgoKCSogY29uZmlndXJlLmluOiBSZW5hbWUgdG8gY29uZmlndXJlLmFjLgoJKiBjb25maWd1cmUuYWM6IFJlbmFtZWQgZnJvbSBjb25maWd1cmUuaW47IG1ha2UgbWluaW11bSBuZWNlc3NhcnkKCWNoYW5nZXMgZm9yIGF1dG9jb25mIDIuNXguCgkqIGFjbG9jYWwubTQ6IE1ha2UgbWluaW11bSBuZWNlc3NhcnkgY2hhbmdlcyBmb3IgYXV0b2NvbmYgMi41eC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlIHdpdGggYXV0b2NvbmYgMi41Ny4KCjIwMDQtMDEtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbWlwcy9saW51eC5oOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBjb25maWcvbWlwcy9taXBzLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbmV0YnNkLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy93aW5kaXNzLmg6IExpa2V3aXNlLgoKMjAwNC0wMS0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGZwIGNvbnN0YW50IHBvb2wgc3BsaXR0ZXIpOiBSZW9yZyBzdXBwcmVzc2lvbgoJZm9yIHNzZSBhbmQgMzg3OyBhZGQgc3VwcHJlc3Npb24gZm9yIG1teC4KCjIwMDQtMDEtMDIgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogbG9vcC5jIChsb29wX29wdGltaXplKTogRnJlZSBhbGwgbG9vcHNfaW5mbydzIG1lbXMuCgoJKiBjLXR5cGVjay5jIChmaW5pc2hfaW5pdCk6IEZyZWUgc3BlbGxpbmdfYmFzZSBiZWZvcmUKCXNldHRpbmcgaXQgYWdhaW4uCgoJKiBjZmdsb29wLmMgKGZsb3dfbG9vcHNfZmluZCk6IEFsd2F5cyBmcmVlIHRoZSBzYml0bWFwCgloZWFkZXJzLgoKCSogcHJlZGljdC5jIChlc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IEZyZWUgYmJzIGFmdGVyIGJlaW5nCglkb25lIHdpdGggaXQuCgoyMDA0LTAxLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQKCWNvbnN0XzhiaXRfb3BlcmFuZCBhbmQgY2FsbF9hZGRyZXNzX29wZXJhbmQuCgoyMDA0LTAxLTAyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9vcHRpbWl6ZV9mdW5jdGlvbik6IENhbGwgb3B0aW1pemVfaW5saW5lX2NhbGxzCgl3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gaW5saW5lIGJ1dCB3YXJuaW5ncyBhcmUgcmVxdWVzdGVkLgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmcpOiBGaXggbWVtb3J5IGxlYWsuCgoyMDA0LTAxLTAyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogRml4IHBhc3RvIGluIHByZXZpb3VzIHBhdGNoLgoKMjAwNC0wMS0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pMzg2L2N5Z21pbmcuaDogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogY29uZmlnL2kzODYvZGpncHAuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2d0aHItd2luMzIuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYtaW50ZXJpeC5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvb3BlbmJzZC5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvd2lubnQuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3htLW1pbmd3MzIuaDogTGlrZXdpc2UuCgoyMDA0LTAxLTAyICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9nY2MudGV4aSwgZG9jL2ludm9rZS50ZXhpLCBkb2MvaW5zdGFsbC50ZXhpOiBVcGRhdGUKCWNvcHlyaWdodCBhbmQgbGFzdCBtb2RpZmljYXRpb24gZGF0ZXMuCgoyMDA0LTAxLTAyICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+LCBHZXJhbGQgUGZlaWZlciAgPGdwQHN1c2UuZGU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChTcGVjaWZpYyk6IE1lbnRpb24geDg2XzY0LgoKMjAwNC0wMS0wMSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYXBwbHlfYXJnc18xKSBbU1RBQ0tfR1JPV1NfRE9XTldBUkRdOgoJQ2FsbCBmb3JjZV9vcGVyYW5kIG9uIHBsdXNfY29uc3RhbnQgcmVzdWx0LgoKMjAwNC0wMS0wMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCwgZXh0cmFjdF9iaXRfZmllbGQpOiBVc2UgbmV3IG5hbWVkIHBhdHRlcm5zCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3IpOiBVc2UgdmVjX2luaXQgcGF0dGVybi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEluaXRhaWxpemUgdmVjX3NldC92ZWNfZXh0cmFjdC92ZWNfaW5pdC4KCSogb3B0YWJzLmggKG9wdGFiX2luZGV4KTogQUREIE9USV92ZWNfc2V0L09USV92ZWNfZXh0cmFjdC9PVElfdmVjX2luaXQKCSh2ZWNfc2V0X29wdGFiLCB2ZWNfZXh0cmFjdF9vcHRhYiwgdmVjX2luaXRfb3B0YWIpOiBOZXcuCgkqIGkzODYubWQgKHZlY19zZXR2MmRmLCB2ZWNfZXh0cmFjdHYyZGYsIHZlY19zZXR2NHNmLCB2ZWNfZXh0cmFjdHY0c2YpOgoJTmV3IHBhdHRlcm5zLgoJKHNzZTJfdW5wYz9wZCk6IEZpeCBwYXR0ZXJuLgoJKHNzZTJfbW92bHBkKTogS2lsbC4KCShzc2UyX21vdnNkKTogRGVhbCB3aXRoIG1vdmxwZCB0b28uCgkqIGkzODYuYyAoaXg4Nl9leHBhbmRfYnVpbHRpbik6IFVzZSBzc2UyX21vdnNkIGluc3RlYWQgb2Ygc3NlMl9tb3ZscGQuCgkoaXg4Nl9leHBhbmRfdmVjdG9yX2luaXQpOiBOZXcuCgkqIGVtbWludHJpbi5oIChfX21tX3NldF9wZCwgX19tbV9zZXRfcHMpOiBVc2UgdmVjdG9yIGV4dGVuc2lvbnMuCgkqIG1kLnRleGkgKHZlY19zZXQsIHZlY19leHRyYWN0KTogRG9jdW1lbnQK