MjAwNC0wNi0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIFtGVF9ERUJVR19NRU1PUlldOiBEZWNsYXJlCglGVF9RQWxsb2NfRGVidWcgYW5kIEZUX1FSZWFsbG9jX0RlYnVnLgoKCSogc3JjL2Jhc2UvZnR1dGlsLmMgKEZUX1FBbGxvYyk6IEZpeCBlcnJvciBhbmQgZGVidWcgbWVzc2FnZXMuCgkoRlRfUVJlYWxsb2MpOiBDYWxsIEZUX1FBbGxvYyBpZiBvcmlnaW5hbCBwb2ludGVyIGlzIE5VTEwuCglGaXggZXJyb3IgbWVzc2FnZS4KCjIwMDQtMDYtMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwgc3JjL2Jhc2UvZnR1dGlsLmMKCShGVF9RQWxsb2MsIEZUX1FSZWFsbG9jKSwgc3JjL2Jhc2UvZnRkYmdtZW0uYyAoRlRfUUFsbG9jX0RlYnVnLAoJRlRfUVJlYWxsb2NfRGVidWcpOiBOZXcgZnVuY3Rpb25zIHRoYXQgcGVyZm9ybSBhbGxvY2F0aW9uIHdpdGhvdXQKCXplcm8taW5nIG91dCB0aGUgY29ycmVzcG9uZGluZyBibG9ja3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmggKEZUX01FTV9RQUxMT0MsCglGVF9NRU1fUVJFQUxMT0MsIEZUX01FTV9RTkVXLCBGVF9NRU1fUU5FV19BUlJBWSwKCUZUX01FTV9RUkVORVdfQVJSQVksIEZUX1FBTExPQywgRlRfUVJFQUxMT0MsIEZUX1FORVcsIEZUX1FORVdfQVJSQVksCglGVF9RUkVORVdfQVJSQVkpOiBOZXcgbWFjcm9zLgoKCSogc3JjL2Jhc2UvZnRzdHJlYW0uYyAoRlRfU3RyZWFtX0VudGVyRnJhbWUpOiBVc2UgRlRfUUFMTE9DLgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoRlRfU3RyZWFtX09wZW5HemlwKTogIFVzZSBGVF9RTkVXX0FSUkFZLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfZmFjZV9nZXRfbmFtZSk6IFVzZSBGVF9RTkVXX0FSUkFZLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9kaXJlY3RvcnksIHR0X2ZhY2VfbG9hZF9tZXRyaWNzLAoJdHRfZmFjZV9sb2FkX2dhc3ApOiBVc2UgRlRfUU5FV19BUlJBWS4KCSh0dF9mYWNlX2xvYWRfa2Vybik6IFVzZSBGVF9RTkVXX0FSUkFZLgoJU21hbGwgb3B0aW1pemF0aW9uIGluIHRoZSBrZXJuaW5nIHRhYmxlIHZlcmlmaWVyOyB0aGlzIHNwZWVkcyB1cAoJVHJ1ZVR5cGUgZmFjZSBvcGVuaW5nIGJ5IGFib3V0IDclLgoJKHR0X2ZhY2VfbG9hZF9oZG14KTogVXNlIEZUX1FORVdfQVJSQVkgYW5kIEZUX1FBTExPQy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IENoYW5nZWQgdGhlIG9yZGVyIG9mIG1vZHVsZXMsCglwdXR0aW5nIFRydWVUeXBlIGFuZCBUeXBlIDEgZmlyc3QuICBUaGlzIGRyYW1hdGljYWxseSBpbXByb3ZlcyB0aGUKCXBlcmZvcm1hbmNlIG9mIGZhY2Ugb3Blbi9jbG9zZSBvcGVyYXRpb25zLiAgRm9yIGV4YW1wbGUsIHB1dHRpbmcgdGhlCglUcnVlVHlwZSBkcml2ZXIgZmlyc3QgaW4gdGhlIGxpc3QgcmVzdWx0cyBpbiBhIDV4IHNwZWVkdXAgd2hlbgoJb3BlbmluZyBgVmVyYS50dGYnLgoKCVRoZSB2ZXJ5IHByb2JsZW0gaXMgdGhhdCBib3RoIHRoZSBQQ0YgYW5kIEJERiBkcml2ZXJzIGRvIGEgbG90IG1vcmUKCXRoYW4gbmVjZXNzYXJ5IHRvIGRldGVjdCB0aGF0IHRoZXkgY2Fubm90IGhhbmRsZSBhIGZvbnQgZmlsZS4KCjIwMDQtMDYtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfcmVhZF9UT0MsIHBjZl9nZXRfcHJvcGVydGllcywKCXBjZl9nZXRfbWV0cmljcywgcGNmX2dldF9iaXRtYXBzLCBwY2ZfZ2V0X2VuY29kaW5ncyk6IEltcHJvdmUKCWRlYnVnZ2luZyBtZXNzYWdlcy4KCgkqIHNyYy9wY2YvcGNmZHJpdnIuYyAoRlRfQ09NUE9NRU5UKTogTW92ZSB1cC4KCShQQ0ZfRmFjZV9Jbml0KTogU2ltcGxpZnkgY29kZS4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuaCAoQkRGX0ZhY2VSZWMpOiBOZXcgZWxlbWVudCBgZGVmYXVsdF9nbHlwaCcuCgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX2FkZF9wcm9wZXJ0eSwgX2JkZl9wYXJzZV9zdGFydCksCglzcmMvYmRmL2JkZi5oIChiZGZfZm9udF90KTogcy9kZWZhdWx0X2dseXBoL2RlZmF1bHRfY2hhci8uCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBGaXggbnVtYmVyIG9mIGdseXBocy4KCVNldCBgZGVmYXVsdF9nbHlwaCcuCgkoQkRGX0dseXBoX0xvYWQpOiBVc2UgYGRlZmF1bHRfZ2x5cGgnIGZvciB1bmRlZmluZWQgZ2x5cGguCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTA2LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTA2LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Qcm9jZXNzX1NpbXBsZV9HbHlwaCwKCWxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBEb24ndCBhY2Nlc3MgKHVucm91bmRlZCkKCWBUVF9TaXplLnJvb3QubWV0cmljcycgYnV0IChyb3VuZGVkKSBgVFRfU2l6ZS5tZXRyaWNzJy4gIFRoaXMgZml4ZXMKCWEgc2NhbGluZyBidWcgdGhhdCBjYXVzZWQgaW5jb3JyZWN0IHJlbmRlcmluZyB3aGVuIHRoZSBieXRlY29kZQoJaW50ZXJwcmV0ZXIgd2FzIGVuYWJsZWQuCgoyMDA0LTA2LTE0ICBIdXcgRCBNIERhdmllcyAgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfRmFjZV9Jbml0KTogU2V0IHhfcHBlbSBhbmQgeV9wcGVtCgliYXNlZCBvbiBwaXhlbF93aWR0aCBhbmQgcGl4ZWxfaGVpZ2h0LgoJKEZOVF9TaXplX1NldF9QaXhlbHMpOiBVcGRhdGVkLgoKMjAwNC0wNi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2x6dy96b3Blbi5jOiBDb21tZW50IG91dCBpbmNsdXNpb24gb2Ygc2lnbmFsLmggYW5kIHVuaXN0ZC5oLgoJUmVwb3J0ZWQgYnkgSHl25HJpbmVuIEp5cmtpIEp1aGFuaS4KCjIwMDQtMDYtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDYtMTAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2JqZWN0LmMsIHNyYy9iYXNlL2Z0aGFzaC5jLCBzcmMvYmFzZS9mdGV4Y2VwdC5jLAoJc3JjL2Jhc2UvZnRzeXNpby5jLCBzcmMvYmFzZS9mdHN5c21lbS5jLCBzcmMvYmFzZS9mdGxpc3QuYzogUmVtb3ZlZC4KCU9ic29sZXRlLgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChBbGlnbm1lbnQsIFBBbGlnbm1lbnQpOiBOZXcgdW5pb24gdG8gZml4Cglwcm9ibGVtcyB3aXRoIDY0Yml0IHN5c3RlbXMuCgkoQWxpZ25Qcm9maWxlU2l6ZSk6IFVzZSBpdC4KCjIwMDQtMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfR2x5cGhNZXRyaWNzKTogTW92ZSBgbHNiX2RlbHRhJwoJYW5kIGByc2JfZGVsdGEnIGVsZW1lbnRzIHRvLi4uCgkoRlRfR2x5cGhTbG90UmVjKTogSGVyZSB0byByZXRhaW4gYmluYXJ5IGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlcgoJRnJlZVR5cGUgdmVyc2lvbnMuCglVcGRhdGUgYWxsIHVzZXJzLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X2ZhY2VfZ2V0X25hbWUpOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0xvYWRfR2x5cGgpOiBBZGQgbWlzc2luZyBpbml0aWFsaXphdGlvbgoJb2Ygc2xvdC0+bWV0cmljcy53aWR0aCBhbmQgc2xvdC0+bWV0cmljcy5oZWlnaHQgd2hlbiBsb2FkaW5nIGEKCVdpbmRvd3MgRk5UIGdseXBoLiAgVGhhbmtzIHRvIEh1dyBEYXZpZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21ydS5oIChGVENfTXJ1Tm9kZV9Db21wYXJlRnVuYyk6IENoYW5nZQoJcmV0dXJuIHR5cGUgdG8gRlRfQm9vbC4KCgkqIHNyYy9jYWNoZS9mdGJhc2ljLmMgKGZ0Y19iYXNpY19mYW1pbHlfY29tcGFyZSk6IENoYW5nZSByZXR1cm4KCXR5cGUgdG8gRlRfQm9vbC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChGVENfQ2FjaGVfSW5pdCwgZnRjX2NhY2hlX2luaXQpOiBNYWtlCgl0aGUgZm9ybWVyIGNhbGwgdGhlIGxhdHRlciwgbm90IHZpY2UgdmVyc2EuCgkoRlRDX0NhY2hlX0RvbmUsIGZ0Y19jYWNoZV9kb25lKTogRGl0dG8uCgoJKiBzcmMvY2FjaGUvZnRjZ2x5cGguYyAoRlRDX0dOb2RlX0NvbXBhcmUsIGZ0Y19nbm9kZV9jb21wYXJlKTogTWFrZQoJdGhlIGZvcm1lciBjYWxsIHRoZSBsYXR0ZXIsIG5vdCB2aWNlIHZlcnNhLgoJKEZUQ19HQ2FjaGVfSW5pdCwgZnRjX2djYWNoZV9pbml0KTogRGl0dG8uCgkoRlRDX0dDYWNoZV9Eb25lLCBmdGNfZ2NhY2hlX2RvbmUpOiBEaXR0by4KCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChGVENfSU5vZGVfRnJlZSwgZnRjX2lub2RlX2ZyZWUpOiBNYWtlIHRoZQoJZm9ybWVyIGNhbGwgdGhlIGxhdHRlciwgbm90IHZpY2UgdmVyc2EuCgkoRlRDX0lOb2RlX1dlaWdodCwgZnRjX2lub2RlX3dlaWdodCk6IERpdHRvLgoKCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19zaXplX25vZGVfY29tcGFyZSwKCWZ0Y19zaXplX25vZGVfY29tcGFyZV9mYWNlaWQsIGZ0Y19mYWNlX25vZGVfY29tcGFyZSk6IENoYW5nZSByZXR1cm4KCXR5cGUgdG8gRlRfQm9vbC4KCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChGVENfU05vZGVfRnJlZSwgZnRjX3Nub2RlX2ZyZWUpOiBNYWtlIHRoZQoJZm9ybWVyIGNhbGwgdGhlIGxhdHRlciwgbm90IHZpY2UgdmVyc2EuCgkoRlRDX1NOb2RlX1dlaWdodCwgZnRjX3Nub2RlX3dlaWdodCk6IERpdHRvLgoJKEZUQ19TTm9kZV9Db21wYXJlLCBmdGNfc25vZGVfY29tcGFyZSk6IERpdHRvLgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmM6IEZpeCBzb21lIGJ1Z3MgYW5kIGluZWZmaWNpZW5jaWVzIGluIHRoZSBjYWNoZQoJc3ViLXN5c3RlbS4KCjIwMDQtMDYtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvZml0L2FmbG9hZGVyLmMgKGFmX2xvYWRlcl9sb2FkX2cpOiBTZXQgYGxzYl9kZWx0YScgYW5kCglgcnNiX2RlbHRhJyBpbiBzbG90LT5tZXRyaWNzIGFuZCB0dW5lIHNpZGUgYmVhcmluZ3Mgc2xpZ2h0bHkuCgoyMDA0LTA2LTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTA2LTA0ICBEYXZpZCBDaGVzdGVyICA8ZGF2aWRjaGVzdGVyQGdteC5uZXQ+CgoJSW1wcm92ZSBpbnRlci1sZXR0ZXIgc3BhY2luZyBmb3IgYXV0b2hpbnRlZCBnbHlwaHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0dseXBoX01ldHJpY3MpOiBBZGQgZWxlbWVudHMKCWBsc2JfZGVsdGEnIGFuZCBgcnNiX2RlbHRhJy4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBTZXQgYGxzYl9kZWx0YScgYW5kCglgcnNiX2RlbHRhJyBpbiBzbG90LT5tZXRyaWNzIGFuZCB0dW5lIHNpZGUgYmVhcmluZ3Mgc2xpZ2h0bHkuCgoyMDA0LTA2LTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2ZpdC8qOiBJbXBvcnRhbnQgZml4ZXMgdG8gdGhlIGF1dG8tZml0dGVyLiAgVGhlIG91dHB1dAoJbm93IHNlZW1zIHRvIGJlIDEwMCUgZXF1aXZhbGVudCB0byB0aGUgYXV0by1oaW50ZXIsIHdoaWxlIGJlaW5nCglhYm91dCAyJSBmYXN0ZXIgKHdoaWNoIHByb3ZlcyB0aGF0IHNjcmlwdC1zcGVjaWZpYyBhbGdvcml0aG0KCXNlbGVjdGlvbiBpc24ndCBhIHBlcmZvcm1hbmNlIHByb2JsZW0pLgoKCVRvIHRlc3QgaXQsIGNoYW5nZSBgYXV0b2hpbnQnIHRvIGBhdXRvZml0JyBpbgoJPGZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oPiBhbmQgcmVjb21waWxlLgoKCUEgZmV3IG1vcmUgdGVzdGluZyBpcyBuZWVkZWQgYmVmb3JlIG1ha2luZyB0aGlzIHRoZSBvZmZpY2lhbAoJYXV0by1oaW50aW5nIG1vZHVsZS4KCjIwMDQtMDYtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGNvbXB1dGVfZ2x5cGhfbWV0cmljcyk6IEZpeCBjb21waWxlcgoJd2FybmluZ3MuCgoyMDA0LTA2LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfZmFjZV9nZXRfbmFtZSk6IE1ha2Ugc3VyZSB0aGF0IGFuIEVuZ2xpc2gKCW5hbWUgcmVjb3JkIGZvciB0aGUgQXBwbGUgcGxhdGZvcm0gaXMgcHJlZmVycmVkIHRvIGEgbm9uLUVuZ2xpc2gKCWVudHJ5IGZvciB0aGUgTWljcm9zb2Z0IHBsYXRmb3JtLiAgUHJvYmxlbSByZXBvcnRlZCBieSBIQU5EQQoJS2VuJ2ljaGkuCgoyMDA0LTA1LTE5ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAobW1fYXhpc191bm1hcCwgbW1fd2VpZ2h0c191bm1hcCk6IE5ldwoJYXV4aWxpYXJ5IGZ1bmN0aW9ucy4KCShUMV9HZXRfTU1fVmFyKTogUHJvdmlkZSBheGlzIHRhZ3MuCglVc2UgbW1fYXhpc191bm1hcCBhbmQgbW1fd2VpZ2h0c191bm1hcCB0byBwcm92aWRlIGRlZmF1bHQgdmFsdWVzCglmb3IgZGVzaWduIGFuZCBub3JtYWxpemVkIGF4aXMgY29vcmRpbmF0ZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX0Rlc2lnbk1hcFJlYyk6IENoYW5nZSB0eXBlIG9mCglgZGVzaWduX3BvaW50cycgdG8gRlRfTG9uZy4KCVVwZGF0ZSBhbGwgdXNlcnMuCgoyMDA0LTA1LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGJib3guYyAoQkJveF9Db25pY19DaGVjayk6IEZpeCBib3VuZGFyeSBjYXNlcy4KCVJlcG9ydGVkIGJ5IE1pa2V5IEFuYmFyeSA8bWFuYmFyeUB2aXpydC5jb20+LgoKMjAwNC0wNS0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfZG9uZV9mYWNlKTogRnJlZSBmYWNlLT5wb3N0c2NyaXB0X25hbWUuCgoyMDA0LTA1LTE1ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfbWF4X3Byb2ZpbGUpOiBBbHdheXMgc2V0CglmYWNlLT5yb290Lm51bV9nbHlwaHMuCgoyMDA0LTA1LTE0ICBNYXNhdGFrZSBZQU1BVE8gIDxqZXRAZ3l2ZS5vcmc+CgkgICAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoc2ZudF9kaXJfY2hlY2spOiBIYW5kbGUgYGJoZWQnIHByb3Blcmx5LgoKMjAwNC0wNS0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2Jhc2ljLmMgKGZ0Y19iYXNpY19mYW1pbHlfY29tcGFyZSwKCWZ0Y19iYXNpY19mYW1pbHlfaW5pdCwgZnRjX2Jhc2ljX2ZhbWlseV9nZXRfY291bnQsCglmdGNfYmFzaWNfZmFtaWx5X2xvYWRfYml0bWFwLCBmdGNfYmFzaWNfZmFtaWx5X2xvYWRfZ2x5cGgsCglmdGNfYmFzaWNfZ25vZGVfY29tcGFyZV9mYWNlaWQpOiBBZGp1c3QgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzCgl0byBwcm90b3R5cGVzIGdpdmVuIGluIGhlYWRlciBmaWxlcyBmcm9tIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUuCglVc2UgY2FzdHMgdG8gcHJvcGVyIHR5cGVzIGxvY2FsbHkuCgkoZnRjX2Jhc2ljX2ltYWdlX2ZhbWlseV9jbGFzcywgZnRjX2Jhc2ljX2ltYWdlX2NhY2hlX2NsYXNzLAoJZnRjX2Jhc2ljX3NiaXRfZmFtaWx5X2NsYXNzLCBmdGNfYmFzaWNfc2JpdF9jYWNoZV9jbGFzcyk6IFJlbW92ZQoJY2FzdHMuCgoJKiBzcmMvY2FjaGUvZnRjY2JhY2suaDogQWRqdXN0IHBhcmFtZXRlcnMgYW5kIHJldHVybiB0eXBlcyB0bwoJcHJvdG90eXBlcyBnaXZlbiBpbiBoZWFkZXIgZmlsZXMgZnJvbSBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLgoKCSogc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKGZ0Y19pbm9kZV9mcmVlLCBmdGNfaW5vZGVfbmV3LAoJZnRjX2lub2RlX3dlaWdodCk6IEFkanVzdCBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdHlwZXMgdG8gcHJvdG90eXBlcwoJZ2l2ZW4gaW4gaGVhZGVyIGZpbGVzIGZyb20gaW5jbHVkZS9mcmVldHlwZS9jYWNoZS4gIFVzZSBjYXN0cyB0bwoJcHJvcGVyIHR5cGVzIGxvY2FsbHkuCgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3Nub2RlX2ZyZWUsIGZ0Y19zbm9kZV9uZXcsCglmdGNfc25vZGVfd2VpZ2h0LCBmdGNfc25vZGVfY29tcGFyZSk6IEFkanVzdCBwYXJhbWV0ZXJzIGFuZCByZXR1cm4KCXR5cGVzIHRvIHByb3RvdHlwZXMgZ2l2ZW4gaW4gaGVhZGVyIGZpbGVzIGZyb20KCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUuICBVc2UgY2FzdHMgdG8gcHJvcGVyIHR5cGVzIGxvY2FsbHkuCgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9ub2RlX2ZyZWUsIGZ0Y19jbWFwX25vZGVfbmV3LAoJZnRjX2NtYXBfbm9kZV93ZWlnaHQsIGZ0Y19jbWFwX25vZGVfY29tcGFyZSwKCWZ0Y19jbWFwX25vZGVfcmVtb3ZlX2ZhY2VpZCk6IEFkanVzdCBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdHlwZXMgdG8KCXByb3RvdHlwZXMgZ2l2ZW4gaW4gaGVhZGVyIGZpbGVzIGZyb20gaW5jbHVkZS9mcmVldHlwZS9jYWNoZS4gIFVzZQoJY2FzdHMgdG8gcHJvcGVyIHR5cGVzIGxvY2FsbHkuCgkoZnRjX2NtYXBfY2FjaGVfY2xhc3MpOiBSZW1vdmUgY2FzdHMuCgoJKiBzcmMvY2FjaGUvZnRjZ2x5cGguYyAoZnRjX2dub2RlX2NvbXBhcmUsIGZ0Y19nY2FjaGVfaW5pdCwKCWZ0Y19nY2FjaGVfZG9uZSk6IEFkanVzdCBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdHlwZXMgdG8gcHJvdG90eXBlcwoJZ2l2ZW4gaW4gaGVhZGVyIGZpbGVzIGZyb20gaW5jbHVkZS9mcmVldHlwZS9jYWNoZS4gIFVzZSBjYXN0cyB0bwoJcHJvcGVyIHR5cGVzIGxvY2FsbHkuCgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX3NpemVfbm9kZV9kb25lLCBmdGNfc2l6ZV9ub2RlX2NvbXBhcmUsCglmdGNfc2l6ZV9ub2RlX2luaXQsIGZ0Y19zaXplX25vZGVfcmVzZXQsCglmdGNfc2l6ZV9ub2RlX2NvbXBhcmVfZmFjZWlkLCBmdGNfZmFjZV9ub2RlX2luaXQsCglmdGNfZmFjZV9ub2RlX2RvbmUsIGZ0Y19mYWNlX25vZGVfY29tcGFyZTogQWRqdXN0IHBhcmFtZXRlcnMgYW5kCglyZXR1cm4gdHlwZXMgdG8gcHJvdG90eXBlcyBnaXZlbiBpbiBoZWFkZXIgZmlsZXMgZnJvbQoJaW5jbHVkZS9mcmVldHlwZS9jYWNoZS4gIFVzZSBjYXN0cyB0byBwcm9wZXIgdHlwZXMgbG9jYWxseS4KCgkoZnRjX3NpemVfbGlzdF9jbGFzcywgZnRjX2ZhY2VfbGlzdF9jbGFzcyk6IFJlbW92ZSBjYXN0cy4KCjIwMDQtMDUtMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haG1vZHVsZS5jIChmdF9hdXRvaGludGVyX2luaXQsIGZ0X2F1dG9oaW50ZXJfZG9uZSk6CglVc2UgRlRfTW9kdWxlIGFzIHBhcmFtZXRlciBhbmQgZG8gYSBjYXN0IHRvIEZUX0F1dG9IaW50ZXIgbG9jYWxseS4KCShhdXRvaGludF9tb2R1bGVfY2xhc3MpOiBSZW1vdmUgY2FzdHMuCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKGZ0X2JpdG1hcF9nbHlwaF9pbml0LCBmdF9iaXRtYXBfZ2x5cGhfY29weSwKCWZ0X2JpdG1hcF9nbHlwaF9kb25lLCBmdF9iaXRtYXBfZ2x5cGhfYmJveCwgZnRfb3V0bGluZV9nbHlwaF9pbml0LAoJZnRfb3V0bGluZV9nbHlwaF9kb25lLCBmdF9vdXRsaW5lX2dseXBoX2NvcHksCglmdF9vdXRsaW5lX2dseXBoX3RyYW5zZm9ybSwgZnRfb3V0bGluZV9nbHlwaF9iYm94LAoJZnRfb3V0bGluZV9nbHlwaF9wcmVwYXJlKTogVXNlIEZUX0dseXBoIGFzIHBhcmFtZXRlciBhbmQgZG8gYSBjYXN0Cgl0byBGVF9YWFhHbHlwaCBsb2NhbGx5LgoJVXNlIEZUX0NBTExCQUNLX0RFRiB0aHJvdWdob3V0LgoJKGZ0X2JpdG1hcF9nbHlwaF9jbGFzcywgZnRfb3V0bGluZV9nbHlwaF9jbGFzcyk6IFJlbW92ZSBjYXN0cy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoYmRmX2NtYXBfaW5pdCwgYmRmX2NtYXBfZG9uZSwKCWJkZl9jbWFwX2NoYXJfaW5kZXgsIGJkZl9jbWFwX2NoYXJfbmV4dCk6IFVzZSBGVF9DTWFwIGFzIHBhcmFtZXRlcgoJYW5kIGRvIGEgY2FzdCB0byBCREZfQ01hcCBsb2NhbGx5LgoJKGJkZl9jbWFwX2NsYXNzKTogUmVtb3ZlIGNhc3RzLgoKMjAwNC0wNS0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5oIChDRkZfQnVpbGRlcik6IFJlbW92ZSBgZXJyb3InLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKTogUmVwbGFjZQoJYE1lbW9yeV9FcnJvcicgd2l0aCBgRmFpbCcgdW5kIHVwZGF0ZSBhbGwgdXNlcnMuCgoyMDA0LTA1LTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX1BhcnNlU3RhdGUpOiBOZXcKCWVudW1lcmF0aW9uLgoJKFQxX0J1aWxkZXJSZWMpOiBSZXBsYWNlIGBwYXRoX2JlZ3VuJyB3aXRoIGBwYXJzZV9zdGF0ZScuCglSZW1vdmUgYGVycm9yJy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKHQxX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpOiBSZXBsYWNlCglgTWVtb3J5X0Vycm9yJyB3aXRoIGBGYWlsJyBhbmQgdXBkYXRlIGFsbCB1c2Vycy4KCURvbid0IHVzZSBgYnVpbGRlci0+ZXJyb3InLgoJUmVwbGFjZSBgcGF0aF9iZWd1bicgd2l0aCBgcGFyc2Vfc3RhdGUnIGFuZCBjaGVjayBwYXJzaW5nIHN0YXRlcy4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAodDFfYnVpbGRlcl9pbml0LCB0MV9idWlsZGVyX3N0YXJ0X3BvaW50KToKCVJlcGxhY2UgYHBhdGhfYmVndW4nIHdpdGggYHBhcnNlX3N0YXRlJyBhbmQgY2hlY2sgcGFyc2luZyBzdGF0ZXMuCgoyMDA0LTA1LTEwICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCgkqIHNyYy90cnVldHlwZS90dHhndmFyLmMgKGZ0X3Zhcl9sb2FkX2F2YXIpOiBEbyBmcmVlIGFycmF5cyBpbiBjYXNlCglvZiBlcnJvciAtLSBgYXZhcicgaXMgb3B0aW9uYWwgc28gd2UgY2FuJ3QgcmVseSBvbiB0dF9kb25lX2JsZW5kCgliZWluZyBjYWxsZWQgYXV0b21hdGljYWxseS4KCjIwMDQtMDUtMDkgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCSogc3JjL3RydWV0eXBlL3R0eGd2YXIuYyAoZnRfdmFyX2xvYWRfYXZhciwgZnRfdmFyX2xvYWRfZ3Zhcik6IEZpeAoJZXJyb3IgaGFuZGxpbmcuCgoyMDA0LTA1LTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGZyL3Bmcm9ianMuYywgc3JjL3Bmci9wZnJvYmpzLmggKHBmcl9mYWNlX2luaXQsCglwZnJfZmFjZV9kb25lLCBwZnJfZmFjZV9nZXRfa2VybmluZywgcGZyX3Nsb3RfaW5pdCwgcGZyX3Nsb3RfZG9uZSwKCXBmcl9zbG90X2xvYWQpOiBEb24ndCB1c2UgUEZSX1hYWCBidXQgRlRfWFhYIGFyZ3VtZW50cyB3aGljaCBhcmUKCXR5cGVjYXN0IHRvIHRoZSBwcm9wZXIgUEZSX1hYWCB0eXBlcyB3aXRoaW4gdGhlIGZ1bmN0aW9uLgoJVXBkYXRlIGNvZGUgYWNjb3JkaW5nbHkuCgoJKiBzcmMvcGZyL3BmcmRyaXZyLmMgKHBmcl9nZXRfa2VybmluZywgcGZyX2dldF9hZHZhbmNlLAoJcGZyX2dldF9tZXRyaWNzLCBwZnJfZ2V0X3NlcnZpY2UpOiBEb24ndCB1c2UgUEZSX1hYWCBidXQgRlRfWFhYCglhcmd1bWVudHMgd2hpY2ggYXJlIHR5cGVjYXN0IHRvIHRoZSBwcm9wZXIgUEZSX1hYWCB0eXBlcyB3aXRoaW4gdGhlCglmdW5jdGlvbi4KCVVwZGF0ZSBjb2RlIGFjY29yZGluZ2x5LgoJVXNlIEZUX0NBTExCQUNLX0RFRiB0aHJvdWdob3V0LgoJKHBmcl9tZXRyaWNzX3NlcnZpY2VfcmVjLCBwZnJfZHJpdmVyX2NsYXNzKTogUmVtb3ZlIGNhc3RzLgoKMjAwNC0wNS0wNiAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z3h2YXIuYyAoZnRfdmFyX2xvYWRfZ3Zhcik6IFVzZSBGVF9GQUNFX1NUUkVBTS4KCSgqKTogUmVuYW1lIGxvY2FsIHZhcmlhYmxlIE9mZnNldFRvRGF0YSB0byBvZmZzZXRUb0RhdGEuCgoyMDA0LTA1LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX3NpemVfZG9uZSwgY2ZmX3NpemVfaW5pdCwgY2ZmX3NpemVfcmVzZXQsCgljZmZfc2xvdF9kb25lLCBjZmZfc2xvdF9pbml0LCBjZmZfZmFjZV9pbml0LCBjZmZfZmFjZV9kb25lKTogQWNjZXNzCglyb290IGZpZWxkcyBkaXJlY3RseS4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChMb2FkX0dseXBoKTogQWNjZXNzIHJvb3QgZmllbGRzIGRpcmVjdGx5LgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfUHJvY2Vzc19TaW1wbGVfR2x5cGgpOiBTYXZlIGN1cnJlbnQKCWZyYW1lIGJlZm9yZSBjYWxsaW5nIFRUX1ZhcnlfR2V0X0dseXBoX0RlbHRhcy4KCgkqIHNyYy9wY2YvcGNmZHJpdnIuYyAoUENGX0NNYXBSZWMpOiBSZW5hbWUgYGNtYXAnIHRvIGByb290JyBmb3IKCWNvbnNpc3RlbmN5LgoJKHBjZl9jbWFwX2luaXQsIHBjZl9jbWFwX2RvbmUsIHBjZl9jbWFwX2NoYXJfaW5kZXgsCglwY2ZfY21hcF9jaGFyX25leHQpOiBEb24ndCB1c2UgUENGX1hYWCBidXQgRlRfWFhYIGFyZ3VtZW50cyB3aGljaAoJYXJlIHR5cGVjYXN0IHRvIHRoZSBwcm9wZXIgUENGX1hYWCB0eXBlcyB3aXRoaW4gdGhlIGZ1bmN0aW9uLgoJVXBkYXRlIGNvZGUgYWNjb3JkaW5nbHkuCgkocGNmX2NtYXBfY2xhc3MpOiBSZW1vdmUgY2FzdHMuCgkoUENGX0ZhY2VfRG9uZSwgUENGX0ZhY2VfSW5pdCwgUENGX1NldF9QaXhlbF9TaXplKTogRG9uJ3QgdXNlCglQQ0ZfWFhYIGJ1dCBGVF9YWFggYXJndW1lbnRzIHdoaWNoIGFyZSB0eXBlY2FzdCB0byB0aGUgcHJvcGVyCglQQ0ZfWFhYIHR5cGVzIHdpdGhpbiB0aGUgZnVuY3Rpb24uCglVcGRhdGUgY29kZSBhY2NvcmRpbmdseS4KCVVzZSBGVF9DQUxMQkFDS19ERUYgdGhyb3VnaG91dC4KCShQQ0ZfU2V0X1BvaW50X1NpemUpOiBOZXcgd3JhcHBlciBmdW5jdGlvbi4KCShQQ0ZfR2x5cGhfTG9hZCwgcGNmX2RyaXZlcl9yZXF1ZXN0ZXIpOiBVc2UgRlRfQ0FMTEJBQ0tfREVGLgoJKHBjZl9kcml2ZXJfY2xhc3MpOiBSZW1vdmUgY2FzdHMuCgoyMDA0LTA1LTA0ICBTdGV2ZSBIYXJ0d2VsbCAgPHNoc3BhbXNpbmtAY29tY2FzdC5uZXQ+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKHR0X2RyaXZlcl9kb25lKTogRml4IHR5cG8uCgoyMDA0LTA1LTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0RvbmUsIEJERl9GYWNlX0luaXQsCglCREZfU2V0X1BpeGVsX1NpemUpOiBEb24ndCB1c2UgQkRGX1hYWCBidXQgRlRfWFhYIGFyZ3VtZW50cyB3aGljaAoJYXJlIHR5cGVjYXN0IHRvIHRoZSBwcm9wZXIgQkRGX1hYWCB0eXBlcyB3aXRoaW4gdGhlIGZ1bmN0aW9uLgoJVXBkYXRlIGNvZGUgYWNjb3JkaW5nbHkuCglVc2UgRlRfQ0FMTEJBQ0tfREVGIHRocm91Z2hvdXQuCgkoQkRGX1NldF9Qb2ludF9TaXplKTogTmV3IHdyYXBwZXIgZnVuY3Rpb24uCgkoYmRmX2RyaXZlcl9jbGFzcyk6IFJlbW92ZSBjYXN0cy4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoR2V0X0tlcm5pbmcsIExvYWRfR2x5cGgsIGNmZl9nZXRfaW50ZXJmYWNlKToKCURvbid0IHVzZSBDRkZfWFhYIGJ1dCBGVF9YWFggYXJndW1lbnRzIHdoaWNoIGFyZSB0eXBlY2FzdCB0byB0aGUKCXByb3BlciBDRkZfWFhYIHR5cGVzIHdpdGhpbiB0aGUgZnVuY3Rpb24uCglVcGRhdGUgY29kZSBhY2NvcmRpbmdseS4KCVVzZSBGVF9DQUxMQkFDS19ERUYgdGhyb3VnaG91dC4KCShjZmZfZHJpdmVyX2NsYXNzKTogUmVtb3ZlIGNhc3RzLgoKCSogc3JjL2NmZi9jZmZvYmpzLmgsIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfc2l6ZV9kb25lLAoJY2ZmX3NpemVfaW5pdCwgY2ZmX3NpemVfcmVzZXQsIGNmZl9zbG90X2RvbmUsIGNmZl9zbG90X2luaXQsCgljZmZfZmFjZV9pbml0LCBjZmZfZmFjZV9kb25lLCBjZmZfZHJpdmVyX2luaXQsIGNmZl9kcml2ZXJfZG9uZSk6CglEb24ndCB1c2UgQ0ZGX1hYWCBidXQgRlRfWFhYIGFyZ3VtZW50cyB3aGljaCBhcmUgdHlwZWNhc3QgdG8gdGhlCglwcm9wZXIgQ0ZGX1hYWCB0eXBlcyB3aXRoaW4gdGhlIGZ1bmN0aW9uLgoJVXBkYXRlIGNvZGUgYWNjb3JkaW5nbHkuCgkoY2ZmX3BvaW50X3NpemVfcmVzZXQpOiBOZXcgd3JhcHBlciBmdW5jdGlvbi4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5oLCBzcmMvY2lkL2NpZG9ianMuYyAoY2lkX3Nsb3RfZG9uZSwKCWNpZF9zbG90X2luaXQsIGNpZF9zaXplX2RvbmUsIGNpZF9zaXplX2luaXQsIGNpZF9zaXplX3Jlc2V0LAoJY2lkX2ZhY2VfZG9uZSwgY2lkX2ZhY2VfaW5pdCwgY2lkX2RyaXZlcl9pbml0LCBjaWRfZHJpdmVyX2RvbmUpOgoJRG9uJ3QgdXNlIENJRF9YWFggYnV0IEZUX1hYWCBhcmd1bWVudHMgd2hpY2ggYXJlIHR5cGVjYXN0IHRvIHRoZQoJcHJvcGVyIENJRF9YWFggdHlwZXMgd2l0aGluIHRoZSBmdW5jdGlvbi4KCVVwZGF0ZSBjb2RlIGFjY29yZGluZ2x5LgoJKGNpZF9wb2ludF9zaXplX3Jlc2V0KTogTmV3IHdyYXBwZXIgZnVuY3Rpb24uCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMsIHNyYy9jaWQvY2lkZ2xvYWQuaCAoY2lkX3Nsb3RfbG9hZF9nbHlwaCk6CglEb24ndCB1c2UgQ0lEX1hYWCBidXQgRlRfWFhYIGFyZ3VtZW50cyB3aGljaCBhcmUgdHlwZWNhc3QgdG8gdGhlCglwcm9wZXIgQ0lEX1hYWCB0eXBlcyB3aXRoaW4gdGhlIGZ1bmN0aW9uLgoJVXBkYXRlIGNvZGUgYWNjb3JkaW5nbHkuCgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKGNpZF9nZXRfaW50ZXJmYWNlKToKCURvbid0IHVzZSBDSURfWFhYIGJ1dCBGVF9YWFggYXJndW1lbnRzIHdoaWNoIGFyZSB0eXBlY2FzdCB0byB0aGUKCXByb3BlciBDSURfWFhYIHR5cGVzIHdpdGhpbiB0aGUgZnVuY3Rpb24uCglVcGRhdGUgY29kZSBhY2NvcmRpbmdseS4KCVVzZSBGVF9DQUxMQkFDS19ERUYuCgkodDFjaWRfZHJpdmVyX2NsYXNzKTogUmVtb3ZlIGNhc3RzLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKHR0X2dldF9pbnRlcmZhY2UpOiBVc2UgRlRfQ0FMTEJBQ0tfREVGLgoJKiBzcmMvdHJ1ZXR5cGUvdHRneHZhci5jIChmdF92YXJfbG9hZF9hdmFyKTogRG9uJ3QgZnJlZSBub24tbG9jYWwKCXZhcmlhYmxlcyAodGhpcyBpcyBkb25lIGxhdGVyKS4KCShmdF92YXJfbG9hZF9hdmFyKTogRml4IGNhbGwgdG8gRlRfRlJBTUVfRU5URVIuCgkoVFRfR2V0X01NX1Zhcik6IEZpeCBzaXplIGZvciBgZnZhcl9maWVsZHMnLgoJKFRUX1ZhcnlfR2V0X0dseXBoX0RlbHRhcyk6IEhhbmRsZSBkZWFsbG9jYXRpb24gb2YgbG9jYWwgdmFyaWFibGVzCgljb3JyZWN0bHkuCgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fZGVidWdfcmVhbGxvYyk6IERvbid0IGFib3J0IGlmCgljdXJyZW50IHNpemUgaXMgemVyby4KCjIwMDQtMDUtMDMgIFN0ZXZlIEhhcnR3ZWxsICA8c2hzcGFtc2lua0Bjb21jYXN0Lm5ldD4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuaCwgc3JjL3RydWV0eXBlL3R0b2Jqcy5jICh0dF9mYWNlX2luaXQsCgl0dF9mYWNlX2RvbmUsIHR0X3NpemVfaW5pdCwgdHRfc2l6ZV9kb25lLCB0dF9kcml2ZXJfaW5pdCwKCXR0X2RyaXZlcl9kb25lKTogRG9uJ3QgdXNlIFRUX1hYWCBidXQgRlRfWFhYIGFyZ3VtZW50cyB3aGljaCBhcmUKCXR5cGVjYXN0IHRvIHRoZSBwcm9wZXIgVFRfWFhYIHR5cGVzIHdpdGhpbiB0aGUgZnVuY3Rpb24uCglVcGRhdGUgY29kZSBhY2NvcmRpbmdseS4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChHZXRfS2VybmluZywgU2V0X0NoYXJfU2l6ZXMsCglTZXRfUGl4ZWxfU2l6ZXMsIExvYWRfR2x5cGgsIHR0X2dldF9pbnRlcmZhY2UpOiBEb24ndCB1c2UgVFRfWFhYIGJ1dAoJRlRfWFhYIGFyZ3VtZW50cyB3aGljaCBhcmUgdHlwZWNhc3QgdG8gdGhlIHByb3BlciBUVF9YWFggdHlwZXMKCXdpdGhpbiB0aGUgZnVuY3Rpb24uCglVcGRhdGUgY29kZSBhY2NvcmRpbmdseS4KCSh0dF9kcml2ZXJfY2xhc3MpOiBSZW1vdmUgY2FzdHMuCgoyMDA0LTA1LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9mcmVlX25hbWVzKTogQ2hlY2sgdGhhdCBgdGFibGUtPm5hbWVzJwoJaXMgbm90IE5VTEwuICBSZXBvcnRlZCBieSBHb3Jkb24gQ2hpbGRzIDxnY2hpbGRzQHF1aWNrY3V0LmNvbS5hdT4uCgoyMDA0LTA0LTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2Zvcm1hdHMudHh0OiBBZGQgbW9yZSBpbmZvcm1hdGlvbiBvbiBQRlIgZm9ybWF0LgoKMjAwNC0wNC0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9mb3JtYXRzLnR4dDogTmV3IGZpbGUuCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDQtMjggIE1hc2F0YWtlIFlBTUFUTyAgPGpldEBneXZlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChHWF9CbGVuZFJlY18pCglbVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVF06IEZpeCBhIHR5cG8uCgoJKiBzcmMvdHJ1ZXR5cGUvdHRneHZhci5oIChHWF9CbGVuZFJlY18pOiBGaXggYSB0eXBvLgoKMjAwNC0wNC0yNyAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z3h2YXIuaDogVXNlIEZUX0xPQ0FMIGluc3RlYWQgb2YgRlRfTE9DQUxfREVGCglmb3IgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKMjAwNC0wNC0yNSAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRneHZhci5jIChmdF92YXJfYXBwbHlfdHVwbGUpOiBGaXggdHlwby4KCjIwMDQtMDQtMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS9KYW1maWxlLCBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTA0LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IFJldmVydCBjaGFuZ2UgZnJvbSAyMDA0LTA0LTE3LgoJKiBzcmMvcGNmL3BjZnV0aWwuYzogVXNlIEZUX0xPQ0FMX0RFRi4KCSogc3JjL3BjZi9wY2Z1dGlsLmg6IEluY2x1ZGUgRlRfQ09ORklHX0NPTkZJR19ILgoJVXNlIEZUX0JFR0lOX0hFQURFUiBhbmQgRlRfRU5EX0hFQURFUi4KCVVzZSBGVF9MT0NBTC4KCjIwMDQtMDQtMjQgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCUFkZCBzdXBwb3J0IGZvciBBcHBsZSdzIGRpc3RvcnRhYmxlIGZvbnQgdGVjaG5vbG9neSAoaW4gR1ggZm9udHMpLgoKCSogZGV2ZWwvZnRvcHRpb24uaCwgaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAoJKFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQpOiBOZXcgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW0uaCAoRlRfVmFyX0F4aXMsIEZUX1Zhcl9OYW1lZF9TdHlsZSwKCUZUX01NX1Zhcik6IE5ldyBzdHJ1Y3R1cmVzLgoJKEZUX0dldF9NTV9WYXIsIEZUX1NldF9WYXJfRGVzaWduX0Nvb3JkaW5hdGVzLAoJRlRfU2V0X1Zhcl9CbGVuZF9Db29yZGluYXRlcyk6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2bW0uaCAoRlRfR2V0X01NX1Zhcl9GdW5jLAoJRlRfU2V0X1Zhcl9EZXNpZ25fRnVuYyk6IE5ldyB0eXBlZGVmcy4KCVVwZGF0ZSBNdWx0aU1hc3RlcnMgc2VydmljZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oCglbVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVF06IEluY2x1ZGUgRlRfTVVMVElQTEVfTUFTVEVSU19ILgoJKEdYX0JsZW5kKSBbVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVF06IE5ldyB0eXBlZGVmLgoJKFRUX0ZhY2UpIFtUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUXTogTmV3IG1lbWJlcnMgYGRvYmxlbmQnCglhbmQgYGJsZW5kJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR0YWdzLmggKFRUQUdfYXZhciwgVFRBR19jdmFyLCBUVEFHX2d2YXIpOiBOZXcKCW1hY3Jvcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oOiBBZGQgYHR0Z3h2YXInLgoKCSogc3JjL2Jhc2UvZnRtbS5jIChGVF9HZXRfTU1fVmFyLCBGVF9TZXRfVmFyX0Rlc2lnbl9Db29yZGluYXRlcywKCUZUX1NldF9WYXJfQmxlbmRfQ29vcmRpbmF0ZXMpOiBOZXcgZnVuY3Rpb25zLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKQoJW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdOiBTZXQgRlRfRkFDRV9GTEFHX01VTFRJUExFX01BU1RFUlMKCWZsYWcgZm9yIEdYIHZhciBmb250cy4KCgkqIHNyYy90cnVldHlwZS90dGd4dmFyLmMsIHNyYy90cnVldHlwZS90dGd4dmFyLmg6IE5ldyBmaWxlcy4KCgkqIHNyYy90cnVldHlwZS90cnVldHlwZS5jIFtUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUXTogSW5jbHVkZQoJdHRneHZhci5jLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdOiBJbmNsdWRlCglGVF9NVUxUSVBMRV9NQVNURVJTX0gsIEZUX1NFUlZJQ0VfTVVMVElQTEVfTUFTVEVSU19ILCBhbmQgdHRneHZhci5oLgoJKHR0X3NlcnZpY2VfZ3hfbXVsdGlfbWFzdGVycykgW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdOgoJTmV3IHNlcnZpY2UuCgkodHRfc2VydmljZXMpIFtUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUXTogVXBkYXRlZC4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdOiBJbmNsdWRlCgl0dGd4dmFyLmguCgkoVFRfUHJvY2Vzc19TaW1wbGVfR2x5cGgsIGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVF0gOlN1cHBvcnQgR1ggdmFyIGZvbnRzLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIFtUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUXTogSW5jbHVkZQoJdHRneHZhci5oLgoJKHR0X2RvbmVfZmFjZSkgW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdOiBDYWxsCgl0dF9kb25lX2JsZW5kLgoKCSogc3JjL3RydWV0eXBlL3R0cGxvYWQuYyBbVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVF06IEluY2x1ZGUKCXR0Z3h2YXIuaC4KCSh0dF9mYWNlX2xvYWRfY3Z0KSAgW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdOiBDYWxsCgl0dF9mYWNlX3ZhcnlfY3Z0LgoKCSogc3JjL3RydWV0eXBlL3J1bGVzLm1rIChUVF9EUlZfU1JDKTogQWRkIHR0Z3h2YXIuYy4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9zZXJ2aWNlX211bHRpX21hc3RlcnMpOiBBZGQgVDFfR2V0X01NX1ZhcgoJYW5kIFQxX1NldF9WYXJfRGVzaWduLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChGVF9JTlRfVE9fRklYRUQsIEZUX0ZJWEVEX1RPX0lOVCk6IE5ldyBtYWNyb3MuCgkoVDFfR2V0X01NX1ZhciwgVDFfU2V0X1Zhcl9EZXNpZ24pOiBOZXcgZnVuY3Rpb25zLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5oIChUMV9HZXRfTU1fVmFyLCBUMV9TZXRfVmFyX0Rlc2lnbik6IE5ldwoJZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKMjAwNC0wNC0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmggKEZUX0dldF9DaGFyTWFwX0luZGV4KTogUmVuYW1lCglkZWNsYXJhdGlvbiBhbmQgbW92ZSB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0dldF9DaGFybWFwX0luZGV4KTogSGVyZS4KCShGUkVFVFlQRV9QQVRDSCk6IFNldCB0byA5LgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9DaGFybWFwX0luZGV4KTogTmV3IGZ1bmN0aW9uLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBTZXQgdG8gOTo3OjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogVXBkYXRlZC4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2luZGV4Lmh0bWwsCglidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3AsCglidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS52Y3Byb2o6IHMvMjE4LzIxOS8uCgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKHJlZmRvYyksIFJFQURNRSwgSmFtZmlsZSAoUmVmRG9jKToKCXMvMi4xLjgvMi4xLjkvLgoKCSogZG9jcy9DSEFOR0VTLCBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGVkLgoKMjAwNC0wNC0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VyX3J1biksIHNyYy9wc2F1eC9wc29ianMuYwoJKHBzX3BhcnNlcl9sb2FkX2ZpZWxkKTogVXNlIEZUX0NIQVJfQklULgoKMjAwNC0wNC0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjggcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBGaXggYSBzbWFsbCBtZW1vcnkgbGVhay4KCgkqIHNyYy9hdXRvZml0L2FmbG9hZGVyLmMgKGFmX2xvYWRlcl9sb2FkX2cpLCBzcmMvYXV0b2ZpdC9hZm1vZHVsZS5jCgkoYWZfYXV0b2ZpdHRlcl9sb2FkX2dseXBoKSwgc3JjL2Jhc2UvZnRkZWJ1Zy5jIChGVF9UcmFjZV9HZXRfTmFtZSk6CglSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvYXV0b2ZpdC9hZnR5cGVzLmg6IFVuZGVmaW5lIEFGX0RFQlVHLgoKCSogc3JjL2x6dy96b3Blbi5jIChybWFzayksIHNyYy9wY2YvcGNmZHJpdnIuYyAocGNmX3NlcnZpY2VfYmRmLAoJcGNmX3NlcnZpY2VzKSwgc3JjL3BjZi9wY2ZyZWFkLmMgKHRhYmxlTmFtZXMpLCBzcmMvcHNhdXgvcHNvYmpzLmMKCShmdF9jaGFyX3RhYmxlKSwgc3JjL3R5cGU0Mi90NDJkcml2ci5jICh0NDJfc2VydmljZV9nbHlwaF9kaWN0LAoJdDQyX3NlcnZpY2VfcHNfZm9udF9uYW1lKTogRGVjb3JhdGUgZGF0YSBhcnJheXMgd2l0aCBgY29uc3QnIHRvCglhdm9pZCBwb3B1bGF0aW5nIHRoZSBgLmRhdGEnIHNlZ21lbnQuCgoJKiBzcmMvbHp3L0phbWZpbGU6IE5ldyBmaWxlLgoKMjAwNC0wNC0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChUMVJhZGl4KTogUmVuYW1lZCB0by4uLgoJKHBzX3JhZGl4KTogVGhpcy4KCVVwZGF0ZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDQtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dGdsb2FkLmggKFRUX0xvYWRfR2x5cGgpLAoJc3JjL3R0ZHJpdmVyLmMgKExvYWRfR2x5cGgpOiBDaGFuZ2UgdHlwZSBvZiBgZ2x5cGhfaW5kZXgnIHRvCglGVF9VSW50LiAgRnJvbSBMZXggV2FybmVycy4KCjIwMDQtMDQtMTcgIENoaXNhdG8gWWFtYXVjaGkgIDxjeWFtYXVjaEBhLnBoeXMubmFnb3lhLXUuYWMuanA+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX3NmbnRfaGVhZGVyKTogUmVhbGx5IGZpeCBjaGFuZ2UKCWZyb20gMjAwNC0wMy0xOS4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IFVzZSBgZnRfc3RybGVuJy4KCgkqIHNyYy9wY2YvcGNmdXRpbC5jLCBzcmMvcGNmL3BjZnV0aWwuaDogRGVjb3JhdGUgZnVuY3Rpb25zIHdpdGgKCWBzdGF0aWMnLgoJUmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBgUmVwYWRCaXRtYXAnLgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IERvbid0IGluY2x1ZGUgcGNmdXRpbC5oLgoKMjAwNC0wNC0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluICh1c2FnZSk6IEZpeCBhbmQgaW1wcm92ZSB1c2FnZQoJaW5mb3JtYXRpb24uCgoyMDA0LTA0LTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbiwgYnVpbGRzL3Ztcy9mdGNvbmZpZy5oOiBEZWZpbmUKCUZUX0NIQVJfQklULgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBEb24ndCBhcHBseSBhdXRvaGludGluZyBpZgoJZ2x5cGggaXMgdmVydGljYWxseSBkaXN0b3J0ZWQgb3IgbWlycm9yZWQuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9zbG90X2xvYWQpOiBIYW5kbGUgemVybyBgc2l6ZScgcHJvcGVybHkKCWZvciBlbWJlZGRlZCBiaXRtYXBzLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wNC0xNSAgYnl0ZXNvZnR3YXJlICA8Ynl0ZXNvZnR3YXJlQGJ0aW50ZXJuZXQuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaCwgc3JjL2Jhc2UvZnRzdHJlYW0uYwoJKEZUX1N0cmVhbV9SZWFkRmllbGRzKTogTW9yZSBmaXhlcyB1c2luZyBGVF9DSEFSX0JJVC4KCjIwMDQtMDQtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmggKEZUX0NIQVJfQklUKTogTmV3IG1hY3JvLgoKMjAwNC0wNC0xNCAgQWxleCBTdHJlbG5pa292ICA8cHRrdHlyZkBtYWlsLnJ1PgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zbm9kZV9sb2FkKTogSW5pdGlhbGl6ZSBgKmFzaXplJyBpbiBjYXNlCglvZiBlcnJvci4KCjIwMDQtMDQtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgW19fR05VQ19fXTogRGVmaW5lIE9TX0lOTElORS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBEb24ndCB0cnkgdG8gcmVtb3ZlIGAtYW5zaScgY29tcGlsYXRpb24KCXN3aXRjaCBvbiB0aGUgTWFjLgoKCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBSZWdlbmVyYXRlZCB3aXRoIGBsaWJ0b29saXplIC0tZm9yY2UKCS0tY29weScgZnJvbSBsaWJ0b29sIDEuNS42LgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00OiBSZWdlbmVyYXRlZCB3aXRoIGBhY2xvY2FsIC1JIC4nIGZyb20KCWF1dG9tYWtlIDEuOGEuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQgd2l0aCBhdXRvY29uZiAyLjU5YS4KCjIwMDQtMDQtMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IFVzZSBDSEFSX0JJVCB0byBkZWZpbmUKCXNpemUgb2YgRlRfU0laRU9GX3h4eC4KCjIwMDQtMDQtMTIgIENoaXNhdG8gWWFtYXVjaGkgIDxjeWFtYXVjaEBhLnBoeXMubmFnb3lhLXUuYWMuanA+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCAoVFRfRmluZF9TQml0X0ltYWdlX0Z1bmMsCglUVF9Mb2FkX1NCaXRfTWV0cmljc19GdW5jKTogTmV3IHR5cGVkZWZzLgoJKFNGTlRfSW50ZXJmYWNlKTogQWRkIGZpbmRfc2JpdF9pbWFnZSBhbmQgbG9hZF9zYml0X21ldHJpY3MuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChzZm50X2ludGVyZmFjZSk6IFVwZGF0ZWQuCgkqIHNyYy9zZm50L3R0c2JpdC5oICh0dF9maW5kX3NiaXRfaW1hZ2UsIHR0X2xvYWRfc2JpdF9tZXRyaWNzKTogTmV3CglkZWNsYXJhdGlvbnMuCgkqIHNyYy9zZm50L3R0c2JpdC5jIChmaW5kX3NiaXRfaW1hZ2UpOiBSZW5hbWVkIHRvLi4uCgkodHRfZmluZF9zYml0X2ltYWdlKTogVGhpcy4KCVVwZGF0ZWQgYWxsIGNhbGxlcnMuCgkobG9hZF9zYml0X21ldHJpY3MpOiBSZW5hbWVkIHRvLi4uCgkodHRfbG9hZF9zYml0X21ldHJpY3MpOiBUaGlzLgoJVXBkYXRlZCBhbGwgY2FsbGVycy4KCjIwMDQtMDQtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZTogQWNjZXB0IG1ha2VwcCBhbHNvLgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rOiBVc2UgcHJvcGVyIHBhdGggdG8gdW5peC1kZWYubWsuCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluIChCVUlMRF9ESVIsIFBMQVRGT1JNKTogUmVtb3ZlLgoJKiBidWlsZHMvdW5peC91bml4Lm1rIChCVUlMRF9ESVIsIFBMQVRGT1JNKTogRGVmaW5lLgoJVXNlIEJVSUxEX0RJUi4KCgkqIGRvY3MvSU5TVEFMTCwgZG9jcy9JTlNUQUxMLkdOVSwgZG9jcy9JTlNUQUxMLlVOWDogVXBkYXRlCglkb2N1bWVudGF0aW9uIG9uIG1ha2VwcC4KCjIwMDQtMDQtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9sencvem9wZW4uYzogRG9uJ3QgaW5jbHVkZSBzeXMvcGFyYW0uaCBhbmQgc3lzL3N0YXQuaC4KCjIwMDQtMDQtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9sencvZnRsencuYzogSW5jbHVkZSB6b3Blbi5oIGRlcGVuZGVudCBvbgoJRlRfQ09ORklHX09QVElPTl9VU0VfTFpXLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jOiBzL2luZGV4L2lkeC8gdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgoyMDA0LTA0LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9sdG1haW4uc2g6IFJlZ2VuZXJhdGVkIHdpdGggYGxpYnRvb2xpemUgLS1mb3JjZQoJLS1jb3B5JyBmcm9tIGxpYnRvb2wgMS41LjIuCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQ6IFJlZ2VuZXJhdGVkIHdpdGggYGFjbG9jYWwgLUkgLicgZnJvbQoJYXV0b21ha2UgMS44YS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZCB3aXRoIGF1dG9jb25mIDIuNTlhLgoKMjAwNC0wNC0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnQtbXVubWFwLm00IChGVF9NVU5NQVBfUEFSQU0pOiBGaXggYXJndW1lbnRzIG9mCglBQ19DT01QSUxFX0lGRUxTRS4KCSogYnVpbGRzL3VuaXgvYWNsb2NhbC5tNDogUmVnZW5lcmF0ZWQgd2l0aCBgYWNsb2NhbCAtSSAuJyBmcm9tCglhdXRvbWFrZSAxLjhhLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkIHdpdGggYXV0b2NvbmYgMi41OWEuCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCBmcm9tCglgY29uZmlnJyBDVlMgbW9kdWxlIGF0IHN1YnZlcnNpb25zLmdudS5vcmcKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC1zaCwgYnVpbGRzL3VuaXgvbWtpbnN0YWxsZGlyczogVXBkYXRlZCBmcm9tCglgdGV4aW5mbycgQ1ZTIG1vZHVsZSBhdCBzdWJ2ZXJzaW9ucy5nbnUub3JnLgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKHJlZmRvYyk6IFVwZGF0ZWQuCgoyMDA0LTAzLTMxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJSGFuZGxlIGJyb2tlbiBGTlQgZmlsZXMgd2hpY2ggZG9uJ3QgaGF2ZSBhIHRyYWlsaW5nIE5VTEwgYnl0ZQoJaW4gdGhlIGZhY2UgbmFtZSBzdHJpbmcuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmggKEZOVF9Gb250UmVjKTogTmV3IG1lbWJlciBgZmFtaWx5X25hbWUnLgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKGZudF9mb250X2RvbmUpOiBGcmVlIGZvbnQtPmZhbWlseV9uYW1lLgoJKEZOVF9GYWNlX0luaXQpOiBBcHBlbmQgYSBmaW5hbCB6ZXJvIGJ5dGUgdG8gdGhlIGZvbnQgZmFjZSBuYW1lLgoKMjAwNC0wMy0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9zZm50X2hlYWRlcik6IEZpeCBjaGFuZ2UgZnJvbQoJMjAwNC0wMy0xOS4KCjIwMDQtMDMtMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Rlc2NyaXAubW1zIChPQkpTKTogQWRkIGZ0YmJveC5vYmouCgoyMDA0LTAzLTI2ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCglBZGQgdmVydGljYWwgcGhhbnRvbSBwb2ludHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfTG9hZGVyUmVjKTogQWRkCglgdG9wX2JlYXJpbmcnLCBgdmFkdmFuY2UnLCBgcHAzLCBhbmQgYHBwNCcuCgoJKiBzcmMvYXV0b2ZpdC9hZmxvYWRlci5jIChhZl9sb2FkZXJfbG9hZF9nKTogSGFuZGxlIHR3byBtb3JlIHBvaW50cy4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBIYW5kbGUgdHdvIG1vcmUgcG9pbnRzLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChHZXRfVk1ldHJpY3MpOiBOZXcgZnVuY3Rpb24uCgkoVFRfTG9hZF9TaW1wbGVfR2x5cGgsIFRUX1Byb2Nlc3NfU2ltcGxlX0dseXBoKTogSGFuZGxlIHR3byBtb3JlCglwb2ludHMuCgkobG9hZF90cnVldHlwZV9nbHlwaCk6IFVzZSBHZXRfVk1ldHJpY3MuCglIYW5kbGUgdHdvIG1vcmUgcG9pbnRzLgoJKGNvbXB1dGVfZ2x5cGhfbWV0cmljcyk6IFRoYW5rcyB0byB2ZXJ0aWNhbCBwaGFudG9tIHBvaW50cyB3ZSBub3cKCWNhbiBhbHdheXMgY29tcHV0ZSBgYWR2YW5jZV9oZWlnaHQnIGFuZCBgdG9wX2JlYXJpbmcnLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmggKFRUX1N1YmdseXBoUmVjKTogQWRkIHZlcnRpY2FsIHBoYW50b20KCXBvaW50cy4KCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2xvYWQpOiBGaXggYWxsb2NhdGlvbiBvZgoJYG5ld3MnLgoKMjAwNC0wMy0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfR2x5cGhfTG9hZCk6IEZpeCBsZWZ0IHNpZGUgYmVhcmluZy4KCjIwMDQtMDMtMjAgIFN0ZXZlIEhhcnR3ZWxsICA8c2hzcGFtc2lua0Bjb21jYXN0Lm5ldD4KCgkqIHNyYy9jYWNoZS9mdGNtcnUuYyAoRlRDX01ydUxpc3RfUmVtb3ZlU2VsZWN0aW9uKTogSGFuZGxlIGEgTlVMTAoJdmFsdWUgZm9yIGBzZWxlY3Rpb24nIGFzIGBzZWxlY3QgYWxsJy4KCjIwMDQtMDMtMTkgIFN0ZXZlIEhhcnR3ZWxsICA8c2hzcGFtc2lua0Bjb21jYXN0Lm5ldD4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfc2ZudF9oZWFkZXIpOiBSZWplY3QgZmFjZV9pbmRleAoJdmFsdWVzID4gMCBpZiBsb2FkaW5nIG5vbi1UVEMgZm9udHMuCgoJKiBzcmMvYmFzZS9mdG1hYy5jIChvcGVuX2ZhY2VfZnJvbV9idWZmZXIpOiBTZXQgcG9zaXRpdmUgZmFjZV9pbmRleAoJdG8gemVybyBiZWZvcmUgY2FsbGluZyBGVF9PcGVuX0ZhY2UuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTAzLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBKYW1maWxlLCB2bXNfbWFrZS5jb20sIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcCwKCWJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlL3ZjcHJvaiwgaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oOgoJQWRkIExaVyBtb2R1bGUuCgoJKiBKYW1maWxlLmluOiBSZW1vdmVkLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogcy9NSU4vRlRfTUlOLywgcy9NQVgvRlRfTUFYLywKCXMvQUJTL0ZUX0FCUy8uICBVcGRhdGVkIGFsbCBjYWxsZXJzLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9kaWN0KSwgc3JjL3BjZi9wY2Zkcml2ci5jCgkoUENGX0ZhY2VfSW5pdCk6IFVzZSBGVF9FUlJPUl9CQVNFLgoKMjAwNC0wMy0wNCAgQWxiZXJ0IENoaW4gIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJQWRkIHN1cHBvcnQgZm9yIFBDRiBmb250cyBjb21wcmVzc2VkIHdpdGggTFpXIChleHRlbnNpb24gLnBjZi5aLAoJY3JlYXRlZCB3aXRoIGBjb21wcmVzcycpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCwgZGV2ZWwvZnRvcHRpb24uaAoJKEZUX0NPTkZJR19PUFRJT05fVVNFX0xaVyk6IE5ldyBtYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRsencuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0xaV19IKTogTmV3IG1hY3JvIGZvcgoJZnRsencuaC4KCgkqIHNyYy9sencvKjogTmV3IGZpbGVzLgoKCSogc3JjL3BjZi9wY2Zkcml2ci5jOiBJbmNsdWRlIEZUX0xaV19ILgoJKFBDRl9GYWNlX0luaXQpOiBUcnkgTFpXIGFsc28uCgoJKiBzcmMvZ3ppcC9mdGd6aXAuYzogcy8wL0d6aXBfRXJyX09rLyB3aGVyZSBhcHByb3ByaWF0ZS4KCUJlYXV0aWZ5LgoKMjAwNC0wMy0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28uYyAocHNoX2hpbnRfdGFibGVfaW5pdCk6IFNpbXBsaWZ5IGNvZGUuCgoyMDA0LTAzLTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQWRkIGVtYmVkZGVkIGJpdG1hcCBzdXBwb3J0IHRvIENGRiBkcml2ZXIuCgoJKiBzcmMvY2ZmL2NmZm9ianMuaCAoQ0ZGX1NpemVSZWMpOiBOZXcgc3RydWN0dXJlLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfYnVpbGRlcl9pbml0KTogVXBkYXRlZC4KCShjZmZfc2xvdF9sb2FkKTogVXBkYXRlZC4KCVtUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFNdOiBMb2FkIHNiaXQuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoc2JpdF9zaXplX3Jlc2V0KQoJW1RUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQU106IE5ldyBmdW5jdGlvbi4KCShjZmZfc2l6ZV9nZXRfZ2xvYmFsc19mdW5jcywgY2ZmX3NpemVfZG9uZSwgY2ZmX3NpemVfaW5pdCk6IFVwZGF0ZWQuCgkoY2ZmX3NpemVfcmVzZXQpOiBVcGRhdGVkLgoJW1RUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQU106IENhbGwgc2JpdF9zaXplX3Jlc2V0LgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChMb2FkX0dseXBoKTogVXBkYXRlZC4KCShjZmZfZHJpdmVyX2NsYXNzKTogVXNlIENGRl9TaXplUmVjLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wMy0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfc2NhbGVfd2lkdGhzKTogRG9uJ3QgdXNlCglGVF9Sb3VuZEZpeCBidXQgRlRfUElYX1JPVU5ELgoJKHBzaF9ibHVlc19zbmFwX3N0ZW0pOiBEb24ndCB1c2UgYmx1ZV9zaGlmdCBidXQgYmx1ZV90aHJlc2hvbGQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnby5jIChQU0hfU1RST05HX1RIUkVTSE9MRF9NQVhJTVVNKTogTmV3IG1hY3JvLgoJKHBzaF9nbHlwaF9maW5kX3N0cmluZ19wb2ludHMpOiBVc2UgUFNIX1NUUk9OR19USFJFU0hPTERfTUFYSU1VTS4KCShwc2hfZ2x5cGhfZmluZF9ibHVlX3BvaW50cyk6IE5ldyBmdW5jdGlvbi4gIE5lZWRlZCBmb3IgZm9udHMgbGlrZQoJcDA1MjAwM2wucGZiIChVUlcgUGFsbGFkaW8gTCBSb21hbikgd2hpY2ggaGF2ZSBmbGV4IGN1cnZlcyBhdCB0aGUKCWJhc2UgbGluZSB3aXRoaW4gYmx1ZSB6b25lcywgYnV0IHRoZSBmbGV4IGN1cnZlcyBhcmVuJ3QgY292ZXJlZCBieQoJaGludHMuCgkocHNfaGludHNfYXBwbHkpOiBVc2UgcHNoX2dseXBoX2ZpbmRfYmx1ZV9wb2ludHMuCgoyMDA0LTAyLTI3ICBHYXJyaWNrIE1lZWtlciAgPGdhcnJpY2tAZGlnaXRhbGFuYXJjaHkuY29tPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBGaXggY29tcGlsZXIgZmxhZ3MgZm9yCglgLS13aXRoLW9sZC1tYWMtZm9udHMnLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogc3JjL2Jhc2UvZnRtYWMuYzogcy9UQVJHRVRfQVBJX01BQ19DQVJCT04vIVRBUkdFVF9BUElfTUFDX09TOC8uCgkoRlRfTmV3X0ZhY2VfRnJvbV9SZXNvdXJjZSk6IE5ldyBmdW5jdGlvbi4KCShGVF9OZXdfRmFjZSk6IFVzZSBGVF9OZXdfRmFjZV9Gcm9tX1Jlc291cmNlLgoJKEZUX05ld19GYWNlX0Zyb21fRlNTcGVjKTogVXNlIEZUX05ld19GYWNlX0Zyb21fUmVzb3VyY2UuCglbX19NV0VSS1NfX106IERvbid0IGluY2x1ZGUgRlNwX2ZvcGVuLmguCgoyMDA0LTAyLTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBGaXggdmFsdWUgb2YKCWBkaW0tPnN0ZHcuY291bnQnLgoJRG9uJ3QgYXNzaWduIGRlZmF1bHQgdmFsdWVzIHRvIGJsdWUgc2NhbGUgYW5kIGJsdWUgc2hpZnQuCgoyMDA0LTAyLTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTAyLTI1ICBHYXJyaWNrIE1lZWtlciAgPGdhcnJpY2tAZGlnaXRhbGFuYXJjaHkuY29tPgoJICAgIFN0ZXZlIEhhcnR3ZWxsICA8c2hzcGFtc2lua0Bjb21jYXN0Lm5ldD4KCglJbXByb3ZlIE1hY09TIGZvbmQgc3VwcG9ydC4gIFByb3ZpZGUgYSBuZXcgQVBJCglgRlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMnIHNpbWlsYXIgdG8gYEZUX05ld19GYWNlJy4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgW19fTVdFUktTX19dOiBJbmNsdWRlIEZTcF9mcG9wZW4uaC4KCVNUUkVBTV9GSUxFIFtfX01XRVJLU19fXTogTmV3IG1hY3JvLgoJKGZ0X0ZTcF9zdHJlYW1fY2xvc2UsIGZ0X0ZTcF9zdHJlYW1faW8pIFtfX01XRVJLU19fXTogTmV3IGZ1bmN0aW9ucy4KCShmaWxlX3NwZWNfZnJvbV9wYXRoKSBbX19NV0VSS1NfX106IFVwZGF0ZWQgI2lmIHN0YXRlbWVudC4KCShnZXRfZmlsZV90eXBlLCBtYWtlX2x3Zm5fc3BlYyk6IFVzZSBgY29uc3QnIGZvciBhcmd1bWVudC4KCShpc19kZm9udCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06IFJlbW92ZWQuCgkoY291bnRfZmFjZV9zZm50LCBjb3VudF9mYWNlcyk6IE5ldyBmdW5jdGlvbnMuCgkocGFyc2VfZm9uZCk6IERvIHNvbWUgcmFuZ2UgY2hlY2tpbmcuCgkocmVhZF9sd2ZuKTogQ2hhbmdlIHR5cGUgb2Ygc2Vjb25kIGFyZ3VtZW50LgoJTm8gbG9uZ2VyIGNhbGwgRlNwT3BlblJlc0ZpbGUuCgkoT3BlbkZpbGVBc1Jlc291cmNlKTogTmV3IGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlX0Zyb21fTFdGTik6IFVzZSBgY29uc3QnIGZvciBzZWNvbmQgYXJndW1lbnQuCglVc2UgT3BlbkZpbGVBc1Jlc291cmNlLgoJKEZUX05ld19GYWNlX0Zyb21fU3VpdGNhc2UpOiBDaGFuZ2UgdHlwZSBvZiBzZWNvbmQgYXJndW1lbnQuCglObyBsb25nZXIgY2FsbCBGU3BPcGVuUmVzRmlsZS4KCUxvb3Agb3ZlciBhbGwgcmVzb3VyY2UgaW5kaWNlcy4KCShGVF9OZXdfRmFjZV9Gcm9tX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogUmVtb3ZlZC4KCShGVF9HZXRGaWxlX0Zyb21fTWFjX05hbWUpOiBVc2UgYGNvbnN0JyBmb3IgZmlyc3QgYXJndW1lbnQuCgkoUmVzb3VyY2VGb3JrU2l6ZSk6IFJlbW92ZWQuCgkoRlRfTmV3X0ZhY2UpOiBVcGRhdGVkIHRvIHVzZSBuZXcgZnVuY3Rpb25zLgoJKEZUX05ld19GYWNlX0Zyb21fRlNTcGVjKTogTmV3IGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oOiBVcGRhdGVkLgoKMjAwNC0wMi0yNCAgTWFsY29sbSBUYXlsb3IgIDxtdGF5bG9yQGNsZWFyLm5ldC5uej4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpIDxGVF9HTFlQSF9GT1JNQVRfT1VUTElORT46CglIYW5kbGUgY2FzZSB3aGVyZSBvdXRsaW5lLT5udW1fdmVkZ2VzIGlzIHplcm8gd2hpbGUgY29tcHV0aW5nIGhpbnRlZAoJbWV0cmljcy4KCjIwMDQtMDItMjQgIEdvcmRvbiBDaGlsZHMgIDxnY2hpbGRzQHF1aWNrY3V0LmNvbS5hdT4KCgkqIHNyYy9jZmYvY2ZmY21hcC5jIChjZmZfY21hcF91bmljb2RlX2luaXQpOiBQcm92aWRlIGNvcnJlY3QgdmFsdWUKCWZvciBgY291bnQnLgoKMjAwNC0wMi0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oIChQU19Qcml2YXRlUmVjKTogQWRkCglgZXhwYW5zaW9uX2ZhY3RvcicuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYiAocHNoX2JsdWVzX3NjYWxlX3pvbmVzKTogRml4IGNvbXB1dGF0aW9uCglvZiBibHVlcy0+bm9fb3ZlcnNob290cyAtLSBgYmx1ZXNfc2NhbGUnIGlzIHN0b3JlZCB3aXRoIGEKCW1hZ25pZmljYXRpb24gb2YgMTAwMCwgYW5kIGBzY2FsZScgcmV0dXJucyBmcmFjdGlvbmFsIHBpeGVscy4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoVDFfT3Blbl9GYWNlKTogSW5pdGlhbGl6ZSBgYmx1ZV9zaGlmdCcsCglgYmx1ZV9mdXp6JywgYGV4cGFuc2lvbl9mYWN0b3InLCBhbmQgYGJsdWVfc2NhbGUnIGFjY29yZGluZyB0byB0aGUKCVR5cGUgMSBzcGVjaWZpY2F0aW9uLgoKCSogc3JjL3R5cGUxL3QxdG9rZW5zLmg6IEhhbmRsZSBgRXhwYW5zaW9uRmFjdG9yJy4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDItMjQgIE1hc2F0YWtlIFlBTUFUTyAgPGpldEBneXZlLm9yZz4KCglQcm92aWRlIGdlbmVyaWMgYWNjZXNzIHRvIE1hY09TIHJlc291cmNlIGZvcmtzLgoKCSogc3JjL2Jhc2UvZnRyZm9yay5jLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0cmZvcmsuaDogTmV3CglmaWxlcy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1JGT1JLX0guCgkoTWFjX1JlYWRfUE9TVF9SZXNvdXJjZSwgTWFjX1JlYWRfc2ZudF9SZXNvdXJjZSk6IFJlbW92ZSBhcmd1bWVudHMKCWByZXNvdXJjZV9saXN0b2Zmc2V0JyBhbmQgYHJlc291cmNlX2RhdGEnIGFuZCBhZGFwdCBjb2RlCglhY2NvcmRpbmdseS4gIFRoZXNlIHZhbHVlcyBhcmUgY2FsY3VsYXRlZCBvdXRzaWRlIG9mIHRoZSBmdW5jdGlvbgoJbm93LgoJQWRkIG5ldyBhcmd1bWVudCBgb2Zmc2V0cycuCgkoSXNNYWNSZXNvdXJjZSk6IFVzZSBgRlRfUmFjY2Vzc19HZXRfSGVhZGVySW5mbycgYW5kCglgRlRfUmFjY2Vzc19HZXRfRGF0YU9mZnNldHMnLgoJKGxvYWRfZmFjZV9pbl9lbWJlZGRlZF9yZm9yayk6IE5ldyBmdW5jdGlvbi4KCShsb2FkX21hY19mYWNlKTogVXNlIGxvYWRfZmFjZV9pbl9lbWJlZGRlZF9yZm9yay4KCShmdF9pbnB1dF9zdHJlYW1fbmV3KTogUmVuYW1lZCB0by4uLgoJKEZUX1N0cmVhbV9OZXcpOiBUaGlzLiAgVXNlIEZUX0JBU0VfREVGLiAgVXBkYXRlZCBhbGwgY2FsbGVycy4KCShmdF9pbnB1dF9zdHJlYW1fZnJlZSk6IFJlbmFtZWQgdG8uLi4KCShGVF9TdHJlYW1fRnJlZSk6IFRoaXMuICBVc2UgRlRfQkFTRV9ERUYuICBVcGRhdGVkIGFsbCBjYWxsZXJzLgoKCSogc3JjL2Jhc2UvZnRiYXNlLmM6IEluY2x1ZGUgZnRyZm9yay5jLgoKCSogc3JjL2Jhc2UvcnVsZXMubWsgKEJBU0VfU1JDKSwgc3JjL2Jhc2UvSmFtZmlsZTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfUkZPUktfSCk6CglOZXcgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogQWRkZWQgYHJmb3JrJyBhcyBhIG5ldwoJdHJhY2UgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaDogRGVjbGFyZSBGVF9TdHJlYW1fTmV3IGFuZAoJRlRfU3RyZWFtX0ZyZWUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLCBkZXZlbC9mdG9wdGlvbi5oCgkoRlRfQ09ORklHX09QVElPTl9HVUVTU0lOR19FTUJFRERFRF9SRk9SSyk6IE5ldyBvcHRpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF9zdHJyY2hyKTogTmV3IG1hY3JvLgoKMjAwNC0wMi0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IEluY2x1ZGUgRlRfRlJFRVRZUEVfSC4KCjIwMDQtMDItMjMgIE1hc2F0YWtlIFlBTUFUTyAgPGpldEBneXZlLm9yZz4KCglQcm92aWRlIGEgc2ltcGxlIEFQSSB0byBjb250cm9sIEZyZWVUeXBlJ3MgdHJhY2luZyBsZXZlbHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCAoRlRfVHJhY2VfR2V0X0NvdW50LAoJRlRfVHJhY2VfR2V0X05hbWUpOiBOZXcgZGVjbGFyYXRpb25zLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jIChGVF9UcmFjZV9HZXRfQ291bnQsIEZUX1RyYWNlX0dldF9OYW1lKTogTmV3CglmdW5jdGlvbnMuCgoyMDA0LTAyLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2ZpdC9hZmhpbnRzLmMsIHNyYy9hdXRvZml0L2FmaGludHMuaCwKCXNyYy9hdXRvZml0L2FmbGF0aW4uYywgc3JjL2F1dG9maXQvYWZsb2FkZXIuYywgc3JjL3R5cGVzLmg6IEdyYXZlCglidWdzIGhhdmUgYmVlbiBmaXhlZC4gIFRoZSBhdXRvLWZpdHRlciB3b3JrcywgZG9lc24ndCBjcmFzaCwgYnV0CglzdGlsbCBwcm9kdWNlcyB1bmV4cGVjdGVkIHJlc3VsdHMuLi4KCjIwMDQtMDItMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmMgKFBTSF9TVFJPTkdfVEhSRVNIT0xEKTogQ2hhbmdlZCB0byBob2xkCgl0aGUgYWNjZXB0ZWQgc2hpZnQgZm9yIHN0cm9uZyBwb2ludHMgaW4gZnJhY3Rpb25hbCBwaXhlbHMgKHdoaWNoCglpcyBhIGhldXJpc3RpYyB2YWx1ZSkuCgkocHNoX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cyk6IENvbXB1dGUgdGhyZXNob2xkIGZvcgoJcHNoX2hpbnRfdGFibGVfZmluZF9zdHJvbmdfcG9pbnRzLgoJKHBzaF9oaW50X3RhYmxlX2ZpbmRfc3Ryb25nX3BvaW50KTogQWRkIHBhcmFtZXRlciB0byBwYXNzIHRocmVzaG9sZC4KCjIwMDQtMDItMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfbWFza190YWJsZV9zZXRfYml0cyk6IERvbid0IGNhbGwKCXBzX21hc2tfdGFibGVfYWxsb2MgYnV0IHBzX21hc2tfdGFibGVfbGFzdC4KCShwc19oaW50c190Mm1hc2spOiBVc2UgY29ycmVjdCBwb3NpdGlvbiBhbmQgbnVtYmVyIGZvciB2ZXJ0aWNhbAoJYW5kIGhvcml6b250YWwgaGludGVyIG1hc2sgYml0cy4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDItMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlLmMgKEZUX0dseXBoX1N0cm9rZUJvcmRlcik6IEZpeCBlbnVtIGhhbmRsaW5nLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfY21hcF9pbmZvKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDA0LTAyLTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IERvY3VtZW50IEZUX0xPQURfVEFSR0VUX1hYWCBwcm9wZXJseS4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoZnRfYml0bWFwX2dseXBoX2NsYXNzLAoJZnRfb3V0bGluZV9nbHlwaF9jbGFzcyk6IFRhZyB3aXRoIEZUX0NBTExCQUNLX1RBQkxFX0RFRi4KCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcik6IEhhbmRsZQoJRlRfUkVOREVSX01PREVfTElHSFQuCgoyMDA0LTAyLTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJRml4IGNhbGxiYWNrIGZ1bmN0aW9ucyBpbiBjYWNoZSBtb2R1bGUuCgoJKiBzcmMvY2FjaGUvZnRjY2JhY2suaDogTmV3IGZpbGUgZm9yIGNhbGxiYWNrIGRlY2xhcmF0aW9ucy4KCgkqIHNyYy9jYWNoZS9mdGNiYXNpYy5jIChmdGNfYmFzaWNfZmFtaWx5X2NvbXBhcmUsCglmdGNfYmFzaWNfZmFtaWx5X2luaXQsIGZ0Y19iYXNpY19mYW1pbHlfZ2V0X2NvdW50LAoJZnRjX2Jhc2ljX2ZhbWlseV9sb2FkX2JpdG1hcCwgZnRjX2Jhc2ljX2ZhbWlseV9sb2FkX2dseXBoLAoJZnRjX2Jhc2ljX2dub2RlX2NvbXBhcmVfZmFjZWlkKTogVXNlIEZUX0NBTExCQUNLX0RFRi4KCShmdGNfYmFzaWNfaW1hZ2VfZmFtaWx5X2NsYXNzLCBmdGNfYmFzaWNfaW1hZ2VfY2FjaGVfY2xhc3MsCglmdGNfYmFzaWNfc2JpdF9mYW1pbHlfY2xhc3MsIGZ0Y19iYXNpY19zYml0X2NhY2hlX2NsYXNzKToKCVVzZSBGVF9DQUxMQkFDS19UQUJMRV9ERUYgYW5kIGxvY2FsIHdyYXBwZXIgZnVuY3Rpb25zLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmM6IEluY2x1ZGUgZnRjY2JhY2suaC4KCShmdGNfY2FjaGVfaW5pdCwgZnRjX2NhY2hlX2RvbmUpOiBOZXcgd3JhcHBlciBmdW5jdGlvbnMgd2hpY2ggdXNlCglGVF9MT0NBTF9ERUYuCgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jOiBJbmNsdWRlIGZ0Y2NiYWNrLmguCgkoZnRjX2NtYXBfY2FjaGVfY2xhc3MpOiBVc2UgbG9jYWwgd3JhcHBlciBmdW5jdGlvbnMuCgoJKiBzcmMvY2FjaGUvZnRjZ2x5cGguYzogSW5jbHVkZSBmdGNjYmFjay5oLgoJKGZ0Y19nbm9kZV9jb21wYXJlLCBmdGNfZ2NhY2hlX2luaXQsIGZ0Y19nY2FjaGVfZG9uZSk6IE5ldyB3cmFwcGVyCglmdW5jdGlvbnMgd2hpY2ggdXNlIEZUX0xPQ0FMX0RFRi4KCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jOiBJbmNsdWRlIGZ0Y2NiYWNrLmguCgkoZnRjX2lub2RlX2ZyZWUsIGZ0Y19pbm9kZV9uZXcsIGZ0Y19pbm9kZV93ZWlnaHQpOiBOZXcgd3JhcHBlcgoJZnVuY3Rpb25zIHdoaWNoIHVzZSBGVF9MT0NBTF9ERUYuCgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX3NpemVfbGlzdF9jbGFzcywgZnRjX2ZhY2VfbGlzdF9jbGFzcyk6CglVc2UgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGLgoKCSogc3JjL2NhY2hlOy9mdGNzYml0cy5jOiBJbmNsdWRlIGZ0Y2NiYWNrLmguCgkoZnRjX3Nub2RlX2ZyZWUsIGZ0Y19zbm9kZV9uZXcsIGZ0Y19zbm9kZV93ZWlnaHQsCglmdGNfc25vZGVfY29tcGFyZSk6IE5ldyB3cmFwcGVyIGZ1bmN0aW9ucyB3aGljaCB1c2UgRlRfTE9DQUxfREVGLgoKCSogc3JjL2NhY2hlL3J1bGVzLm1rIChDQUNIRV9EUlZfSCk6IEFkZCBmdGNjYmFjay5oLgoKMjAwNC0wMi0xNyAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oIChGVF9HZXRGaWxlX0Zyb21fTWFjX05hbWUpOiBGaXggYSB0eXBvCgkoRlRfRVhQT1JUX0RFRiAtPiBGVF9FWFBPUlQpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHhmODYuaCAoRlRfR2V0X1gxMV9Gb250X0Zvcm1hdCk6IERpdHRvLgoKMjAwNC0wMi0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9DaGFyX1NpemUpOiBGaXggdHlwby4KCjIwMDQtMDItMTQgIE1hc2F0YWtlIFlBTUFUTyAgPGpldEBneXZlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmM6IEluY2x1ZGUgZXJybm8uaC4KCShmdF9jbG9zZV9zdHJlYW0pOiBSZW5hbWVkIHRvLi4uCgkoZnRfY2xvc2Vfc3RyZWFtX2J5X211bm1hcCk6IFRoaXMuCgkoZnRfY2xvc2Vfc3RyZWFtX2J5X2ZyZWUpOiBOZXcgZnVuY3Rpb24uCgkoRlRfU3RyZWFtX09wZW4pOiBVc2UgZmFsbGJhY2sgbWV0aG9kIGlmIG1tYXAgZmFpbHMuCglVc2UgcHJvcGVyIGZ1bmN0aW9uIGZvciBjbG9zaW5nIHRoZSBzdHJlYW0uCgoyMDA0LTAyLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2RpY3QpOiBJbml0aWFsaXplIGBzdGFydF9iaW5hcnknLgoKMjAwNC0wMi0xMyAgUm9iZXJ0IEV0aGVyaWRnZSAgPHJvYmVydGVAc3RjYy5jYy50eC51cz4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Jbml0KSwgc3JjL3R5cGUxL3Qxb2Jqcy5jCgkoVDFfRmFjZV9Jbml0KSwgc3JjL2NpZC9jaWRvYmpzLmMgKGNpZF9mYWNlX2luaXQpOiBGaXggY29tcHV0YXRpb24KCW9mIHVuZGVybGluZV9wb3NpdGlvbiBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcy4KCjIwMDQtMDItMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfQ2hhcl9TaXplKTogUmV0dXJuIGltbWVkaWF0ZWx5IGlmCglwcGVtIHZhbHVlcyBkb24ndCBjaGFuZ2UuICBTdWdnZXN0ZWQgYnkgR3JhaGFtIEFzaGVyLgoKMjAwNC0wMi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9mYWNlX29wZW4pOiBBbHdheXMgYWxsb2NhdGUKCWZhY2UtPmNpZF9zdHJlYW0gc28gdGhhdCB3ZSBjYW4gZGVhbGxvY2F0ZSBpdCBzYWZlbHkuCgoyMDA0LTAyLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWFrZSB0aGUgUFMgcGFyc2VyIG1vcmUgdG9sZXJhbnQgdy5yLnQuIG5vbi1zdGFuZGFyZCBmb250IGRhdGEuICBJbgoJZ2VuZXJhbCwgYW4gZXJyb3IgaXMgb25seSByZXBvcnRlZCBpbiBjYXNlIG9mIGEgc3ludGF4IGVycm9yOyBhCgl3cm9uZyB0eXBlIGlzIG5vdyBzaW1wbHkgaWdub3JlZCAoaWYgcG9zc2libGUpLiAgVG8gYmUgaW5kZXBlbmRlbnQKCW9mIHRoZSBvcmRlciBvZiB2YXJpb3VzIE1NLXNwZWNpZmljIGtleXdvcmRzLCB0aGUgcGFyc2Vfc2hhcmVkX2RpY3QKCXJvdXRpbmUgaGFzIGJlZW4gcmVtb3ZlZCAtLSB0aGUgUFMgcGFyc2VyIGlzIG5vdyBjYXBhYmxlIHRvIHNraXAKCXRoaXMgZGF0YS4gIEl0IG5vIGxvbmdlciBmYWlscyBvbiBwYXJzaW5nIGUuZy4KCgkgIGR1cCAvV2VpZ2h0VmVjdG9yIGV4Y2ggZGVmCgoJU2luY2UgdGhlIHRva2VuIGZvbGxvd2luZyAvV2VpZ2h0VmVjdG9yIGlzbid0IGBbJyAoc3RhcnRpbmcgYW4KCWFycmF5KSBpdCBpcyBzaW1wbHkgaWdub3JlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJkZWYuaDogRGVmaW5lIGBGVF9FcnJfSWdub3JlJyAoMHhBMikgYXMgYQoJbmV3IGludGVybmFsIGVycm9yIHZhbHVlLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9ibGVuZF9heGlzX3R5cGVzLAoJcGFyc2VfYmxlbmRfZGVzaWduX3Bvc2l0aW9ucywgcGFyc2VfYmxlbmRfZGVzaWduX21hcCk6IFJldHVybgoJVDFfRXJyX0lnbm9yZSBpZiBubyBwcm9wZXIgYXJyYXkgaXMgZm9sbG93aW5nIHRoZSBrZXl3b3JkLgoJKHBhcnNlX3dlaWdodF92ZWN0b3IpOiBVc2UgVDFfVG9Ub2tlbkFycmF5LCBpbml0aWFsaXppbmcgYGJsZW5kJwoJc3RydWN0dXJlLCBpZiBuZWNlc3NhcnkuCglSZXR1cm4gVDFfRXJyX0lnbm9yZSBpZiBubyBwcm9wZXIgYXJyYXkgaXMgZm9sbG93aW5nIHRoZSBrZXl3b3JkLgoJKHBhcnNlX3NoYXJlZF9kaWN0KTogUmVtb3ZlZC4KCShwYXJzZV9lbmNvZGluZyk6IFNldCBwYXJzZXItPnJvb3QuZXJyb3IgdG8gcmV0dXJuIFQxX0Vycl9JZ25vcmUKCWlmIG5vIHJlc3VsdCBjYW4gYmUgb2J0YWluZWQuCglDaGVjayBmb3IgZXJyb3JzIGJlZm9yZSBhY2Nlc3NpbmcgYGVsZW1lbnRzJyBhcnJheS4KCSh0MV9rZXl3b3Jkcyk6IFJlbW92ZSAvc2hhcmVkZGljdC4KCShwYXJzZV9kaWN0KTogUmVzZXQgZXJyb3IgaWYgdDFfbG9hZF9rZXl3b3JkIHJldHVybnMgVDFfRXJyX0lnbm9yZS4KCVNldCBrZXl3b3JkX2ZsYWcgb25seSBpbiBjYXNlIG9mIHN1Y2Nlc3MuCglDaGVjayBlcnJvciBjb2RlIGlmIHNraXBwaW5nIGFuIHVucmVjb2duaXplZCB0b2tlbi4KCShUMV9PcGVuX0ZhY2UpIFshVDFfQ09ORklHX09QVElPTl9OT19NTV9TVVBQT1JUXTogQ2FsbCBUMV9Eb25lX0JsZW5kCglpZiBibGVuZCBjb21tYW5kcyBoYXZlbid0IHNldCB1cCBhIHByb3BlciBNTSBmb250LgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc19wYXJzZXJfbG9hZF9maWVsZF90YWJsZSk6IFJlbW92ZSBzcGVjaWFsCgljb2RlIGZvciBzeW50aGV0aWMgZm9udHMuCglSZXR1cm4gUFNhdXhfRXJyX0lnbm9yZSBpZiBubyBwcm9wZXIgdmFsdWUgaGFzIGJlZW4gZm91bmQuCgoyMDA0LTAyLTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKQoJPGNmZl9vcF9lbmRjaGFyPjogUHJlc2VydmUgZ2x5cGggd2lkdGggYmVmb3JlIGNhbGxpbmcKCWNmZl9vcGVyYXRvcl9zZWFjLgoKMjAwNC0wMi0wOSAgTWFydGluIE11c2tlbnMgIDxtbXVza2Vuc0BhdXJlbG9uLmNvbT4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpOiBIYW5kbGUgc3BlY2lhbAoJZmlyc3QgYXJndW1lbnQgZm9yIGBoaW50bWFzaycgYW5kIGBjbnRybWFzaycgb3BlcmF0b3JzIGFsc28uCgoyMDA0LTAyLTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW46IENhbGwgQUNfU1VCU1QgZm9yIGBlbmFibGVfc2hhcmVkJywKCWBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjJywgYW5kIGB3bCcuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IE1ha2UgLS1wcmVmaXggYW5kIC0tZXhlYy1wcmVmaXgKCWFjdHVhbGx5IHdvcmsuCglSZXBvcnQgYSBwcm9wZXIgLS1ycGF0aCAob3IgLVIpIHZhbHVlIGZvciAtLWxpYnMgYXJndW1lbnQgaWYgYQoJc2hhcmVkIGxpYnJhcnkgaGFzIGJlZW4gYnVpbHQuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTAyLTA3ICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQsIEJERl9TZXRfUGl4ZWxfU2l6ZSk6IEZpeAoJY29tcHV0YXRpb24gb2YgdmFyaW91cyB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBtZXRyaWMgdmFsdWVzLgoKCSogc3JjL3BjZmRyaXZyLmMgKFBDRl9TZXRfUGl4ZWxfU2l6ZSksIHNyYy9wY2ZyZWFkIChwY2ZfbG9hZF9mb250KToKCURpdHRvLgoKMjAwNC0wMi0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvaW5kZXguaHRtbCwKCWJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcCwKCWJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzdywgZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wMi0wNyAgVml0YWxpeSBQYXN0ZXJuYWsgIDx2X2FfcGFzdGVybmFrQG1haWwucnU+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5zbG4sCglidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS52Y3Byb2o6IE5ldyBmaWxlcyBmb3IgVlMuTkVUIDIwMDMuCgoyMDA0LTAyLTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NhY2hlLmggKEZUQ19DQUNIRV9MT09LVVBfQ01QKToKCUluaXRpYWxpemUgYG5vZGUnLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2RpY3QpOiBJbml0aWFsaXplIGBoYXZlX2ludGVnZXInLgoKMjAwNC0wMi0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9kaWN0KTogSGFuZGxlIGBSRCcgYW5kIGAtfCcgY29tbWFuZHMKCW91dHNpZGUgb2YgL1N1YnJzIG9yIC9DaGFyU3RyaW5ncy4gIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGVyZSBpcwoJYWRkaXRpb25hbCBjb2RlIG1hbmlwdWxhdGluZyB0aG9zZSB0d28gYXJyYXlzIHNvIHRoYXQgRnJlZVR5cGUKCWRvZXNuJ3QgcmVjb2duaXplIHRoZW0gcHJvcGVybHkuCgkoVDFfT3Blbl9GYWNlKTogSW1wcm92ZSBhbiBlcnJvciBtZXNzYWdlLgoKMjAwNC0wMi0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9jaGFyc3RyaW5ncyk6IEV4aXQgaW1tZWRpYXRlbHkgaWYKCXRoZXJlIGFyZSBubyBlbGVtZW50cyBpbiAvQ2hhclN0cmluZ3MuICBUaGlzIGlzIG5lZWRlZCBmb3IgZm9udHMKCWxpa2UgT3B0aW1hLU9ibGlxdWUgd2hpY2ggbm90IG9ubHkgZGVmaW5lIC9DaGFyU3RyaW5ncyBidXQgYWNjZXNzIGl0CglhbHNvLgoKMjAwNC0wMi0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvSmFtZmlsZTogUmVtb3ZpbmcgYHR0Y21hcCcgZnJvbSB0aGUgbGlzdCBvZiBzb3VyY2VzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNjYWNoZS5oIChGVENfQ0FDSEVfTE9PS1VQX0NNUCkKCTxGVENfSU5MSU5FPjogUHJvdmlkZSBtYWNybyB2ZXJzaW9uIHdoaWNoIGRvZXNuJ3QgdXNlIGlubGluZSBjb2RlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmggKEZUQ19HQ0FDSEVfTE9PS1VQX0NNUCkKCTxGVENfSU5MSU5FPjogRGl0dG8uCglVc2UgRlRDX01SVUxJU1RfTE9PS1VQX0NNUC4KCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtcnUuaCAoRlRDX01SVUxJU1RfTE9PS1VQX0NNUCk6IE5ldwoJbWFjcm8uCgkoRlRDX01SVUxJU1RfTE9PS1VQKTogVXNlIGl0LgoKCSogc3JjL2NhY2hlL0phbWZpbGUgKF9zb3VyY2VzKSwgc3JjL2NhY2hlL2Rlc2NyaXAubW1zOiBVcGRhdGVkLgoJKiBzcmMvY2FjaGUvZnRjYmFzaWMuYzogRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoRlRDX01hbmFnZXJfTG9va3VwU2l6ZSwKCUZUQ19NYW5hZ2VyX0xvb2t1cEZhY2UpIDxGVENfSU5MSU5FPjogVXNlIEZUQ19NUlVMSVNUX0xPT0tVUF9DTVAuCgkqIHNyYy9jYWNoZS9mdGNtcnUuYyAoRlRDX01ydUxpc3RfRmluZCk6IEZpeCBhIGJ1ZyAoZm91bmQgYWZ0ZXIKCWhlYXZ5IHRlc3RpbmcpLgoKCSogSmFtZmlsZTogVXBkYXRpbmcgYHJlZmRvYycgdGFyZ2V0LCBhbmQgYWRkaW5nIGBhdXRvaGludCcgdG8gdGhlCglsaXN0IG9mIG1vZHVsZXMgdG8gYnVpbGQuICBCb3RoIHRoZSBhdXRvaGludGVyIGFuZCBhdXRvZml0dGVyIHdpbGwKCWJlIGJ1aWx0IGJ5IGRlZmF1bHQuICBCdXQgd2hpY2ggb25lIHdpbGwgYmUgdXNlZCBpcyBkZXRlcm1pbmVkIGJ5Cgl0aGUgY29udGVudCBvZiBgZnRtb2R1bGUuaCcuCgoJKiBzcmMvYXV0b2ZpdC8qOiBNYW55IHVwZGF0ZXMsIGJ1dCB0aGUgY29kZSBpcyBzdGlsbCBidWdneS4uLgoKMjAwNC0wMS0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfb3BlcmF0b3Jfc2VhYyk6IEZpeCBtYWduaXR1ZGUgb2YKCWFjY2VudCBvZmZzZXQuCglVcGRhdGUgY29kZSBzaW1pbGFybHkgdG8gdGhlIHNlYWMgc3VwcG9ydCBmb3IgVHlwZSAxIGZvbnRzLgoJKGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKSA8Y2ZmX29wX2VuZGNoYXI+OiBGaXggbWFnbml0dWRlCglvZiBhY2NlbnQgb2Zmc2V0LgoJRG9uJ3QgaGludCBnbHlwaHMgdHdpY2UgaWYgc2VhYyBpcyBlbXVsYXRlZC4KCTxjZmZfb3BfZmxleD46IEFzc2lnbiBjb3JyZWN0IHBvaW50IHRhZ3MuCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDEtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBVc2UgRlRfTUVNX01PVkUsIG5vdAoJRlRfTUVNX0NPUFksIGZvciBjb3B5aW5nIHRoZSBwcml2YXRlIGRpY3QuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzKTogQXNzaWduIG51bWJlciBvZiBzdWJycyBvbmx5CglpbiBmaXJzdCBydW4uCgkocGFyc2VfY2hhcnN0cmluZ3MpOiBQYXJzZSAvQ2hhclN0cmluZ3MgaW4gc2Vjb25kIHJ1biB3aXRob3V0Cglhc3NpZ25pbmcgdmFsdWVzLgoJKHBhcnNlX2RpY3QpOiBTa2lwIGFsbCAvQ2hhclN0cmluZ3MgYXJyYXlzIGJ1dCB0aGUgZmlyc3QuICBXZSBuZWVkCgl0aGlzIGZvciBub24tc3RhbmRhcmQgZm9udHMgbGlrZSBgT3B0aW1hJyB3aGljaCBoYXZlIGRpZmZlcmVudAoJb3V0bGluZXMgZGVwZW5kaW5nIG9uIHRoZSByZXNvbHV0aW9uLiAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vCglndWFyYW50ZWUgdGhhdCB3ZSBnZXQgZml0dGluZyAvU3VicnMgYW5kIC9DaGFyU3RyaW5ncyBhcnJheXM7IHRoaXMKCWNhbiBvbmx5IGJlIGRvbmUgYnkgYSByZWFsIFBTIGludGVycHJldGVyLgoKMjAwNC0wMS0yOSAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2luZGV4Lmh0bWw6IE5ldyBmaWxlLCBnaXZpbmcgZGV0YWlsZWQKCWV4cGxhbmF0aW9ucyBhYm91dCBmb3JjaW5nIENSK0xGIGxpbmUgZW5kaW5ncyBmb3IgdGhlIFZDKysgcHJvamVjdAoJZmlsZXMuCgoyMDA0LTAxLTIyICBHYXJyaWNrIE1lZWtlciAgPGdhcnJpY2tAZGlnaXRhbGFuYXJjaHkuY29tPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9zdWJmb250X2xvYWQpOiBJbml0aWFsaXplIGBkaWN0Jy4KCjIwMDQtMDEtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGQgc3VwcG9ydCBmb3IgdGhlIGhleGFkaWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIGJpbmFyeSBkYXRhCglzdGFydGVkIHdpdGggYFN0YXJ0RGF0YScgaW4gQ0lELWtleWVkIFR5cGUgMSBmb250cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChDSURfRmFjZVJlYyk6IEFkZCBuZXcKCW1lbWJlcnMgYGJpbmFyeV9kYXRhJyBhbmQgYGNpZF9zdHJlYW0nLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogVXNlIGBmYWNlLT5jaWRfc3RyZWFtJy4KCShjaWRfaGV4X3RvX2JpbmFyeSk6IE5ldyBhdXhpbGlhcnkgZnVuY3Rpb24uCgkoY2lkX2ZhY2Vfb3Blbik6IEFkZCBuZXcgYXJndW1lbnQgYGZhY2VfaW5kZXgnIHRvIHJldHVybiBxdWlja2x5CglpZiBsZXNzIHRoYW4gemVyby4gIFVwZGF0ZWQgYWxsIGNhbGxlcnMuCglDYWxsIGBjaWRfaGV4X3RvX2JpbmFyeScsIHRoZW4gb3BlbiBhbmQgYXNzaWduIG1lbW9yeSBzdHJlYW0gdG8KCWBmYWNlLT5jaWRfc3RyZWFtJyBpZiBgcGFyc2VyLT5iaW5hcnlfbGVuZ3RoJyBpcyBub24temVyby4KCSogc3JjL2NpZC9jaWRsb2FkLmg6IFVwZGF0ZWQuCgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoY2lkX2ZhY2VfZG9uZSk6IEZyZWUgYGJpbmFyeV9kYXRhJyBhbmQKCWBjaWRfc3RyZWFtJy4KCgkqIHNyYy9jaWQvY2lkcGFyc2UuYyAoY2lkX3BhcnNlcl9uZXcpOiBDaGVjayBhcmd1bWVudHMgdG8KCWBTdGFydERhdGEnIGFuZCBzZXQgcGFyc2VyLT5iaW5hcnlfbGVuZ3RoIGFjY29yZGluZ2x5LgoJKiBzcmMvY2lkL2NpZHBhcnNlLmggKENJRF9QYXJzZXIpOiBOZXcgbWVtYmVyIGBiaW5hcnlfbGVuZ3RoJy4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpOiBVc2UgYGZhY2UtPmNpZF9zdHJlYW0nLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wMS0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggKGZ0X2F0b2kpOiBSZXBsYWNlZCB3aXRoLi4uCgkoZnRfYXRvbCk6IFRoaXMuCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6IHMvYXRvbC9mdF9hdG9sLy4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jOiBzL2Z0X2F0b2kvZnRfYXRvbC8uCgoyMDA0LTAxLTIwICBNYXNhdGFrZSBZQU1BVE8gIDxqZXRAZ3l2ZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaDogRGVsZXRlIGR1cGxpY2F0ZWQgZGVmaW5pdGlvbiBvZgoJRlRDX0ZhY2VJRC4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9jbWFwX2luZm8pOiBDYWxsIHNmbnQgbW9kdWxlJ3MgVFQgQ01hcAoJSW5mbyBzZXJ2aWNlIGZ1bmN0aW9uIGlmIHRoZSBjbWFwIGNvbWVzIGZyb20gc2ZudC4gIFJldHVybiAwIGlmIHRoZQoJY21hcCBpcyBzeXRoZXNpemVkIGluIGNmZiBtb2R1bGUuCgoyMDA0LTAxLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX3NpemVfbm9kZV9jb21wYXJlKTogQ2FsbAoJRlRfQWN0aXZhdGVfU2l6ZS4KCjIwMDQtMDEtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBTa2lwIGV4YWN0bHkgb25lCglDUiwgTEYsIG9yIENSL0xGIGFmdGVyIGBlZXhlYycuCgoyMDA0LTAxLTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dHNiaXQuYyAodHRfZmFjZV9zZXRfc2JpdF9zdHJpa2UpOiBSZW1vdmUgY29tcGlsZXIKCXdhcm5pbmcuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvKjogVXBkYXRpbmcgYmVhdXRpZmllciB0b29sLgoKMjAwNC0wMS0xNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChmdF9vcmllbnRhdGlvbl9leHRyZW11bV9jb21wdXRlKTogRml4CglpbmZpbml0ZSBsb29wIGJ1Zy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2UuaDogSW5jbHVkZSBGVF9HTFlQSF9ILgoJKEZUX1N0cm9rZXJfUmV3aW5kLCBGVF9HbHlwaF9TdHJva2UsIEZUX0dseXBoX1N0cm9rZUJvcmRlcik6IE5ldwoJZGVjbGFyYXRpb25zLgoKCSogc3JjL2Jhc2UvZnRzdHJva2UuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9PQkpFQ1RTX0guCgkoRlRfT3V0bGluZV9HZXRPdXRzaWRlQm9yZGVyKTogSW52ZXJzZSByZXN1bHQuCgkoRlRfU3Ryb2tlcl9SZXdpbmQsIEZUX0dseXBoX1N0cm9rZSwgRlRfR2x5cGhTdHJva2VCb3JkZXIpOiBOZXcKCWZ1bmN0aW9ucy4KCShGVF9TdHJva2VyX0VuZFN1YlBhdGgpOiBDbG9zZSBwYXRoIGlmIG5lZWRlZC4KCShGVF9TdHJva2VyX1NldCwgRlRfU3Ryb2tlcl9QYXJzZU91dGxpbmUpOiBVc2UgRlRfU3Ryb2tlcl9SZXdpbmQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21hbmFnLmggKEZUQ19TY2FsZXJSZWMsCglGVENfTWFuYWdlcl9Mb29rdXBTaXplKTogTW92ZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmggKEZUQ19TY2FsZXJSZWMsCglGVENfTWFuYWdlcl9Mb29rdXBTaXplKTogSGVyZS4KCgkqIHNyYy90b29scy9kb2NtYWtlci9kb2NiZWF1dHkucHk6IE5ldyBmaWxlIHRvIGJlYXV0aWZ5IHRoZQoJZG9jdW1lbnRhdGlvbiBjb21tZW50cyAoZS5nLiwgdG8gY29udmVydCB0aGVtIHRvIHNpbmdsZSBibG9jayBib3JkZXIKCW1vZGUpLgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvZG9jbWFrZXIucHkgKGZpbGVfZXhpc3RzLCBtYWtlX2ZpbGVfbGlzdCk6CglNb3ZlZCB0by4uLgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvdXRpbHMucHkgKGZpbGVfZXhpc3RzLCBtYWtlX2ZpbGVfbGlzdCk6IEhlcmUuCgoyMDA0LTAxLTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmggKEZUX0FSUkFZX0NPUFksCglGVF9BUlJBWV9NT1ZFKTogTmV3IG1hY3JvcyB0byBtYWtlIGNvcHlpbmcgYXJyYXlzIGVhc2llci4KCVVwZGF0ZWQgYWxsIHJlbGV2YW50IGNvZGUgdG8gdXNlIHRoZW0uCgoyMDA0LTAxLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2ZvbnRfbG9hZCk6IExvYWQgY2hhcnN0cmluZ3NfaW5kZXggZWFybGllci4KCVVzZSBudW1iZXIgb2YgY2hhcnN0cmluZ3MgYXMgYXJndW1lbnQgdG8gQ0ZGX0xvYWRfRkRfU2VsZWN0IChhcwoJZG9jdW1lbnRlZCBpbiB0aGUgQ0ZGIHNwZWNzKS4KCjIwMDQtMDEtMTMgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmMgKHBzaF9nbHlwaF9pbml0KTogTW92ZSBhc3NpZ25tZW50IG9mCglgZ2x5cGgtPm1lbW9yeScgdXAgdG8gZnJlZSBhcnJheXMgcHJvcGVybHkgaW4gY2FzZSBvZiBmYWlsdXJlLgoKMjAwNC0wMS0xMCAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoKCU1ha2UgYEZUX0dldF9DTWFwX0xhbmd1YWdlX0lEJyB3b3JrIHdpdGggQ0ZGLiAgQnVnIHJlcG9ydGVkIGJ5CglTdGV2ZSBIYXJ0d2VsbCA8c2hzcGFtc2lua0Bjb21jYXN0Lm5ldD4uCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9UVF9DTUFQX0guCgkoY2ZmX3NlcnZpY2VzKTogQWRkZWQgYW4gZW50cnkgZm9yIEZUX1NFUlZJQ0VfSURfVFRfQ01BUC4KCShjZmZfZ2V0X2NtYXBfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShjZmZfc2VydmljZV9nZXRfY21hcF9pbmZvKSBOZXcgZW50cnkgZm9yIGNmZl9zZXJ2aWNlcy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYzogRXhpdCBsb29wIGFmdGVyIGEgZm9ybWF0IG1hdGNoIGhhcyBiZWVuIGZvdW5kLgoJU3VnZ2VzdGVkIGJ5IFN0ZXZlIEhhcnR3ZWxsIDxzaHNwYW1zaW5rQGNvbWNhc3QubmV0Pi4KCjIwMDQtMDEtMDMgIE1hc2F0YWtlIFlBTUFUTyAgPGpldEBneXZlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChkZXN0cm95X2NoYXJtYXBzKTogTmV3IGZ1bmN0aW9uLgoJKGRlc3Ryb3lfZmFjZSwgb3Blbl9mYWNlKTogVXNlIGBkZXN0cm95X2NoYXJtYXBzJy4KCjIwMDQtMDEtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDEtMDEgIE1pY2hhZWwgSmFuc3NvbiAgPG1qYW5AZW0yLXNvbHV0aW9ucy5jb20+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9TaXplX1NldF9QaXhlbHMpOiBGaXggc2lnbiBvZgoJc2l6ZS0+bWV0cmljcy5kZXNjZW5kZXIuCgoyMDAzLTEyLTMxICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncykKCVtGVF9ERUJVR19MRVZFTF9UUkFDRV06IFVzZSBgJWxkJyBpbiBGVF9UUkFDRTQuCgk8Y2ZmX29wX2ZsZXgxPjogQ2hhbmdlIHR5cGUgb2YgZHggYW5kIGR5IHRvIEZUX1BvcyBhbmQgcmVtb3ZlCgljYXN0IGZvciBhY2Nlc3NpbmcgYXJndW1lbnRzLgoKMjAwMy0xMi0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9TaW1wbGVfR2x5cGgpOiBSZXZlcnQgcHJldmlvdXMKCWNoYW5nZS4gIEl0J3Mgbm90IG5lY2Vzc2FyeS4KCjIwMDMtMTItMjkgIFNtaXRoIENoYXJsZXMgIDxzbWl0aC5jaGFybGVzQGZyZWUuZnI+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX1NpbXBsZV9HbHlwaCk6IEhhbmRsZSBgcmVwZWF0ZWQKCWZsYWdzIHNldCcgY29ycmVjdGx5LgoKMjAwMy0xMi0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBGaXggbWVtb3J5IGxlYWsgYnkgZGVhbGxvY2F0aW5nCglgZnVsbCcgYW5kIGB3ZWlnaHQnIHByb3Blcmx5LgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKQoJPGNmZl9vcF9oaW50bWFzaz4gW0ZUX0RFQlVHX0xFVkVMX1RSQUNFXTogVXNlIGAweCcgYXMgcHJlZml4IGZvcgoJdHJhY2luZyBvdXRwdXQuCgoyMDAzLTEyLTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCAoVFRfU2V0X1NCaXRfU3RyaWtlX0Z1bmMpOgoJVXNlIEZUX1VJbnQgZm9yIHBwZW0gdmFsdWVzLgoJKiBzcmMvc2ZudC90dHNiaXQuYyAodHRfZmFjZV9zZXRfc2JpdF9zdHJpa2UpOiBVc2UgRlRfVUludCBmb3IKCXBwZW0gdmFsdWVzLgoJKiBzcmMvc2ZudC90dHNiaXQuaDogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfUGl4ZWxfU2l6ZXMpOiBEb24ndCBhbGxvdyBwcGVtIHZhbHVlcwoJbGFyZ2VyIHRoYW4gLTBGRkZGLgoKMjAwMy0xMi0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYywgc3JjL2Jhc2UvZnRnbG9hZHIuYzogSW5sdWRlCglGVF9JTlRFUk5BTF9PQkpFQ1RTX0guCgoJKiBzcmMvYmFzZS9mdHN0cm9rZS5jIChGVF9PdXRsaW5lX0dldEluc2lkZUJvcmRlciwKCUZUX091dGxpbmVfR2V0T3V0c2lkZUJvcmRlcik6IHMvb3Ivby8gdG8gbWFrZSBpdCBjb21waWxlIHdpdGgKCUMrKyBjb21waWxlcnMuCgoJKiBzcmMvY2FjaGUvZnRjbXJ1LmMsIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbXJ1Lmg6CglzL3NlbGVjdC9zZWxlY3Rpb24vIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBzL3NlbGVjdC9mdHNlbGVjdC8gdG8gYXZvaWQgcG90ZW50aWFsCgljb21waWxlciB3YXJuaW5nLgoKMjAwMy0xMi0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKEZUQ19TTm9kZV9XZWlnaHQpOgoJcy9GVENfU0JJVF9JVEVNX1BFUl9OT0RFL0ZUQ19TQklUX0lURU1TX1BFUl9OT0RFLy4KCjIwMDMtMTItMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIEZpeGVkIGNvbXBpbGF0aW9uIHByb2JsZW1zIGluIHRoZSBjYWNoZSBzdWItc3lzdGVtLgoKCSogUGFydGlhbCB1cGRhdGVzIHRvIHNyYy9hdXRvZml0LgoKCSogSmFtZmlsZSAoRlQyX0NPTVBPTkVOVFMpOiBBZGQgYXV0b2ZpdCBtb2R1bGUuCgoyMDAzLTEyLTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9sb29rdXBfZ2x5cGhfYnlfc3RkY2hhcmNvZGUpOiBIYW5kbGUKCUNJRC1rZXllZCBmb250cy4KCjIwMDMtMTItMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX1BBRF9GTE9PUiwgRlRfUEFEX1JPVU5ELAoJRlRfUEFEX0NFSUwsIEZUX1BJWF9GTE9PUiwgRlRfUElYX1JPVU5ELCBGVF9DRUlMKTogTmV3IG1hY3Jvcy4gIFRoZXkKCWFyZSB1c2VkIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzIHdpdGggdmVyeSBwZWRhbnRpYyBjb21waWxlcnMuCglOb3RlIHRoYXQgYCh4KSAmIC02NCcgY2F1c2VzIGEgd2FybmluZyBpZiAoeCkgaXMgbm90IHNpZ25lZC4gIFVzZQoJYCh4KSAmIH42MycgaW5zdGVhZCEKCVVwZGF0ZWQgYWxsIHJlbGF0ZWQgY29kZS4KCglBZGQgc3VwcG9ydCBmb3IgZXh0cmFjdGlvbiBvZiBgaW5zaWRlJyBhbmQgYG91dHNpZGUnIGJvcmRlcnMuCgoJKiBzcmMvYmFzZS9mdHN0cm9rZS5jIChGVF9TdHJva2VyQm9yZGVyKTogTmV3IGVudW1lcmF0aW9uLgoJKEZUX091dGxpbmVfR2V0SW5zaWRlQm9yZGVyLCBGVF9PdXRsaW5lX0dldE91dHNpZGVCb3JkZXIsCglGVF9TdHJva2VyX0dldEJvcmRlckNvdW50cywgRlRfU3Ryb2tlcl9FeHBvcnRCb3JkZXIpOiBOZXcgZnVuY3Rpb25zLgoJKEZUX1N0cm9rZUJvcmRlclJlYyk6IE5ldyBib29sZWFuIG1lbWJlciBgdmFsaWQnLgoJKGZ0X3N0cm9rZV9ib3JkZXJfZ2V0X2NvdW50cyk6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2UuaDogVXBkYXRlZC4KCjIwMDMtMTItMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR3aW5mbnQuaCAoRlRfV2luRk5UX0lEXyopOiBOZXcgZGVmaW5pdGlvbnMKCXRvIGRlc2NyaWJlIHRoZSBgY2hhcnNldCcgZmllbGQgaW4gRlRfV2luRk5UX0hlYWRlclJlYy4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfRmFjZV9Jbml0KTogU2V0IGVuY29kaW5nIHRvCglGVF9FTkNPRElOR19OT05FIGV4Y2VwdCBmb3IgRlRfV2luRk5UX0lEX01BQy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRW5jb2RpbmcpOiBJbXByb3ZlIGNvbW1lbnQsCgliYXNlZCBvbiB3b3JrIGJ5IERldGxlZiBX/HJrbmVyIDxUZXRpU29mdEBhcGcubGFobi5kZT4uCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAzLTEyLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY2FjaGUuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbXJ1LmggKGFkZGVkKSwKCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRscnUuaCAocmVtb3ZlZCksCglpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y3NiaXRzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2ltYWdlLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmgsCglzcmMvY2FjaGUvZnRjbXJ1LmMsCglzcmMvY2FjaGUvZnRjbWFuYWcuYywKCXNyYy9jYWNoZS9mdGNjYWNoZS5jLAoJc3JjL2NhY2hlL2Z0Y2dseXBoLmMsCglzcmMvY2FjaGUvZnRjaW1hZ2UuYywKCXNyYy9jYWNoZS9mdGNzYml0cy5jLAoJc3JjL2NhY2hlL2Z0Y2NtYXAuYywKCXNyYy9jYWNoZS9mdGNiYXNpYy5jIChhZGRlZCksCglzcmMvY2FjaGUvZnRjbHJ1LmMgKHJlbW92ZWQpOgoKCSAgKkNvbXBsZXRlKiByZXdyaXRlIG9mIHRoZSBjYWNoZSBzdWItc3lzdGVtIHRvIGBzb2x2ZScgdGhlCgkgIGZvbGxvd2luZyBwb2ludHM6CgoJICAgIC0gYWxsIHB1YmxpYyBBUElzIGhhdmUgYmVlbiBtb3ZlZCB0byBGVF9DQUNIRV9ILCBldmVyeXRoaW5nCgkgICAgICB1bmRlciBgaW5jbHVkZS9mcmVldHlwZS9jYWNoZScgaXMgb25seSBuZWVkZWQgYnkgY2xpZW50CgkgICAgICBhcHBsaWNhdGlvbnMgdGhhdCB3YW50IHRvIGltcGxlbWVudCB0aGVpciBvd24gY2FjaGVzCgoJICAgIC0gYSBuZXcgZnVuY3Rpb24gbmFtZWQgRlRDX01hbmFnZXJfUmVtb3ZlRmFjZUlEIHRvIGRlYWwKCSAgICAgIHdpdGggdGhlIHVuaW5zdGFsbGF0aW9uIG9mIEZhY2VJRHMKCgkgICAgLSB0aGUgaW1hZ2UgYW5kIHNiaXQgY2FjaGUgYXJlIG5vdyBhYnN0cmFjdCBjbGFzc2VzLCB0aGF0CgkgICAgICBjYW4gYmUgZXh0ZW5kZWQgbXVjaCBtb3JlIGVhc2lseSBieSBjbGllbnQgYXBwbGljYXRpb25zCgoJICAgIC0gYmV0dGVyIHBlcmZvcm1hbmNlIGluIGNlcnRhaW4gYXJlYXMuIEZ1cnRoZXIgb3B0aW1pemF0aW9ucwoJICAgICAgdG8gY29tZSBzaG9ydGx5IGFueXdheS4uLgoKCSAgICAtIHRoZSBGVENfQ01hcENhY2hlX0xvb2t1cCBmdW5jdGlvbiBoYXMgY2hhbmdlZCBpdHMgc2lnbmF0dXJlLAoJICAgICAgY2hhcm1hcHMgY2FuIG5vdyBvbmx5IGJlIHJldHJpZXZlZCBieSBpbmRleAoKCSAgICAtIEZUQ19NYW5hZ2VyX0xvb2t1cF9GYWNlID0+IEZUQ19NYW5hZ2VyX0xvb2t1cEZhY2UKCSAgICAgIEZUQ19NYW5hZ2VyX0xvb2t1cF9TaXplID0+IEZUQ19NYW5hZ2VyX0xvb2t1cFNpemUgKHN0aWxsIGluCgkgICAgICBwcml2YXRlIGhlYWRlciBmb3IgdGhlIG1vbWVudCkKCjIwMDMtMTItMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZGljdCk6IFN0b3AgcGFyc2luZyBpZiBgZWV4ZWMnIGtleXdvcmQKCWlzIGVuY291bnRlcmVkLgoKMjAwMy0xMi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZ0eXBlcy5oIChDRkZfTUFYX0NJRF9GT05UUyk6IEluY3JlYXNlIHRvIDMyLiAgRm9yCglleGFtcGxlLCB0aGUgSmFwYW5lc2UgSGlyYWdpbm8gZm9udCBhbHJlYWR5IGNvbnRhaW5zIDE1IHN1YmZvbnRzLgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9mb250X2xvYWQpOiBEZWFsbG9jYXRlIGBzaWRzJyBhcnJheSBmb3IKCUNJRC1rZXllZCBmb250cy4KCgkqIGRldmVsL2Z0b3B0aW9uLmg6IERlZmluZSBGVF9ERUJVR19NRU1PUlkuCgoyMDAzLTEyLTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmggKFRUX0FET0JFX0lEX0xBVElOXzEpOiBOZXcgbWFjcm8uCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogVXNlIFRUX0FET0JFX0lEKiB2YWx1ZXMuCgoyMDAzLTEyLTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnR5cGVzLmggKENGRl9Gb250UmVjRGljdFJlYyk6IENoYW5nZSB0eXBlIG9mCglgY2lkX2NvdW50JyB0byBgRlRfVUxvbmcnLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfc2xvdF9sb2FkKTogVGFrZSBjYXJlIG9mIGVtcHR5IGBjaWRzJwoJYXJyYXkuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2NoYXJzZXRfZG9uZSk6IEZyZWUgYGNpZHMnIGFycmF5LgoJKGNmZl9mb250X2xvYWQpOiBDcmVhdGUgY2lkcyBhcnJheSBvbmx5IGZvciBDSUQta2V5ZWQgZm9udHMgd2hpY2gKCWFyZSBzdWJzZXR0ZWQuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IENoZWNrIHRoZSBhdmFpbGFiaWxpdHkgb2YKCXRoZSBQU05hbWVzIG1vZHVsZXMgZm9yIG5vbi1wdXJlIENGRnMgYWxzby4KCVNldCBGVF9GQUNFX0ZMQUdfR0xZUEhfTkFNRVMgZm9yIGEgbm9uLXB1cmUgQ0ZGIGFsc28gaWYgaXQgaXNuJ3QKCUNJRC1rZXllZC4KCgkqIHNyYy9jZmYvcnVsZXMubWsgKENGRl9EUlZfSCk6IEFkZCBjZmZ0eXBlcy5oLgoKMjAwMy0xMi0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfaW5pdF9mYWNlKTogRG9uJ3Qgc2V0CglGVF9GQUNFX0ZMQUdfR0xZUEhfTkFNRVMgaWYgdGhlIGZvbnQgY29udGFpbnMgYSB2ZXJzaW9uIDMuMCBgcG9zdCcKCXRhYmxlLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMy0xMi0xNyAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoKCUFkZCBuZXcgZnVuY3Rpb24gRlRfR2V0X0NNYXBfTGFuZ3VhZ2VfSUQgdG8gZXh0cmFjdCB0aGUgbGFuZ3VhZ2UgSUQKCWZvciBUcnVlVHlwZS9zZm50IGZvbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Y21hcC5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfU0VSVklDRV9UVF9DTUFQX0gpOiBBZGQKCXN2dHRjbWFwLmguCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jOiBJbmNsdWRlIHR0Y21hcDAuaC4KCSh0dF9zZXJ2aWNlX2dldF9jbWFwX2luZm8pOiBOZXcgc2VydmljZS4KCShzZm50X3NlcnZpY2VzKTogVXBkYXRlZC4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcCpfZ2V0X2luZm8pOiBOZXcgZnVuY3Rpb25zLgoJKHR0X2NtYXAqX2NsYXNzX3JlYyk6IEFkZCB0dF9jbWFwKl9nZXRfaW5mbyBtZW1iZXJzLgoJKHR0X2dldF9jbWFwX2luZm8pOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9zZm50L3R0Y21hcDAuaDogSW5jbHVkZSBGVF9TRVJWSUNFX1RUX0NNQVBfSC4KCShUVF9DTWFwX0NsYXNzUmVjKTogTmV3IGZpZWxkIGBnZXRfY21hcF9pbmZvJy4KCSh0dF9nZXRfY21hcF9pbmZvKTogTmV3IGRlY2xhcmF0aW9uLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9UVF9DTUFQX0guCgkoRlRfR2V0X0NNYXBfTGFuZ3VhZ2VfSUQpOiBOZXcgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24uCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCAoRlRfR2V0X0NNYXBfTGFuZ3VhZ2VfSUQpOiBOZXcKCWZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoKMjAwMy0xMi0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRjbWFwLmMsIHNyYy9zZm50L3R0Y21hcC5oOiBSZW1vdmVkLiAgT2Jzb2xldGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCAoU0ZOVF9JbnRlcmZhY2UpOiBSZW1vdmUKCW9ic29sZXRlIGZpZWxkcyBgbG9hZF9jaGFybWFwJyBhbmQgYGZyZWVfY2hhcm1hcCcuCgkoVFRfQ2hhck1hcF9Mb2FkX0Z1bmMsIFRUX0NoYXJNYXBfRnJlZV9GdW5jKTogUmVtb3ZlZC4KCSogc3JjL3NmbnQvc2ZudC5jOiBEb24ndCBpbmNsdWRlIHR0Y21hcC5jLgoJKiBzcmMvc2ZudC9ydWxlcy5tayAoU0ZOVF9EUlZfU1JDKTogRG9uJ3QgaW5jbHVkZSB0dGNtYXAuYy4KCSogc3JjL3NmbnQvdHRsb2FkLmM6IERvbid0IGluY2x1ZGUgdHRjbWFwLmguCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IERvbid0IGluY2x1ZGUgdHRjbWFwLmguCgkoc2ZudF9pbnRlcmZhY2UpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX1RhYmxlRGlyUmVjLAoJVFRfQ01hcERpclJlYywgVFRfQ01hcERpckVudHJ5UmVjLCBUVF9DTWFwMCwgVFRfQ01hcDJTdWJIZWFkZXJSZWMsCglUVF9DTWFwMlJlYywgVFRfQ01hcDRTZWdtZW50LCBUVF9DTWFwNFJlYywgVFRfQ01hcDYsCglUVF9DTWFwR3JvdXBSZWMsIFRUX0NNYXA4XzEyUmVjLCBUVF9DTWFwMTBSZWMsIFRUX0NoYXJNYXBfRnVuYywKCVRUX0NoYXJOZXh0X0Z1bmMsIFRUX0NNYXBUYWJsZVJlYywgVFRfQ2hhck1hcFJlYyk6IFJlbW92ZWQuCglPYnNvbGV0ZS4KCSogc3JjL2NmZi9jZmZvYmpzLmggKENGRl9DaGFyTWFwUmVjKTogUmVtb3ZlZC4gIE9ic29sZXRlLgoKMjAwMy0xMi0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMy0xMi0xNSAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIGJ1aWxkcy9hdGFyaS8qOiBOZXcgZGlyZWN0b3J5IGZvciBidWlsZGluZyBGcmVlVHlwZSAyIG9uIEF0YXJpCgl3aXRoIHRoZSBQdXJlQyBjb21waWxlci4KCjIwMDMtMTItMTIgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9QYXJzZV9HbHlwaF9BbmRfR2V0X0NoYXJfU3RyaW5nKTogQWRkCgljYXN0LgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9wc19oYXNfZ2x5cGhfbmFtZXMpOiBBc3N1cmUgdGhhdCByZXR1cm4KCXZhbHVlIGlzIGVpdGhlciAwIG9yIDEuCgoyMDAzLTEyLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfZ2x5cGhfbmFtZSk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZS4KCShjZmZfZ2V0X25hbWVfaW5kZXgpOiBSZXR1cm4gaWYgbm8gUFNOYW1lcyBzZXJ2aWNlIGlzIGF2YWlsYWJsZS4KCShjZmZfcHNfaGFzX2dseXBoX25hbWVzKTogSGFuZGxlIENJRC1rZXllZCBmb250cyBjb3JyZWN0bHkuCgkqIHNyYy9jZmYvY2ZmdHlwZXMuaCAoQ0ZGX0NoYXJzZXRSZWMpOiBOZXcgZmllbGQgYGNpZHMnLCB1c2VkIGZvcgoJQ0lELWtleWVkIGZvbnRzLiAgVGhpcyBpcyB0aGUgaW52ZXJzZSBtYXBwaW5nIG9mIGBzaWRzJy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9jaGFyc2V0X2xvYWQpOiBOZXcgYXJndW1lbnQgYGludmVydCcuCglJbml0aWFsaXplIGNoYXJzZXQtPmNpZHMgaWYgYGludmVydCcgaXMgc2V0LgoJKGNmZl9mb250X2xvYWQpOiBJbiBjYWxsIHRvIGNmZl9jaGFyc2V0X2xvYWQsIHNldCBgaW52ZXJ0JyB0byB0cnVlCglmb3IgQ0lELWtleWVkIGZvbnRzLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9zbG90X2xvYWQpOiBIYW5kbGUgZ2x5cGggaW5kZXggYXMgQ0lECglhbmQgbWFwIGl0IHRvIHRoZSByZWFsIGdseXBoIGluZGV4LgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMy0xMi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBEb24ndCBzZXQKCUZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUyBmb3IgQ0lELWtleWVkIGZvbnRzLgoJRG9uJ3QgY29uc3RydWN0IGEgY21hcCBmb3IgQ0lELWtleWVkIGZvbnRzLgoKMjAwMy0xMi0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVVzZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBTSUQgdmFsdWUgMHhGRkZGIHRvIGluZGljYXRlIHRoYXQKCWEgZGljdGlvbmFyeSBlbGVtZW50IGlzIG1pc3NpbmcuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX3N1YmZvbnRfbG9hZCk6IEluaXRpYWxpemUgYWxsIGZpZWxkcwoJd2hpY2ggaG9sZCBTSURzIHRvIDB4RkZGRi4KCShjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcpOiBIYW5kbGUgU0lEIHZhbHVlIDB4RkZGRi4KCUhhbmRsZSBjYXNlIHdoZXJlIGBwc25hbWVzJyBpcyB6ZXJvLgoJKGNmZl9mb250X2xvYWQpOiBVcGRhdGVkLgoJRG9uJ3QgbG9hZCBlbmNvZGluZyBmb3IgQ0lELWtleWVkIENGRnMuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IFVwZGF0ZWQuCglEb24ndCBjaGVjayBmb3IgUFNOYW1lcyBtb2R1bGUgaWYgZm9udCBpcyBDSUQta2V5ZWQuCglDb21wdXRlIHN0eWxlIG5hbWUgcHJvcGVybHkgKHVzaW5nIHRoZSBzYW1lIGFsZ29yaXRobSBhcyBpbiB0aGUKCUNJRCBkcml2ZXIpLgoJRml4IGNvbXB1dGF0aW9uIG9mIHN0eWxlIGZsYWdzLgoKCSogc3JjL2NmZi9jZmZ0b2tlbi5oOiBDb21tZW50IG91dCBoYW5kbGluZyBvZiBiYXNlX2ZvbnRfbmFtZS4KCVJlbmFtZSBgcG9zdHNjcmlwdCcgZmllbGQgdG8gYGVtYmVkZGVkX3Bvc3RzY3JpcHQnCgkqIHNyYy9jZmYvY2ZmdHlwZXMuaCAoQ0ZGX0ZvbnRSZWNEaWN0UmVjKTogUmVtb3ZlIGBiYXNlX2ZvbnRfbmFtZScKCWFuZCBgcG9zdHNjcmlwdCcuCgoyMDAzLTEyLTEwICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3BjZi9wY2Zkcml2ci5jIChwY2ZfZ2V0X2NoYXJzZXRfaWQpOiBOZXcgZnVuY3Rpb24gKGEgY2xvbmUKCW9mIHRoZSBzaW1pbGFyIEJERiBmdW5jdGlvbikuCgkocGNmX3NlcnZpY2VfYmRmKTogVXNlIGl0LgoKMjAwMy0xMi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogU2V0IEZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUwoJb25seSBpZiBhIGBwb3N0JyB0YWJsZSBpcyBwcmVzZW50LgoKMjAwMy0xMi0wOSAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAobG9hZF9tYWNfZmFjZSk6IFJlY2VudCB2ZXJzaW9ucyBvZiBMaW51eAoJc3VwcG9ydCBNYWMncyBIRlMrIGZpbGUgc3lzdGVtLCB0aHVzIGVuYWJsZSBjb2RlIHRvIHJlYWQgL3JzcmMgb24KCW5vbi1NYWNpbnRvc2ggcGxhdGZvcm1zIGFsc28uCgoyMDAzLTEyLTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTX1RhYmxlUmVjKTogQ2hhbmdlIHR5cGUKCW9mIGBsZW5ndGhzJyB0byBGVF9QdHJEaXN0LgoJKFQxX0RlY29kZXJSZWMpOiBDaGFuZ2UgdHlwZSBvZiBgc3VicnNfbGVuJyB0byBGVF9QdHJEaXN0LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCAoVDFfRm9udFJlYyk6IENoYW5nZSB0eXBlCglvZiBgc3VicnNfbGVuJyBhbmQgYGNoYXJzdHJpbmdzX2xlbicgdG8gRlRfUHRyRGlzdC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChNYWNfUmVhZF9QT1NUX1Jlc291cmNlKTogUmVwbGFjZSBganVuaycKCXZhcmlhYmxlIHdpdGggYmV0dGVyIHNvbHV0aW9uLgoJKElzTWFjUmVzb3VyY2UpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBtYXBfbGVuJy4KCVJlcGxhY2UgYGp1bmsnIHZhcmlhYmxlIHdpdGggYmV0dGVyIHNvbHV0aW9uLgoJKEZUX09wZW5fRmFjZSkgWyFGVF9NQUNJTlRPU0hdOiBBZGQgY29uZGl0aW9uYWwKCUZUX0NPTkZJR19PUFRJT05fTUFDX0ZPTlRTLgoKMjAwMy0xMi0wOCAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2hpbnRfZWRnZXMsCglhaF9oaW50ZXJfYWxpZ25fc3Ryb25nX3BvaW50cyk6IEFkZCBzb21lIGNhc3RzLgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PcmllbnRhdGlvbkV4dHJlbXVtUmVjKTogQ2hhbmdlIHR5cGUKCW9mIGBwb3MnIHRvIEZUX0xvbmcuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoTWFjX1JlYWRfUE9TVF9SZXNvdXJjZSwKCU1hY19SZWFkX3NmbnRfUmVzb3VyY2UpOiBDaGFuZ2UgdHlwZSBvZiBgbGVuJyB0byBGVF9Mb25nLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jICh0NDJfcGFyc2VfZGljdCk6IEFkZCBjYXN0IGZvciBgbl9rZXl3b3JkcycuCgoyMDAzLTEyLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL3Jhc3Rlci50eHQ6IE5ldyBmaWxlLCB0YWtlbiBmcm9tIEZyZWVUeXBlIDEgYW5kIGNvbXBsZXRlbHkKCXJldmlzZWQuCgoyMDAzLTEyLTA0ICBNYXNhdGFrZSBZQU1BVE8gIDxqZXRAZ3l2ZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAoR2V0X0ludGVyZmFjZSk6IFJlbW92ZSBGVF9VTlVTRUQgZm9yCgl0MV9pbnRlcmZhY2UuICB0MV9pbnRlcmZhY2UgaXMgdXNlZC4KCjIwMDMtMTEtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wZnIvcGZyZHJpdnIuYyAocGZyX2dldF9tZXRyaWNzKTogUmV2ZXJ0IGluY29ycmVjdCBjaGFuZ2Ugb2YKCTIwMDMtMTEtMjM6IEZvciBQRlIgZm9udHMsIG1ldHJpY3MtPnhfc2NhbGUgYW5kIG1ldHJpY3MtPnlfc2NhbGUgYXJlCgl0aGUgc2NhbGluZyB2YWx1ZXMgZm9yIG91dGxpbmUgdW5pdHMsIG5vdCBmb3IgbWV0cmljIHVuaXRzLgoKMjAwMy0xMS0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgKCShGVF9NdWxEaXZfTm9fUm91bmQpOiBTdXJyb3VuZCBjb2RlIHdpdGggYCNpZmRlZgoJVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUiAuLi4gI2VuZGlmJy4KCjIwMDMtMTEtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXZfTm9fUm91bmQpOiBOZXcgZnVuY3Rpb24gKDMyIGFuZAoJNjQgYml0IHZlcnNpb24pLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oOiBVcGRhdGVkLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKFRUX01VTERJVl9OT19ST1VORCk6IE5ldyBtYWNyby4KCShUVF9JTlQ2NCk6IFJlbW92ZWQuCgkoRE9fRElWKTogVXNlIFRUX01VTERJVl9OT19ST1VORC4KCgkqIHNyYy9wZnIvcGZyZHJpdnIuYyAocGZyX2dldF9tZXRyaWNzKTogRGlyZWN0bHkgdXNlCgltZXRyaWNzLT54X3NjYWxlIGFuZCBtZXRyaWNzLT55X3NjYWxlLgoKMjAwMy0xMS0yMiAgUm9naWVyIHZhbiBEYWxlbiAgPFIuQy52YW4uRGFsZW5AdW1haWwubGVpZGVudW5pdi5ubD4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChDVVJfRnVuY19tb3ZlX29yaWcpOiBOZXcgbWFjcm8uCgkoRGlyZWN0X01vdmVfT3JpZywgRGlyZWN0X01vdmVfT3JpZ19YLCBEaXJlY3RfTW92ZV9PcmlnX1kpOiBOZXcKCWZ1bmN0aW9ucy4gIFNpbWlsYXIgdG8gRGlyZWN0X01vdmUsIERpcmVjdF9Nb3ZlX1gsIGFuZAoJRGlyZWN0X01vdmVfWSBidXQgd2l0aG91dCB0b3VjaGluZy4KCShDb21wdXRlX0Z1bmNzKTogVXNlIG5ldyBmdW5jdGlvbnMuCgoJKFJvdW5kX05vbmUsIFJvdW5kX1RvX0dyaWQsIFJvdW5kX1RvX0hhbGZfR3JpZCwgUm91bmRfRG93bl9Ub19HcmlkLAoJUm91bmRfVXBfVG9fR3JpZCwgUm91bmRfVG9fRG91YmxlX0dyaWQsIFJvdW5kX1N1cGVyLAoJUm91bmRfU3VwZXJfNDUpOiBGaXggcm91bmRpbmcgb2YgdmFsdWUgemVyby4KCgkoRE9fRElWKTogRG9uJ3QgdXNlIFRUX01VTERJVi4KCgkoSW5zX1NIQyk6IFRoaXMgaW5zdHJ1Y3Rpb24gYWN0dWFsbHkgdG91Y2hlcyB0aGUgcG9pbnRzLgoJKEluc19NU0lSUCk6IEZpeCB1bmRvY3VtZW50ZWQgYmVoYXZpb3VyLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmggKFRUX0V4ZWNDb250ZXh0UmVjKTogVXBkYXRlZC4KCjIwMDMtMTEtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvVkVSU0lPTi5ETEwsIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfQ2hhcl9TaXplKTogTWFrZSBtZXRyaWNzLT54X3NjYWxlIGFuZAoJbWV0cmljcy0+eV9zY2FsZSByZWFsbHkgcHJlY2lzZS4KCgkoRlRfTG9hZF9HbHlwaCk6IFVwZGF0ZSBjb21wdXRhdGlvbiBvZiBsaW5lYXJIb3JpQWR2YW5jZSBhbmQKCWxpbmVhclZlcnRBZHZhbmNlLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKFVwZGF0ZV9NYXgpOiBVc2UgRlRfUkVBTExPQy4KCjIwMDMtMTEtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvZml0Lyo6IE1vcmUgdXBkYXRlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gOC4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBTZXQgdG8gOTo2OjMuCgkqIFJFQURNRTogVXBkYXRlZC4KCjIwMDMtMTEtMTMgIEpvaG4gQS4gQm95ZCBKci4gIDxqYWJveWRqckBuZXR3YWxrLmNvbT4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoYmRmX2ludGVycHJldF9zdHlsZSksIHNyYy9wY2YvcGNmcmVhZC5jCgkocGNmX2ludGVycHJldF9zdHlsZSk6IFJlcGxhY2Ugc3BhY2VzIHdpdGggZGFzaGVzIGluIHByb3BlcnRpZXMKCVNFVFdJRFRIX05BTUUgYW5kIEFERF9TVFlMRV9OQU1FIHRvIHNpbXBsaWZ5IHBhcnNpbmcuCgoyMDAzLTExLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAzLTExLTExICBKb2huIEEuIEJveWQgSnIuICA8amFib3lkanJAbmV0d2Fsay5jb20+CgoJSGFuZGxlIFNFVFdJRFRIX05BTUUgYW5kIEFERF9TVFlMRV9OQU1FIHByb3BlcnRpZXMgZm9yIEJERiBhbmQgUENGCglmb250cy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoYmRmX2ludGVycHJldF9zdHlsZSk6IE5ldyBhdXhpbGlhcnkgZnVuY3Rpb24uCgkoQkRGX0ZhY2VfSW5pdCk6IERvbid0IGhhbmRsZSBzdHlsZSBwcm9wZXJ0aWVzIGJ1dCBjYWxsCgliZGZfaW50ZXJwcmV0X3N0eWxlLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9pbnRlcnByZXRfc3R5bGUpOiBOZXcgYXV4aWxpYXJ5IGZ1bmN0aW9uLgoJKHBjZl9sb2FkX2ZvbnQpOiBEb24ndCBoYW5kbGUgc3R5bGUgcHJvcGVydGllcyBidXQgY2FsbAoJcGNmX2ludGVycHJldF9zdHlsZS4KCjIwMDMtMTEtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgoJKiBWZXJzaW9uIDIuMS43IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gNy4KCgkqIGJ1aWxkcy91bml4L2Z0MnVuaXguaDogRml4IGNvbW1lbnRzLgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW46IFN5bmNocm9uaXplZCB3aXRoIEFOU0kgdmVyc2lvbi4KCVVzZSBgI3VuZGVmJyBpbiB0ZW1wbGF0ZXMgYXMgcmVjb21tZW5kZWQgaW4gdGhlIGF1dG9jb25mCglkb2N1bWVudGF0aW9uLgoJU2luY2UgcmVhbCBgI3VuZGVmJyBsaW5lcyBkb24ndCBzdXJ2aXZlIGR1cmluZyBjb25maWd1cmF0aW9uLCB1c2UKCWAvdW5kZWYnIGluc3RlYWQ7IHRoZSBwb3N0cHJvY2Vzc2luZyBmYWNpbGl0eSBvZiB0aGUKCUFDX0NPTkZJR19IRUFERVJTIGF1dG9jb25mIG1hY3JvIGNvbnZlcnRzIHRoZW0gdG8gYCN1bmRlZicuCgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChpbnN0YWxsKTogSW5zdGFsbCBVbml4IHZlcnNpb24gb2YKCWBmdGNvbmZpZy5oJy4KCgkqIGJ1aWxkcy91bml4L3VuaXgtY2MuaW4gKENGTEFHUyk6IFNldCBGVF9DT05GSUdfQ09ORklHX0ggbWFjcm8KCXRvIGluY2x1ZGUgdGhlIGNvcnJlY3QgYGZ0Y29uZmlnLmgnIGZpbGUuCgoJKiBidWlsZHMvdW5peC9mdC1tdW5tYXAubTQgKEZUX01VTk1BUF9ERUNMKTogUmVtb3ZlZC4KCShGVF9NVU5NQVBfUEFSQU0pOiBVcGRhdGVkIHN5bnRheCB0byBhdXRvY29uZiAyLjU5LgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLm00OiBVcGRhdGVkIHN5bnRheCB0byBhdXRvY29uZiAyLjU5LgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBVc2UgQUNfQ09ORklHX0hFQURFUlMgaW5zdGVhZCBvZgoJQUNfQ09ORklHX0hFQURFUiB0byBjcmVhdGUgZnRjb25maWcuaCwgYW5kIHVzZSBzZWNvbmQgYXJndW1lbnQKCXRvIHJlcGxhY2UgYC91bmRlZicgd2l0aCBgI3VuZGVmJy4KCURvbid0IHVzZSBGVF9NVU5NQVBfREVDTCBidXQgQUNfQ0hFQ0tfREVDTFMgdG8gY2hlY2sgZm9yIG11bm1hcC4KCVVzZSBBU19IRUxQX1NUUklORyBpbiBBQ19BUkdfV0lUSC4KCVVwZGF0ZSBzeW50YXggdG8gYXV0b2NvbmYgMi41OS4KCgkqIGJ1aWxkcy91bml4L2x0bWFpbi5zaDogUmVnZW5lcmF0ZWQgd2l0aCBgbGlidG9vbGl6ZSAtLWZvcmNlCgktLWNvcHknIGZyb20gbGlidG9vbCAxLjUuCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQ6IFJlZ2VuZXJhdGVkIHdpdGggYGFjbG9jYWwgLUkgLicgZnJvbQoJYXV0b21ha2UgMS43LjguCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQgd2l0aCBhdXRvY29uZiAyLjU5LgoJKiBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsIGJ1aWxkcy91bml4L2NvbmZpZy5zdWI6IFVwZGF0ZWQgZnJvbQoJYGNvbmZpZycgQ1ZTIG1vZHVsZSBhdCBzdWJ2ZXJzaW9ucy5nbnUub3JnCgkqIGJ1aWxkcy91bml4L2luc3RhbGwtc2gsIGJ1aWxkcy91bml4L21raW5zdGFsbGRpcnM6IFVwZGF0ZWQgZnJvbQoJYHRleGluZm8nIENWUyBtb2R1bGUgYXQgc3VidmVyc2lvbnMuZ251Lm9yZy4KCgkqIGJ1aWxkcy92bXMvZnRjb25maWcuaDogU3luY2hyb25pemVkIHdpdGggQU5TSSB2ZXJzaW9uLgoKCSogZG9jcy9DVVNUT01JWkU6IEZpeCBkb2N1bWVudGF0aW9uIGVycm9yLgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvVkVSU0lPTi5ETEwsIGRvY3MvcmVsZWFzZTogVXBkYXRlZC4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAocmVmZG9jKTogVXBkYXRlZCAtLXRpdGxlLgoKMjAwMy0xMS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjYgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogaW5zdGFsbDogUmVtb3ZlZC4gIE9ic29sZXRlLgoKMjAwMy0xMS0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1NGTlRfSC4KCShzZm50X3NlcnZpY2Vfc2ZudF90YWJsZSk6IE5ldyBzZXJ2aWNlLgoJKHNmbnRfc2VydmljZXMpOiBVcGRhdGVkLgoKCSogZG9jcy9saWNlbnNlLnR4dDogUmV3b3JkZWQuCgoyMDAzLTExLTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlLyo6IEFkZCBhIGd1YXJkIHRvIGFsbCBwdWJsaWMgaGVhZGVyIGZpbGVzIHdoaWNoCglsb2FkIEZUX0ZSRUVUWVBFX0ggdG8gcmVqZWN0IGZyZWV0eXBlLmggZnJvbSBGcmVlVHlwZSAxLgoKMjAwMy0xMS0wMiAgUGF0cmljayBXZWxjaGUgIDxwcmx3MUBuZXduLmNhbS5hYy51az4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5tNCwgYnVpbGRzL3VuaXgvZnQtbXVubWFwLm00OiBQcm90ZWN0CglmaXJzdCBhcmd1bWVudCBvZiBBQ19ERUZVTiB3aXRoIGJyYWNrZXRzIHRvIGF2b2lkIHBvc3NpYmxlCglleHBhbnNpb24uCgoyMDAzLTExLTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmg6IERvbid0IGluY2x1ZGUgc3RkZGVmLmguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEZpeCBjaGVjayBmb3IgZnQyYnVpbGQuaC4KCjIwMDMtMTEtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQ2hlY2sgdGhhdCBmdDJidWlsZC5oIGhhcyBiZWVuCglsb2FkZWQgZmlyc3QuCgoJKiBzcmMvYmFzZS9mdHR5cGUxLmMgKEZUX0dldF9QU19Gb250X0luZm8pOiBGaXggaW5jb3JyZWN0bHkgYXBwbGllZAoJcGF0Y2guCgoyMDAzLTEwLTMxICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jIChGVF9HZXRfUFNfRm9udF9JbmZvLCBGVF9IYXNfUFNfR2x5cGhfTmFtZXMpOgoJRml4IHBhcmFtZXRlciBvcmRlciBpbiBjYWxscyB0byBGVF9GQUNFX0ZJTkRfU0VSVklDRS4KCjIwMDMtMTAtMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmgKCShGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSCk6IFJlbW92ZWQuICBVbnVzZWQuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMgKHQ0Ml9zZXJ2aWNlcyk6IFVwZGF0ZWQuCgoyMDAzLTEwLTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2JkZnR5cGVzLmg6IFJlbW92ZWQuICBPYnNvbGV0ZS4KCSogc3JjL2Jhc2UvZnRiZGYuYzogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogTW92ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZ0eXBlcy5oOiBUaGlzIHBsYWNlIHNpbmNlIG5vIG90aGVyIG1vZHVsZSBuZWVkcyB0bwoJa25vdyBhYm91dCB0aG9zZSB0eXBlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDQydHlwZXMuaDogTW92ZWQgdG8uLi4KCSogc3JjL3R5cGU0Mi90NDJ0eXBlcy5oOiBUaGlzIHBsYWNlIHNpbmNlIG5vIG90aGVyIG1vZHVsZSBuZWVkcyB0bwoJa25vdyBhYm91dCB0aG9zZSB0eXBlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZiZGYuaDogSW5jbHVkZSBGVF9CREZfSC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc25hbWUuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNjbWFwLmg6IFRoaXMuCglVcGRhdGVkIGBGVF9TZXJ2aWNlX1BzTmFtZXMnIC0+IGBGVF9TZXJ2aWNlX1BzQ01hcHMnIGFuZAoJYFBPU1RTQ1JJUFRfTkFNRVMnIC0+IGBQT1NUU0NSSVBUX0NNQVBTJyBldmVyeXdoZXJlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzaW5mby5oOiBOZXcgZmlsZSwgcHJvdmlkaW5nCglQb3N0U2NyaXB0IGluZm8gc2VydmljZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9DTUFQU19ILAoJRlRfU0VSVklDRV9QT1NUU0NSSVBUX0lORk9fSCk6IE5ldyBtYWNyb3MgZm9yIHN2cHNjbWFwLmggYW5kCglzdnBzaW5mby5oLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX1RZUEU0Ml9UWVBFU19ILAoJRlRfSU5URVJOQUxfQ0ZGX1RZUEVTX0gsIEZUX0lOVEVSTkFMX0JERl9UWVBFU19IKTogUmVtb3ZlZC4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYzogRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9UWVBFMV9UWVBFU19IIGFuZAoJRlRfSU5URVJOQUxfVFlQRTQyX1RZUEVTX0ggYnV0IEZUX0lOVEVSTkFMX1NFUlZJQ0VfSCBhbmQKCUZUX1NFUlZJQ0VfUE9TVFNDUklQVF9JTkZPX0guCgkoRlRfR2V0X1BTX0ZvbnRfSW5mbywgRlRfSGFzX1BTX0dseXBoX05hbWVzKTogVXNlIG5ldwoJUE9TVFNDUklQVF9JTkZPIHNlcnZpY2UuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QT1NUU0NSSVBUX0lORk9fSC4KCShjZmZfcHNfaGFzX2dseXBoX25hbWVzKTogTmV3IGZ1bmN0aW9uLgoJKGNmZl9zZXJ2aWNlX3BzX2luZm8pOiBOZXcgc2VydmljZS4KCShjZmZfc2VydmljZXMpOiBVcGRhdGVkLgoKCSogc3JjL2NmZi9jZmZsb2FkLmgsIHNyYy9jZmYvY2Zmb2Jqcy5oLCBzcmMvY2ZmL2NmZnBhcnNlLmg6IERvbid0CglpbmNsdWRlIEZUX0lOVEVSTkFMX0NGRl9UWVBFU19IIGJ1dCBjZmZ0eXBlcy5oIGRpcmVjdGx5LgoKCSogc3JjL2NpZi9jaWRyaXZlci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9JTkZPX0guCgkoY2lkX3BzX2dldF9mb250X2luZm8pOiBOZXcgZnVuY3Rpb24uCgkoY2lkX3NlcnZpY2VfcHNfaW5mbyk6IE5ldyBzZXJ2aWNlLgoJKGNpZF9zZXJ2aWNlcyk6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfSU5GT19ILgoJKHQxX3BzX2dldF9mb250X2luZm8sIHQxX3BzX2hhc19nbHlwaF9uYW1lcyk6IE5ldyBmdW5jdGlvbnMuCgkodDFfc2VydmljZV9wc19pbmZvKTogTmV3IHNlcnZpY2UuCgkodDFfc2VydmljZXMpOiBVcGRhdGVkLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9JTkZPX0guCgkodDQyX3BzX2dldF9mb250X2luZm8sIHQ0Ml9wc19oYXNfZ2x5cGhfbmFtZXMpOiBOZXcgZnVuY3Rpb25zLgoJKHQ0Ml9zZXJ2aWNlX3BzX2luZm8pOiBOZXcgc2VydmljZS4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5oOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1RZUEU0Ml9UWVBFU19ICglidXQgdDQydHlwZXMuaCBkaXJlY3RseS4KCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKHBzbmFtZXNfaW50ZXJmYWNlLCBwc25hbWVzX3NlcnZpY2VzKToKCVJlbmFtZWQgdG8uLi4KCShwc2NtYXBzX2ludGVyZmFjZSwgcHNjbWFwc19zZXJ2aWNlcyk6IFRoaXMuCglVcGRhdGVkIGFsbCB1c2Vycy4KCgoJKiBzcmMvZ3ppcC9pbmZibG9jay5jIChpbmZsYXRlX2Jsb2Nrcyk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoKMjAwMy0xMC0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9lbmNvZGluZyk6IEhhbmRsZSBgL0VuY29kaW5nIFsgLi4uIF0nLgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfR2V0X1ByaXZhdGVfRGljdCk6IFRlc3Qgd2hldGhlciBgZWV4ZWMnCglpcyByZWFsLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jICh0NDJfcGFyc2VfZW5jb2RpbmcpOiBJbXByb3ZlIGJvdW5kYXJ5CgljaGVja2luZyB3aGlsZSBwYXJzaW5nLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMy0xMC0yMSAgSm9zc2VsaW4gTW91ZXR0ZSAgPGpvc3NAZGViaWFuLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChUMV9Gb250UmVjKTogYHBhaW50X3R5cGUnCglhbmQgYHN0cm9rZV93aWR0aCcgYXJlbid0IHBvaW50ZXJzLgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0RvbmUpLCBzcmMvdHlwZTEvdDFvYmpzLmMKCShUMV9GYWNlX0RvbmUpOiBEb24ndCBmcmVlIGBwYWludF90eXBlJyBhbmQgYHN0cm9rZV93aWR0aCcuCgoyMDAzLTEwLTIwICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKGZudF9jbWFwX2NsYXNzKTogRml4IHBvc2l0aW9uIG9mIGBjb25zdCcuCgoyMDAzLTEwLTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKTogUGF0Y2ggZnJvbQoJMjAwMy0wOC0xOCBpbnRyb2R1Y2VkIGEgc2V2ZXJlIGJ1ZyAoRlRfUmVuZGVyX0dseXBoIHdhcyBjYWxsZWQKCXR3aWNlIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcywgY2F1c2luZyBzdHJhbmdlIHJlc3VsdHMpLiAgVGhpcwoJaXMgZml4ZWQgbm93IGJ5IGNsZWFyaW5nIHRoZSBGVF9MT0FEX1JFTkRFUiBiaXQgb2YgYGxvYWRfZmxhZ3MnLgoKCSogc3JjL2Jhc2UvZnRwZnIuYyAoRlRfR2V0X1BGUl9NZXRyaWNzKTogSW5pdGlhbGl6ZSBgZXJyb3InLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3RvYnl0ZXMpOiBJbml0aWFsaXplIGBuJy4KCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jICh0NDJfcGFyc2Vfc2ZudHMpOiBJbml0aWFsaXplIGBzdHJpbmdfc2l6ZScuCgoyMDAzLTEwLTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQ29tcGxldGVseSByZXZpc2VkIFR5cGUgNDIgcGFyc2VyLiAgSXQgbm93IGhhbmRsZXMgYm90aCBmb250cwoJcHJvZHVjZWQgd2l0aCB0dGZ0b3Q0MiAodGVzdGVkIHZlcnNpb24gMC4zLjEpIGFuZAoJVHJ1ZVR5cGVUb1R5cGU0Mi5wcyAodGVzdGVkIHZlcnNpb24gTWF5IDIwMDE7IGl0IGlzIG5lY2Vzc2FyeSB0bwoJZml4IHRoZSBicm9rZW4gaGVhZGVyIGNvbW1lbnQgdG8gYmUgYCUhUFMtVHJ1ZVR5cGVGb250Li4uJykuCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0dseXBoU2xvdF9Mb2FkKTogQ2hhbmdlIGZvdXJ0aAoJcGFyYW1ldGVyIHRvIGBGVF9VSW50Jy4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmggKFQ0Ml9QYXJzZXJSZWMpOiBDaGFuZ2UgdHlwZSBvZiBgaW5fbWVtb3J5JwoJdG8gRlRfQm9vbC4KCShUNDJfTG9hZGVyKTogQ2hhbmdlIHR5cGUgb2YgYG51bV9jaGFycycgYW5kIGBudW1fZ2x5cGhzJyB0bwoJRlRfVUludC4KCUFkZCBgc3dhcF90YWJsZScgZWxlbWVudC4KCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jIChUNDJfS0VZV09SRF9DT1VOVCwgVDFfVG9GaXhlZCwKCVQxX1RvQ29vcmRBcnJheSwgVDFfVG9Ub2tlbkFycmF5KTogUmVtb3ZlZC4KCShUMV9Ub0J5dGVzKTogTmV3IG1hY3JvLgoJKHQ0Ml9pc19hbHBoYSwgdDQyX2hleHZhbCk6IFJlbW92ZWQuCgkodDQyX2lzX3NwYWNlKTogSGFuZGxlIGBcMCcuCgkodDQyX3BhcnNlX2VuY29kaW5nKTogVXBkYXRlZCB0byB1c2UgbmV3IFBvc3RTY3JpcHQgcGFyc2VyIHJvdXRpbmVzCglmcm9tIHBzYXV4LgoJSGFuZGxlIGAvRW5jb2RpbmcgWyAuLi4gXScgYWxzby4KCShUNDJfTG9hZF9TdGF0dXMpOiBOZXcgZW51bWVyYXRpb24uCgkodDQyX3BhcnNlX3NmbnRzKTogVXBkYXRlZCB0byB1c2UgbmV3IFBvc3RTY3JpcHQgcGFyc2VyIHJvdXRpbmVzCglmcm9tIHBzYXV4LgoJKHQ0Ml9wYXJzZV9jaGFyc3RyaW5ncyk6IFVwZGF0ZWQgdG8gdXNlIG5ldyBQb3N0U2NyaXB0IHBhcnNlcgoJcm91dGluZXMgZnJvbSBwc2F1eC4KCUhhbmRsZSBgL0NoYXJTdHJpbmdzIDw8IC4uLiA+PicgYWxzby4KCURvbid0IGV4cGVjdCB0aGF0IC8ubm90ZGVmIGlzIHRoZSBmaXJzdCBlbGVtZW50IGluIGRpY3Rpb25hcnkuICBDb3B5Cgljb2RlIGZyb20gdHlwZTEgbW9kdWxlIHRvIGhhbmRsZSB0aGlzLgoJKHQ0Ml9wYXJzZV9kaWN0KTogVXBkYXRlZCB0byB1c2UgbmV3IFBvc3RTY3JpcHQgcGFyc2VyIHJvdXRpbmVzCglmcm9tIHBzYXV4LgoJUmVtb3ZlIGNvZGUgZm9yIHN5bnRoZXRpYyBmb250cyAod2hpY2ggY2FuJ3Qgb2NjdXIgaW4gVHlwZSA0MgoJZm9udHMpLgoJKHQ0Ml9sb2FkZXJfZG9uZSk6IFJlbGVhc2UgYHN3YXBfdGFibGUnLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChza2lwX3N0cmluZyk6IEluY3JlYXNlIGBjdXInIHByb3Blcmx5LgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9jaGFyc3RyaW5ncyk6IE1ha2UgdGVzdCBmb3IgYC5ub3RkZWYnCglmYXN0ZXIuCgoyMDAzLTEwLTE1ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoYmx1ZV9jaGFycyksIHNyYy93aW5mb250cy93aW5mbnQuYwoJKGZudF9jbWFwX2NsYXNzX3JlYywgZm50X2NtYXBfY2xhc3MpLCBzcmMvYmRmL2JkZmxpYi5jIChlbXB0eSwKCV9udW1fYmRmX3Byb3BlcnRpZXMpLCBzcmMvZ3ppcC9pbmZ1dGlsLmMgKGluZmxhdGVfbWFzayksCglzcmMvZ3ppcC9pbmZmaXhlZC5oIChmaXhlZF9ibCwgZml4ZWRfYmQsIGZpeGVkX3RsLCBmaXhlZF90ZCksCglzcmMvZ3ppcC9pbmZ0cmVlcy5oIChpbmZsYXRlX3RyZWVzX2ZpeGVkKSwgc3JmL2d6aXAvaW5mdHJlZXMuYwoJKGluZmxhdGVfdHJlZXNfZml4ZWQpOiBEZWNvcmF0ZSB3aXRoIG1vcmUgYGNvbnN0JyB0byBhdm9pZAoJd3JpdGFibGUgZ2xvYmFsIHZhcmlhYmxlcyB3aGljaCBhcmUgZGlzYWxsb3dlZCBvbiBBUk0uCgoyMDAzLTEwLTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4LCBwYXJzZV9jaGFyc3RyaW5ncyk6IFJlbW92ZQoJY29kZSBzcGVjaWFsbHkgZm9yIHN5bnRoZXRpYyBmb250czsgdGhpcyBpcyBoYW5kbGVkIGVsc2V3aGVyZS4KCShwYXJzZV9lbmNvZGluZyk6IFJlbW92ZSBjb2RlIHNwZWNpYWxseSBmb3Igc3ludGhldGljIGZvbnRzOyB0aGlzIGlzCgloYW5kbGVkIGVsc2V3aGVyZS4KCUltcHJvdmUgYm91bmRhcnkgY2hlY2tpbmcgd2hpbGUgcGFyc2luZy4KCShwYXJzZV9kaWN0KTogSW1wcm92ZSBib3VuZGFyeSBjaGVja2luZyB3aGlsZSBwYXJzaW5nLgoJVXNlIGZ0X21lbWNtcCB0byBzaW1wbGlmeSBjb2RlLgoKMjAwMy0xMC0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgcGFyc2VfZGljdCk6IEhhbmRsZSBzeW50aGV0aWMKCWZvbnRzIHByb3Blcmx5LgoJKHBhcnNlX2NoYXJzdHJpbmdzKTogQ29weSBjb3JyZWN0IG51bWJlciBvZiBjaGFyYWN0ZXJzIGludG8KCWBuYW1lX3RhYmxlJy4KCjIwMDMtMTAtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglIZWF2eSBtb2RpZmljYXRpb24gb2YgdGhlIFBTIHBhcnNlciB0byBoYW5kbGUgY29tbWVudHMgYW5kIHN0cmluZ3MKCWNvcnJlY3RseS4gIFRoaXMgZG9lc24ndCBzbG93IGRvd24gdGhlIGxvYWRpbmcgb2YgUFMgZm9udHMKCXNpZ25pZmljYW50bHkgc2luY2UgY2hhcnN0cmluZ3MgYXJlbid0IGFmZmVjdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCAoZnRfeGRpZ2l0KTogUmVuYW1lZCB0by4uLgoJKGZ0X2lzeGRpZ2l0KTogVGhpcy4gIFVwZGF0ZWQgYWxsIGNhbGxlcnMuCgkoZnRfaXNkaWdpdCk6IE5ldyBhbGlhcyB0byBgaXNkaWdpdCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTX1BhcnNlcl9GdW5jc1JlYyk6IFJlbmFtZWQKCWBza2lwX2FscGhhJyB0byBgc2tpcF9QU190b2tlbicuCglBZGQgcGFyYW1ldGVyIHRvIGB0b19ieXRlcycgYW5kIGNoYW5nZSBzb21lIGFyZ3VtZW50IHR5cGVzLgoKCSogc3JjL3BzYXV4L3BzYXV4bW9kLmMgKHBzX3BhcnNlcl9mdW5jcyk6IFVwZGF0ZWQuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoZnRfY2hhcl90YWJsZSk6IE5ldyBhcnJheSB0byBtYXAgY2hhcmFjdGVyCgljb2RlcyAoQVNDSUkgYW5kIEVCQ0RJQykgb2YgZGlnaXRzIHRvIG51bWJlcnMuCgkoT1ApOiBOZXcgYXV4aWxpYXJ5IG1hY3JvIGhvbGRpbmcgZWl0aGVyIGA+PScgb3IgYDwnIGRlcGVuZGluZyBvbgoJdGhlIGNoYXJhY3RlciBlbmNvZGluZy4KCShza2lwX2NvbW1lbnQpOiBOZXcgZnVuY3Rpb24uCgkoc2tpcF9zcGFjZXMpOiBVc2UgaXQuCgkoc2tpcF9hbHBoYSk6IFJlbW92ZWQuCgkoc2tpcF9saXRlcmFsX3N0cmluZywgc2tpcF9zdHJpbmcpOiBOZXcgZnVuY3Rpb25zLgoJKHBzX3BhcnNlcl9za2lwX1BTX3Rva2VuKTogTmV3IGZ1bmN0aW9uLiAgVGhpcyBpcyBhIGJldHRlcgoJcmVwbGFjZW1lbnQgb2YuLi4KCShwc19wYXJzZXJfc2tpcF9hbHBoYSk6IFJlbW92ZWQuCgkocHNfcGFyc2VyX3RvX3Rva2VuLCBwc19wYXJzZXJfdG9fdG9rZW5fYXJyYXkpOiBVcGRhdGVkLgoJKFQxUmFkaXgpOiBSZXdyaXR0ZW4sIHVzaW5nIGBmdF9jaGFyX3RhYmxlJy4KCSh0MV90b2ludCk6IFJlbmFtZWQgdG8uLi4KCShwc190b2ludCk6IFRoaXMuICBVcGRhdGUgYWxsIGNhbGxlcnMuCglVc2UgYGZ0X2NoYXJfdGFibGUnLgoJKHBzX3RvYnl0ZXMpOiBBZGQgcGFyYW1ldGVyIHRvIGhhbmRsZSBkZWxpbWl0ZXJzIGFuZCBjaGFuZ2Ugc29tZQoJYXJndW1lbnQgdHlwZXMuCglVc2UgYGZ0X2NoYXJfdGFibGUnLgoJKHQxX3RvZml4ZWQpOiBSZW5hbWVkIHRvLi4uCgkocHNfdG9maXhlZCk6IFRoaXMuICBVcGRhdGUgYWxsIGNhbGxlcnMuCglVc2UgYGZ0X2NoYXJfdGFibGUnLgoJKHQxX3RvY29vcmRhcnJheSk6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCShwc190b2Nvb3JkYXJyYXkpOiBUaGlzLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKHQxX3RvZml4ZWRhcnJheSk6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCShwc190b2ZpeGVkYXJyYXkpOiBUaGlzLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKHQxX3RvYm9vbCk6IFJlbmFtZWQgdG8uLi4KCShwc190b2Jvb2wpOiBUaGlzLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKHBzX3BhcnNlcl9sb2FkX2ZpZWxkKTogVXBkYXRlZC4KCShwc19wYXJzZXJfbG9hZF9maWVsZF90YWJsZSk6IFVzZSBgVDFfTUFYX1RBQkxFX0VMRU1FTlRTJwoJZXZlcnl3aGVyZS4KCShwc19wYXJzZXJfdG9faW50LCBwc19wYXJzZXJfdG9fZml4ZWQsIHBzX3BhcnNlcl90b19jb29yZF9hcnJheSwKCXBzX3BhcnNlcl90b19maXhlZF9hcnJheSk6IFNraXAgc3BhY2VzLiAgVXBkYXRlZC4KCShwc19wYXJzZXJfdG9fYnl0ZXMpOiBBZGQgcGFyYW1ldGVyIHRvIGhhbmRsZSBkZWxpbWl0ZXJzIGFuZCBjaGFuZ2UKCXNvbWUgYXJndW1lbnQgdHlwZXMuICBVcGRhdGVkLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3BhcnNlX2RpY3QpOiBVcGRhdGVkLgoJKiBzcmMvY2lkL2NpZHBhcnNlLmMgKGNpZF9wYXJzZXJfbmV3KTogQ2hlY2sgd2hldGhlciB0aGUgYFN0YXJ0RGF0YScKCXRva2VuIHdhcyByZWFsbHkgZm91bmQuCgkqIHNyYy9jaWQvY2lkcGFyc2UuaCAoY2lkX3BhcnNlcl9za2lwX2FscGhhKTogVXBkYXRlZCBhbmQgcmVuYW1lZAoJdG8uLi4KCShjaWRfcGFyc2VyX3NraXBfUFNfdG9rZW4pOiBUaGlzLgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuaCAoVDFfUGFyc2VyUmVjKTogVXNlIGBGVF9Cb29sJyBmb3IgYm9vbGVhbgoJZmllbGRzLgoJKFQxX1NraXBfQWxwaGEpOiBSZXBsYWNlZCB3aXRoLi4uCgkoVDFfU2tpcF9QU19Ub2tlbik6IFRoaXMgbmV3IG1hY3JvLgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChoZXhhX3ZhbHVlKTogUmVtb3ZlZC4KCShUMV9HZXRfUHJpdmF0ZV9EaWN0KTogVXNlIGBmdF9pc3hkaWdpdCcgYW5kCglgcHNhdXgtPnBzX3BhcnNlcl9mdW5jc190b19ieXRlcycgZm9yIGhhbmRsaW5nIEFTQ0lJIGhleGFkZWNpbWFsCgllbmNvZGluZy4KCUFmdGVyIGRlY3J5cHRpbmcsIHJlcGxhY2UgdGhlIGZvdXIgcmFuZG9tIGJ5dGVzIGF0IHRoZSBiZWdpbm5pbmcKCXdpdGggd2hpdGVzcGFjZS4KCSogc3JjL3R5cGUxL3QxbG9hZC5jICh0MV9hbGxvY2F0ZV9ibGVuZCk6IFVzZSBwcm9wZXIgZXJyb3IgdmFsdWVzLgoJKHBhcnNlcl9ibGVuZF9kZXNpZ25fcG9zaXRpb25zLCBwYXJzZV9ibGVuZF9kZXNpZ25fbWFwLAoJcGFyc2Vfd2VpZ2h0X3ZlY3Rvcik6IFVwZGF0ZWQuCgkoaXNfc3BhY2UpOiBIYW5kbGUgYFxmJyBhbHNvLgoJKGlzX25hbWVfY2hhcik6IFJlbW92ZWQuCgkocmVhZF9iaW5hcnlfZGF0YSk6IFVwZGF0ZWQuCgkocGFyc2VfZW5jb2RpbmcpOiBVc2UgYGZ0X2lzZGlnaXQnLgoJVXBkYXRlZC4KCShwYXJzZV9zdWJycyk6IFVwZGF0ZWQuCgkoVEFCTEVfRVhURU5EKTogTmV3IG1hY3JvLgoJKHBhcnNlX2NoYXJzdHJpbmdzKTogVXBkYXRlZC4KCVByb3ZpZGUgYSB3b3JrYXJvdW5kIGZvciBidWdneSBmb250cyB3aGljaCBoYXZlIG1vcmUgZW50cmllcyBpbiB0aGUKCS9DaGFyU3RyaW5ncyBkaWN0aW9uYXJ5IHRoZW4gZXhwZWN0ZWQ7IHRoZSBmdW5jdGlvbiBub3cgYWRkcyBzb21lCglzbG90cyBhbmQgc2tpcHMgZW50cmllcyB3aGljaCBzdGlsbCBleGNlZWQgdGhlIG5ldyBsaW1pdC4KCShwYXJzZV9kaWN0KTogVXBkYXRlZC4KCVRlcm1pbmF0ZSBvbiB0aGUgdG9rZW4gYGNsb3NlZmlsZScuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKFQxX1NraXBfQWxwaGEpOiBSZXBsYWNlZCB3aXRoLi4uCgkoVDFfU2tpcF9QU19Ub2tlbik6IFRoaXMgbmV3IG1hY3JvLiAgVXBkYXRlZCBhbGwgY2FsbGVycy4KCSh0NDJfcGFyc2VfZW5jb2RpbmcpOiBVc2UgYGZ0X2lzZGlnaXQnLgoKCgkqIHNyYy9iYXNlL2Z0bW0uYyAoZnRfZmFjZV9nZXRfbW1fc2VydmljZSk6IFJldHVybiBGVF9FcnJfT0sgaWYKCXN1Y2Nlc3MuCgoyMDAzLTEwLTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kdWxlLmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZGFwaS5oOiBUaGlzIHRvIGF2b2lkIGR1cGxpY2F0ZSBmaWxlIG5hbWVzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9NT0RVTEVfSCk6IFVwZGF0ZWQuCgoyMDAzLTEwLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX09yaWVudGF0aW9uRXh0cmVtdW1SZWMsCglGVF9PdXRsaW5lX0dldF9PcmllbnRhdGlvbik6IFRyaXZpYWwgdHlwbyBmaXhlcyB0byBtYWtlIGl0IGNvbXBpbGUuCgoyMDAzLTEwLTAyICBNYXJrdXMgRi5YLkouIE9iZXJodW1lciAgPG1hcmt1c0BvYmVyaHVtZXIuY29tPgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGVF9XaW5GTlRfSGVhZGVyUmVjKTogYGNvbG9yX3RhYmxlX29mZnNldCcKCWhhcyBmb3VyIGJ5dGVzLCBub3QgdHdvLgoJRml4IGFsbCB1c2Vycy4KCShmbnRfZm9udF9sb2FkLCBGTlRfTG9hZF9HbHlwaCk6IEFkZCBtb3JlIGZvbnQgdmFsaWRpdHkgdGVzdHMuCgoyMDAzLTEwLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2ZpdC8qOiBBZGRpbmcgZmlyc3Qgc291cmNlIGZpbGVzIG9mIHRoZSBuZXcgbXVsdGktc2NyaXB0CglgYXV0by1maXR0ZXInLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmggKEZUX09yaWVudGF0aW9uKTogTmV3IGVudW1lcmF0aW9uLgoJKEZUX091dGxpbmVfR2V0X09yaWVudGF0aW9uKTogTmV3IGRlY2xhcmF0aW9uLgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PcmllbnRhdGlvbkV4dHJlbXVtUmVjKTogTmV3IHN0cnVjdHVyZS4KCShmdF9vcmllbnRhdGlvbl9leHRyZW11bV9jb21wdXRlKTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbi4KCShGVF9PdXRsaW5lX0dldF9PcmllbnRhdGlvbik6IE5ldyBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSBmaWxsCglvcmllbnRhdGlvbiBvZiBhIGdpdmVuIGdseXBoIG91dGxpbmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oIChGVF9GQUNFX0xPT0tVUF9TRVJWSUNFKTogRml4ZWQKCXRyaXZpYWwgYnVnIHdoaWNoIGNvdWxkIGNyYXNoIHRoZSBmb250IGVuZ2luZSB3aGVuIGEgY2FjaGVkIHNlcnZpY2UKCXBvaW50ZXIgd2FzIHJldHJpZXZlZC4KCjIwMDMtMDktMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfcGFyc2VfZGljdCk6IFNraXAgdG9rZW4gaWYgbm8ga2V5d29yZCBpcwoJZm91bmQuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChJU19UMV9XSElURVNQQUNFLCBJU19UMV9MSU5FU1BBQ0UsCglJU19UMV9TUEFDRSk6IFJlbW92ZWQuCgkoUEZCX1RhZyk6IFJlbW92ZWQuCgkocmVhZF9wZmJfdGFnKTogRG9uJ3QgdXNlIFBGQl9UYWcuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9pc19zcGFjZSk6IEhhbmRsZSBgXGYnIGFsc28uCgkodDQyX3BhcnNlX2VuY29kaW5nKTogSGFuZGxlIHN5bnRoZXRpYyBmb250cy4KCjIwMDMtMDktMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oOiBEb24ndCBpbmNsdWRlCglGVF9JTlRFUk5BTF9PQkpFQ1RTX0ggYnV0IEZUX0lOVEVSTkFMX1NFUlZJQ0VfSC4KCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jOiBEb24ndCBpbmNsdWRlCglGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCjIwMDMtMDktMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBuZXcgc2VydmljZSB0byBoYW5kbGUgZ2x5cGggbmFtZSBkaWN0aW9uYXJpZXMsIHJlcGxhY2luZyB0aGUKCW9sZCBpbnRlcm5hbCBoZWFkZXIgbmFtZWQgYHBzbmFtZXMuaCcgYnkgYHNlcnZpY2VzL3N2cHNuYW1lLmgnLgoJTm90ZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IGZyb20gYHNlcnZpY2VzL3N2cG9zdG5tLmgnIHdoaWNoIG9ubHkKCWhhbmRsZXMgdGhlIHJldHJpZXZhbCBvZiBQb3N0U2NyaXB0IGZvbnQgbmFtZXMgZm9yIGEgZ2l2ZW4gZmFjZS4KCShTaG91bGQgd2UgbWVyZ2UgdGhlc2UgdHdvIHNlcnZpY2VzIGludG8gYSBzaW5nbGUgaGVhZGVyPykKCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNuYW1lcy5oOiBSZW1vdmVkLiAgTW9zdCBvZiBpdHMKCWNvbnRlbnRzIGlzIG1vdmVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc25hbWUuaDogTmV3IGZpbGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cG9zdG5tLmgKCShGVF9TRVJWSUNFX0lEX1BPU1RTQ1JJUFRfTkFNRSk6IFJlcGxhY2VkIHdpdGguLi4KCShGVF9TRVJWSUNFX0lEX1BPU1RTQ1JJUFRfRk9OVF9OQU1FKTogTmV3IG1hY3JvLgoJKFBzTmFtZSk6IFNlcnZpY2UgbmFtZWQgY2hhbmdlZCB0by4uLgoJKFBzRm9udE5hbWUpOiBUaGlzLgoJVXBkYXRlZCBgRlRfU2VydmljZV9Qc05hbWUnIC0+IGBGVF9TZXJ2aWNlX1BzRm9udE5hbWUnIGFuZAoJYFBPU1RTQ1JJUFRfTkFNRScgLT4gYFBPU1RTQ1JJUFRfRk9OVF9OQU1FJyBldmVyeXdoZXJlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oCgkoRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IKTogUmVtb3ZlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oOiBJbmNsdWRlCglGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCShUMV9EZWNvZGVyUmVjKTogVXBkYXRlZCB0eXBlIG9mIGBwc25hbWVzJy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmg6IERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSCBidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCglJbmNsdWRlIEZUX0lOVEVSTkFMX09CSkVDVFNfSC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90NDJ0eXBlcy5oOiBEb24ndCBpbmNsdWRlCglGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0guCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9GYWNlUmVjKTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX0ZBQ0VfRklORF9TRVJWSUNFKTogQ2hhbmdlZAoJb3JkZXIgb2YgcGFyYW1ldGVycy4gIEFsbCBjYWxsZXJzIHVwZGF0ZWQuCgkoRlRfRkFDRV9GSU5EX0dMT0JBTF9TRVJWSUNFKTogTmV3IG1hY3JvIHRvIGxvb2sgdXAgYSBzZXJ2aWNlCglnbG9iYWxseSwgY2hlY2tpbmcgYWxsIG1vZHVsZXMuCgkoRlRfU2VydmljZUNhY2hlUmVjKTogVXBkYXRlZC4KCShGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSCk6IE5ldyBtYWNybyBmb3IgYWNjZXNzaW5nCglgc3Zwc25hbWUuaCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvYmFzZS9mdG9ianMuYwoJKGZ0X21vZHVsZV9nZXRfc2VydmljZSk6IE5ldyBmdW5jdGlvbi4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0gKCWJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCShjZmZfZ2V0X2dseXBoX25hbWUsIGNmZl9nZXRfbmFtZV9pbmRleCk6IFVzZSBuZXcgUE9TVFNDUklQVF9OQU1FUwoJc2VydmljZS4KCSogc3JjL2NmZi9jZmZjbWFwLmMgKGNmZl9jbWFwX3VuaWNvZGVfaW5pdCk6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZmxvYWQuaDogIERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSCBidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkoY2ZmX2luZGV4X2dldF9zaWRfc3RyaW5nKTogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZvYmpzLmM6ICBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSAoJYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKGNmZl9mYWNlX2luaXQpOiBVc2UgbmV3IFBPU1RTQ1JJUFRfTkFNRVMgc2VydmljZS4KCSogc3JjL2NmZi9jZmZvYmpzLmg6ICBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSAoJYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoKCSogc3JjL2NpZC9jaWRvYmpzLmM6ICBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSAoJYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKGNpZF9mYWNlX2luaXQpOiBVc2UgbmV3IFBPU1RTQ1JJUFRfTkFNRVMgc2VydmljZS4KCSogc3JjL2NpZC9jaWRyaXZlci5jOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCgkqIHNyYy9wc2F1eC90MWNtYXAuYyAodDFfY21hcF9zdGRfaW5pdCwgdDFfY21hcF91bmljb2RlX2luaXQpOiBVc2UKCW5ldyBQT1NUU0NSSVBUX05BTUVTIHNlcnZpY2UuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5oICh0MV9sb29rdXBfZ2x5cGhfYnlfc3RkY2hhcmNvZGUsCgl0MV9kZWNvZGVfaW5pdCk6IFVzZSBuZXcgUE9TVFNDUklQVF9OQU1FUyBzZXJ2aWNlLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmgsIHNyYy9wc2F1eC90MWRlY29kZS5oOiBEb250JyBpbmNsdWRlCglGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0guCgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCShwc19idWlsZF91bmljb2RlX3RhYmxlKTogUmVuYW1lZCB0by4uLgoJKHBzX3VuaWNvZGVzX2luaXQpOiBUaGlzLgoJKHBzX2xvb2t1cF91bmljb2RlKTogUmVuYW1lZCB0by4uLgoJKHBzX3VuaWNvZGVzX2NoYXJfaW5kZXgpOiBUaGlzLgoJKHBzX25leHRfdW5pY29kZSk6IFJlbmFtZWQgdG8uLi4KCShwc191bmljb2Rlc19jaGFyX25leHQpOiBUaGlzLgoJKHBzbmFtZXNfaW50ZXJmYWNlKTogVXBkYXRlZC4KCShwc25hbWVzX3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkocHNuYW1lc19nZXRfc2VydmljZSk6IE5ldyBmdW5jdGlvbi4KCShwc25hbWVzX21vZHVsZV9jbGFzcyk6IFVwZGF0ZWQuCgoJKiBzcmMvc2ZudC9zZm9ianMuYzogRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0gKCWJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCShzZm50X2luaXRfZmFjZSk6IFVzZSBuZXcgUE9TVFNDUklQVF9OQU1FUyBzZXJ2aWNlLgoJKiBzcmMvc2ZudC90dHBvc3QuYzogRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0gKCWJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCSh0dF9mYWNlX2dldF9wc19uYW1lKTogVXBkYXRlZC4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYzogIERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSCBidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYzogIERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSCBidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkqIHNyYy90eXBlMS90MW9ianMuYzogIERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSCBidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkoVDFfRmFjZV9Jbml0KTogVXNlIG5ldyBQT1NUU0NSSVBUX05BTUVTIHNlcnZpY2UuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMgKHQ0Ml9nZXRfcHNfbmFtZSk6IFJlbmFtZWQgdG8uLi4KCSh0NDJfZ2V0X3BzX2ZvbnRfbmFtZSk6IFRoaXMuCgkodDQyX3NlcnZpY2VfcHNfbmFtZSk6IFJlbmFtZWQgdG8uLi4KCSh0NDJfc2VydmljZV9wc19mb250X25hbWUpOiBUaGlzLgoJKHQ0Ml9zZXJ2aWNlcyk6IFVwZGF0ZWQuCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Jbml0KTogVXNlIG5ldyBQT1NUU0NSSVBUX05BTUVTCglzZXJ2aWNlLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuaDogIERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSCBidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HZXRfR2x5cGgpOiBEb24ndCBhY2Nlc3MgYHNsb3QnIGJlZm9yZQoJdGVzdGluZyBpdHMgdmFsaWRpdHkuICBSZXBvcnRlZCBieSBIZW5yeSBNYWRkb2NrcwoJPG1hZGRvY2tzQG1ldHNlcnZpY2UuY29tPi4KCjIwMDMtMDktMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX0ZBQ0VfRklORF9TRVJWSUNFKToKCUZpeCBjb21waWxhdGlvbiB3YXJuaW5nIChzL3BwdHIvUHB0ci8pLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9QRlJfSCwKCUZUX0lOVEVSTkFMX0ZOVF9UWVBFU19IKTogUmVtb3ZlZC4KCjIwMDMtMDktMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglNaWdyYXRpbmcgdGhlIFBGUiBhbmQgV0lORk5UIGRyaXZlcnMgdG8gdGhlIG5ldyBzZXJ2aWNlLWJhc2VkCglpbnRlcm5hbCBBUEkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmg6IFJlbW92ZWQuICBNb3N0IG9mIGl0cyBkYXRhCglhcmUgbW92ZWQgdG8gd2luZm50LmggYW5kLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z3aW5mbnQuaDogTmV3IGZpbGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3Bmci5oOiBSZW1vdmVkLiAgTW9zdCBvZiBpdHMgZGF0YSBhcmUKCW1vdmVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZwZnIuaDogTmV3IGZpbGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oIChGVF9GQUNFX0ZJTkRfU0VSVklDRSwKCUZUX0ZBQ0VfTE9PS1VQX1NFUlZJQ0UpOiBTaW1wbGlmeSBmaXggb2YgMjAwMy0wOS0xNiBieSByZW1vdmluZwoJcG9pbnRlciB0eXBlIGFyZ3VtZW50LgoJVXBkYXRlZCBhbGwgY2FsbGVycy4KCVVwZGF0ZSBtYWNybyBuYW1lcyBvZiBzZXJ2aWNlcyBoZWFkZXIgZmlsZXMuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2V0X05hbWVfSW5kZXgpOiBTaW1wbGlmaWVkIGNvZGUuCgoJKiBzcmMvYmFzZS9mdHBmci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfUEZSX0ggaW5zdGVhZCBvZgoJRlRfSU5URVJOQUxfUEZSX0guCgkoZnRfcGZyX2NoZWNrLCBGVF9HZXRfUEZSX01ldHJpY3MsIEZUX0dldF9QRlJfS2VybmluZywKCUZUX0dldF9QRlJfQWR2YW5jZSk6IFVzZSBzZXJ2aWNlcyBwcm92aWRlZCBpbiBgUEZSX01FVFJJQ1MnLgoKCSogc3JjL2Jhc2UvZnR3aW5mbnQuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1dJTkZOVF9IIGluc3RlYWQgb2YKCUZUX0lOVEVSTkFMX0ZOVF9UWVBFU19ILgoJKEZUX0dldF9XaW5GTlRfSGVhZGVyKTogVXNlIHNlcnZpY2UgcHJvdmlkZWQgaW4gYFdJTkZOVCcuCgoJKiBzcmMvcGZyL3BmcmRyaXZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QRlJfSCBhbmQKCUZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0ggaW5zdGVhZCBvZiBGVF9JTlRFUk5BTF9QRlJfSC4KCShwZnJfc2VydmljZV9iZGYpOiBVcGRhdGVkLgoJKHBmcl9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKHBmcl9nZXRfc2VydmljZSk6IE5ldyBmdW5jdGlvbi4KCShwZnJfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1dJTkZOVF9IIGFuZAoJRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSCBpbnN0ZWFkIG9mIEZUX0lOVEVSTkFMX0ZOVF9UWVBFU19ILgoJKHdpbmZudF9nZXRfaGVhZGVyLCB3aW5mbnRfZ2V0X3NlcnZpY2UpOiBOZXcgZnVuY3Rpb25zLgoJKHdpbmZudF9zZXJ2aWNlX3JlYyk6IE5ldyBzdHJ1Y3R1cmUgcHJvdmlkaW5nIFdJTkZOVCBzZXJ2aWNlcy4KCSh3aW5mbnRfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCSh3aW5mbnRfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5oOiBBZGQgbW9zdCBvZiB0aGUgcmVtb3ZlZCBmbnR0eXBlcy5oIGRhdGEuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChzZm50X3NlcnZpY2VfcHNfbmFtZSk6IEZpeCB0eXBvLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX3NlcnZpY2VfcHNfbmFtZSk6IEZpeCB0eXBvLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9jaWQvY2lkb2Jqcy5jLCBzcmMvcGZyL3BmcnNiaXQuYywKCXNyYy9wc2F1eC9wc29ianMuYywgc3JjL3NmbnQvc2ZvYmpzLmMsIHNyYy90cnVldHlwZS90dG9ianMuYywKCXNyYy90eXBlMS90MW9ianMuYywgc3JjL3R5cGU0Mi90NDJvYmpzLmM6IFJlbW92aW5nIHZhcmlvdXMgY29tcGlsZXIKCXdhcm5pbmdzLgoKMjAwMy0wOS0xOSAgRGF2aWQgQmV2YW4gIDxkYmV2YW5AZW10ZXguY29tPgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAocGZiX3RhZ19maWVsZHMpOiBSZW1vdmVkLgoJKHJlYWRfcGZiX3RhZyk6IEZpeCBjb2RlIHNvIHRoYXQgaXQgZG9lc24ndCBmYWlsIG9uIGVuZC1vZi1maWxlCglpbmRpY2F0b3IgKDB4ODAwMykuCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDMtMDktMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX0ZBQ0VfRklORF9TRVJWSUNFLAoJRlRfRkFDRV9MT09LVVBfU0VSVklDRSk6IEFkZCBwYXJhbWV0ZXIgdG8gcGFzcyBwb2ludGVyIHR5cGUuCglVZ2x5LCBJIGtub3csIGJ1dCB0aGlzIGlzIG5lZWRlZCBmb3IgY29tcGlsYXRpb24gd2l0aCBDKysgLS0KCW1heWJlIHNvbWVvbmUga25vd3MgYSBiZXR0ZXIgc29sdXRpb24/CglVcGRhdGVkIGFsbCBjYWxsZXJzLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OYW1lX0luZGV4LCBGVF9HZXRfR2x5cGhfTmFtZSk6IFJlbW92ZQoJQysrIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL2Jhc2UvZnRiZGYuYyAoRlRfR2V0X0JERl9DaGFyc2V0X0lELCBGVF9HZXRfQkRGX1Byb3BlcnR5KToKCUZpeCBvcmRlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIEZUX0ZBQ0VfRklORF9TRVJWSUNFLgoKMjAwMy0wOS0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUF2b2lkIGhlYWRlciBmaWxlcyB3aXRoIGlkZW50aWNhbCBuYW1lcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvYmRmLmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmJkZi5oOiBUaGlzLgoJQWRkIGNvcHlyaWdodCBub3RpY2UuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvZ2x5ZmRpY3QuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Z2xkaWN0Lmg6IFRoaXMuCglBZGQgY29weXJpZ2h0IG5vdGljZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9tdWx0bWFzdC5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZtbS5oOiBUaGlzLgoJQWRkIGNvcHlyaWdodCBub3RpY2UuCglBZGQgRlRfQkVHSU5fSEVBREVSIGFuZCBGVF9FTkRfSEVBREVSLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3NmbnQuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2c2ZudC5oOiBUaGlzLgoJQWRkIGNvcHlyaWdodCBub3RpY2UuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvcG9zdG5hbWUuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cG9zdG5tLmg6IFRoaXMuCglBZGQgY29weXJpZ2h0IG5vdGljZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy94Zjg2bmFtZS5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z4Zjg2bm0uaDogVGhpcy4KCUFkZCBjb3B5cmlnaHQgbm90aWNlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaDogQWRkIEZUX0JFR0lOX0hFQURFUiBhbmQKCUZUX0VORF9IRUFERVIuCglBZGQgY29weXJpZ2h0IG5vdGljZS4KCVVwZGF0ZSBtYWNybyBuYW1lcyBvZiBzZXJ2aWNlcyBoZWFkZXIgZmlsZXMuCgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKFNFUlZJQ0VTX0RJUik6IE5ldyB2YXJpYWJsZS4KCShCQVNFX0gpOiBBZGQgc2VydmljZXMgaGVhZGVyIGZpbGVzLgoKMjAwMy0wOS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3RvcGxldmVsLm1rIChkaXN0Y2xlYW4pOiBSZW1vdmUgYGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5wYycuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IERvbid0IGxvYWQgaGVhZGVycyB0d2ljZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX1NFUlZJQ0VfU0ZOVF9IKTogTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdG9ianMuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1NGTlRfSC4KCgkqIHNyYy9jZmYvY2ZmY21hcC5jOiBJbmNsdWRlIGBjZmZlcnJzLmgnLgoJKiBzcmMvcGZyL3BmcmRyaXZyLmM6IEluY2x1ZGUgYHBmcmVycm9yLmgnLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jOiBJbmNsdWRlIGBzZmVycm9ycy5oJy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5oOiBBZGQgZGVjbGFyYXRpb24gZm9yIGBwc19wYXJzZXJfdG9fYnl0ZXMnLgoKMjAwMy0wOS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUludHJvZHVjaW5nIHRoZSBjb25jZXB0IG9mIGBtb2R1bGUgc2VydmljZXMnLiAgVGhpcyBpcyB0aGUgZmlyc3QKCXN0ZXAgdG93YXJkcyBhIG1hc3NpdmUgc2ltcGxpZmljYXRpb24gb2YgdGhlIGVuZ2luZSdzIGludGVybmFscywgaW4KCW9yZGVyIHRvIGdldCByaWQgb2YgdmFyaW91cyBudW1iZXJzIG9mIGhhY2tzLgoKCU5vdGUgdGhhdCB0aGVzZSBjaGFuZ2VzIHdpbGwgYnJlYWsgc291cmNlICYgYmluYXJ5IGNvbXBhdGliaWxpdHkgZm9yCglhdXRob3JzIG9mIGV4dGVybmFsIGZvbnQgZHJpdmVycy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmggKEZUX0JFR0lOX1NUTU5ULCBGVF9FTkRfU1RNTlQsCglGVF9EVU1NWV9TVE1OVCk6IE5ldyBtYWNyb3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oOiBOZXcgZmlsZSwgY29udGFpbmluZyB0aGUgbmV3CglzdHJ1Y3R1cmVzIGFuZCBtYWNyb3MgdG8gcHJvdmlkZSBgc2VydmljZXMnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9FWFRFTlNJT05fSCwKCUZUX0lOVEVSTkFMX0VYVEVORF9ILCBGVF9JTlRFUk5BTF9IQVNIX0gsIEZUX0lOVEVSTkFMX09CSkVDVF9IKToKCVJlbW92ZWQsIG9ic29sZXRlLgoJKEZUX0lOVEVSTkFMX1NFUlZJQ0VfSCk6IE5ldyBtYWNybyBmb3IgYGZ0c2Vydi5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvYmRmLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL2dseWZkaWN0LmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3Bvc3RuYW1lLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3hmODZuYW1lLmg6IE5ldyBmaWxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtbS5oIChGVF9HZXRfTU1fRnVuYywgRlRfU2V0X01NX0Rlc2lnbl9GdW5jLAoJRlRfU2V0X01NX0JsZW5kX0Z1bmMpOiBGdW5jdGlvbiBwb2ludGVycyBtb3ZlZCAoaW4gbW9kaWZpZWQgZm9ybSkKCXRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvbXVsdG1hc3QuaDogTmV3IGZpbGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCAoU0ZOVF9JbnRlcmZhY2UpOiBgZ2V0X2ludGVyZmFjZScKCWlzIG5vdyBvZiB0eXBlIGBGVF9Nb2R1bGVfUmVxdWVzdGVyJy4KCShTRk5UX0dldF9JbnRlcmZhY2VfRnVuYywgU0ZOVF9Mb2FkX1RhYmxlX0Z1bmMpOiBGdW5jdGlvbiBwb2ludGVycwoJbW92ZWQgKGluIG1vZGlmaWVkIGZvcm0pIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2Vydmllcy9zZm50Lmg6IE5ldyBmaWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIChGVF9HZXRfU2ZudF9UYWJsZV9GdW5jKTogRnVuY3Rpb24KCXBvaW50ZXIgbW92ZWQgKGluIG1vZGlmaWVkIGZvcm0pIHRvIGBzZXJ2aWNlcy9zZm50LmgnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZHVsZS5oIChGVF9Nb2R1bGVfSW50ZXJmYWNlKTogTWFrZSBpdCBhCglhIHR5cGVkZWYgdG8gYEZUX1BvaW50ZXInLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0ZhY2VSZWMpOiBBZGQKCWBwb3N0c2NyaXB0X25hbWUnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9GYWNlX0ludGVybmFsUmVjKTogUmVtb3ZlCglgcG9zdHNjcmlwdF9uYW1lJy4KCUFkZCBgc2VydmljZXMnIGVsZW1lbnQuCgkoRlRfTGlicmFyeVJlYyk6IFJlbW92ZSBgbWV0YV9jbGFzcycuCgoJKiBzcmMvYmFzZS9mdGJkZi5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfQkRGX0guCgkodGVzdF9mb250X3R5cGUpOiBSZW1vdmVkLgoJKEZUX0dldF9CREZfQ2hhcnNldF9JRCwgRlRfR2V0X0JERl9Qcm9wZXJ0eSk6IFVzZSBzZXJ2aWNlcwoJcHJvdmlkZWQgaW4gYEZUX1NFUlZJQ0VfSURfQkRGJy4KCgkqIHNyYy9iYXNlL2Z0bW0uYzogSW5jbHVkZSBGVF9TRVJWSUNFX01VTFRJUExFX01BU1RFUlNfSC4KCShmdF9mYWNlX2dldF9tbV9zZXJ2aWNlKTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbiB0byBnZXQgc2VydmljZXMKCWZyb20gYEZUX1NFUlZJQ0VfSURfTVVMVElfTUFTVEVSUycuCgkoRlRfR2V0X011bHRpX01hc3RlciwgRlRfU2V0X01NX0Rlc2lnbl9Db29yZGluYXRlcywKCUZUX1NldF9NTV9CbGVuZF9Db29yZGluYXRlcyk6IFVzZSBgZnRfZmFjZV9nZXRfbW1fc2VydmljZScuCgoJKiBzcmMvYmFzZS9mdG9ianMuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRV9IIGFuZAoJRlRfU0VSVklDRV9HTFlQSF9ESUNUX0guCgkoZnRfc2VydmljZV9saXN0X2xvb2t1cCk6IE5ldyBmdW5jdGlvbiB0byBnZXQgYSBzcGVjaWZpYyBzZXJ2aWNlLgoJKGRlc3Ryb3lfZmFjZSk6IFVwZGF0ZWQuCgkoTWFjX1JlYWRfUE9TVF9SZXNvdXJjZSk6IFNpbXBsaWZ5IHNvbWUgY29kZS4KCShJc01hY1Jlc291cmNlKTogRml4IHdhcm5pbmdzLgoJKEZUX0dldF9OYW1lX0luZGV4LCBGVF9HZXRfR2x5cGhfTmFtZSk6IFVzZSBzZXJ2aWNlcyBwcm92aWRlZCBpbgoJYEZUX1NFUlZJQ0VfSURfR0xZUEhfRElDVCcuCgkoRlRfR2V0X1Bvc3RzY3JpcHRfTmFtZSk6IFVzZSBzZXJ2aWNlIHByb3ZpZGVkIGluCglgRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX05BTUUnLgoJKEZUX0dldF9TZm50X1RhYmxlLCBGVF9Mb2FkX1NmbnRfVGFibGUpOiBVc2Ugc2VydmljZXMgcHJvdmlkZWQgaW4KCWBGVF9TRVJWSUNFX0lEX1NGTlRfVEFCTEUnLgoKCSogc3JjL2Jhc2UvZnR4Zjg2LmM6IEluY2x1ZGUgRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSC4KCShGVF9HZXRfWDExX0ZvbnRfRm9ybWF0KTogVXNlIHNlcnZpY2UgcHJvdmlkZWQgaW4KCWBGVF9TRVJWSUNFX0lEX1hGODZfTkFNRScuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9CREZfSCBhbmQKCUZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0guCgkoYmRmX2dldF9jaGFyc2V0X2lkKTogTmV3IGZ1bmN0aW9uLgoJKGJkZl9zZXJ2aWNlX2JkZik6IE5ldyBzdHJ1Y3R1cmUgcHJvdmlkaW5nIEJERiBzZXJ2aWNlcy4KCShiZGZfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShiZGZfZHJpdmVyX3JlcXVlc3Rlcik6IFVzZSBgZnRfc2VydmljZV9saXN0X2xvb2t1cCcuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSCBhbmQKCUZUX1NFUlZJQ0VfR0xZUEhfRElDVF9ILgoJKGNmZl9zZXJ2aWNlX2dseXBoX2RpY3QpOiBOZXcgc3RydWN0dXJlIHByb3ZpZGluZyBDRkYgc2VydmljZXMuCgkoY2ZmX3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkoY2ZmX2dldF9pbnRlcmZhY2UpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCSogc3JjL2NpZC9jaWRyaXZlci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FX0ggYW5kCglGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9ILgoJKGNpZF9zZXJ2aWNlX3BzX25hbWUpOiBOZXcgc3RydWN0dXJlIHByb3ZpZGluZyBDSUQgc2VydmljZXMuCgkoY2lkX3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkoY2lkX2dldF9pbnRlcmZhY2UpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCSogc3JjL3BjZi9wY2Zkcml2ci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfQkRGX0ggYW5kCglGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9ILgoJKHBjZl9zZXJ2aWNlX2JkZik6IE5ldyBzdHJ1Y3R1cmUgcHJvdmlkaW5nIFBDRiBzZXJ2aWNlcy4KCShwY2Zfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShwY2ZfZHJpdmVyX3JlcXVlc3Rlcik6IFVzZSBgZnRfc2VydmljZV9saXN0X2xvb2t1cCcuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfR0xZUEhfRElDVF9IIGFuZAoJRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVfSC4KCShnZXRfc2ZudF9nbHlwaF9uYW1lKTogUmVuYW1lZCB0by4uLgoJKHNmbnRfZ2V0X2dseXBoX25hbWUpOiBUaGlzLgoJKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IFJlbmFtZWQgdG8uLi4KCShzZm50X2dldF9wc19uYW1lKTogVGhpcy4KCVVwZGF0ZWQuCgkoc2ZudF9zZXJ2aWNlX2dseXBoX2RpY3QsIHNmbnRfc2VydmljZV9wc19uYW1lKTogTmV3IHN0cnVjdHVyZXMKCXByb3ZpZGluZyBzZXJ2aWNlcy4KCShzZm50X3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkoc2ZudF9nZXRfaW50ZXJmYWNlKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0guCgkodHRfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCSh0dF9nZXRfaW50ZXJmYWNlKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfTVVMVElQTEVfTUFTVEVSU19ILAoJRlRfU0VSVklDRV9HTFlQSF9ESUNUX0gsIEZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0gsIGFuZAoJRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVfSC4KCSh0MV9zZXJ2aWNlX2dseXBoX2RpY3QsIHQxX3NlcnZpY2VfcHNfbmFtZSwKCXQxX3NlcnZpY2VfbXVsdGlfbWFzdGVycyk6IE5ldyBzdHJ1Y3R1cmVzIHByb3ZpZGluZyBUeXBlIDEgc2VydmljZXMuCgkodDFfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShHZXRfSW50ZXJmYWNlKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9ILAoJRlRfU0VSVklDRV9HTFlQSF9ESUNUX0gsIGFuZCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRV9ILgoJKHQ0Ml9zZXJ2aWNlX2dseXBoX2RpY3QsIHQ0Ml9zZXJ2aWNlX3BzX25hbWUpOiBOZXcgc3RydWN1cmVzCglwcm92aWRpbmcgVHlwZSA0MiBzZXJ2aWNlcy4KCSh0NDJfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShUNDJfR2V0X0ludGVyZmFjZSk6IFVzZSBgZnRfc2VydmljZV9saXN0X2xvb2t1cCcuCgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIHZlcnNpb24gbnVtYmVycyBmb3IgMi4xLjYsIGFuZAoJcmVtb3Zpbmcgb2Jzb2xldGUgd2FybmluZ3MgaW4gdGhlIGRvY3VtZW50YXRpb24uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gNi4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBTZXQgdG8gOTo1OjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y29yZS5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGV4Y2VwdC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGhhc2guaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmplY3QuaDogUmVtb3ZlZC4gIE9ic29sZXRlLgoKMjAwMy0wOS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGluZyBQRlIga2VybmluZyBzdXBwb3J0LiAgVGhlIHRhYmxlcyB3aXRoaW4gdGhlIGZvbnQgZmlsZSBjb250YWluCgkoY2hhcmNvZGUsY2hhcmNvZGUpIGtlcm5pbmcgcGFpcnMsIHdlIG5lZWQgdG8gY29udmVydCB0aGVtIHRvCgkoZ2luZGV4LGdpbmRleCkuCgoJKiBzcmMvYmFzZS9mdHBmci5jIChmdF9wZnJfY2hlY2spOiBGaXggc2VyaW91cyB0eXBvLgoJKiBzcmMvcGZyL3ByZmxvYWQuYzogUmVtb3ZlIGRlYWQgY29kZS4KCShwZnJfZ2V0X2dpbmRleCwgcGZyX2NvbXBhcmVfa2Vybl9wYWlycywgcGZyX3NvcnRfa2VybmluZ19wYWlycyk6CglOZXcgZnVuY3Rpb25zLgoJKHBmcl9waHlfZm9udF9kb25lKTogRnJlZSBga2Vybl9wYWlycycuCgkocGZyX3BoeV9mb250X2xvYWQpOiBDYWxsIGBwZnJfc29ydF9rZXJuaW5nX3BhaXJzJy4KCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2dldF9rZXJuaW5nKTogRml4IGtlcm5pbmcgZXh0cmFjdGlvbi4KCSogc3JjL3Bmci9wZnJ0eXBlcy5oIChQRlJfS0VSTl9QQUlSX0lOREVYKTogTmV3IG1hY3JvLgoJKFBGUl9LZXJuUGFpclJlYyk6IE1ha2UgYGtlcm5pbmcnIGFuIEZUX0ludC4KCShQRlJfUGh5Rm9udFJlYyk6IE5ldyBlbGVtZW50IGBrZXJuX3BhaXJzJy4KCShQRlJfS2VybkZsYWdzKTogVmFsdWVzIG9mIFBGUl9LRVJOXzJCWVRFX0NIQVIgYW5kCglQRlJfS0VSTl8yQllURV9BREogd2VyZSBlcnJvbmVvdXNseSByZXZlcnNlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRvcHRpb24uaDogQ29tbWVudGluZyBvdXQgdGhlIG1hY3JvCglUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSLgoKMjAwMy0wOS0wMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjUgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMy0wOC0zMSAgTWFuaXNoIFNpbmdoICA8eW9zaEBnaW1wLm9yZz4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcmVhZHN0cmVhbSk6IERvbid0IHVzZSBGVF9NRU1fQ09QWSBidXQKCUZUX01FTV9NT1ZFLgoKMjAwMy0wOC0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9FTkNPRElOR19TSklTLCBGVF9FTkNPRElOR19HQjIzMTIsCglGVF9FTkNPRElOR19CSUc1LCBGVF9FTkNPRElOR19XQU5TVU5HLCBGVF9FTkNPRElOR19KT0hBQik6IE5ldwoJZW51bWVyYXRpb25zIG9mIEZUX0VuY29kaW5nLiAgVGhlIEZUX0VOQ09ESU5HX01TXyogdmFyaWFudHMgZXhjZXB0CglGVF9FTkNPRElOR19NU19TWU1CT0wgYXJlIG5vdyBkZXByZWNhdGVkLgoJVXBkYXRlZCBhbGwgdXNlcnMuCgkqIGRvY3MvQ0hBTkdFUzogRG9jdW1lbnQgaXQuCgoyMDAzLTA4LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBBY2NlcHQgbG93ZXJjYXNlIGNoYXJhY3RlcnMKCWZvciBzcGFjaW5nLgoKMjAwMy0wOC0yNyAgTWlrZSBGQUJJQU4gIDxtZmFiaWFuQHN1c2UuZGU+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCksIHNyYy9iZGYvYmRmZHJpdnIuYwoJKEJERl9GYWNlX0luaXQpOiBBY2NlcHQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgZm9yIHNsYW50IGFuZCB3ZWlnaHQuCgoyMDAzLTA4LTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBEaXNhYmxpbmcgVHJ1ZVR5cGUgYnl0ZWNvZGUKCWludGVycHJldGVyIHVudGlsIHRoZSBVTlBBVEVOVEVEX0hJTlRJTkcgd29ya3MgYXMgYWR2ZXJ0aXNlZC4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBVc2UgYHwnIGZvcgoJc2V0dGluZyBgbG9hZF9mbGFncycuCgoJKiBKYW1maWxlOiBBZGRpbmcgdGhlIGByZWZkb2MnIHRhcmdldCB0byB0aGUgSmFtZmlsZSBpbiBvcmRlciB0bwoJYnVpbGQgdGhlIEFQSSBSZWZlcmVuY2UgaW4gYGRvY3MvcmVmZXJlbmNlJyBhdXRvbWF0aWNhbGx5LgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oIChQU19Gb250SW5mb1JlYyksIHNyYy9jaWQvY2lkdG9rZW4uaCwKCXNyYy90eXBlMS90MXRva2Vucy5oLCBzcmMvdHlwZTQyL3Q0MnBhcnNlLmM6IFJlc2V0dGluZyB0aGUgdHlwZXMgb2YKCWBpdGFsaWNfYW5nbGUnLCBgdW5kZXJsaW5lX3Bvc2l0aW9uJywgYW5kIGB1bmRlcmxpbmVfdGhpY2tuZXNzJyB0bwoJdGhlaXIgcHJldmlvdXMgdmFsdWVzIChpLmUuLCBsb25nLCBzaG9ydCwgYW5kIHVzaG9ydCkgaW4gb3JkZXIgdG8KCWF2b2lkIGJyZWFraW5nIGJpbmFyeSBjb21wYXRpYmlsaXR5LgoKCSogaW5jbHVkZS9mcmVldHlwZS90dHVucGF0Lmg6IEZpeGluZyBkb2N1bWVudGF0aW9uIGNvbW1lbnQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLCBkZXZlbC9mdG9wdGlvbi5oCgkoVFRfQ09ORklHX09QVElPTl9PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkcpOiBSZXBsYWNlZAoJd2l0aC4uLgoJKFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HKTogVGhpcy4gIFVwZGF0ZWQgYWxsIHVzZXJzLgoJKFRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HKTogUmVtb3ZlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX0RFQlVHX0hPT0tfVFlQRTEpOiBSZW1vdmVkLgoJKEZUX0RFQlVHX0hPT0tfVU5QQVRFTlRFRF9ISU5USU5HKTogTmV3IG1hY3JvLiAgVXNlIHRoaXMgd2l0aAoJYEZUX1NldF9EZWJ1Z19Ib29rJyB0byBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSByZW1vdmVkCglUVF9DT05GSUdfT1BUSU9OX0ZPUkNFX1VOUEFURU5URURfSElOVElORy4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAodHRfZmFjZV9pbml0KTogVXNlCglgRlRfREVCVUdfSE9PS19VTlBBVEVOVEVEX0hJTlRJTkcnLgoKMjAwMy0wOC0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCksIHNyYy9jZmYvY2ZmZ2xvYWQuYwoJKGNmZl9zbG90X2xvYWQpLCBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9zbG90X2xvYWRfZ2x5cGgpOiBGaXgKCXByZXZpb3VzIGNoYW5nZS4KCjIwMDMtMDgtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpLCBzcmMvY2ZmL2NmZmdsb2FkLmMKCShjZmZfc2xvdF9sb2FkKSwgc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfc2xvdF9sb2FkX2dseXBoKTogQXBwbHkKCWZvbnQgbWF0cml4IHRvIGFkdmFuY2Ugd2lkdGggYWxzby4KCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMy0wNy0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBTZXQgdG8gOTo0OjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogVXBkYXRlZC4KCSogZG9jcy9DSEFOR0VTLCBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9HbHlwaFNsb3QpOiBDaGFuZ2UgMjAwMy0wNi0xNgoJYWxzbyBicmVha3MgYmluYXJ5IGNvbXBhdGliaWxpdHkuICBSZWludHJvZHVjZSBhbiB1bnNpZ25lZCBpbnRlZ2VyCglhdCB0aGUgb2xkIHBvc2l0aW9uIG9mIGBmbGFncycgY2FsbGVkIGByZXNlcnZlZCcuCgoyMDAzLTA3LTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWFrZSBBUEkgcmVmZXJlbmNlIHZhbGlkIEhUTUwgNC4wMSB0cmFuc2l0aW9uYWwuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5IChodG1sX2hlYWRlcl8xKTogQWRkIGRvY3R5cGUKCWFuZCBjaGFyc2V0LgoJKGh0bWxfaGVhZGVyXzIpOiBGaXggc3R5bGUgZWxlbWVudHMgYW5kIGFkZCBzb21lIG1vcmUuCglGaXggc3ludGF4LgoJKGJsb2NrX2hlYWRlciwgYmxvY2tfZm9vdGVyLCBkZXNjcmlwdGlvbl9oZWFkZXIsIGRlc2NyaXB0aW9uX2Zvb3RlciwKCW1hcmtlcl9oZWFkZXIsIG1hcmtlcl9mb290ZXIsIHNvdXJjZV9oZWFkZXIsIHNvdXJjZV9mb290ZXIsCgljaGFwdGVyX2hlYWRlcik6IERvbid0IHVzZSA8Y2VudGVyPi4uLjwvY2VudGVyPiBidXQgYGFsaWduPWNlbnRlcicKCXRhYmxlIGF0dHJpYnV0ZS4KCShjaGFwdGVyX2ludGVyLCBjaGFwdGVyX2Zvb3Rlcik6IEFkZCA8bGk+IGFuZCB1c2Ugc3BlY2lhbCA8dWw+CgljbGFzcy4KCVVzZSBkb3VibGUgcXVvdGVzIGFyb3VuZCB0YWJsZSB3aWR0aHMgZ2l2ZW4gaW4gcGVyY2VudC4KCShrZXl3b3JkX3ByZWZpeCwga2V5d29yZF9zdWZmaXgpOiBEb24ndCBjaGFuZ2UgZm9udCBjb2xvdXIgZGlyZWN0bHkKCWJ1dCB1c2UgYSBuZXcgPHNwYW4+IGNsYXNzLgoJKHNlY3Rpb25fc3lub3BzaXNfaGVhZGVyLCBzZWN0aW9uX3N5bm9wc2lzX2Zvb3Rlcik6IERvbid0IGNoYW5nZQoJY29sb3VyLgoJKGNvZGVfaGVhZGVyLCBjb2RlX2Zvb3Rlcik6IERvbid0IGNoYW5nZSBmb250IGNvbG91ciBkaXJlY3RseSBidXQKCXVzZSBhIHNwZWNpYWwgPHByZT4gY2xhc3MuCgkocHJpbnRfaHRtbF9maWVsZCk6IDx0cj4gZ2V0cyB0aGUgYHZhbGlnbicgYXR0cmlidXRlLCBub3QgPHRhYmxlPi4KCShwcmludF9odG1sX2ZpZWxkX2xpc3QpOiBEaXR0by4KCShpbmRleF9leGl0KTogRG9uJ3QgdXNlIDxjZW50ZXI+Li4uPC9jZW50ZXI+IGJ1dCBgYWxpZ249Y2VudGVyJwoJdGFibGUgYXR0cmlidXRlLgoJKHNlY3Rpb25fZW50ZXIpOiBEaXR0by4KCSh0b2NfZXhpdCk6IERvbid0IGVtaXQgPC90YWJsZT4uCgkoYmxvY2tfZW50ZXIpOiBVc2UgPGg0PjxhPiwgbm90IDxhPjxoND4uCgkoX19pbml0X18pOiBGaXggdGFnIG9yZGVyIGluIHNlbGYuaHRtbF9mb290ZXIuCgoyMDAzLTA3LTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJVGhpcyBjaGFuZ2UgcmVpbXBsZW1lbnRzIGZpeCBmcm9tIDIwMDMtMDUtMzAgd2l0aG91dCBicmVha2luZwoJYmluYXJ5IGNvbXBhdGliaWxpdHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX0ZvbnRJbmZvUmVjKTogYGl0YWxpY19hbmdsZScsCglgaXNfZml4ZWRfcGl0Y2gnLCBgdW5kZXJsaW5lX3Bvc2l0aW9uJywgYHVuZGVybGluZV90aGlja25lc3MnIGFyZQoJcmV2ZXJ0ZWQgdG8gYmUgbm9ybWFsIHZhbHVlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRmllbGRUeXBlKTogUmVtb3ZlCglgVDFfRklFTERfVFlQRV9CT09MX1AnLCBgVDFfRklFTERfVFlQRV9JTlRFR0VSX1AnLAoJYFQxX0ZJRUxEX1RZUEVfRklYRURfUCcsIGBUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDBfUCcuCgkoVDFfRklFTERfVFlQRV9CT09MX1AsIFQxX0ZJRUxEX05VTV9QLCBUMV9GSUVMRF9GSVhFRF9QLAoJVDFfRklFTERfRklYRURfMTAwMF9QKTogUmVtb3ZlZC4KCShUMV9GSUVMRF9UWVBFX0JPT0wpOiBSZW5hbWVkIHRvLi4uCgkoVDFfRklFTERfQk9PTCk6IE5ldyBtYWNyby4gIFVwZGF0ZWQgYWxsIGNhbGxlcnMuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmM6IGBpdGFsaWNfYW5nbGUnLCBgaXNfZml4ZWRfcGl0Y2gnLAoJYHVuZGVybGluZV9wb3NpdGlvbicsIGB1bmRlcmxpbmVfdGhpY2tuZXNzJywgYHBhaW50X3R5cGUnLAoJYHN0cm9rZV93aWR0aCcgYXJlIHJldmVydGVkIHRvIGJlIG5vcm1hbCB2YWx1ZXMuCgkoVDQyX0tFWVdPUkRfQ09VTlQpOiBOZXcgbWFjcm8uCgkodDQyX3BhcnNlX2RpY3QpOiBOZXcgYXJyYXkgYGtleXdvcmRfZmxhZ3MnIHRvIG1hcmsgdGhhdCBhIHZhbHVlIGhhcwoJYWxyZWFkeSBiZWVuIGFzc2lnbmVkIHRvIGEgZGljdGlvbmFyeSBlbnRyeS4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQsIFQ0Ml9GYWNlX0RvbmUpOiBVcGRhdGVkLgoKCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBgaXRhbGljX2FuZ2xlJywgYGlzX2ZpeGVkX3BpdGNoJywKCWB1bmRlcmxpbmVfcG9zaXRpb24nLCBgdW5kZXJsaW5lX3RoaWNrbmVzcycgYXJlIHJldmVydGVkIHRvIGJlCglub3JtYWwgdmFsdWVzLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoY2lkX2ZhY2VfZG9uZSwgY2lkX2ZhY2VfaW5pdCk6IFVwZGF0ZWQuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3BhcnNlcl9sb2FkX2ZpZWxkKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlMS90MXRva2Vucy5oOiBgaXRhbGljX2FuZ2xlJywgYGlzX2ZpeGVkX3BpdGNoJywKCWB1bmRlcmxpbmVfcG9zaXRpb24nLCBgdW5kZXJsaW5lX3RoaWNrbmVzcycsIGBwYWludF90eXBlJywKCWBzdHJva2Vfd2lkdGgnIGFyZSByZXZlcnRlZCB0byBiZSBub3JtYWwgdmFsdWVzLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfRG9uZSwgVDFfRmFjZV9Jbml0KTogVXBkYXRlZC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChUMV9GSUVMRF9DT1VOVCk6IE5ldyBtYWNyby4KCShwYXJzZV9kaWN0KTogQWRkIHBhcmFtZXRlciBmb3Iga2V5d29yZCBmbGFncy4KCVJlY29yZCBvbmx5IGZpcnN0IGluc3RhbmNlIG9mIGEgZmllbGQuCgkoVDFfT3Blbl9GYWNlKTogTmV3IGFycmF5IGBrZXl3b3JkX2ZsYWdzJy4KCjIwMDMtMDctMjQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gNS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBTZXQgdG8gMTA6MDozLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAocmVmZG9jKTogRml4IC0tdGl0bGUuCgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvVkVSU0lPTi5ETEwsIFJFQURNRTogVXBkYXRlZC4KCgkqIHNyYy90b29scy9kb2NtYWtlci9zb3VyY2VzLnB5IChyZV9jcm9zc3JlZik6IEZpeCByZWd1bGFyCglleHByZXNzaW9uIHRvIGhhbmRsZSB0cmFpbGluZyBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5IChtYWtlX2h0bWxfd29yZCk6IFVwZGF0ZWQuCgoJKiBkb2NzL3JlbGVhc2U6IE5ldyBmaWxlLgoKMjAwMy0wNy0yMyAgWUFNQU5PLVVDSEkgSGlkZXRvc2hpICA8bWVyQGRpbi5vci5qcD4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNfUGFyc2VyX0Z1bmNzUmVjKTogTmV3CgltZW1iZXIgZnVuY3Rpb24gYHRvX2J5dGVzJy4KCgkqIHNyYy9wc2F1eC9wc2F1eG1vZC5jIChwc19wYXJzZXJfZnVuY3MpOiBOZXcgbWVtYmVyCglgcHNfcGFyc2VyX3RvX2J5dGVzJy4KCShwc2F1eF9tb2R1bGVfY2xhc3MpOiBJbmNyZWFzZSB2ZXJzaW9uIHRvIDB4MjAwMDBMLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChJU19UMV9MSU5FU1BBQ0UpOiBBZGQgXGYuCgkoSVNfVDFfTlVMTFNQQUNFKTogTmV3IG1hY3JvLgoJKElTX1QxX1NQQUNFKTogQWRkIGl0LgoJKHNraXBfc3BhY2VzLCBza2lwX2FscGhhKTogTmV3IGZ1bmN0aW9ucy4KCShwc19wYXJzZXJfc2tpcF9zcGFjZXMsIHBzX3BhcnNlcl9za2lwX2FscGhhKTogVXNlIHRoZW0uCgkocHNfdG9ieXRlcywgcHNfcGFyc2VyX3RvX2J5dGVzKTogTmV3IGZ1bmN0aW9ucy4KCjIwMDMtMDctMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoRE9DX0RJUik6IE5ldyB2YXJpYWJsZS4KCShyZWZkb2MpOiBVc2UgKl9ESVIgdmFyaWFibGVzLgoJKGRpc3RjbGVhbik6IFJlbW92ZSBkb2N1bWVudGF0aW9uIGZpbGVzLgoKCSogYnVpbGRzL2RldGVjdC5tayAoc3RkX3NldHVwLCBkb3Nfc2V0dXApOiBNZW50aW9uIGBtYWtlIHJlZmRvYycuCgoJKiBjb25maWd1cmU6IFNldCBET0NfRElSIHZhcmlhYmxlLgoKMjAwMy0wNy0wNyAgUGF0cmlrIEjkZ2dsdW5kICA8cGF0cmlrLmhhZ2dsdW5kQGJyZWRiYW5kLm5ldD4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAocmVmZG9jKTogTmV3IHRhcmdldCB0byBidWlsZCB0aGUKCWRvY3VtZW50YXRpb24uCgkoLlBIT05ZKTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogSW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIEZUX0NoYXJNYXAuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZSxoOiBGaXggZG9jdW1lbnRhdGlvbiBvZiBGVF9PVVRMSU5FX0ZMQUdTLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmg6IERvY3VtZW50IEZUX1NmbnRfVGFnLgoKMjAwMy0wNy0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KSwgc3JjL3BjZi9wY2ZyZWFkLmMKCShwY2ZfbG9hZF9mb250KTogRml4IGNvbXB1dGF0aW9uIG9mIGhlaWdodCBpZiBQSVhFTF9TSVpFIHByb3BlcnR5IGlzCgltaXNzaW5nLgoKMjAwMy0wNy0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfY29tcGFyZSk6IE9ubHkgYWRkIGBzaXplJyBpZgoJdGhlcmUgaXMgbm8gZXJyb3IuICBSZXBvcnRlZCBieSBLbnV0IFN0LiBPc211bmRzZW4KCTxiaXJkLWZyZWV0eXBlQGFuZHVpbi5uZXQ+LgoKMjAwMy0wNi0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUEgbmV3IHRyeSB0byBzeW5jaHJvbml6ZSBiaXRtYXAgZm9udCBhY2Nlc3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0JpdG1hcF9TaXplKTogYGhlaWdodCcgaXMgbm93CglkZWZpbmVkIHRvIHJldHVybiB0aGUgYmFzZWxpbmUtdG8tYmFzZWxpbmUgZGlzdGFuY2UuICBUaGlzIHdhcwoJYWxyZWFkeSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIEJERiBhbmQgUENGIGRyaXZlcnMuCgoJVGhlIGB3aWR0aCcgZmllbGQgbm93IGdpdmVzIHRoZSBhdmVyYWdlIHdpZHRoLiAgSSB3YXNuJ3QgYWJsZSB0bwoJZmluZCBzb21ldGhpbmcgYmV0dGVyLiAgSXQgc2hvdWxkIGJlIHRha2VuIGFzIGluZm9ybWF0aXZlIG9ubHkuCgoJTmV3IGZpZWxkcyBgc2l6ZScsIGB4X3BwZW0nLCBhbmQgYHlfcHBlbScuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IFVwZGF0ZWQgdG8gcHJvcGVybHkgZmlsbAoJRlRfQml0bWFwX1NpemUuCglEbyBwcm9wZXIgcm91bmRpbmcgYW5kIGNvbnZlcnNpb24gZnJvbSA3Mi4yNyB0byA3MiBwb2ludHMuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBVcGRhdGVkIHRvIHByb3Blcmx5IGZpbGwKCUZUX0JpdG1hcF9TaXplLgoJRG8gcHJvcGVyIHJvdW5kaW5nIGFuZCBjb252ZXJzaW9uIGZyb20gNzIuMjcgdG8gNzIgcG9pbnRzLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogVXBkYXRlZCB0byBwcm9wZXJseSBmaWxsCglGVF9CaXRtYXBfU2l6ZS4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0ZhY2VfSW5pdCk6IFVwZGF0ZWQgdG8gcHJvcGVybHkgZmlsbAoJRlRfQml0bWFwX1NpemUuCgoyMDAzLTA2LTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJUmVkZXNpZ25pbmcgdGhlIEZOVCBkcml2ZXIgdG8gcmV0dXJuIG11bHRpcGxlIGZhY2VzLCBub3QgbXVsdGlwbGUKCXN0cmlrZXMuICBBdCBsZWFzdCBvbmUgZm9udCAoYXBwODUwLmZvbiBmcm9tIFdpbk1FKSBjb250YWlucwoJZGlmZmVyZW50IEZOVCBjaGFybWFwcyBmb3IgaXRzIHN1YmZvbnRzLiAgQ29uc2VxdWVudGx5LCB0aGUgcHJldmlvdXMKCWRlc2lnbiBvZiBoYXZpbmcgbXVsdGlwbGUgYml0bWFwIHN0cmlrZXMgaW4gYSBzaW5nbGUgZm9udCBmYWNlIGZhaWxzCglzaW5jZSB3ZSBoYXZlIG9ubHkgb25lIGNoYXJtYXAgcGVyIGZhY2UuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmggKEZOVF9TaXplX1JlYyk6IFJlbW92ZWQuCgkoRk5UX0ZhY2VSZWMpOiBSZW1vdmUgYG51bV9mb250cycgZmllbGQgYW5kIHJlcGxhY2UgYGZvbnRzJyB3aXRoCglgZm9udCcuCgoJKiBzcmMvYmFzZS9mdHdpbmZudC5jIChGVF9HZXRfV2luRk5UX0hlYWRlcik6IFVwZGF0ZWQuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKGZudF9mb250X2xvYWQpOiBEb24ndCBzZXQgcGl4ZWxfd2lkdGggZXF1YWwKCXRvIHBpeGVsX2hlaWdodC4KCShmbnRfZmFjZV9kb25lX2ZvbnRzKTogUmVtb3ZlZC4KCShmbnRfZmFjZV9nZXRfZGxsX2ZvbnRzKTogUmVuYW1lZCB0by4uLgoJKGZudF9mYWNlX2dldF9kbGxfZm9udCk6IFRoaXMuICBBZGQgc2Vjb25kIGZ1bmN0aW9uIGFyZ3VtZW50IHRvCglzZWxlY3QgZmFjZSBpbmRleC4KCVVwZGF0ZWQgdG8gbG9hZCBqdXN0IG9uZSBzdWJmb250LgoJKGZudF9mb250X2RvbmUsIEZOVF9GYWNlX0RvbmUpOiBVcGRhdGVkLgoJKEZOVF9GYWNlX0luaXQpOiBIYW5kbGUgYGZhY2VfaW5kZXgnLgoJVXBkYXRlZC4KCShGTlRfU2l6ZV9TZXRfUGl4ZWxzKTogU2ltcGxpZmllZDsgc2ltaWxhciB0byBCREYgYW5kIFBDRiwgdGhlCgliaXRtYXAgd2lkdGggaXMgbm93IGlnbm9yZWQuCgkoRk5UX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoJRml4IGdseXBoIGluZGV4IGNvbXB1dGF0aW9uLgoJKHdpbmZudF9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKMjAwMy0wNi0yNSAgT3dlbiBUYXlsb3IgIDxvdGF5bG9yQHJlZGhhdC5jb20+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX2hkbXgpOiBEb24ndCBhc3NpZ24KCW51bV9yZWNvcmRzIHVudGlsIHdlIGFjdHVhbGx5IGRlY2lkZSB0byBsb2FkIHRoZSB0YWJsZSwKCW90aGVyd2lzZSwgd2UnbGwgc2VnZmF1bHQgaW4gdHRfZmFjZV9mcmVlX2hkbXguCgoyMDAzLTA2LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfZ2x5cGhfbmFtZSk6IFByb3RlY3QgYWdhaW5zdCB6ZXJvCglnbHlwaCBuYW1lIHBvaW50ZXIuICBSZXBvcnRlZCBieSBNaWtleSBBbmJhcnkgPG1hbmJhcnlAdml6cnQuY29tPi4KCjIwMDMtMDYtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90b29scy9nbG5hbWVzLnB5OiBVcGRhdGVkIHRvIEFHTCAyLjAuCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmg6IFJlZ2VuZXJhdGVkLgoKMjAwMy0wNi0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNnbHlwaC5oLCBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmgsCglzcmMvYmFzZS9mdGNhbGMuYywgc3JjL2Jhc2UvZnR0cmlnb24uYywgc3JjL2NmZi9jZmZnbG9hZC5jLAoJc3JjL290bGF5b3V0L290bGdzdWIuYywgc3JjL3BzaGludGVyL3BzaHJlYy5jLAoJc3JjL3BzbmFtZXMvcHNtb2R1bGUuYywgc3JjL3NmbnQvc2ZvYmpzLmMsIHNyYy90cnVldHlwZS90dGRyaXZlci5jOgoJRGVjb3JhdGUgY29uc3RhbnRzIHdpdGggYFUnIGFuZCBgTCcgaWYgYXBwcm9wcmlhdGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmg6IFVwZGF0ZWQgdG8gaW5jbHVkZSByZWNlbnQgbW9kdWxlCglhZGRpdGlvbnMuCgoJKiBzcmMvcHNoaW50ZXIvcHNobnRlcnIuaCAoRlRfRVJSX0JBU0UpOiBEZWZpbmUgYXMKCWBGVF9Nb2RfRXJyX1BTaGludGVyJy4KCSogc3JjL3R5cGU0Mi90NDJlcnJvci5oIChGVF9FUlJfQkFTRSk6IERlZmluZSBhcwoJYEZUX01vZF9FcnJfVHlwZTQyJy4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuaCAoUFNfSElOVFNfTUFHSUMpOiBSZW1vdmVkLiAgTm90IHVzZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIFtfX01XRVJLU19fXTogRGVmaW5lIEZUX0xPTkc2NAoJYW5kIEZUX0lOVDY0LgoKMjAwMy0wNi0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfTG9hZF9HbHlwaCk6IFVzZSBmaXJzdF9jaGFyIGluCgljb21wdXRhdGlvbiBvZiBnbHlwaF9pbmRleC4KCShGTlRfU2l6ZV9TZXRfUGl4ZWxzKTogVG8gZmluZCBhIHN0cmlrZSwgZmlyc3QgY2hlY2sgcGl4ZWxfaGVpZ2h0Cglvbmx5LCB0aGVuIHRyeSB0byBmaW5kIGEgYmV0dGVyIGhpdCBieSBjb21wYXJpbmcgcGl4ZWxfd2lkdGggYWxzby4KCVdpdGhvdXQgdGhpcyBmaXggaXQgaXNuJ3QgcG9zc2libGUgdG8gYWNjZXNzIGFsbCBzdHJpa2VzLgoJQWxzbyBjb21wdXRlIG1ldHJpY3MubWF4X2FkdmFuY2UgdG8gYmUgaW4gc3luYyB3aXRoIG90aGVyIGJpdG1hcAoJZHJpdmVycy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfQ2hhcl9TaXplKTogUmVtb3ZlIHJlZHVuZGFudCBjb2RlLgoJKEZUX1NldF9QaXhlbF9TaXplKTogQXNzaWduIHZhbHVlIHRvIGBtZXRyaWNzJyBhZnRlciB2YWxpZGF0aW9uIG9mCglhcmd1bWVudHMuCgoyMDAzLTA2LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJU3luY2hyb25pemUgY29tcHV0YXRpb24gb2YgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgYml0bWFwIHN0cmlrZXMuICBUaGUKCWB3aWR0aCcgZmllbGQgaW4gdGhlIEZUX0JpdG1hcF9TaXplIHN0cnVjdHVyZSBpcyBub3cgb25seSB1c2VmdWwgdG8KCWVudW1lcmF0ZSBkaWZmZXJlbnQgc3RyaWtlcy4gIFRoZSBgbWF4X2FkdmFuY2UnIGZpZWxkIG9mIHRoZQoJRlRfU2l6ZV9NZXRyaWNzIHN0cnVjdHVyZSBzaG91bGQgYmUgdXNlZCB0byBnZXQgdGhlIChtYXhpbXVtKSB3aWR0aAoJb2YgYSBzdHJpa2UuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBEb24ndCB1c2UgQVZFUkFHRV9XSURUSCBmb3IKCWNvbXB1dGluZyBgYXZhaWxhYmxlX3NpemVzLT53aWR0aCcgYnV0IG1ha2UgaXQgYWx3YXlzIGVxdWFsIHRvCglgYXZhaWxhYmxlX3NpemVzLT5oZWlnaHQnLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBEb24ndCB1c2UgUkVTT0xVVElPTl9YIGZvcgoJY29tcHV0aW5nIGBhdmFpbGFibGVfc2l6ZXMtPndpZHRoJyBidXQgbWFrZSBpdCBhbHdheXMgZXF1YWwgdG8KCWBhdmFpbGFibGVfc2l6ZXMtPmhlaWdodCcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X1BpeGVsX1NpemVzKTogUGFzcyBvbmx5IHNpbmdsZQoJYXJndW1lbnQgdG8gZnVuY3Rpb24uCgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChwc191bmljb2RlX3ZhbHVlKTogSGFuZGxlIGAuJyBhZnRlcgoJYHVuaVhYWFgnIGFuZCBgdVhYWFhbWFtYXV0nLgoKMjAwMy0wNi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZkcml2ci5jOiBzL0ZUX0Vycl8vQkRGX0Vyci8uCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jLCBzcmMvY2FjaGUvZnRjc2JpdHMuYywgc3JjL2NhY2hlL2Z0bHJ1LmM6CglzL0ZUX0Vycl8vRlRDX0Vycl8vLgoJKiBzcmMvY2ZmL2NmZmNtYXAuYzogcy9GVF9FcnJfL0NGRl9FcnJfLy4KCSogc3JjL3BjZi9wY2Zkcml2ci5jOiBzL0ZUX0Vycl8vUENGX0Vycl8vLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmM6IEluY2x1ZGUgcHNhdXhlcnIuaC4KCXMvRlRfRXJyXy9QU2F1eF9FcnJfLy4KCSogc3JjL3BzaGludGVyL3BzaG50ZXJyLmg6IE5ldyBmaWxlLgoJKiBzcmMvcHNoaW50ZXIvcnVsZXMubWs6IFVwZGF0ZWQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmMsIHNyYy9wc2hpbnRlci9wc2hyZWMuYzogSW5jbHVkZSBwc2hudGVyci5oLgoJcy9GVF9FcnJfL1BTSF9FcnJfLy4KCSogc3JjL3Bmci9wZnJkcml2ci5jLCBzcmMvcGZyL3Bmcm9ianMuYywgc3JjL3Bmci9wZnJzYml0LmM6CglzL0ZUX0Vycl8vUEZSX0Vycl8vLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jLCBzcmMvc2ZudC9zZm9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jLAoJc3JjL3NmbnQvdHRsb2FkLmM6IHMvRlRfRXJyXy9TRk5UX0Vycl8vLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jOiBzL0ZUX0Vycl8vVFRfRXJyXy8uCgkqIHNyYy9nemlwL2Z0Z3ppcC5jOiBMb2FkIEZUX01PRFVMRV9FUlJPUlNfSCBhbmQgZGVmaW5lCglGVF9FUlJfUFJFRklYIGFuZCBGVF9FUlJfQkFTRS4KCXMvRlRfRXJyXy9HemlwX0Vycl8vLgoKMjAwMy0wNi0xOSAgRGlyY2sgQmxhc2tleSAgPGxpc3R0YXJnZXRAZGFuYmFsYS5jb20+CgoJKiBzcmMvY2ZmL2NmZmxvYWQgKGNmZl9lbmNvZGluZ19sb2FkKTogYG5sZWZ0JyBtdXN0IGJlIEZUX1VJbnQsCglvdGhlcndpc2UgYWRkaW5nIDEgbWlnaHQgd3JhcCB0aGUgcmVzdWx0LgoKMjAwMy0wNi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNfdW5pY29kZV92YWx1ZSk6IEFkZCBzdXBwb3J0IHRvCglyZWNvZ25pemUgYHVYWFhYW1hbWF1dJyBnbHlwaCBuYW1lcy4KCURvbid0IGhhbmRsZSBnbHlwaCBuYW1lcyBzdGFydGluZyB3aXRoIGB1bmknIHdoaWNoIGhhdmUgbW9yZSB0aGFuCglmb3VyIGRpZ2l0cy4KCjIwMDMtMDYtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfT3Blbl9GbGFncyk6IFJlcGxhY2VkIHdpdGgKCSNkZWZpbmVzIGZvciB0aGUgY29uc3RhbnRzLgoJKEZUX09wZW5fQXJncyk6IENoYW5nZSB0eXBlIG9mIGBmbGFncycgdG8gRlRfVUludC4KCShGVF9HbHlwaFNsb3QpOiBNb3ZlIGBmbGFncycgdG8gRlRfU2xvdF9JbnRlcm5hbC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9PdXRsaW5lX0ZsYWdzLCBGVF9SYXN0ZXJfRmxhZyk6CglSZXBsYWNlZCB3aXRoICNkZWZpbmVzIGZvciB0aGUgY29uc3RhbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfU2xvdF9JbnRlcm5hbCk6IE5ldwoJZmllbGQgYGZsYWdzJyAoZnJvbSBGVF9HbHlwaFNsb3QpLgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgc291cmNlIGZpbGVzLgoJKEZUX0dMWVBIX09XTl9CSVRNQVApOiBOZXcgbWFjcm8gKGZyb20gZnRnbG9hZHIuaCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmggKEZUX0dMWVBIX09XTl9CSVRNQVApOiBNb3ZlZAoJdG8gZnRvYmpzLmguCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IFVzZSBkdW1teQoJRlRfR2x5cGhTbG90X0ludGVybmFsIG9iamVjdC4KCjIwMDMtMDYtMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jb21waWxlci9nY2MubWssIGJ1aWxkcy9jb21waWxlci9nY2MtZGV2Lm1rIChDRkxBR1MpOgoJQWRkIC1mbm8tc3RyaWN0LWFsaWFzaW5nIHRvIGdldCByaWQgb2YgemlsbGlvbiB3YXJuaW5ncyBmcm9tIGdjYwoJdmVyc2lvbiAzLjMuCgoyMDAzLTA2LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaCAoZnRfZ2x5cGhfYmJveF91bnNjYWxlZCwKCWZ0X2dseXBoX2Jib3hfc3VicGl4ZWxzLCBmdF9nbHlwaF9iYm94X2dyaWRmaXQsCglmdF9nbHlwaF9iYm94X3RydW5jYXRlLCBmdF9nbHlwaF9iYm94X3BpeGVscyk6IFJlcGxhY2VkIHdpdGgKCUZUX0dMWVBIX0JCT1hfVU5TQ0FMRUQsIEZUX0dMWVBIX0JCT1hfU1VCUElYRUxTLAoJRlRfR0xZUEhfQkJJWF9HUklERklULCBGVF9HTFlQSF9CQk9YX1RSVU5DQVRFLCBGVF9HTFlQSF9CQk9YX1BJWEVMUy4KCVRoZSBsb3dlcmNhc2UgdmFyaWFudHMgYXJlIG5vdyAoZGVwcmVjYXRlZCBhbGlhc2VzKSB0byB0aGUgdXBwZXJjYXNlCgl2ZXJzaW9ucy4KCVVwZGF0ZWQgYWxsIG90aGVyIGZpbGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZHVsZS5oIChmdF9tb2R1bGVfZm9udF9kcml2ZXIsCglmdF9tb2R1bGVfcmVuZGVyZXIsIGZ0X21vZHVsZV9oaW50ZXIsIGZ0X21vZHVsZV9zdHlsZXIsCglmdF9tb2R1bGVfZHJpdmVyX3NjYWxhYmxlLCBmdF9tb2R1bGVfZHJpdmVyX25vX291dGxpbmVzLAoJZnRfbW9kdWxlX2RyaXZlcl9oYXNfaGludGVyKTogUmVwbGFjZWQgd2l0aCBGVF9NT0RVTEVfRk9OVF9EUklWRVIsCglGVF9NT0RVTEVfUkVOREVSRVIsIEZUX01PRFVMRV9ISU5URVIsIEZUX01PRFVMRV9TVFlMRVIsCglGVF9NT0RVTEVfRFJJVkVSX1NDQUxBQkxFLCBGVF9NT0RVTEVfRFJJVkVSX05PX09VVExJTkVTLAoJRlRfTU9EVUxFX0RSSVZFUl9IQVNfSElOVEVSLgoJVGhlIGxvd2VyY2FzZSB2YXJpYW50cyBhcmUgbm93IChkZXByZWNhdGVkIGFsaWFzZXMpIHRvIHRoZSB1cHBlcmNhc2UKCXZlcnNpb25zLgoJVXBkYXRlZCBhbGwgb3RoZXIgZmlsZXMuCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX0dldF9DQm94KTogSGFuZGxlIGJib3hfbW9kZSBiZXR0ZXIKCWFzIGVudW1lcmF0aW9uLgoKCSogc3JjL3BjZi9wY2Zkcml2ci5jIChwY2ZfZHJpdmVyX2NsYXNzKSwgc3JjL3dpbmZvbnRzL3dpbmZudC5jCgkod2luZm50X2RyaXZlcl9jbGFzcyksIHNyYy9iZGYvYmRmZHJpdnIuYyAoYmRmX2RyaXZlcl9jbGFzcyk6IEFkZAoJdGhlIEZUX01PRFVMRV9EUklWRVJfTk9fT1VUTElORVMgZmxhZy4KCjIwMDMtMDYtMTMgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX3Nsb3RfbG9hZCk6IEFwcGx5IGZvbnQgbWF0cml4LgoKMjAwMy0wNi0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2Rvcy9kZXRlY3QubWs6IFRlc3Qgbm90IG9ubHkgZm9yIGBEb3MnIGJ1dCBmb3IgYERPUycgYWxzby4KCgkqIGJ1aWxkcy9kb3MvZG9zLWVteC5taywgYnVpbGRzL2NvbXBpbGVyL2VteC5tazogTmV3IGZpbGVzIGZvcgoJRU1YIGdjYyBjb21waWxlci4KCSogYnVpbGRzL2Rvcy9kZXRlY3QubWs6IEFkZCB0YXJnZXQgYGVteCcuCgoJKiBidWlsZHMvY29tcGlsZXIvd2F0Y29tLm1rIChMSU5LX0xJQlJBUlkpOiBHTlUgTWFrZSBmb3IgRE9TIGRvZXNuJ3QKCWxpa2UgYSB0cmFpbGluZyBzZW1pY29sb247IGFkZCBhIGR1bW15IGNvbW1hbmQuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYzogUmVtb3ZlIHBhcnNlX2ZvbnRfYmJveCBjb2RlIChhbHJlYWR5IGVuY2xvc2VkCgl3aXRoICNpZiAwIC4uLiAjZW5kaWYpLgoKCSogc3JjL3R5cGUxL3QxdG9rZW5zLmg6IEhhbmRsZSAvRm9udE5hbWUuCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9uYW1lKTogUmVtb3ZlZC4KCVJlbW92ZSBwYXJzZV9mb250X2Jib3ggY29kZSAoYWxyZWFkeSBlbmNsb3NlZCB3aXRoICNpZiAwIC4uLgoJI2VuZGlmKS4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX3BhcnNlX2ZvbnRfbmFtZSk6IFJlbW92ZWQuCglSZW1vdmUgdDQyX3BhcnNlX2ZvbnRfYmJveCBjb2RlIChhbHJlYWR5IGVuY2xvc2VkIHdpdGggI2lmIDAgLi4uCgkjZW5kaWYpLgoJKHQ0Ml9rZXl3b3Jkcyk6IEhhbmRsZSAvRm9udE5hbWUgd2l0aCBUMV9GSUVMRF9LRVkuCgoyMDAzLTA2LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0ZpZWxkVHlwZSk6IEFkZAoJVDFfRklFTERfVFlQRV9LRVkuCgkoVDFfRklFTERfS0VZKTogTmV3IG1hY3JvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3BhcnNlcl9sb2FkX2ZpZWxkKTogSGFuZGxlCglUMV9GSUVMRF9UWVBFX0tFWS4KCgkqIHNyYy9jaWQvY2lkdG9rZW4uaDogVXNlIFQxX0ZJRUxEX0tFWSBmb3IgL0NJREZvbnROYW1lLgoKMjAwMy0wNi0xMSAgQWxleGFuZGVyIE1hbG1iZXJnICA8YWxleGFuZGVyQG1hbG1iZXJnLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVMaXN0X1JlbW92ZV9TZWxlY3Rpb24pOiBEZWNyZWFzZQoJbnVtYmVyIG9mIG5vZGVzLgoJKEZUX0xydUxpc3RfTG9va3VwKTogRml4IGFzc2VydGlvbiBmb3Igb3V0LW9mLW1lbW9yeSBjYXNlLgoKMjAwMy0wNi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9kZWNyeXB0KTogUmVtb3ZlZC4KCShjaWRfcmVhZF9zdWJycyk6IFVzZSB0MV9kZWNyeXB0IGZyb20gcHNhdXggbW9kdWxlLgoJKiBzcmMvY2lkL2NpZGxvYWQuaDogVXBkYXRlZC4KCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCk6IFVzZSB0MV9kZWNyeXB0IGZyb20gcHNhdXgKCW1vZHVsZS4KCjIwMDMtMDYtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jOiBBcHBseSBjaGFuZ2UgMjAwMy0wNS0zMSBmcm9tIDxSb24uRGV2QGdteC5kZT4uCglDb21wdXRlIHN0eWxlIGZsYWdzLgoJRml4IGNvbXB1dGF0aW9uIG9mIHJvb3QtPmhlaWdodC4KCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBIYW5kbGUgRm9udEJCb3guCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfbG9hZF9rZXl3b3JkKTogSGFuZGxlCglUMV9GSUVMRF9MT0NBVElPTl9CQk9YLgoJKHBhcnNlX2ZvbnRfYmJveCk6IENvbW1lbnRlZCBvdXQuCgkoY2lkX2ZpZWxkX3JlY29yZCk6IENvbW1lbnQgb3V0IGVsZW1lbnQgZm9yIHBhcnNpbmcgRm9udEJCb3guCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9mb250X2Jib3gpOiBDb21tZW50ZWQgb3V0LgoJKHQ0Ml9rZXl3b3Jkcyk6IEhhbmRsZSBGb250QkJveCB3aXRoIFQxX0ZJRUxEX0JCT1gsIG5vdCB3aXRoCglUMV9GSUVMRF9DQUxMQkFDSy4KCSh0NDJfcGFyc2VfZm9udF9iYm94KTogQ29tbWVudGVkIG91dC4KCSh0NDJfbG9hZF9rZXl3b3JkKTogSGFuZGxlIFQxX0ZJRUxEX0xPQ0FUSU9OX0JCT1guCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Jbml0KTogQXBwbHkgY2hhbmdlIDIwMDMtMDUtMzEKCWZyb20gPFJvbi5EZXZAZ214LmRlPi4KCjIwMDMtMDYtMDkgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKFNldFN1cGVyUm91bmQpIDwweDMwPjogRm9sbG93IEFwcGxlJ3MKCVRydWVUeXBlIHNwZWNpZmljYXRpb24uCgkoSW5zX01EUlAsIEluc19NSVJQKTogRml4IHNpbmdsZSB3aWR0aCBjdXQtaW4gdGVzdC4KCjIwMDMtMDYtMDkgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYzogKGluZmxhdGVfbWFzayk6IFJlcGxhY2VkIHdpdGguLi4KCShOT19JTkZMQVRFX01BU0spOiBUaGlzLgoJKiBzcmMvZ3ppcC9pbmZ1dGlsLmg6IERlY2xhcmUgYGluZmxhdGVfbWFzaycgY29uZGl0aW9uYWxseSBieQoJTk9fSU5GTEFURV9NQVNLLgoKMjAwMy0wNi0wOSAgQWxleGlzIFMuIEwuIENhcnZhbGhvICA8YWxleGlzQGNlY20udXNwLmJyPgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKGZ0X2d6aXBfZmlsZV9maWxsX291dHB1dCk6IEhhbmRsZSBaX1NUUkVBTV9FTkQKCWNvcnJlY3RseS4KCjIwMDMtMDYtMDkgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBDaGFuZ2UgY2FsY3VsYXRpb24gb2YKCWRpbS0+c3Rkdy5jb3VudCB0byBhdm9pZCBjb21waWxlciBwcm9ibGVtLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9TaW1wbGVfR2x5cGgpOiBNb3ZlIHRoZSBibG9jawoJdmFyaWFibGVzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGNvbXBpbGVyCglwcm9ibGVtcy4KCUFkZCBjYXN0cyBuZWNlc3NhcnkgZm9yIDE2Yml0IGNvbXBpbGVycy4KCjIwMDMtMDYtMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wZnIvcnVsZXMubWsgKFBGUl9EUlZfU1JDKTogQWRkIHBmcnNiaXQuYy4KCShQRlJfRFJWX0gpOiBBZGQgcGZydHlwZXMuaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IHMvX19NV0tTX18vX19NV0VSS1NfXy8uCgoyMDAzLTA2LTA4ICBLYXJsIFNjaHVsdHogIDxrc2NodWx0ekByc2luYy5jb20+CgoJKiBzcmMvcGZyL3BmcnNiaXQuYyAocGZyX2JpdHdyaXRlcl9pbml0KTogQ2hhbmdlIHR5cGUgb2YgdGhpcmQKCWFyZ3VtZW50IHRvIEZUX0Jvb2wuCgkocGZyX2xvb2t1cF9iaXRtYXBfZGF0YSk6IENoYW5nZSB0eXBlIG9mIHRoaXJkIGFuZCBmb3VydGggYXJndW1lbnQKCXRvIEZUX1VJbnQuICBVcGRhdGVkIGNhbGxlci4KCShwZnJfbG9hZF9iaXRtYXBfYml0cyk6IENoYW5nZSB0eXBlIG9mIGZvdXJ0aCBhcmd1bWVudCB0byBGVF9Cb29sLgoKMjAwMy0wNi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUNvbXBsZXRlbHkgcmV2aXNlZCBGcmVlVHlwZSdzIG1ha2UgbWFuYWdlbWVudC4KCgkuIEluIGFsbCBtYWtlZmlsZXMgYC8nIGlzIHVzZWQgYXMgdGhlIHBhdGggc2VwYXJhdG9yLiAgVGhlCgkgIGNvbnZlcnNpb24gdG8gdGhlIHJlYWwgcGF0aCBzZXBhcmF0b3JzIGlzIGRvbmUgYXMgbGF0ZSBhcwoJICBwb3NzaWJsZSB1c2luZyAkKHN1YnN0IC4uLikuCgoJLiAkKEhPU1RTRVApIG5vIGxvbmdlciBleGlzdHMuICBOb3csICQoU0VQKSBnaXZlcyB0aGUgcGF0aCBzZXBhcmF0b3IKCSAgZm9yIHRoZSBvcGVyYXRpbmcgc3lzdGVtLCBhbmQgdGhlIG5ldyAkKENPTVBJTEVSX1NFUCkgdGhlIHBhdGgKCSAgc2VwYXJhdG9yIGZvciB0aGUgY29tcGlsZXIgdG9vbHMuCgoJLiAkKEJVSUxEKSBoYXMgYmVlbiByZW5hbWVkIHRvICQoQlVJTERfRElSKS4gIEluIGdlbmVyYWwsIGFsbAoJICBkaXJlY3RvcnkgdmFyaWFibGVzIGVuZCB3aXRoIGBfRElSJy4gIFRoZSB2YXJpYW50cyBlbmRpbmcgaW4gYF8nCgkgIChsaWtlIGBCQVNFXycgaGF2ZSBiZWVuIHJlbW92ZWQpLgoKCVRoZSBmb2xsb3dpbmcgQ2hhbmdlTG9nIGVudHJpZXMgb25seSBkZXNjcmliZSBjaGFuZ2VzIHdoaWNoIGFyZQoJbm90IHJlbGF0ZWQgdG8gdGhlIHJlZGVzaWduLgoKCSogYnVpbGRzL2Jlb3MvYmVvcy1kZWYubWsgKEJVSUxEX0RJUik6IEZpeCB0eXBvLgoJKiBidWlsZHMvY29tcGlsZXIvd2F0Y29tLm1rIChMSU5LX0xJQlJBUlkpOiBGaXggbGlua2VyIGNhbGwgdG8gYXZvaWQKCW92ZXJsb25nIGFyZ3VtZW50cyBhcyBzdWdnZXN0ZWQgYnkgSi4gQWxpIEhhcmxvdwoJPGFsaUBhdnJjLmNpdHkuYWMudWs+LgoJKiBidWlsZHMvZG9zL2Rvcy13YXQubWs6IE5ldyBmaWxlLgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKEZSRUVUWVBFX0gpOiBJbmNsdWRlIGhlYWRlciBmaWxlcyBmcm9tIHRoZQoJYGRldmVsJyBzdWJkaXJlY3RvcnkuCgoJKiBidWlsZHMvb3MyL29zMi1kZXYubWssIGJ1aWxkcy91bml4L3VuaXhkZGVmLm1rLAoJYnVpbGRzL3VuaXgvdW5peGRkZWYubWssIGJ1aWxkcy93aW4zMi93MzItYmNjZC5taywKCWJ1aWxkcy93aW4zMi93MzItZGV2Lm1rIChCVUlMRF9ESVIpOiBGaXggcGF0aC4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYywgYnVpbGRzL3VuaWMvY29uZmlndXJlOiBVcGRhdGVkLgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbiAoRElTVENMRUFOKTogQWRkIGBmcmVldHlwZTIucGMnLgoKMjAwMy0wNi0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAoRlRfTmV3X0ZhY2VfRnJvbV9TRk5UKTogcy9ybGVuL3NmbnRfc2l6ZS8gdG8KCW1ha2UgaXQgY29tcGlsZS4KCgkqIGRldmVsL2Z0b3B0aW9uLmg6IFVwZGF0ZWQuCgoyMDAzLTA2LTA3ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5oOgoJcy9pbmRleC9pZHgvIHRvIGZpeCBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfZmFjZV9idWlsZF9jbWFwcyk6IFVzZSBtb3JlIGB2b2xhdGlsZScgdG8KCWZpeCBjb21waWxlciB3YXJuaW5nLgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKEJVSUxERklYRUQpOiBSZW1vdmVkLgoJKiBzcmMvZ3ppcC9pbmZ0cmVlcy5jIChpbmZsYXRlX3RyZWVzX2ZpeGVkKSBbIUJVSUxERklYRURdOiBVc2UKCUZUX1VOVVNFRCB0byByZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDMtMDYtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2VyLmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZS5oOiBUaGlzLgoKCSogc3JjL2Jhc2UvZnRzdHJva2VyLmM6IFJlbmFtZWQgdG8uLi4KCSogc3JjL2Jhc2UvZnRzdHJva2UuYzogVGhpcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1NUUk9LRVJfSCk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9kZXNjcmlwLm1tcywgc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWs6CglVcGRhdGVkLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYzogUmVuYW1lZCB0by4uLgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IFRoaXMuCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmg6IFJlbmFtZWQgdG8uLi4KCSogc3JjL3BjZi9wY2Zkcml2ci5oOiBUaGlzLgoKCSogc3JjL3BjZi9KYW1maWxlLCBzcmMvcGNmL3J1bGVzLm1rOiBVcGRhdGVkLgoKMjAwMy0wNi0wNSAgV2VubGluIEluc3RpdHV0ZSAoVG9tIEJpc2hvcCkgIDx3ZW5saW5Ad2VubGluLmNvbT4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKGZpbGVfc3BlY19mcm9tX3BhdGgpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOgoJQWRkIGAjaWYgIWRlZmluZWQoX19NV0VSS1NfXyknLgoKMjAwMy0wNi0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9GaWVsZFR5cGUpOiBBZGQKCVQxX0ZJRUxEX1RZUEVfRklYRURfMTAwMCBhbmQgVDFfRklFTERfVFlQRV9GSVhFRF8xMDAwX1AuCgkoVDFfRklFTERfRklYRURfMTAwMCwgVDFfRklFTERfRklYRURfMTAwMF9QKTogTmV3IG1hY3Jvcy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc19wYXJzZXJfbG9hZF9maWVsZCk6IEhhbmRsZQoJVDFfRklFTERfVFlQRV9GSVhFRF8xMDAwIGFuZCBUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDBfUC4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX2tpbmRfZml4ZWRfdGhvdXNhbmQpOiBOZXcgZW51bWVyYXRpb24uCgkoQ0ZGX0ZJRUxEX0ZJWEVEXzEwMDApOiBOZXcgbWFjcm8uCgkoY2ZmX3BhcnNlcl9ydW4pOiBIYW5kbGUgY2ZmX2tpbmRfZml4ZWRfdGhvdXNhbmQuCgkqIHNyYy9jZmYvY2ZmdG9rZW4uaDogVXNlIENGRl9GSUVMRF9GSVhFRF8xMDAwIGZvciBibHVlX3NjYWxlLgoJKiBzcmMvY2ZmL2NmZmxvYWQgKGNmZl9zdWJmb250X2xvYWQpOiBGaXggZGVmYXVsdCB2YWx1ZXMgb2YKCWV4cGFuc2lvbl9mYWN0b3IgYW5kIGJsdWVfc2NhbGUuCgoJKiBzcmMvY2lmL2NpZHRva2VuLmgsIHNyYy90eXBlMS90MXRva2Vucy5oOiBVc2UgVDFfRklFTERfRklYRURfMTAwMAoJZm9yIGJsdWVfc2NhbGUuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBGaXggZGVmYXVsdCB2YWx1ZSBvZgoJYmx1ZV9zY2FsZS4KCjIwMDMtMDYtMDQgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLCBzcmMvY2lkL2NpZGdsb2FkLmMsCglzcmMvcHNhdXgvcHNvYmpzLmMsIHNyYy9wc2F1eC90MWRlY29kZS5jLCBzcmMvcHNhdXgvcHNvYmpzLmgsCglzcmMvcHNoaW50ZXIvcHNocmVjLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvLmMsCglzcmMvcHNuYW1lcy9wc21vZHVsZS5jLCBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLAoJc3JjL3Ntb290aC9mdGdyYXlzLmMsIHNyYy9zbW9vdGgvZnRzbW9vdGguYywgc3JjL3RydWV0eXBlL3R0b2Jqcy5jLAoJc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMsIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90eXBlMS90MWFmbS5jLAoJc3JjL3R5cGUxL3QxZ2xvYWQuYywgc3JjL3R5cGUxL3QxZ2xvYWQuaCwgc3JjL3R5cGUxL3QxbG9hZC5jLAoJc3JjL3R5cGUxL3Qxb2Jqcy5jLCBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMsIHNyYy90eXBlNDIvdDQycGFyc2UuaDoKCU1hbnkgY2FzdHMgYW5kIHNsaWdodCBhcmd1bWVudCB0eXBlIGNoYW5nZXMgdG8gbWFrZSBpdCB3b3JrIHdpdGgKCWEgMTZiaXQgY29tcGlsZXIuCgoyMDAzLTA2LTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBEZWZpbmluZwoJVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkcgYnkgZGVmYXVsdCBpcyBhIGJhZCBpZGVhCglzaW5jZSBzb21lIGZvbnRzIChlLmcuIEFyaWFsKSBwcm9kdWNlIHdvcnNlIHJlc3VsdHMgdGhhbiB3aXRob3V0CgloaW50aW5nLiAgUmV2ZXJ0ZWQuCgoyMDAzLTA2LTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKQoJW1RUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVJdOiBDYWxsCglGVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cyBiZWZvcmUgYWRkaW5nIHBoYW50b20gcG9pbnRzLiAgVGhpcyBmaXhlcwoJYSBzZWdmYXVsdCBidWcgd2l0aCBmb250cyAoZS5nLiBodHN0My50dGYpIHdoaWNoIGhhdmUgbmVzdGVkCglzdWJnbHlwaHMgbW9yZSB0aGFuIG9uZSBsZXZlbCBkZWVwLiAgUmVwb3J0ZWQgYnkgQW50aG9ueSBGb2suCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBEZWZpbmUKCVRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIsCglUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HLCBhbmQKCVRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HIHRvIG1ha2UgaXQgdGhlIG5ldwoJZGVmYXVsdC4KCjIwMDMtMDYtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2hpbnRfZWRnZXMpOiBSZW1vdmVkLiAgSnVzdCBhCgl3cmFwcGVyIGZvciBhaF9oaW50X2VkZ2VzLgoJKGFoX2hpbnRfZWRnZXMpOiBSZW5hbWVkIHRvLi4uCgkoYWhfaGludGVyX2hpbnRfZWRnZXMpOiBUaGlzLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9IaW50X0ZsYWdzKTogUmVtb3ZlZC4gIFVudXNlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX0ZhY2VfSW50ZXJuYWxSZWMpLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9EZWNvZGVyUmVjKSwKCXNyYy9jZmYvY2ZmZ2xvYWQuaCAoQ0ZGX0J1aWxkZXIpOiBSZW1vdmUgYGhpbnRfZmxhZ3MnIGZpZWxkLgoJVW51c2VkLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfYnVpbGRlcl9pbml0KTogVXBkYXRlZC4KCShjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncykgPGNmZl9vcF9lbmRjaGFyPjogQ2FsbCBoaW50ZXItPmFwcGx5Cgl3aXRoIGRlY29kZXItPmhpbnRfbW9kZSBpbnN0ZWFkIG9mIGJ1aWxkZXItPmhpbnRfZmxhZ3MuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jICh0MV9kZWNvZGVyX2luaXQpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRzdHJva2VyLmMgKGZ0X3N0cm9rZV9ib3JkZXJfZXhwb3J0KTogcy9pbmRleC9pZHgvLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogQ29tbWVudGVkIG91dCBjb2RlIHdoaWNoCglpbmNyZWFzZWQgcm9vdC0+aGVpZ2h0IGJ5IDE1JSBpZiB0aGUgbGluZSBnYXAgd2FzIHplcm8uICBUaGVyZSBleGlzdAoJZm9udHMgKGNvbnRhaW5pbmcgZS5nLiBmb3JtIGRyYXdpbmcgY2hhcmFjdGVycykgd2hpY2ggaW50ZW50aW9uYWxseQoJaGF2ZSBhIHplcm8gbGluZSBnYXAgdmFsdWUuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoRnJlZV9Qcm9qZWN0LCBDVVJfRnVuY19mcmVlUHJvaik6CglSZW1vdmVkLiAgVW51c2VkLgoJVXBkYXRlZCBhbGwgY2FsbGVycy4KCjIwMDMtMDYtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogVXNlIHN5bWJvbGljIG5hbWVzIGZvcgoJQWRvYmUgc3BlY2lmaWMgZW5jb2RpbmcgSURzICh0aGVyZSB3YXMgYSB3cm9uZyBFSUQgdmFsdWUgZm9yIGN1c3RvbQoJZW5jb2RpbmcpLgoKCSogc3JjL2NmZi9jZmZjbWFwLmggKENGRl9DTWFwU3RkUmVjKTogUmVtb3ZlIGBjb3VudCcuCgkqIHNyYy9jZmYvY2ZmY21hcC5jIChjZmZfY21hcF9lbmNvZGluZ19pbml0LAoJY2ZmX2NtYXBfZW5jb2RpbmdfZG9uZSk6IFVwZGF0ZWQuCgkoY2ZmX2NtYXBfZW5jb2RpbmdfY2hhcl9pbmRleCwgY2ZmX2NtYXBfZW5jb2RpbmdfY2hhcl9uZXh0KTogVXNlCgkyNTYgYXMgbGltaXQgZm9yIGNoYXJhY3RlciBjb2RlLgoKMjAwMy0wNi0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfTG9hZF9HbHlwaCk6IFJldmVydCBjaGFuZ2UgZnJvbQoJMjAwMy0wMy0yMC4KCjIwMDMtMDUtMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaCAoRlRfVmVjdG9yX05vcm1hbGl6ZSk6IFJlbW92ZWQuCgoyMDAzLTA1LTMxICAgIDxSb24uRGV2QGdteC5kZT4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogSW1wcm92ZSBhbGdvcml0aG0gZm9yIGd1ZXNzaW5nCgl0aGUgZm9udCBzdHlsZSBieSBpZ25vcmluZyBzcGFjZXMgYW5kIGh5cGhlbnMuCgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIuaW46IEZpeCBgVmVyc2lvbicgZmllbGQuCgoyMDAzLTA1LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQXZvaWQgb3ZlcndyaXRpbmcgb2YgbnVtZXJpYyBmb250IGRpY3Rpb25hcnkgZW50cmllcyBmb3Igc3ludGhldGljCglmb250cy4gIEFkZGl0aW9uYWxseSwgc29tZSBlbnRyaWVzIHdlcmUgaGFuZGxlZCBhcyBgaW50ZWdlcicgaW5zdGVhZAoJb2YgYG51bWJlcicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0ZpZWxkVHlwZSk6IEFkZAoJVDFfRklFTERfVFlQRV9CT09MX1AsIFQxX0ZJRUxEX1RZUEVfSU5URUdFUl9QLCBhbmQKCVQxX0ZJRUxEX1RZUEVfRklYRURfUC4KCShUMV9GSUVMRF9CT09MX1AsIFQxX0ZJRUxEX05VTV9QLCBUMV9GSUVMRF9GSVhFRF9QKTogTmV3IG1hY3Jvcy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc19wYXJzZXJfbG9hZF9maWVsZCk6IEhhbmRsZSBuZXcgZmllbGQgdHlwZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmggKENGRl9Gb250UmVjRGljdCksCglzcmMvY2ZmL2NmZnRva2VuLmg6IENoYW5nZSB0eXBlIG9mIHVuZGVybGluZV9wb3NpdGlvbiBhbmQKCXVuZGVybGluZV90aGlja25lc3MgdG8gRlRfRml4ZWQuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfc3ViZm9udF9sb2FkKTogRml4IGRlZmF1bHQgdmFsdWVzIG9mCgl1bmRlcmxpbmVfcG9zaXRpb24gYW5kIHVuZGVybGluZV90aGlja25lc3MuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogU2V0IHVuZGVybGluZV9wb3NpdGlvbgoJYW5kIHVuZGVybGluZV90aGlja25lc3MgaW4gYHJvb3QnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKFQxX0ZvbnQpOiBDaGFuZ2UgcG9pbnRfdHlwZQoJYW5kIHN0cm9rZV93aWR0aCB0byBwb2ludGVycy4KCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oIChQU19Gb250SW5mbyk6IENoYW5nZSBpdGFsaWNfYW5nbGUsCglpc19maXhlZF9waXRjaCwgdW5kZXJsaW5lX3Bvc2l0aW9uLCBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcyB0bwoJcG9pbnRlcnMuCgkqIHNyYy90eXBlMS90MXRva2Vucy5oOiBDaGFuZ2UgaXRhbGljX2FuZ2xlLCBpc19maXhlZF9waXRjaCwKCXVuZGVybGluZV9wb3NpdGlvbiwgYW5kIHVuZGVybGluZV90aGlja25lc3MgdG8gcG9pbnRlcnMuICBDaGFuZ2UKCXRoZSB0eXBlIG9mIHRoZSBsYXR0ZXIgdHdvIHRvIGBmaXhlZCcuCglDaGFuZ2UgdHlwZSBvZiBzdHJva2Vfd2lkdGggdG8gYGZpeGVkJyBhbmQgbWFrZSBpdCBhIHBvaW50ZXIuCglDaGFuZ2UgcGFpbnRfdHlwZSB0byBwb2ludGVyLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgkoVDFfRmFjZV9Jbml0KTogVXBkYXRlZC4KCUZpeCBhc3NpZ25tZW50IG9mIHVuZGVybGluZV9wb3NpdGlvbiBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcy4KCgkqIHNyYy9jaWQvY2lkdG9rZW4uaDogQ2hhbmdlIGl0YWxpY19hbmdsZSwgaXNfZml4ZWRfcGl0Y2gsCgl1bmRlcmxpbmVfcG9zaXRpb24sIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzIHRvIHBvaW50ZXJzLiAgQ2hhbmdlCgl0aGUgdHlwZSBvZiB0aGUgbGF0dGVyIHR3byB0byBgZml4ZWQnLgoJQ2hhbmdlIHR5cGUgb2Ygc3Ryb2tlX3dpZHRoIHRvIGBmaXhlZCcuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChjaWRfZmFjZV9kb25lKTogVXBkYXRlZC4KCShjaWRfZmFjZV9pbml0KTogVXBkYXRlZC4KCUZpeCBhc3NpZ25tZW50IG9mIHVuZGVybGluZV9wb3NpdGlvbiBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcy4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYzogQ2hhbmdlIGl0YWxpY19hbmdsZSwgaXNfZml4ZWRfcGl0Y2gsCgl1bmRlcmxpbmVfcG9zaXRpb24sIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzIHRvIHBvaW50ZXJzLiAgQ2hhbmdlIHRoZQoJdHlwZSBvZiB0aGUgbGF0dGVyIHR3byB0byBgZml4ZWQnLgoJQ2hhbmdlIHR5cGUgb2Ygc3Ryb2tlX3dpZHRoIHRvIGBmaXhlZCcgYW5kIG1ha2UgaXQgYSBwb2ludGVyLgoJQ2hhbmdlIHBhaW50X3R5cGUgdG8gcG9pbnRlci4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBVcGRhdGVkLgoJRml4IGFzc2lnbm1lbnQgb2YgdW5kZXJsaW5lX3Bvc2l0aW9uIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzLgoJKFQ0Ml9GYWNlX0RvbmUpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZV9mcm9tX2J1ZmZlcik6IEZpeCBjb21waWxlciB3YXJuaW5nLgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jLCBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oCgkocHNoX2dsb2JhbHNfc2V0X3NjYWxlKTogTWFrZSBpdCBhIGxvY2FsIGZ1bmN0aW9uLgoKCSogdGVzdC9ndmlldy5jOiBGaXggcmVuYW1pbmcgcHMzLT5wcyB0eXBvLgoJRm9ybWF0dGluZy4KCjIwMDMtMDUtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5bY2hdLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuW2NoXTogUmVtb3ZlZC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28uaDogUmVtb3ZlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5bY2hdOiBSZW5hbWVkIHRvLi4uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLltjaF06IE5ldyBmaWxlcy4KCXMvUFNIMy9QU0gvLgoJcy9wc2gzL3BzaC8uCglzL3BzMy9wcy8uCgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMsIHNyYy9wc2hpbnRlci9wc2hpbnRlci5jOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcnVsZXMubWssIHNyYy9wc2hpbnRlci9KYW1maWxlOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuW2NoXSAocHNoX2RpbWVuc2lvbl9zbmFwX3dpZHRoKTogQ29tbWVudGVkCglvdXQuCgoJKiB0ZXN0cy9ndmlldy5jOiBSZW1vdmUgY29kZSBmb3IgcHNoYWxnbzEgYW5kIHBzaGFsZ28yLgoJVXBkYXRlZC4KCjIwMDMtMDUtMjggIE1hcnRpbiBaaW5zZXIgIDx6aW5zZXJAZGVjdXMuZGU+CgoJKiB2bXNfbWFrZS5jb206IFJld29ya2VkIHN1cHBvcnQgZm9yIHNoYXJlYWJsZSBpbWFnZXMgb24gVk1TLiAgVGhlCglmaXJzdCB2ZXJzaW9uIHdhcyBraW5kIG9mIGEgaGFjazsgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhlCglwcm9jZWR1cmUgdG8gZXh0cmFjdCB0aGUgcmVxdWlyZWQgc3ltYm9scyBpcyBtdWNoIGNsZWFuZXIuCgoJUmV3b3JrZWQgY3JlYXRpb24gb2YgTU1TIGZpbGVzLCBhdm9pZGluZyBhIG51bWJlciBvZiB0ZW1wb3JhcnkgZmlsZXMKCXdoaWNoIHdlcmUgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgdmVyc2lvbi4KCglGdXJ0aGVyIHdvcmsgb24gY3JlYXRpbmcgZGVzY3JpcC5tbXMgZmlsZXMgb24gdGhlIGZseS4KCgkqIGJ1aWxkcy92bXMvZGVzY3JpcC5tbXMsIHNyYy9hdXRvaGludC9kZXNjcmlwLm1tcywKCXNyYy90eXBlMS9kZXNjcmlwLm1tczogUmVtb3ZlZC4KCjIwMDMtMDUtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2dseXBoX2NvbXB1dGVfZXh0cmVtYSk6IFNraXAKCWNvbnRvdXJzIHdpdGggb25seSBhIHNpbmdsZSBwb2ludCB0byBhdm9pZCBzZWdmYXVsdC4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogQWN0aXZhdGUgY29kZSBmb3IKCWhhbmRsaW5nIGBvcmlnaW4nLgoKMjAwMy0wNS0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfT1BUSU9OX05PX1NUUk9OR19JTlRFUlBPTEFUSU9OKToKCVJlbW92ZWQgc2luY2UgdW51c2VkLgoKMjAwMy0wNS0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCAoZnRfc3RyY2F0KTogTmV3IHdyYXBwZXIgbWFjcm8KCWZvciBzdHJjYXQuCgoJKiBzcmMvYmFzZS9mdG1hYy5jIChjcmVhdGVfbHdmbl9uYW1lKTogcy9pc3VwcGVyL2Z0X2lzdXBwZXIvLgoJKHBhcnNlX2ZvbnQpOiBzL21lbWNweS9mdF9tZW1jcHkvLgoJKGlzX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogcy9tZW1jbXAvZnRfbWVtY21wLy4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGxvYWRfbWFjX2ZhY2UpIFtGVF9NQUNJTlRPU0hdOgoJcy9zdHJsZW4vZnRfc3RybGVuLy4KCXMvc3RyY2F0L2Z0X3N0cmNhdC8uCglzL3N0cmNweS9mdF9zdHJjcHkvLgoJKiBzcmMvZ3ppcC96dXRpbC5oOiBzL21lbXNldC9mdF9tZW1zZXQvLgoJcy9tZW1jbXAvZnRfbWVtY21wLy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCksIHNyYy9wY2YvcGNmZHJpdmVyLmMKCShQQ0ZfRmFjZV9Jbml0KTogVGVzdCBmb3IgY2hhcnNldCByZWdpc3RyeSBjYXNlLWluc2Vuc2l0aXZlbHkuCgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9maWxfaW8pOiBSZXZlcnQgY2hhbmdlIGZyb20geWVzdGVyZGF5OwoJaXQgaGFzIGFscmVhZHkgYmVlbiBmaXhlZCBkaWZmZXJlbnRseS4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChET19TRlZUTCk6IEFkZCBtaXNzaW5nIGJyYWNlcyBhcm91bmQKCWlmLWNsYXVzZS4KCjIwMDMtMDUtMjEgIE1hcnRpbiBaaW5zZXIgIDx6aW5zZXJAZGVjdXMuZGU+CgoJKiB0MWxvYWQuYyAocGFyc2VfYmxlbmRfYXhpc190eXBlcyk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKCSogZGVzY3JpcC5tbXM6IFJlbW92ZWQuICBOb3cgY3JlYXRlZCBieS4uLgoKCSogdm1zX21ha2UuY29tOiBOZXcgZmlsZS4KCjIwMDMtMDUtMjEgIFdlaXFpIEdhbyAgPHdlaXFpZ2FvQG5ldHdvcmt1c2EubmV0PgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKGZ0X2d6aXBfZmlsZV9pbyk6IEF2b2lkIHplcm8gdmFsdWUgb2YgYGRlbHRhJwoJdG8gcHJldmVudCBpbmZpbml0ZSBsb29wLgoKMjAwMy0wNS0yMSAgTGFycyBDbGF1c2VuICA8bHJjbGF1c2VAY3MudWl1Yy5lZHU+CgoJKiBkb2NzL1ZFUlNJT04uRExMOiBQcm92aWRlIGJldHRlciBhdXRvY29uZiBzbmlwcGV0IHRvIGNoZWNrCglGcmVlVHlwZSB2ZXJzaW9uLgoKMjAwMy0wNS0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSk6IEZyZWUgYGludGVybmFsJyBub3QKCWBmYWNlLT5pbnRlcm5hbCcgaW4gY2FzZSBvZiBlcnJvciB0byBhdm9pZCBwb3NzaWJsZSBzZWdmYXVsdC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwczNfaGludHNfYXBwbHkpOiBDaGVjayB3aGV0aGVyIHdlCglhY3R1YWxseSBoYXZlIGFuIG91dGxpbmUuCgoyMDAzLTA1LTIwICBEYXZpZCBDaGVzdGVyICA8ZGF2aWRjaGVzdGVyQHFteC5uZXQ+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHMzX2hpbnRzX2FwcGx5KTogVHJ5IHRvIG9wdGltaXplCgl5X3NjYWxlIHNvIHRoYXQgdGhlIHRvcCBvZiBub24tY2FwaXRhbCBsZXR0ZXJzIGlzIGFsaWduZWQgb24gYSBwaXhlbAoJYm91bmRhcnkgd2hlbmV2ZXIgcG9zc2libGUuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRfZWRnZXMpOiBNYWtlIHN1cmUgdGhhdCBsb3dlcmNhc2UKCW0ncyBtYWludGFpbiB0aGVpciBzeW1tZXRyeS4KCjIwMDMtMDUtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBPb3BzISAgRGF2aWQncwoJcGF0Y2ggZnJvbSB5ZXN0ZXJkYXkgaGFzIGJlZW4gcmVzb2x2ZWQgYWxyZWFkeSBpbiBhIGRpZmZlcmVudAoJd2F5LiAgUmV2ZXJ0ZWQuCgoyMDAzLTA1LTE5ICBEYXZpZCBDaGVzdGVyICA8ZGF2aWRjaGVzdGVyQHFteC5uZXQ+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKTogRG9uJ3Qgc2NhbGUKCXlfc2NhbGUgbG9jYWxseSBidXQgZmFjZS0+c2l6ZS0+bWV0cmljcy55X3NjYWxlLgoKMjAwMy0wNS0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX25leHQpOiBTZWxlY3QgcHJvcGVyIHN0YXJ0Cgl2YWx1ZSBmb3IgYGhpJyB0byBhdm9pZCBpbmZpbml0ZSBsb29wLgoKMjAwMy0wNS0xOCAgWW9uZyBTdW4gIDxzdW55b25nQG5qc3Rhci5jb20+CgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKEluc2VydF9ZX1R1cm4pOiBGaXggb3ZlcmZsb3cgdGVzdC4KCjIwMDMtMDUtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggW0ZUX0NPTkZJR19PUFRJT05fTUFDX0ZPTlRTXToKCU5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IFVzZSBpdCB0byBjb250cm9sIG1hYyBmb250IHN1cHBvcnQgb24gbm9uLW1hYwoJcGxhdGZvcm1zLgoKMjAwMy0wNS0xNyAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJSW1wbGVtZW50IHBhcnRpYWwgc3VwcG9ydCBvZiBNYWMgZm9udHMgb24gbm9uLU1hYyBwbGF0Zm9ybXMuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAobWVtb3J5X3N0cmVhbV9jbG9zZSwgbmV3X21lbW9yeV9zdHJlYW0sCglvcGVuX2ZhY2VfZnJvbV9idWZmZXIsIE1hY19SZWFkX1BPU1RfUmVzb3VyY2UsCglNYWNfUmVhZF9zZm50X1Jlc291cmNlLCBJc01hY1Jlc291cmNlLCBJc01hY0JpbmFyeSwgbG9hZF9tYWNfZmFjZSkKCVshRlRfTUFDSU5UT1NIXTogTmV3IGZ1bmN0aW9ucy4KCShGVF9PcGVuX0ZhY2UpIFshRlRfTUFDSU5UT1NIXTogVXNlIGxvYWRfbWFjX2ZhY2UuCgoyMDAzLTA1LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IFNjYWxlIGxpbmVhciBhZHZhbmNlIHdpZHRoIG9ubHkKCWlmIEZUX0ZBQ0VfRkxBR19TQ0FMQUJMRSBpcyBzZXQgKG90aGVyd2lzZSB3ZSBoYXZlIGEgZGl2aXNpb24gYnkKCXplcm8gc2luY2UgRk5UIGFuZCBmcmllbmRzIGRvbid0IGRlZmluZSBgZmFjZS0+dW5pdHNfcGVyX0VNJykuCgoyMDAzLTA1LTE1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9WZWN0b3JfUm90YXRlKTogQXZvaWQgcm91bmRpbmcgZXJyb3JzCglmb3Igc21hbGwgdmFsdWVzLgoKMjAwMy0wNS0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfUG9pbnRSZWMpOiBSZW1vdmUgdW51c2VkIGBpbl9hbmdsZScKCWFuZCBgb3V0X2FuZ2xlJyBmaWVsZHMuCgoyMDAzLTA1LTE0ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKEZUX05ld19GYWNlX0Zyb21fU0ZOVCk6IEhhbmRsZSBDRkYgZmlsZXMgYWxzby4KCjIwMDMtMDUtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRml4IHR5cG8gaW4gY29tbWVudAoJKEZUX0hBU19GSVhFRF9TSVpFUykuCgoyMDAzLTA1LTEwICBEYW4gV2lsbGlhbXMgIDxkYW5AYmlndy5vcmc+CgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00OiBDb21tZW50IG91dCBkZWZpbml0aW9uIG9mCglgYWxsb3dfdW5kZWZpbmVkX2ZsYWcnIGZvciBEYXJ3aW4gMS4zLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEFkZCBvcHRpb24gLS13aXRoLW9sZC1tYWMtZm9udHMuCgkqIGJ1aWxkcy91bml4L2x0bWFpbi5zaDogRml4IHZlcnNpb24gbnVtYmVyaW5nIGZvciBEYXJ3aW4gMS4zLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogRml4IGNvbmRpdGlvbnMgZm9yIGRlZmluaW5nCglgRlRfTUFDSU5UT1NIJy4KCSogc3JjL2Jhc2UvZnRiYXNlLmM6IEluY2x1ZGUgYGZ0bWFjLmMnIGNvbmRpdGlvbmFsbHkuCgkqIHNyYy9iYXNlL2Z0bWFjLmM6IEhhbmRsZSBfX0dOVUNfXy4KCjIwMDMtMDUtMDcgIFlBTUFOTy1VQ0hJIEhpZGV0b3NoaSAgPG1lckBkaW4ub3IuanA+CgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoaXNfYWxwaGEpOiBSZW1vdmVkLgoJKGNpZF9wYXJzZV9kaWN0KTogVXNlIGBjaWRfcGFyc2VyX3NraXBfYWxwaGEnIGluc3RlYWQgb2YgYGlzX2FscGhhJy4KCjIwMDMtMDUtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haG9wdGltLmMsIHNyYy9hdXRvaGludC9haG9wdGltLmg6IE9ic29sZXRlLCByZW1vdmVkLgoKMjAwMy0wNS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfc2V0dXBfdXYpOiBFeGNoYW5nZSBgZm9yJyBsb29wIGFuZAoJYHN3aXRjaCcgc3RhdGVtZW50IHRvIG1ha2UgaXQgcnVuIGZhc3Rlci4KCShhaF9vdXRsaW5lX2NvbXB1dGVfc2VnbWVudHMpOiBSZXNldCBgc2VnbWVudC0+c2NvcmUnIGFuZAoJYHNlZ21lbnQtPmxpbmsnLgoJKGFoX291dGxpbmVfbGlua19zZWdtZW50cyk6IFByb3ZpZGUgYWx0ZXJuYXRpdmUgY29kZSB3aGljaCBkb2VzCgl0aGUgc2FtZSBidXQgcnVucyBtdWNoIGZhc3Rlci4KCUhhbmRsZSBtYWpvciBkaXJlY3Rpb24gYWxzby4KCShhaF9vdXRsaW5lX2NvbXB1dGVfZWRnZXMpOiBTY2FsZSBgZWRnZV9kaXN0YW5jZV90aHJlc2hvbGQnIGRvd24KCWFmdGVyIHJvdW5kaW5nIGluc3RlYWQgb2Ygc2NhbGluZyBjb21wYXJpc29uIHZhbHVlIGluIGxvb3AuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9hbGlnbl9zdG9uZ19wb2ludHMpOiBQcm92aWRlCglhbHRlcm5hdGl2ZSBjb2RlIHdoaWNoIHJ1bnMgZmFzdGVyLgoJSGFuZGxlIGBiZWZvcmUtPnNjYWxlID09IDAnLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfU2VnbWVudFJlYyk6IE1vdmUgc29tZSBmaWVsZHMgZG93bi4KCShBSF9FZGdlUmVjKTogTW92ZSBzb21lIGZpZWxkcyBpbiBzdHJ1Y3R1cmUuCglOZXcgZmllbGQgYHNjYWxlJy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9uZXh0KTogVXNlIGJpbmFyeSBzZWFyY2guCgoyMDAzLTA1LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhvcHRpbS5jIChMT0cpOiBSZW5hbWVkIHRvLi4uCgkoQUhfT1BUSU1fTE9HKTogVGhpcy4KCShBSF9EdW1wX1NwcmluZ3MpOiBGaXggbG9nIG1lc3NhZ2UgZm9ybWF0LgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50X2VkZ2VzXzMpOiBSZW5hbWVkIHRvLi4uCgkoYWhfaGludF9lZGdlcyk6IFRoaXMuCgoyMDAyLTA1LTAyICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9TZXRfUGl4ZWxfU2l6ZSk6IEluaXRpYWxpemUgYG1heF9hZHZhbmNlJy4KCjIwMDMtMDUtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX3Rlc3RfZXh0cmVtYSk6IFJlbmFtZWQgdG8uLi4KCShhaF90ZXN0X2V4dHJlbXVtKTogVGhpcy4KCjIwMDMtMDQtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogR2VuZXJhdGUgYGZyZWV0eXBlLnBjJyBmcm9tCglgZnJlZXR5cGUuaW4nLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChpbnN0YWxsLCB1bmluc3RhbGwpOiBIYW5kbGUgYGZyZWV0eXBlLnBjJy4KCjIwMDMtMDQtMjggIEd1c3Rhdm8gSi4gQS4gTS4gQ2FybmVpcm8gIDxnamNAaW5lc2Nwb3J0by5wdD4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5pbjogTmV3IGZpbGUuICBDb250YWlucyBidWlsZGluZyBpbmZvcm1hdGlvbgoJZm9yIHRoZSBgcGtnLWNvbmZpZycgcGFja2FnZS4KCjIwMDMtMDQtMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogRml4IGJvdW5kYXJ5IGNoZWNrIGZvcgoJYGdseXBoX2luZGV4Jy4KCjIwMDMtMDQtMjU6ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJQWRkZWQgdGhlIG9wdGlvbmFsIHVucGF0ZW50ZWQgaGludGluZyBzeXN0ZW0gZm9yIFRydWVUeXBlLiAgSXQKCWFsbG93cyB0eXBlZmFjZXMgd2hpY2ggbmVlZCBoaW50aW5nIHRvIHByb2R1Y2UgY29ycmVjdCBnbHlwaCBmb3JtcwoJKGUuZy4sIENoaW5lc2UgdHlwZWZhY2VzIGZyb20gRHluYWxhYikgdG8gd29yayBhY2NlcHRhYmx5IHdpdGhvdXQKCWluZnJpbmdpbmcgQXBwbGUgcGF0ZW50cy4gIFRoaXMgc3lzdGVtIGlzIGNvbXBpbGVkIG9ubHkgaWYKCVRUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkcgaXMgZGVmaW5lZCBpbgoJZnRvcHRpb24uaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR1bnBhdC5oOiBOZXcgZmlsZS4gIERlZmluZXMKCUZUX1BBUkFNX1RBR19VTlBBVEVOVEVEX0hJTlRJTkcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9UUlVFVFlQRV9VTlBBVEVOVEVEX0gpOiBOZXcKCW1hY3JvIHRvIHVzZSB3aGVuIGluY2x1ZGluZyB0dHVucGF0LmguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCgkoVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElORywKCVRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HKTogTmV3IGNvbmZpZ3VyYXRpb24gbWFjcm9zCgkobm90IGRlZmluZWQsIGJ1dCBpbiBjb21tZW50cykgZm9yIHRoZSB1bnBhdGVudGVkIGhpbnRpbmcgc3lzdGVtLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0ZhY2VSZWMpCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IE5ldyBlbGVtZW50IGBGVF9Cb29sCgl1bnBhdGVudGVkX2hpbnRpbmcnLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKE5PX0FQUExFX1BBVEVOVCwgQVBQTEVfVEhSRVNIT0xEKToKCVJlbW92ZWQuCgkoR1VFU1NfVkVDVE9SKTogTmV3IG1hY3JvLgoJKFRUX1J1bl9Db250ZXh0KSBbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106CglTZXQgYGJvdGhfeF9heGlzJy4KCSh0dF9kZWZhdWx0X2dyYXBoaWNzX3N0YXRlKQoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBVcGRhdGVkLgoJKEN1cnJlbnRfUmF0aW8pIFtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXToKCUhhbmRsZSBgdW5wYXRlbnRlZF9oaW50aW5nJy4KCShEaXJlY3RfTW92ZSkgW05PX0FQUExFX1BBVEVOVF06IFJlbW92ZWQuCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IEluc2VydCBhc3NlcnRpb24uCgkoUHJvamVjdCwgRnJlZVByb2plY3QpCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IEluc2VydCBhc3NlcnRpb24uCgkoQ29tcHV0ZV9GdW5jcykgW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOgoJSW1wbGVtZW50IHVucGF0ZW50ZWQgaGludGluZy4KCShET19TUFZUQ0EsIERPX1NGVlRDQSwgRE9fU1BWVEwsIERPX1NGVlRMLCBET19TUFZGUywgRE9fU0ZWRlMsCglJbnNfU0RQVlRMKTogQ2FsbCBgR1VFU1NfVkVDVE9SJy4KCShET19HUFYsIERPX0dGVikgW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOgoJSGFuZGxlIGB1bnBhdGVudGVkX2hpbnRpbmcnLgoJKENvbXB1dGVfUG9pbnRfRGlzcGxhY2VtZW50KSBbTk9fQVBQTEVfUEFURU5UXTogUmVtb3ZlZC4KCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogSW1wbGVtZW50IHVucGF0ZW50ZWQKCWhpbnRpbmcuCgkoTW92ZV9acDJfUG9pbnQsIEluc19TSFBJWCwgSW5zX0RFTFRBUCwgSW5zX0RFTFRBQykKCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogSW1wbGVtZW50IHVucGF0ZW50ZWQKCWhpbnRpbmcuCgkoVFRfUnVuSW5zKTogVXBkYXRlZC4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYwoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBJbmNsdWRlCglGVF9UUlVFVFlQRV9VTlBBVEVOVEVEX0guCgkodHRfZmFjZV9pbml0KSBbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElORywKCVRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HXTogQ2hlY2sKCUZUX1BBUkFNX1RBR19VTlBBVEVOVEVEX0hJTlRJTkcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmggKFRUX0dyYXBoaWNzU3RhdGUpCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IEFkZCBgYm90aF94X2F4aXMnLgoKMjAwMy0wNC0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoaGFzaF9idWNrZXQsIGhhc2hfbG9va3VwKTogVXNlIGBjb25zdCcgZm9yIGZpcnN0Cglhcmd1bWVudC4KCShiZGZfZ2V0X2ZvbnRfcHJvcGVydHkpOiBVc2UgYGNvbnN0JyBmb3IgdGhpcmQgYXJndW1lbnQuCglVcGRhdGVkIGFsbCBjYWxsZXJzLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBTZXQgcGl4ZWwgd2lkdGggYW5kIGhlaWdodAoJc2ltaWxhciB0byB0aGUgUENGIGRyaXZlci4KCSogc3JjL2JkZi9iZGYuaCAoX2hhc2hub2RlKTogVXNlIGBjb25zdCcgZm9yIGBrZXknLgoJVXBkYXRlZC4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jOiBDKysgZG9lc24ndCBsaWtlIHRoYXQgdGhlIGFycmF5IGBpbmZsYXRlX21hc2snCglpcyBkZWNsYXJlZCB0d2ljZS4gIEl0IGlzIHBlcmhhcHMgYmV0dGVyIHRvIG1vZGlmeSB0aGUgemxpYiBzb3VyY2UKCWZpbGVzIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhpcyBoYWNrLgoJKHpjYWxsb2MsIHpmcmVlLCBmdF9nemlwX3N0cmVhbV9jbG9zZSwgZnRfZ3ppcF9zdHJlYW1faW8pOiBBZGQgY2FzdHMKCXRvIG1ha2UgYnVpbGQgd2l0aCBnKysgc3VjY2Vzc2Z1bC4KCjIwMDMtMDQtMjQgIE1hbmlzaCBTaW5naCAgPHlvc2hAZ2ltcC5vcmc+CgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoY2lkX2ZhY2VfaW5pdCksIHNyYy90eXBlMS90MW9ianMuYwoJKFQxX0ZhY2VfSW5pdCksIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Jbml0KTogU3BsaXQgb24gYC0nCglhbHNvIGZvciBzZWFyY2hpbmcgdGhlIHN0eWxlIG5hbWUuCgoyMDAzLTA0LTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IEZpeGVkIHRoZSBjb21wdXRhdGlvbiBvZgoJZmFjZS0+bnVtX2dseXBocy4gIFdlIG11c3QgaW5jcmVhc2UgdGhlIHZhbHVlIGJ5IDEgdG8gcmVzcGVjdCB0aGUKCWNvbnZlbnRpb24gdGhhdCBnbHlwaCBpbmRleCAwIGFsd2F5cyBjb3JyZXNwb25kcyB0byB0aGUgYG1pc3NpbmcKCWdseXBoJy4KCjIwMDMtMDQtMjQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L3VuaXgtY2MuaW4gKENGTEFHUyk6IEFkZCBAQ1BQRkxBR1NALgoKMjAwMy0wNC0yNCAgRGlldGVyIEJhcm9uICA8ZGlsbG9AbmV0YnNkLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbiAoY2ZsYWdzKTogRW1pdCBGcmVlVHlwZSAyJ3MgaW5jbHVkZQoJZmlsZXMgZmlyc3QuICBPdGhlcndpc2UgdGhlcmUgYXJlIGNvbmZsaWN0cyB3aXRoIEZyZWVUeXBlIDEKCWluc3RhbGxlZCBzaW11bHRhbmVvdXNseS4KCjIwMDMtMDQtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglGaXhpbmcgYnVncyByZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCgoJKiBzcmMvYmFzZS9mdHN0cm9rZXIuYyAoRlRfU3Ryb2tlcl9QYXJzZU91dGxpbmUpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZSBgaW5fcGF0aCcuCgoJKiBzcmMvYmFzZS9mdG9ianMgKGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwKTogQ2hhbmdlIHR5cGUgb2YKCXNlY29uZCBhcmd1bWVudCB0byBgRlRfQnl0ZSonLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBVcGRhdGVkLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9yZWFkc3RyZWFtKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgcmVzJy4KCShfYmRmX3BhcnNlX2dseXBocyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG5leHQnLgoJTWFyayBgY2FsbF9kYXRhJyBhcyB1bnVzZWQuCgoJKiBzcmMvY2FjaGUvZnRscnUuYyAoRlRfTHJ1TGlzdF9Mb29rdXApOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgcGxhc3QnLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBTbGlnaHQgcmVjb2RpbmcgdG8KCWFjdHVhbGx5IHVzZSBgZXJyb3InLgoJKHBjZl9sb2FkX2ZvbnQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBhdmd3Jy4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9nZXRfa2VybmluZyk6IENoYW5nZSByZXR1cm4gdHlwZQoJdG8gYHZvaWQnLgoJTWFyayBgZXJyb3InIGFzIHVudXNlZC4KCSogc3JjL3Bmci9wZnJvYmpzLmg6IFVwZGF0ZWQuCgkqIHNyYy9wZnIvcGZyZHJpdnIuYyAocGZyX2dldF9rZXJuaW5nKTogVXBkYXRlZC4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChzZm50X2Rpcl9jaGVjayk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBmb3JtYXRfdGFnJy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDZfdmFsaWRhdGUsIHR0X2NtYXAxMF92YWxpZGF0ZSk6IFJlbW92ZQoJdW51c2VkIHZhcmlhYmxlIGBzdGFydCcuCgkodHRfY21hcDEwX2NoYXJfbmV4dCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHJlc3VsdCcKCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9mYWNlX2dldF9uYW1lKTogTWFyayBgZXJyb3InIGFzIHVudXNlZC4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IE1hcmsgYGVycm9yJyBhcwoJdW51c2VkLgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgcHNoaW50ZXInLgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCk6IFVzZSBgZ2x5cGhfZGF0YV9sb2FkZWQnCglvbmx5IGZvciBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMLgoKMjAwMy0wNC0yMyAgQWtpdG8gSGlyYWkgIDxha2l0b0BrZGUuZ3IuanA+CgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X3ZhbGlkYXRlKTogUHJvdmlkZSBhIHdlYWsgdmFyaWFudAoJb2YgdGhlIGdseXBoIElEIGJvdW5kaW5nIGNoZWNrIGlmIEZUX1ZBTElEQVRFX1RJR0hUIGlzIG5vdCBhY3RpdmUuCglXaXRob3V0IHRoaXMgY2hhbmdlLCBtYW55IENKSyBmb250cyBmcm9tIER5bmFsYWIgYXJlIHJlamVjdGVkLgoKMjAwMy0wNC0yMyAgSm9lIE1hcmN1cyBDbGFya2UgIDxtYXJjdXNARnJlZUJTRC5vcmc+CgoJKiBzcmMvYmFzZS9mdGJkZi5jIChGVF9HZXRfQkRGX1Byb3BlcnR5KTogQ2hlY2sgZm9yIHZhbGlkCglgZ2V0X2ludGVyZmFjZScuCgoyMDAzLTA0LTIzICBQYXVsIE1pbGxlciAgPHBhdWxtQHByb2ZvdW5kZWZmZWN0cy5jb20+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIChwYXJzZV9mb25kKTogRml4IGhhbmRsaW5nIG9mIHN0eWxlIG5hbWVzLgoKMjAwMy0wNC0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9leHRyYV9pdGVtX2xvYWRfZm9udF9pZCk6IFVzZSBGVF9QdHJEaXN0CglpbnN0ZWFkIG9mIEZUX1VpbnQgZm9yIGBsZW4nLgoKMjAwMy0wNC0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKHpjYWxsb2MpIFshRlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQl06CglDb252ZXJ0IEsmUiBmb3JtYXQgdG8gbW9kZXJuIEMgdXNhZ2UuCgkoRlRfU3RyZWFtX09wZW5HemlwKTogVXNlIGxvbmcgY29uc3RhbnQuCgoyMDAzLTA0LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX2NhY2hlX2xvb2t1cCk6IFJlbW92ZSBzaGFkb3cgZGVjbGFyYXRpb24KCW9mIGBtYW5hZ2VyJy4KCjIwMDMtMDQtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvYy9JTlNUQUxMLlVOWDogQ2xlYW5lZCB1cC4KCjIwMDMtMDQtMDkgIFRvcnJleSBMeW9ucyAgPHRvcnJleUBtcmNsYS5jb20+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIChvcGVuX2ZhY2VfZnJvbV9idWZmZXIpOiBSZW1vdmVkIGEgZG91YmxlLWZyZWUKCWJ1ZyB0aGF0IGhhZCBuYXN0eSBjb25zZXF1ZW5jZXMgd2hlbiB0cnlpbmcgdG8gb3BlbiBhbiBgaW52YWxpZCcKCWZvbnQgb24gYSBNYWMuCgoyMDAzLTA0LTA5ICBNaWtlIEZhYmlhbiAgPG1mYWJpYW5Ac3VzZS5kZT4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuaCAoQkRGX2VuY29kaW5nX2VsKSwgc3JjL3BjZi9wY2YuaAoJKFBDRl9FbmNvZGluZ1JlYyk6IENoYW5nZWQgRlRfU2hvcnQgdG8gRlRfVVNob3J0IGluIG9yZGVyIHRvIGJlIGFibGUKCXRvIGFjY2VzcyBtb3JlIHRoYW4gMzI3NjggZ2x5cGhzIGluIGZvbnRzLgoKMjAwMy0wNC0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjQgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMy0wNC0wMyAgTWFydGluIE11c2tlbnMgIDxtbXVza2Vuc0BhdXJlbG9uLmNvbT4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoVDFfT3Blbl9GYWNlKTogRml4ZWQgdGhlIGNvZGUgdG8gbWFrZSBpdAoJaGFuZGxlIHNwZWNpYWwgY2FzZXMgd2hlcmUgYSBmb250IG9ubHkgY29udGFpbnMgYSBgLm5vdGRlZicgZ2x5cGgKCShoYXBwZW5zIGluIFBERi1lbWJlZGRlZCBmb250cykuICBPdGhlcndpc2UsIEZUX1BhbmljIHdhcyBjYWxsZWQuCgoyMDAzLTAzLTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUU6IFVkcGF0ZWQuCgoJKiBSRUFETUUuVU5YOiBSZW1vdmVkIChub3cgcmVwbGFjZWQgYnkgZG9jcy9JTlNUQUxMLlVOWCkuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYzogVGhlIGhpbnRlciBub3cgcGVyZm9ybXMgYXMgaW4gMi4xLjMgYW5kCgl3aWxsIGlnbm9yZSBzdGVtIHF1YW50aXphdGlvbiBvbmx5IHdoZW4gRlRfTE9BRF9UQVJHRVRfU01PT1RIIGlzCgl1c2VkLgoJKHBzaDNfZGltZW5zaW9uX3F1YW50aXplX2xlbik6IEVuYWJsZWQuCgkocHNoM19oaW50X2FsaWduKTogRW5hYmxlIGNvbW1lbnRlZCBjb2RlLgoJKHBzaDNfaGludF9hbGlnbl9saWdodCk6IENvbW1lbnRlZCBvdXQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0NoYXJfU2l6ZSk6IENoYW5nZWQgdGhlIGRlZmF1bHQKCWNvbXB1dGF0aW9ucyB0byBpbmNsdWRlIHJvdW5kaW5nIGluIGFsbCBjYXNlczsgdGhpcyBpcyByZXF1aXJlZCB0bwoJcHJvdmlkZSBhY2N1cmF0ZSBrZXJuaW5nIGRhdGEgd2hlbiBuYXRpdmUgVHJ1ZVR5cGUgaGludGluZyBpcwoJZW5hYmxlZC4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoaXNfbmFtZV9jaGFyKTogVGhlIFR5cGUgMSBsb2FkZXIgbm93IGFjY2VwdHMKCW1vcmUgZ2VuZXJhbCBuYW1lcyBhY2NvcmRpbmcgdG8gdGhlIFBvc3RTY3JpcHQgc3BlY2lmaWNhdGlvbiAodGhlCglwcmV2aW91cyBvbmUgd2FzIHRvbyByZXN0cmljdGl2ZSkuCgkocGFyc2VfZm9udF9uYW1lLCBwYXJzZV9lbmNvZGluZywgcGFyc2VfY2hhcnN0cmluZ3MsIHBhcnNlX2RpY3QpOgoJVXNlIGBpc19uYW1lX2NoYXInLgoJKHBhcnNlX3N1YnJzKTogSGFuZGxlIGVtcHR5IGFycmF5cy4KCjIwMDMtMDMtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglTZXJpb3VzIHJld3JpdGluZyBvZiB0aGUgZG9jdW1lbnRhdGlvbi4KCgkqIGRvY3MvQlVHUywgZG9jcy9CVUlMRDogUmVtb3ZlZC4KCSogZG9jcy9ERUJVRy5UWFQ6IFJlbmFtZWQgdG8uLi4KCSogZG9jcy9ERUJVRzogVGhpcy4KCSogZG9jcy9DVVNUT01JWkUsIGRvY3MvVFJVRVRZUEUsIGRvY3MvVVBHUkFERS5VTlg6IE5ldyBmaWxlcy4KCSogZG9jcy9JTlNUQUxMLkFOWSwgZG9jcy9JTlNUQUxMLlVOWCwgZG9jcy9JTlNUQUxMLkdOVSBOZXcgZmlsZXMsCgljb250YWluaW5nIHBsYXRmb3JtIHNwZWNpZmljIGluZm9ybWF0aW9uIHByZXZpb3VzbHkgaW4gSU5TVEFMTC4KCSogZG9jcy9yZWFkbWUudm1zOiBSZW5hbWVkIHRvLi4uCgkqIGRvY3MvSU5TVEFMTC5WTVM6IFRoaXMuCgoJKiBkb2NzLyo6IFVwZGF0ZWQuCgoJSW50cm9kdWNlZCB0aHJlZSBuZXcgZnVuY3Rpb25zIHRvIGRlYWwgd2l0aCBnbHlwaCBiaXRtYXBzIHdpdGhpbgoJRlRfR2x5cGhTbG90IG9iamVjdHM6CgoJICBmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAKCSAgZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcAoJICBmdF9nbHlwaHNsb3Rfc2V0X2JpdG1hcAoKCVRoZXNlIGZ1bmN0aW9ucyBhcmUgbXVjaCBtb3JlIGNvbnZlbmllbnQgdG8gdXNlIHRoYW4gbWFuYWdpbmcgdGhlCglGVF9HTFlQSF9PV05fQklUTUFQIGZsYWcgbWFudWFsbHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAsCglmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwLCBmdF9nbHlwaHNsb3Rfc2V0X2JpdG1hcCk6IE5ldyBmdW5jdGlvbnMuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbXBsZW1lbnQgdGhlbS4KCShmdF9nbHlwaHNsb3RfZG9uZSk6IFVzZSBmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9HbHlwaF9Mb2FkKSwgc3JjL3BjZi9wY2Zkcml2ZXIuYwoJKFBDRl9HbHlwaF9Mb2FkKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbWVtb3J5Jy4KCVVzZSBgZnRfZ2x5cGhzbG90XyonIGZ1bmN0aW9ucy4KCURvbid0IHNldCBgRlRfR0xZUEhfT1dOX0JJVE1BUCcuCgoJKiBzcmMvcGZyL3BmcnNiaXQuYyAocGZyX3Nsb3RfbG9hZF9iaXRtYXApOiBVc2UKCWBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwJy4KCgkqIHNyYy9zZm50L3R0c2JpdC5jIChMb2FkX1NCaXRfSW1hZ2UpOiBDaGFuZ2UgNXRoIGFyZ3VtZW50IHRvIHR5cGUKCWBGVF9HbHlwaFNsb3QnLgoJQWRkaW5nIGFyZ3VtZW50IGBkZXB0aCcgdG8gaGFuZGxlIHJlY3Vyc2l2ZSBjYWxscy4KCVVzZSBgZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcCcuCgkodHRfZmFjZV9sb2FkX3NiaXRfaW1hZ2UpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBtZW1vcnknLgoJRG9uJ3QgaGFuZGxlIGBGVF9HTFlQSF9PV05fQklUTUFQJy4KCVVwZGF0ZSBjYWxsIHRvIExvYWRfU0JpdF9JbWFnZS4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChmdF9nbHlwaHNsb3RfY2xlYXIpOiBSZW5hbWVkIHRvLi4uCgkodDQyX2dseXBoc2xvdF9jbGVhcik6IFRoaXMuICBVcGRhdGVkIGNhbGxlci4KCUNhbGwgYGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcCcuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9Mb2FkX0dseXBoKTogVXNlCglgZnRfZ2x5cGhzbG90X3NldF9iaXRtYXAnLgoJRG9uJ3QgaGFuZGxlIGBGVF9HTFlQSF9PV05fQklUTUFQJy4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVMaXN0X0xvb2t1cCk6IEZpeGVkIGFuIGludmFsaWQgYXNzZXJ0aW9uCgljaGVjay4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbG9hZCk6IEFkZCB0d28gc2NhbGluZwoJYXJndW1lbnRzLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5oOiBVcGRhdGVkLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogVXBkYXRlZC4KCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKGFoX2hpbnRlcl9jb21wdXRlX3dpZHRocyk6IFVwZGF0ZWQuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX2ZhbWlseV9kb25lKTogRml4ZWQgc21hbGwgYnVnIHRoYXQgY291bGQKCWNyYXNoIHRoZSBjYWNoZSBpbiByYXJlIGNpcmN1bXN0YW5jZXMgKG1vc3RseSB3aXRoIGJyb2tlbiBmb250cykuCgoyMDAzLTAzLTE1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBGaXhlZCBhIHNtYWxsIHJvdW5kaW5nCglidWcuICBBY3R1YWxseSwgaXQgc2VlbXMgdGhhdCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBGcmVlVHlwZSBkaWRuJ3QKCXBlcmZvcm0gVHJ1ZVR5cGUgcm91bmRpbmcgZXhhY3RseSBhcyBhcHByb3ByaWF0ZS4KCjIwMDMtMDMtMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcyk6IEZpeGluZyB0aGUgc21hbGwKCVRydWVUeXBlIG5hdGl2ZSByZW5kZXJpbmcgZ2xpdGNoZXM7IHRoZXkgY2FtZSBmcm9tIGEgc21hbGwgcm91bmRpbmcKCWVycm9yLgoKMjAwMy0wMy0xMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIG5ldyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gY29udHJvbCBtZW1vcnkgZGVidWdnaW5nIHdpdGgKCUZyZWVUeXBlLiAgU2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBgRlQyX0RFQlVHX01FTU9SWScsCglgRlQyX0FMTE9DX1RPVEFMX01BWCcgYW5kIGBGVDJfQUxMT0NfQ09VTlRfTUFYJyBpbiBERUJVRy5UWFQuCgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChGVF9NZW1UYWJsZVJlYyk6IEFkZCBgYWxsb2NfY291bnQnLAoJYGJvdW5kX3RvdGFsJywgYGFsbG9jX3RvdGFsX21heCcsIGBib3VuZF9jb3VudCcsIGBhbGxvY19jb3VudF9tYXgnLgoJKGZ0X21lbV9kZWJ1Z19hbGxvYyk6IEhhbmRsZSBuZXcgdmFyaWFibGVzLgoJKGZ0X21lbV9kZWJ1Z19pbml0KTogcy9GVF9ERUJVR19NRU1PUlkvRlQyX0RFQlVHX01FTU9SWS8uCglIYW5kbGUgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlcy4KCSogZG9jcy9ERUJVRy5UWFQ6IFVwZGF0ZWQuCgoJRml4ZWQgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gdG8gY29ycmVjdGx5IGRlYWwgd2l0aCBvdXQtb2YtbWVtb3J5Cgljb25kaXRpb25zLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2Rlc3Ryb3kpOiBDb21tZW50IG91dCBnZW5lcmljCgljaGVjay4KCShmdGNfY2FjaGVfbG9va3VwKTogSW1wbGVtZW50IGxvb3AuCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmM6IERlZmluZSBGVF9DT01QT05FTlQuCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBIYW5kbGUKCUZUX0Vycl9PdXRfT2ZfTWVtb3J5LgoJKiBzcmMvY2FjaGUvZnRscnUuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9ERUJVR19ILgoJKEZUX0xydUxpc3RfTG9va3VwKTogSW1wbGVtZW50IGxvb3AuCgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfZG9uZSk6IEZpeCBtZW1vcnkgbGVhay4KCShwZnJfZmFjZV9pbml0KTogRml4aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChyZWFsbG9jYXRlX3QxX3RhYmxlKTogRml4ZWQgYSBidWcgKG1lbW9yeQoJbGVhaykgdGhhdCBvbmx5IGhhcHBlbmVkIHdoZW4gYSB0cnkgdG8gcmVzaXplIGFuIGFycmF5IHdvdWxkIGVuZCBpbgoJYW4gb3V0LW9mLW1lbW9yeSBjb25kaXRpb24uCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9jb252ZXJ0X2dseXBoKTogUmVtb3ZlZCBjb21waWxlcgoJd2FybmluZ3MgLyB2b2xhdGlsZSBidWcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKHR0X2dseXBoem9uZV9kb25lKTogUmVtb3ZlZCBzZWdtZW50YXRpb24KCWZhdWx0IHRoYXQgaGFwcGVuZWQgaW4gdGlnaHQgbWVtb3J5IGVudmlyb25tZW50cy4KCjIwMDMtMDItMjggIFBpeGVsICA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jIChmdF9nemlwX2ZpbGVfZG9uZSk6IEZpeGVkIG1lbW9yeSBsZWFrOiBUaGUgWkxpYgoJc3RyZWFtIHdhcyBub3QgcHJvcGVybHkgZmluYWxpemVkLgoKMjAwMy0wMi0yNSAgQW50aG9ueSBGb2sgIDxhbnRob255QHRoaXpsaW51eC5jb20+CgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jOiBJbmNsdWRlIEZUX1RSVUVUWVBFX0lEU19ILgoJKGZ0Y19jbWFwX2ZhbWlseV9pbml0KTogVGhlIGNtYXAgY2FjaGUgbm93CglzdXBwb3J0cyBVQ1MtNCBjaGFybWFwcyB3aGVuIGF2YWlsYWJsZSBpbiBBc2lhbiBmb250cy4KCgkqIHNyYy9zZm50L3R0bG9hZC5jLCBzcmMvYmFzZS9mdG9ianMuYzogQ2hhbmdlZCBgYXNpYW4nIHRvIGBBc2lhbicKCWluIGNvbW1lbnRzLgoKMjAwMy0wMi0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKGZ0X2d6aXBfZmlsZV9maWxsX291dHB1dCk6IEZpeGVkIGEgYnVnIHRoYXQKCWNhdXNlZCBGcmVlVHlwZSB0byBsb29wIGVuZGxlc3NseSB3aGVuIHRyeWluZyB0byByZWFkIGNlcnRhaW4KCWNvbXByZXNzZWQgZ3ppcCBmaWxlcy4gIFRoZSBmb2xsb3dpbmcgdGVzdCByZXZlYWxzIHRoZSBidWc6CgoJICB0b3VjaCAwMTIzNDU2Nzg5IDsgZ3ppcCAwMTIzNDU2Nzg5IDsgZnRkdW1wIDAxMjM0NTY3ODkuZ3oKCglTZXZlcmFsIGZpeGVzIHRvIHRoZSBQRlIgZm9udCBkcml2ZXI6CgoJLSBUaGUgbGlzdCBvZiBhdmFpbGFibGUgZW1iZWRkZWQgYml0bWFwcyB3YXMgbm90IGNvcnJlY3RseSBzZXQgaW4KCSAgdGhlIHJvb3QgRlRfRmFjZVJlYyBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgZmFjZS4KCgktIFRoZSBnbHlwaCBsb2FkZXIgYWx3YXlzIHRyaWVkIHRvIGxvYWQgdGhlIG91dGxpbmVzIHdoZW4KCSAgRlRfTE9BRF9TQklUU19PTkxZIHdhcyBzcGVjaWZpZWQuCgoJLSBUaGUgdGFibGUgbG9hZGVkIG5vdyBzY2FucyBmb3IgKnVuZG9jdW1lbnRlZCogZWxlbWVudHMgb2YgYQoJICBwaHlzaWNhbCBmb250J3MgYXV4aWxpYXJ5IGRhdGEgcmVjb3JkLiAgVGhpcyBpcyBuZWNlc3NhcnkgdG8KCSAgcmV0cmlldmUgdGhlIGByZWFsJyBmYW1pbHkgYW5kIHN0eWxlIG5hbWVzLgoKCU5PVEUgVEhBVCBUSEVTRSBDSEFOR0VTIFRIRSBGQU1JTFkgTkFNRSBPRiBNQU5ZIFBGUiBGT05UUyEKCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfYXV4X25hbWVfbG9hZCk6IE5ldyBmdW5jdGlvbi4KCShwZnJfcGh5X2ZvbnRfZG9uZSk6IEZyZWUgYGZhbWlseV9uYW1lJyBhbmQgYHN0eWxlX25hbWUnIGFsc28uCglSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KCShwZnJfcGh5X2ZvbnRfbG9hZCk6IEV4dHJhY3QgdXNlZnVsIGluZm9ybWF0aW9uIGZyb20gdGhlIGF1eGlsaWFyeQoJYnl0ZXMuCgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfZG9uZSk6IFNldCBwb2ludGVycyB0byBOVUxMLgoJKHBmcl9mYWNlX2luaXQpOiBQcm92aWRlIGZhbGxiYWNrIHZhbHVlcyBmb3IgYGZhbWlseV9uYW1lJyBhbmQKCWBzdHlsZV9uYW1lJy4KCUhhbmRsZSBzdHJpa2VzLgoJKHBmcl9zbG90X2xvYWQpOiBIYW5kbGUgRlRfTE9BRF9TQklUU19PTkxZLgoJKiBzcmMvcGZyL3BmcnR5cGVzLmggKFBGUl9QaHlGb250UmVjKTogQWRkIGZpZWxkcyBgYXNjZW50JywKCWBkZXNjZW50JywgYGxlYWRpbmcnLCBgZmFtaWx5X25hbWUnLCBhbmQgYHN0eWxlX25hbWUnLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogRml4ZWQgYSByb3VuZGluZyBidWcKCXdoZW4gY29tcHV0aW5nIHRoZSBzY2FsZSBmYWN0b3JzIGZvciBhIGdpdmVuIGNoYXJhY3RlciBzaXplIGluCglwb2ludHMgd2l0aCByZXNvbHV0aW9uLgoKCSogZGV2ZWwvZnQyYnVpbGQuaCwgZGV2ZWwvZnRvcHRpb24uaDogTmV3IGZpbGVzIChpbiBhIG5ldyBkaXJlY3RvcnkpCgl3aGljaCBhcmUgc3BlY2lhbCBkZXZlbG9wbWVudCB2ZXJzaW9ucyBvZiBpbmNsdWRlL2Z0MmJ1aWxkLmggYW5kCglpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLCByZXNwZWN0aXZlbHkuCgoyMDAzLTAyLTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4aW5nIHRoZSBzbGlnaHQgZGlzdG9ydGlvbiBwcm9ibGVtIHRoYXQgb2NjdXJyZWQgZHVlIHRvIHRoZSBsYXRlc3QKCWF1dG8taGludGVyIGNoYW5nZXMuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoZnRfcmVjb21wdXRlX3NjYWxlZF9tZXRyaWNzKTogRml4IHJvdW5kaW5nLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogTmV3IHZhcmlhYmxlIGBtZXRyaWNzMicuCglbIVRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVJdOiBSZW1vdmVkLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5oIChUVF9TaXplUmVjKTogTmV3IGZpZWxkIGBtZXRyaWNzJy4KCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChSZXNldF9PdXRsaW5lX1NpemUpOiBGaXggaW5pdGlhbGl6YXRpb24gb2YKCWBtZXRyaWNzJy4KCVtGVF9DT05GSUdfQ0hFU1RFUl9BU0NFTkRFUl06IENvZGUgcmVtb3ZlZC4KCShSZXNldF9TQml0X1NpemUpOiBGaXggaW5pdGlhbGl6YXRpb24gb2YgYG1ldHJpY3MnLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKFRUX0xvYWRfQ29udGV4dCk6IEZpeCBpbml0aWFsaXphdGlvbiBvZgoJYGV4ZWMtPm1ldHJpY3MnLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCk6IERpc2FibGVkIHRoZSBhZHZhbmNlIHdpZHRoCglgY29ycmVjdGlvbicgd2hpY2ggc2VlbWVkIHRvIHByb3ZpZGUgbW9yZSB0cm91YmxlIHRoYW4gYmVuZWZpdHMuCgoyMDAzLTAyLTEzICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJQ2hhbmdlZCB0aGUgaW5jcmVtZW50YWwgbG9hZGluZyBpbnRlcmZhY2UgaW4gYSB3YXkgdGhhdCBtYWtlcyBpdAoJc2ltcGxlciBhbmQgYWxsb3dzIGdseXBoIG1ldHJpY3MgdG8gYmUgY2hhbmdlZCAoZS5nLiwgYnkgYWRkaW5nIGEKCWNvbnN0YW50LCBhcyByZXF1aXJlZCBieSBDRkYgZm9udHMpIHJhdGhlciB0aGFuIGp1c3Qgb3ZlcnJpZGRlbi4KCVRoaXMgd2FzIHJlcXVpcmVkIHRvIG1ha2UgdGhlIEdob3N0U2NyaXB0LXRvLUZyZWVUeXBlIGJyaWRnZSB3b3JrLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfc2xvdF9sb2FkKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglBbGxvdyBtZXRyaWNzIHRvIGJlIG92ZXJyaWRkZW4uCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCURpdHRvLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogU2ltcGxpZnkuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IENvZGUgYmxvY2sKCW1vdmVkIGRvd24uCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9QYXJzZV9HbHlwaF9BbmRfR2V0X0NoYXJfU3RyaW5nKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGluY3JlbS5oOiBVcGRhdGVkLgoKMjAwMy0wMS0zMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9DSEFOR0VTLCBkb2NzL1ZFUlNJT04uRExMLCBkb2NzL1RPRE86IFVwZGF0aW5nIGRvY3VtZW50YXRpb24KCWZvciB0aGUgMi4xLjQgcmVsZWFzZS4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcCwKCWJ1aWxkcy93aW4zMi92aXN1YWxjL2luZGV4Lmh0bWw6IFVwZGF0aW5nIHRoZSBwcm9qZWN0IGZpbGUgZm9yCgkyLjEuNC4KCgkqIHNyYy9nemlwL2FkbGVyMzIuYywgc3JjL2d6aXAvZnRnemlwLmMsIHNyYy9nemlwL2luZmJsb2NrLmMsCglzcmMvZ3ppcC9pbmZjb2Rlcy5jLCBzcmMvZ3ppcC9pbmZsYXRlLmMsIHNyYy9nemlwL2luZnRyZWVzLmMsCglzcmMvZ3ppcC9pbmZ1dGlsLmM6IFJlbW92ZWQgb2xkLXN0eWxlIChLJlIpZnVuY3Rpb24gZGVmaW5pdGlvbnMuCglUaGlzIGF2b2lkcyB3YXJuaW5ncyB3aXRoIFZpc3VhbCBDKysgYXQgaXRzIG1vc3QgcGVkYW50aWMgbW9kZS4KCgkqIHNyYy9wZnIvcGZyc2JpdC5jOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfZmFtaWx5X2luaXQpOiBDaGFuZ2VkIGFuIEZUX0VSUk9SCglpbnRvIGFuIEZUX1RSQUNFMSBzaW5jZSBpdCBjYXVzZWQgYGZ0dmlldycgYW5kIG90aGVycyB0byBkdW1wIHRvbwoJbXVjaCBqdW5rIHdoZW4gdHJ5aW5nIHRvIGRpc3BsYXkgYSB3YXRlcmZhbGwgd2l0aCBhIGZvbnQgd2l0aG91dCBhCglVbmljb2RlIGNoYXJtYXAgKGUuZy4gIFNZTUJPTC5UVEYpLgoKCUltcGxlbWVudGVkIEZUX0NPTkZJR19DSEVTVEVSX0JMVUVfU0NBTEUsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxhc3QKCXBhdGNoIGZyb20gRGF2aWQgQ2hlc3RlciwgYnV0IHdpdGggYSBtdWNoIHNpbXBsZXIgKGFuZCBzYW5lcikKCWltcGxlbWVudGF0aW9uLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCkKCVtGVF9DT05GSUdfQ0hFU1RFUl9CTFVFX1NDQUxFXTogVHJ5IHRvIG9wdGltaXplIHRoZSB5X3NjYWxlIHNvIHRoYXQKCXRoZSB0b3Agb2Ygbm9uLWNhcGl0YWwgbGV0dGVycyBpcyBhbGlnbmVkIG9uIGEgcGl4ZWwgYm91bmRhcnkKCXdoZW5ldmVyIHBvc3NpYmxlLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9DaGFyX1NpemUpCglbRlRfQ09ORklHX0NIRVNURVJfQkxVRV9TQ0FMRV06IFJvdW5kIGRpZmZlcmVudGx5LgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpCglbVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUl06IERvIHNvbWUgcm91bmRpbmcgb25seQoJaWYgdGhpcyBtYWNybyBpcyBkZWZpbmVkLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChSZXNldF9PdXRsaW5lX1NpemUpCglbRlRfQ09ORklHX0NIRVNURVJfQVNDRU5ERVJdOiBSb3VuZCBkaWZmZXJlbnRseS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jOiBJbXByb3ZlZCB0aGUgUG9zdHNjcmlwdCBoaW50ZXIuICBHZXR0aW5nCglyaWQgb2Ygc3RlbSBzbmFwcGluZyBzZWVtcyB0byB3b3JrIHdlbGwgaGVyZSAodGhvdWdoIHRoZSBzdGVtcyBhcmUKCXN0aWxsIHNsaWdodGx5IG1vdmVkIHRvIGluY3JlYXNlIGNvbnRyYXN0KS4KCShwc2gzX2RpbWVuc2lvbl9xdWFudGl6ZV9sZW4pOiBDb21tZW50ZWQgb3V0LgoJKHBzaDNfaGludF9hbGlnbl9saWdodCk6IE5ldyBmdW5jdGlvbi4KCShwc2gzX2hpbnRfYWxpZ24pOiBDb21tZW50IG91dCBzb21lIGNvZGUuCgoJVEhJUyBJTVBST1ZFUyBBTlRJLUFMSUFTRUQgUkVOREVSSU5HLCBCVVQgTU9OT0NIUk9NRSBBTkQgTENEIE1PREVTCglTVElMTCBTVUNLLgoKMjAwMy0wMS0yMiAgRGF2aWQgQ2hlc3RlciAgPGRhdmlkY2hlc3RlckBxbXgubmV0PgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9jb21wdXRlX3N0ZW1fd2lkdGgpOiBTbWFsbCBmaXggdG8gdGhlCglzdGVtIHdpZHRoIG9wdGltaXphdGlvbi4KCjIwMDMtMDEtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRpbmcgYSBuZXcgQVBJIGBGVF9HZXRfQkRGX1Byb3BlcnR5JyB0byByZXRyaWV2ZSB0aGUgQkRGCglwcm9wZXJ0aWVzIG9mIGEgZ2l2ZW4gUENGIG9yIEJERiBmb250LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGJkZi5oIChGVF9Qcm9wZXJ0eVR5cGUpOiBOZXcgZW51bWVyYXRpb24uCgkoQkRGX1Byb3BlcnR5LCBCREZfUHJvcGVydHlSZWMpOiBOZXcgc3RydWN0dXJlLgoJRlRfR2V0X0JERl9Qcm9wZXJ0eSk6IE5ldyBmdW5jdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9iZGZ0eXBlcy5oOiBJbmNsdWRlIEZUX0JERl9ILgoJKEJERl9HZXRQcm9wZXJ0eUZ1bmMpOiBOZXcgZnVuY3Rpb24gcG9pbnRlci4KCgkqIHNyYy9iYXNlL2Z0YmRmLmMgKHRlc3RfZm9udF90eXBlKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KCShGVF9HZXRfQkRGX0NoYXJzZXRfSUQpOiBVc2UgYHRlc3RfZm9udF90eXBlJy4KCShGVF9HZXRfQkRGX1Byb3BlcnR5KTogTmV3IGZ1bmN0aW9uLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jOiBJbmNsdWRlIEZUX0JERl9ILgoJKGJkZl9nZXRfYmRmX3Byb3BlcnR5LCBiZGZfZHJpdmVyX3JlcXVlc3Rlcik6IE5ldyBmdW5jdGlvbnMuCgkoYmRmX2RyaXZlcl9jbGFzcyk6IFVzZSBgYmRmX2RyaXZlcl9yZXF1ZXN0ZXInLgoKCSogc3JjL3BjZi9wY2Zkcml2ci5jOiBJbmNsdWRlIEZUX0JERl9ILgoJKHBjZl9nZXRfYmRmX3Byb3BlcnR5LCBwZGNfZHJpdmVyX3JlcXVlc3Rlcik6IE5ldyBmdW5jdGlvbnMKCShwY2ZfZHJpdmVyX2NsYXNzKTogVXNlIGBwY2ZfZHJpdmVyX3JlcXVlc3RlcicuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYzogSW5jbHVkZSBgcGNmcmVhZC5oJy4KCShwY2ZfZmluZF9wcm9wZXJ0eSk6IERlY29yYXRlIGl0IHdpdGggRlRfTE9DQUxfREVGLgoJKiBzcmMvcGNmL3BjZnJlYWQuaDogTmV3IGZpbGUsIHByb3ZpZGluZyBgcGNmX2ZpbmRfcHJvcGVydHknLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogUmVsYXhlZCB0aGUgYGhlYWQnIHRhYmxlIHNpemUKCXZlcmlmaWNhdGlvbiB0byBhY2NlcHQgYSBmZXcgYnJva2VuIGZvbnRzIHdobyBwYWQgdGhlIHNpemUKCWluY29ycmVjdGx5ICh0aGUgdGFibGUgc2hvdWxkIGJlIHBhZGRlZCwgYnV0IGl0cyBgc2l6ZScgZmllbGQKCXNob3VsZG4ndCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24pLgoKMjAwMy0wMS0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBSZWdlbmVyYXRlZCB3aXRoIGBsaWJ0b29saXplIC0tZm9yY2UKCS0tY29weScgZnJvbSBsaWJ0b29sIDEuNC4zLgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00OiBSZWdlbmVyYXRlZCB3aXRoIGBhY2xvY2FsIC1JIC4nIGZyb20KCWF1dG9tYWtlIDEuNy4xLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkIHdpdGggYXV0b2NvbmYgMi41NC4KCSogYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzLCBidWlsZHMvdW5peC9jb25maWcuc3ViOiBVcGRhdGVkIGZyb20KCWBjb25maWcnIENWUyBtb2R1bGUgYXQgc3VidmVyc2lvbnMuZ251Lm9yZy4KCSogYnVpbGRzL3VuaXgvaW5zdGFsbC1zaCwgYnVpbGRzL3VuaXgvbWtpbnN0YWxsZGlyczogVXBkYXRlZCBmcm9tCglgYXV0b21ha2UnIENWUyBtb2R1bGUgYXQgc3VidmVyc2lvbnMuZ251Lm9yZy4KCjIwMDMtMDEtMTUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRml4ZWQgZG9jdW1lbnRhdGlvbiBmb3IKCUZUX1NpemVfTWV0cmljcy4KCjIwMDMtMDEtMTUgIEphbWVzIFN1ICA8c3V6aGVAdHVyYm9saW51eC5jb20uY24+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9jaGVja19oZWFkZXIpOiBCdWdmaXg6IGNvdWxkbid0IHJlYWQKCWNlcnRhaW4gZ3ppcC1lZCBmb250IGZpbGVzICh0eXBvOiBgJiYnIC0+IGAmJykuCgoyMDAzLTAxLTE1ICBIdXcgRCBNIERhdmllcyAgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoKCUFkZGVkIGEgV2luZG93cyAuRk5UIHNwZWNpZmljIEFQSSAobW9zdGx5IGZvciBXaW5lKS4gIEFsc28gZml4ZWQgYQoJbmFzdHkgYnVnIGluIHRoZSBoZWFkZXIgbG9hZGVyIHdoaWNoIHdvdWxkIGNhdXNlIGludmFsaWQgbWVtb3J5CglvdmVyd3JpdGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfV0lORk9OVFNfSCk6IE5ldyBtYWNybwoJZm9yIGZ0d2luZm50LmguCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaDogSW5jbHVkZSBGVF9XSU5GT05UU19ILgoJKEZOVF9Gb250UmVjKTogVXBkYXRlZC4KCU1vdmUgV2luZG93cyBGTlQgZGVmaW5pdGlvbiB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0d2luZm50Lmg6IFRoaXMgbmV3IGZpbGUuCgkoRlRfV2luRk5UX0hlYWRlclJlYyk6IFJlbmFtZSBgcmVzZXJ2ZWQyJyB0byBgcmVzZXJ2ZWQxJy4KCSogc3JjL2Jhc2UvZnR3aW5mbnQuYzogTmV3IGZpbGUsIHByb3ZpZGluZyBgRlRfR2V0X1dpbkZOVF9IZWFkZXInLgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKHdpbmZudF9oZWFkZXJfZmllbGRzKTogVXBkYXRlZC4KCVJlbmFtZSBgcmVzZXJ2ZWQyJyB0byBgcmVzZXJ2ZWQxJy4KCShmbnRfZm9udF9sb2FkKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL2Rlc2NyaXAubW1zLCBzcmMvYmFzZS9ydWxlcy5tazoKCVVwZGF0ZWQuCgoyMDAzLTAxLTE0ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaCwgc3JjL2Jhc2UvZnRnbHlwaC5jOiBBZGRlZCBgY29uc3QnIHRvCgl0aGUgdHlwZSBvZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gRlRfTWF0cml4X011bHRpcGx5LCB3aGljaCBpc24ndAoJY2hhbmdlZCAtLSB0aGlzIGFkZHMgZG9jdW1lbnRhdGlvbiBhbmQgY29udmVuaWVuY2UuCgoyMDAzLTAxLTEzICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX21ldHJpY3MpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFRydWVUeXBlIHR5cGVmYWNlcyB3aXRob3V0Cglob3Jpem9udGFsIG1ldHJpY3MgKHdpdGhvdXQgdGhlIGBobXR4JyB0YWJsZSkgYXJlIG5vdyB0b2xlcmF0ZWQgaWYKCWFuIGluY3JlbWVudGFsIGludGVyZmFjZSBoYXMgYmVlbiBzcGVjaWZpZWQgdGhhdCBoYXMgYQoJZ2V0X2dseXBoX21ldHJpY3MgZnVuY3Rpb24sIGltcGx5aW5nIHRoYXQgbWV0cmljcyB3aWxsIGJlIHN1cHBsaWVkCglmcm9tIG91dHNpZGUuICBUaGlzIGhhcHBlbnMgZm9yIGNlcnRhaW4gVHlwZSA0MiBmb250cyBwYXNzZWQgZnJvbQoJR2hvc3RTY3JpcHQuCgoyMDAzLTAxLTExICBEYXZpZCBDaGVzdGVyICA8ZGF2aWRjaGVzdGVyQHFteC5uZXQ+CgoJUGF0Y2hlcyB0byB0aGUgYXV0by1oaW50ZXIgaW4gb3JkZXIgdG8gc2xpZ2h0bHkgaW1wcm92ZSB0aGUgb3V0cHV0LgoJTm90ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgY29udHJvbGxlZCB0aHJvdWdoIHRoZSBuZXcKCUZUX0NPTkZJR19PUFRJT05fQ0hFU1RFUl9ISU5UUyBkZWZpbmVkIGluIGBmdG9wdGlvbi5oJy4gIFRoZXJlIGFyZQoJYWxzbyBpbmRpdmlkdWFsIEZUX0NPTkZJR19DSEVTVEVSX1hYWCBtYWNyb3MgdG8gY29udHJvbCBpbmRpdmlkdWFsCglgZmVhdHVyZXMnLgoKCU5vdGUgdGhhdCBhbGwgaW1wcm92ZW1lbnRzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUKCXR3ZWFrZWQgZm9yIG9wdGltaXphdGlvbiBhbmQgdGVzdGluZyBwdXJwb3Nlcy4gIFRoZSBjb25maWd1cmF0aW9uCgltYWNyb3Mgd2lsbCBtb3N0IGxpa2VseSBkaXNhcHBlYXIgaW4gdGhlIHNob3J0IGZ1dHVyZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShGVF9DT05GSUdfT1BUSU9OX0NIRVNURVJfSElOVFMpOiBOZXcgbWFjcm8uCgkoRlRfQ09ORklHX0NIRVNURVJfe1NNQUxMX0YsQVNDRU5ERVIsU0VSSUYsU1RFTSxCTFVFX1NDQUxFfSkKCVtGVF9DT05GSUdfT1BUSU9OX0NIRVNURVJfSElOVFNdOiBOZXcgbWFjcm9zIHRvIGNvbnRyb2wgaW5kaXZpZHVhbAoJZmVhdHVyZXMuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoYmx1ZV9jaGFycykgW0ZUX0NPTkZJR19DSEVTVEVSX1NNQUxMX0ZdOgoJQWRkIGJsdWUgem9uZSBmb3IgYGZpamtkYmgnLgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuaCAoQUhfSVNfVE9QX0JMVUUpCglbRlRfQ09ORklHX0NIRVNURVJfU01BTExfRl06IFVzZSBgQUhfQkxVRV9TTUFMTF9GX1RPUCcuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfY29tcHV0ZV9lZGdlcykKCVtGVF9DT05GSUdfQ0hFU1RFUl9TRVJJRl06IFVzZSBgQUhfRURHRV9TRVJJRicuCgkoYWhfb3V0bGluZV9jb21wdXRlX2JsdWVfZWRnZXMpIFtGVF9DT05GSUdfQ0hFU1RFUl9TTUFMTF9GXToKCUluY3JlYXNlIHRocmVzaG9sZCBmb3IgYGJlc3RfZGlzdCcuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfY29tcHV0ZV9zdGVtX3dpZHRoKQoJW0ZUX0NPTkZJR19DSEVTVEVSX1NFUklGXTogUHJvdmlkZSBuZXcgdmVyc2lvbiBmb3IgaW1wcm92ZWQgc2VyaWYKCWhhbmRsaW5nLgoJKGFoX2FsaWduX2xpbmtlZF9lZGdlKSBbRlRfQ09ORklHX0NIRVNURVJfU0VSSUZdOiBVc2Ugc3BlY2lhbAoJdmVyc2lvbiBvZiBgYWhfY29tcHV0ZV9zdGVtX3dpZHRoJy4KCShhaF9oaW50X2VkZ2VzXzMpIFtGVF9DT05GSUdfQ0hFU1RFUl9TVEVNXTogQSBuZXcgYWxnb3JpdGhtIGZvciBzdGVtCglhbGlnbm1lbnQgd2hlbiBzdGVtIHdpZHRocyBhcmUgbGVzcyB0aGFuIDEuNSBwaXhlbHMgd2lkZSBjZW50ZXJzIHRoZQoJc3RlbSBzbGlnaHRseSBvZmYtY2VudGVyIG9mIHRoZSBjZW50ZXIgb2YgYSBwaXhlbCAodGhpcyBpbmNyZWFzZXMKCXNoYXJwbmVzcyBhbmQgY29uc2lzdGVuY3kpLgoJW0ZUX0NPTkZJR19DSEVTVEVSX1NFUklGXTogVXNlIHNwZWNpYWwgdmVyc2lvbiBvZgoJYGFoX2NvbXB1dGVfc3RlbV93aWR0aCcuCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggW0ZUX0NPTkZJR19DSEVTVEVSX1NNQUxMX0ZdOiBBZGQKCWBBSF9CTFVFX1NNQUxMX0ZfVE9QJy4KCjIwMDMtMDEtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaCAoV2luRk5UX0hlYWRlclJlYyk6IEluY3JlYXNlCglzaXplIG9mIGByZXNlcnZlZDInIHRvIGF2b2lkIG1lbW9yeSBvdmVyd3JpdGVzLgoKMjAwMy0wMS0wOCAgSHV3IERhd2llcyAgPGh1d0Bjb2Rld2VhdmVycy5jb20+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKHdpbmZudF9oZWFkZXJfZmllbGRzKTogUmVhZCAxNiBieXRlcyBpbnRvCglgcmVzZXJ2ZWQyJywgbm90IGByZXNlcnZlZCcuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoZmluZF91bmljb2RlX2NoYXJtYXApOiBGaXhlZCB0aGUgZXJyb3IgY29kZQoJcmV0dXJuZWQgd2hlbiB0aGUgZm9udCBkb2Vzbid0IGNvbnRhaW4gYSBVbmljb2RlIGNoYXJtYXAuICBUaGlzCglhbGxvd3MgRlQyIHRvIGxvYWQgYHN5bWJvbC50dGYnIGFuZCBhIGZldyBvdGhlcnMgY29ycmVjdGx5IHNpbmNlIHRoZQoJbGFzdCByZWxlYXNlLgoJKG9wZW5fZmFjZSk6IEZpeCByZXR1cm4gdmFsdWUuCgoyMDAzLTAxLTA4ICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCglJbXBsZW1lbnRlZCB0aGUgRlRfUkVOREVSX01PREVfTElHSFQgaGludGluZyBtb2RlIGluIHRoZSBhdXRvIGFuZAoJcG9zdHNjcmlwdCBoaW50ZXJzLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSGludGVyUmVjKTogQWRkIGBkb19zdGVtX2FkanVzdCcuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfY29tcHV0ZV9zdGVtX3dpZHRoKTogSGFuZGxlCgloaW50ZXItPmRvX3N0ZW1fYWRqdXN0LgoJKGFoX2hpbnRlcl9sb2FkX2dseXBoKTogU2V0IGhpbnRlci0+ZG9fc3RlbV9hZGp1c3QuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaCAoUFNIM19HbHlwaFJlYyk6IEFkZCBgZG9fc3RlbV9hZGp1c3QnLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19oaW50X2FsaWduKTogVXNlIGBkb19zdGVtX2FkanVzdCcuCgkocHMzX2hpbnRzX2FwcGx5KTogSGFuZGxlIEZUX1JFTkRFUl9NT0RFX0xJR0hULgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9SZW5kZXJfTW9kZSk6IEFkZAoJRlRfUkVOREVSX01PREVfTElHSFQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jOiBGaXhpbmcgdGhlIFRydWVUeXBlIGxvYWRlciB0byBoYW5kbGUKCWludmFsaWQgY29tcG9zaXRlcyBjb3JyZWN0bHkgYnkgbGltaXRpbmcgdGhlIHJlY3Vyc2lvbiBkZXB0aC4KCShUVF9NQVhfQ09NUE9TSVRFX1JFQ1VSU0UpOiBOZXcgbWFjcm8uCgkobG9hZF90cnVldHlwZV9nbHlwaCk6IEFkZCBhcmd1bWVudCBgcmVjdXJzZV9jb3VudCcuCglMb2FkIGEgY29tcG9zaXRlIG9ubHkgaWYgdGhlIG51bWJlcnMgb2YgY29udG91cnMgaXMgLTEsIGVtaXQgZXJyb3IKCW90aGVyd2lzZS4KCShUVF9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCjIwMDMtMDEtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIEphbXJ1bGVzLCBKYW1maWxlLCBKYW1maWxlLmluLCBzcmMvKi9KYW1maWxlOiBTbWFsbCBjaGFuZ2VzIHRvCglzdXBwb3J0IHRoZSBjb21waWxhdGlvbiBvZiBGcmVlVHlwZSAyIGFzIHBhcnQgb2YgbGFyZ2VyIHByb2plY3RzCgl3aXRoIHRoZWlyIG93biBjb25maWd1cmF0aW9uIG9wdGlvbnMgKG9ubHkgd2l0aCBKYW0pLgoKMjAwMy0wMS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRzdHJva2VyLmM6IFByb2JhYmx5IHRoZSBsYXN0IGJ1Zy1maXhlcyB0byB0aGUgc3Ryb2tlcjsKCXRoZSBBUEkgaXMgbGlrZWx5IHRvIGNoYW5nZSwgaG93ZXZlci4KCShmdF9zdHJva2VfYm9yZGVyX2Nsb3NlKTogRG9uJ3QgcmVjb3JkIGVtcHR5IHBhdGhzLgoJKGZ0X3N0cm9rZV9ib3JkZXJfZ2V0X2NvdW50cyk6IEluY3JlYXNlIGBudW1fcG9pbnRzJyBhbHNvIGluIGZvciBsb29wLgoJKGZ0X3N0cm9rZV9ib3JkZXJfZXhwb3J0KTogRG9uJ3QgaW5jcmVhc2UgYHdyaXRlJyB0d2ljZSBpbiBmb3IgbG9vcHMuCgkoZnRfc3Ryb2tlcl9vdXRzaWRlKTogSGFuZGxlIGBwaGknIHRvZ2V0aGVyIHdpdGggYHRoZXRhJy4KCShGVF9TdHJva2VyX1BhcnNlT3V0bGluZSk6IE5ldyBmdW5jdGlvbi4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX0FuZ2xlX0RpZmYpOiBGaXhpbmcgZnVuY3Rpb246IEl0IHJldHVybmVkCglpbnZhbGlkIHZhbHVlcyBmb3IgbGFyZ2UgbmVnYXRpdmUgYW5nbGUgZGlmZmVyZW5jZXMgKHJlc3VsdGluZyBpbgoJaW5jb3JyZWN0IHN0cm9rZXIgY29tcHV0YXRpb25zLCBhbW9uZyBvdGhlciB0aGluZ3MpLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2hhc2hfdW5saW5rKTogUmVtb3ZpbmcgaW5jb3JyZWN0Cglhc3NlcnRpb24sIGFuZCBjaGFuZ2luZyBjb2RlIHRvIGF2b2lkIGhhc2ggdGFibGUgc2l6ZSBjb250cmFjdGlvbi4KCgkqIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rLCBzcmMvYmFzZS9kZXNjcmlwLm1tczogQWRkaW5nCglgZnRzdHJva2VyJyB0byBkZWZhdWx0IGJ1aWxkLCBhcyBvcHRpb25hbCBjb21wb25lbnQuCgoyMDAyLTEyLTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvZ3ppcC9hZGxlcjMyLmMsIHNyYy9nemlwL2luZmJsb2NrLmMsIHNyYy9nemlwL2luZmxhdGUuYywKCXNyYy9nemlwL2luZnRyZWVzLmMsIHNyYy9nemlwL3pjb25mLmgsIHNyYy9nemlwL3psaWIuaCwKCXNyYy9nemlwL3p1dGlsLmg6IFVwZGF0ZXMgdG8gYWxsb3cgY29tcGlsYXRpb24gd2l0aG91dCBjb21waWxlcgoJd2FybmluZ3Mgd2l0aCBMQ0MtV2luMzIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogU2V0IHRvIDQuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogSW5jcmVhc2VkIHRvIDk6MzozLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGVkLgoKMjAwMi0xMi0yMyAgQW50aG9ueSBGb2sgIDxhbnRob255QHRoaXpsaW51eC5jb20+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMsIGJ1aWxkcy91bml4L3VuaXgtY2MuaW4gKExJTktfTElCUkFSWSksCglidWlsZHMvdW5peC91bml4LWRlZi5pbiAoU1lTVEVNX1pMSUIpOiBTbWFsbCBmaXggdG8gY29uZmlndXJlCglzdWItc3lzdGVtIG9uIFVuaXggdG8gYWxsb3cgb3RoZXIgcHJvZ3JhbXMgdG8gY29ycmVjdGx5IGxpbmsgd2l0aAoJemxpYiB3aGVuIG5lZWRlZC4KCjIwMDItMTItMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIChTRk5UX0xvYWRfVGFibGVfRnVuYyk6IE5ldwoJZnVuY3Rpb24gcG9pbnRlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCAoRlRfTG9hZF9TZm50X1RhYmxlKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvYmFzZS9mdG9ianMuYzogSW1wbGVtZW50IGl0LgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoc2ZudF9nZXRfaW50ZXJmYWNlKTogSGFuZGxlIGBsb2FkX3NmbnQnCgltb2R1bGUgcmVxdWVzdC4KCjIwMDItMTItMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChmaW5kX3VuaWNvZGVfY2hhcm1hcCk6IEFkZGVkIHNvbWUgY29tbWVudHMgdG8KCWJldHRlciBleHBsYWluIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUuCgkob3Blbl9mYWNlKTogSW5jbHVkZWQgR3JhaGFtIEFzaGVyJ3MgZml4IHRvIHByZXZlbnQgZmFjZXMgd2l0aG91dAoJVW5pY29kZSBjaGFybWFwcyBmcm9tIGxvYWRpbmcuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmM6IEluY2x1ZGVkIEdlb3JnZSBXaWxsaWFtcydzIGZpeCB0byBzdXBwb3J0Cgl2ZXJzaW9uIDIgZm9udHMgY29ycmVjdGx5LgoJKHdpbmZudF9oZWFkZXJfZmllbGRzKTogVXBkYXRlZC4KCShmbnRfZm9udF9sb2FkKTogSGFuZGxlIHZlcnNpb24gMiBmb250cy4KCShGTlRfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCgoyMDAyLTEyLTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGluZyBkb2N1bWVudCB0byBiZXR0ZXIgZXhwbGFpbiB0aGUKCWRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHRocmVlIHZlcnNpb24gbnVtYmVycyBiZWluZyB1c2VkIG9uIFVuaXgsIGFzCgl3ZWxsIGFzIHByb3ZpZGluZyBhbiBhdXRvY29uZiBmcmFnbWVudCBwcm92aWRlZCBieSBMYXJzIENsYXVzZW4uCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfY29uaWMpOiBGaXhlZCBzbWFsbCBidWcgdGhhdAoJcHJldmVudGVkIGJlemllciBhcmNzIHdpdGggbmVnYXRpdmUgdmVydGljYWwgY29vcmRpbmF0ZXMgdG8gYmUKCXJlbmRlcmVkIGFwcHJvcHJpYXRlbHkuCgoyMDAyLTEyLTAyICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IE1vZGlmaWVkIHRoZSBsb2dpYyB0byBnZXQgVW5pY29kZSBjaGFybWFwcy4KCU5vdyBpdCBsb2FkcyBVQ1MtNCBjaGFybWFwcyB3aGVuIHRoZXJlIGlzIG9uZS4KCShmaW5kX3VuaWNvZGVfY2hhcm1hcCk6IE5ldyBmdW5jdGlvbi4KCShvcGVuX2ZhY2UpOiBSZWZlciB0byB0aGUgYWJvdmUgb25lLgoJKEZUX1NlbGVjdF9DaGFybWFwKTogSWRlbS4KCjIwMDItMTEtMjkgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Z3ppcC5oOiBDb3JyZWN0IHRoZSBuYW1lIG9mIHRoZSBjb250cm9sbGluZwoJbWFjcm8gKHdhcyBfX0ZUWEY4Nl9IX18gLi4uKS4KCjIwMDItMTEtMjcgIFZpbmNlbnQgQ2Fyb24gIDx2LmNhcm9uQHplcm9kZXV4Lm5ldD4KCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluLCBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW4sCglidWlsZHMvdW5peC9jb25maWd1cmUuYWMsIHNyYy9nemlwL3J1bGVzLm1rLCBzcmMvZ3ppcC9mdGd6aXAuYwoJW0ZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUJdOiBBZGRpbmcgc3VwcG9ydCBmb3Igc3lzdGVtIHpsaWIKCWluc3RhbGxhdGlvbnMgaWYgYXZhaWxhYmxlIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gKFVuaXggb25seSkuCgoyMDAyLTExLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2NoYXJzZXRfbG9hZCwgY2ZmX2VuY29kaW5nX2xvYWQpOiBNb2RpZmllZAoJY2hhcnNldCBsb2FkZXIgdG8gYWNjZXB0IHByZS1kZWZpbmVkIGNoYXJzZXRzLCBldmVuIHdoZW4gdGhlIGZvbnQKCWNvbnRhaW5zIGZld2VyIGdseXBocy4gIEFsc28gZW5mb3JjZWQgbW9yZSBjaGVja3MgdG8gZW5zdXJlIHRoYXQgd2UKCW5ldmVyIG92ZXJmbG93IHRoZSBjaGFyYWN0ZXIgY29kZXMgYXJyYXkgaW4gdGhlIGVuY29kaW5nLgoKMjAwMi0xMS0yMiAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogVXBkYXRlZCB0byBsYXRlc3QgT3BlblR5cGUKCXNwZWNpZmljYXRpb24uCgoyMDAyLTExLTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMyByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTExLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjc2JpdC5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0CgljYXVzZWQgcHJvYmxlbXMgd2l0aCBlbWJlZGRlZCBiaXRtYXBzLgoKCSogc3JjL290bGF5b3V0L290bGF5b3V0LmgsIHNyYy9vdGx5YW91dC9vdGxjb25mLmgsCglzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jLCBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5oLAoJc3JjL290bGF5b3V0L290bHBhcnNlLmMsIHNyYy9vdGxheW91dC9vdGxwYXJzZS5oLAoJc3JjL290bGF5b3V0L290bHV0aWxzLmg6IFVwZGF0aW5nIHRoZSBPcGVuVHlwZSBMYXlvdXQgY29kZSwgYWRkaW5nCglzdXBwb3J0IGZvdCB0aGUgZmlyc3QgR1NVQiBsb29rdXBzLiAgTm90aGluZyB0aGF0IHJlYWxseSBjb21waWxlcwoJZm9yIG5vdyB0aG91Z2guCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2FsaWduX3NlcmlmX2VkZ2UpOiBEaXNhYmxlZCBzZXJpZiBzdGVtCgl3aWR0aCBxdWFudGl6YXRpb24uICBJdCBwcm9kdWNlcyBzbGlnaHRseSBiZXR0ZXIgc2hhcGVzIHRob3VnaCB0aGlzCglpcyBub3QgZGlzdGluZ3Vpc2hhYmxlIHdpdGggbWFueSBmb250cy4KCVJlbW92ZSBvdGhlciBkZWFkIGNvZGUuCgoJKiBzcmMvSmFtZmlsZSwgc3JjLyovSmFtZmlsZTogU2ltcGxpZmllZC4KCVVzZSAkKEZUMl9TUkNfRElSKS4KCjIwMDItMTEtMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfTE9BRF9UQVJHRVRfTElHSFQpOiBOZXcgbWFjcm8uCgkoRlRfTE9BRF9UQVJHRVQsIEZUX0xPQURfVEFSR0VUX01PREUpOiBVc2UgYCYgMTUnIGluc3RlYWQgb2YgYCYgNycuCgoyMDAyLTExLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLCBzcmMvZ3ppcC9mdGd6aXAuYzogQWRkZWQKCXN1cHBvcnQgZm9yIHRoZSBGVF9DT05GSUdfT1BUSU9OX1NZU1RFTV9aTElCIG9wdGlvbiwgdXNlZCB0byBzcGVjaWZ5Cgl0aGUgdXNlIG9mIHN5c3RlbS13aWRlIHpsaWIuCgoJTm90ZSB0aGF0IHRoaXMgbWFjcm8sIGFzIHdlbGwgYXMKCUZUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIsIGlzIG5vdCAjdW5kZWYtZWQgYW55bW9yZS4KCVRoaXMgYWxsb3dzIHRoZSBidWlsZCBzeXN0ZW0gdG8gZGVmaW5lIHRoZW0gZGVwZW5kaW5nIG9uIHRoZQoJY29uZmlndXJhdGlvbiAodHlwaWNhbGx5IGJ5IGFkZGluZyAtRCBmbGFncyBhdCBjb21waWxlIHRpbWUpLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9mYWNlX2J1aWxkX2NtYXBzKTogUmVtb3ZlZCBjb21waWxlcgoJd2FybmluZ3MgaW4gb3B0aW1pemVkIG1vZGUgcmVsYXRpdmUgdG8gdGhlIGB2b2xhdGlsZScgbG9jYWwKCXZhcmlhYmxlcy4gIFRoaXMgd2FzIG5vdCBhIGNvbXBpbGVyIGJ1ZyBhZnRlciBhbGwsIGJ1dCB0aGUgZmFjdCB0aGF0CglhIHBvaW50ZXIgdG8gYSB2b2xhdGlsZSB2YXJpYWJsZSBpcyBub3QgdGhlIHNhbWUgYXMgYSB2b2xhdGlsZQoJcG9pbnRlciB0byBhIHZhcmlhYmxlIDotKQoKCVRoZSBmaXggd2FzIHRvIGNoYW5nZQoJICBgdm9sYXRpbGUgRlRfQnl0ZSogcCcKCWludG8KCSAgYEZUX0J5dGUqIHZvbGF0aWxlIHAnLgoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9waHlfZm9udF9sb2FkKSwgc3JjL3Bmci9wZnJkcml2ci5jCgkocGZyX2dldF9tZXRyaWNzKSwgc3JjL2d6aXAvaW5mdHJlZXMuYzogUmVtb3ZlZCBjb21waWxlciB3YXJuaW5ncyBpbgoJb3B0aW1pemVkIG1vZGVzLgoKCSogc3JjL2d6aXAvKi5baGNdOiBNb2RpZmllZCBvdXIgemxpYiBjb3B5IGluIG9yZGVyIHRvIHByZXZlbnQKCWV4cG9ydGluZyBhbnkgemxpYiBmdW5jdGlvbiBuYW1lcyBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnQuICBUaGlzCglwcmV2ZW50cyBsaW5raW5nIHByb2JsZW1zIG9uIHNvbWUgcGxhdGZvcm1zLCB3aGVuIGFwcGxpY2F0aW9ucyB3YW50Cgl0byBsaW5rIEZyZWVUeXBlIF9hbmRfIHpsaWIgdG9nZXRoZXIuCgoyMDAyLTExLTA1ICBKdWxpdXN6ICA8amNoQHBwcy5qdXNzaWV1LmZyPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc190YWJsZV9hZGQpOiBNb2RpZmllZCBpbmNyZW1lbnQgbG9vcCBpbgoJb3JkZXIgdG8gaW1wbGVtZW50IGV4cG9uZW50aWFsIGJlaGF2aW91ci4KCjIwMDItMTEtMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBQRlItc3BlY2lmaWMgcHVibGljIEFQSS4gIEZpeGVkIHRoZSBrZXJuaW5nIHJldHJpZXZlbCByb3V0aW5lCgkoaXQgcmV0dXJuZWQgaW52YWxpZCB2YWx1ZXMgd2hlbiB0aGUgb3V0bGluZSBhbmQgbWV0cmljcyByZXNvbHV0aW9uCglkaWZmZXIpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHBmci5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3Bmci5oOiBOZXcKCWZpbGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9QRlJfSCk6IE5ldwoJbWFjcm8gZm9yIHBmci5oLgoKCSogc3JjL2Jhc2UvZnRwZnIuYzogTmV3IGZpbGUuCgkqIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL2Rlc2NyaXAubW1zOiBVcGRhdGVkLgoKCSogc3JjL3Bmci9wZnJkcml2ci5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BGUl9ILgoJKHBmcl9nZXRfa2VybmluZywgcGZyX2dldF9hZHZhbmNlLCBwZnJfZ2V0X21ldHJpY3MpOiBOZXcgZnVuY3Rpb25zLgoJKHBmcl9zZXJ2aWNlX3JlYyk6IE5ldyBmb3JtYXQgaW50ZXJmYWNlLgoJKHBmcl9kcml2ZXJfY2xhc3MpOiBVc2UgYHBmcl9zZXJ2aWNlX3JlYycuCglSZXBsYWNlIGBwZnJfZmFjZV9nZXRfa2VybmluZycgd2l0aCBgcGZyX2dldF9rZXJuaW5nJy4KCSogc3JjL3Bmci9wZnJvYmpzLmM6IFJlbW92ZSBkZWFkIGNvZGUuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoZnRfZ2x5cGhzbG90X2NsZWFyKTogU21hbGwgaW50ZXJuYWwgZml4IHRvCgliZXR0ZXIgc3VwcG9ydCBiaXRtYXAtYmFzZWQgZm9udCBmb3JtYXRzLgoKCSogc3JjL2Jhc2UvZnRzeW50aC5jIChGVF9HbHlwaFNsb3RfRW1ib2xkZW4pOiBGaXggaGFuZGxpbmcgb2YKCWBzY2FsZScuCglGaXggYXJndW1lbnRzIHRvIGBGVF9WZWN0b3JfRnJvbV9Qb2xhcicuCgoyMDAyLTEwLTMxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkIHN1cHBvcnQgZm9yIGF1dG9tYXRpYyBoYW5kbGluZyBvZiBnemlwLWNvbXByZXNzZWQgUENGIGZpbGVzLgoKCSogc3JjL2d6aXAvKjogTmV3IGZpbGVzLCB0YWtlbiBmcm9tIHRoZSB6bGliIHBhY2thZ2UgKGV4Y2VwdAoJZnRnemlwLmMpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGd6aXAuaCwgc3JjL2d6aXAvZnRnemlwLmM6IE5ldyBmaWxlcy4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfR1pJUF9IKTogTmV3IG1hY3JvIGZvcgoJYGZ0Z3ppcC5oJy4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmM6IEluY2x1ZGUgRlRfR1pJUF9IIGFuZCBGVF9FUlJPUlNfSC4KCShQQ0ZfRmFjZV9Jbml0KTogSWYgbm9ybWFsIG9wZW4gZmFpbHMsIHRyeSB0byBvcGVuIGd6aXAgc3RyZWFtLgoJKFBDRl9GYWNlX0RvbmUpOiBDbG9zZSBnemlwIHN0cmVhbS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcGNmdHlwZXMuaCAoUENGX1B1YmxpY19GYWNlUmVjKSwKCXNyYy9wY2YvcGNmLmggKFBDRl9GYWNlUmVjKTogQWRkIGBnemlwX3N0cmVhbScgYW5kIGBnemlwX3NvdXJjZScuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9DT05GSUdfT1BUSU9OX1VTRV9aTElCKToKCU5ldyBtYWNyby4KCShUMV9DT05GSUdfT1BUSU9OX0RJU0FCTEVfSElOVEVSLCBGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQUwoJRlRfQ09ORklHX09QVElPTl9OT19DT05WRU5JRU5DRV9GVU5DUywKCUZUX0NPTkZJR19PUFRJT05fQUxURVJOQVRFX0dMWVBIX0ZPUk1BVFMpOiBSZW1vdmVkLgoKCShGVF9FWFBPUlQsIEZUX0VYUE9SVF9ERUYsIEZUX0RFQlVHX0xFVkVMX0VSUk9SLAoJRlRfREVCVUdfTEVWRUxfVFJBQ0UsIEZUX0RFQlVHX01FTU9SWSk6IENvbW1lbnQgb3V0IGRlZmluaXRpb25zIHNvCgl0aGF0IHBsYXRmb3JtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSBjYW4gb3ZlcnJpZGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmg6IEluY2x1ZGUgRlRfU1lTVEVNX0guCgoyMDAyLTEwLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBGcmVlVHlwZSAyLjEuM3JjMyByZWxlYXNlZC4KCjIwMDItMTAtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oIChGVF9QT0lOVEVSX1RPX1VMT05HKTogTmV3IG1hY3JvLgoJKEZUQ19GQUNFX0lEX0hBU0gpOiBSZXdyaXR0ZW4sIHVzaW5nIEZUX1BPSU5URVJfVE9fVUxPTkcuCgoyMDAyLTEwLTIyICBHaXVzZXBwZSBHaGli8iAgPGdoaWJvQG1hbmRyYWtlc29mdC5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VuY29kaW5nKTogRml4IGVudHJ5IGZvciBsYXRpbi0yLgoKMjAwMi0xMC0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9PcGVuX0ZhY2UpOiBVc2UgYGNvbnN0JyBmb3IgYGFyZ3MnCgkoc3VnZ2VzdGVkIGJ5IEdyYWhhbSkuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9PcGVuX0ZhY2UpOiBVcGRhdGVkLgoJKGZ0X2lucHV0X3N0cmVhbV9uZXcpOiBEaXR0by4KCjIwMDItMTAtMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRpbmcgc3VwcG9ydCBmb3IgZW1iZWRkZWQgYml0bWFwcyB0byB0aGUgUEZSIGRyaXZlciwgYW5kIHJld3JpdGluZwoJaXRzIGtlcm5pbmcgbG9hZGVyL2hhbmRsZXIgdG8gdXNlIGFsbCBrZXJuaW5nIHBhaXJzIGluIGEgcGh5c2ljYWwKCWZvbnQgKGFuZCBub3QganVzdCB0aGUgZmlyc3QgaXRlbSkuCgoJKiBzcmMvcGZyL3Bmci5jOiBJbmNsdWRlIGBwZnJzYml0LmMnLgoJKiBzcmMvcGZyL3Bmcmdsb2FkLmM6IEluY2x1ZGUgYHBmcnNiaXQuaCcuCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfZXh0cmFfaXRlbV9sb2FkX2tlcm5pbmdfcGFpcnMpOiBSZXdyaXR0ZW4uCgkocGZyX3BoeV9mb250X2RvbmUsIHBmcl9waHlfZm9udF9sb2FkKTogVXBkYXRlZC4KCSogc3JjL3Bmci9wZnJvYmtzLmM6IEluY2x1ZGUgYHBmcnNiaXQuaCcuCgkocGZyX2ZhY2VfaW5pdCk6IEhhbmRsZSBrZXJuaW5nIGFuZCBlbWJlZGRlZCBiaXRtYXBzLgoJKHBmcl9zbG90X2xvYWQpOiBMb2FkIGVtYmVkZGVkIGJpdG1hcHMuCgkoUEZSX0tFUk5fSU5ERVgpOiBSZW1vdmVkLgoJKHBmcl9mYWNlX2dldF9rZXJuaW5nKTogUmV3cml0dGVuLgoJKiBzcmMvcGZyL3BmcnNiaXQuYywgc3JjL3Bmci9wZnJzYml0Lmg6IE5ldyBmaWxlcy4KCSogc3JjL3Bmci9wZnJ0eXBlcy5oIChQRlJfS2Vybkl0ZW1SZWMpOiBOZXcgc3RydWN0dXJlLgoJKFBGUl9LRVJOX0lOREVYKTogTmV3IG1hY3JvLgoJKFBGUl9QaHlGb250UmVjKTogQWRkIGl0ZW1zIGZvciBrZXJuaW5nIGFuZCBlbWJlZGRlZCBiaXRtYXBzLgoJKiBzcmMvcGZyL0phbWZpbGUgKF9zb3VyY2VzKSBbRlQyX01VTFRJXTogQWRkIGBwZnJzYml0Jy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogRG9uJ3QgbG9hZCBiaXRtYXAgZm9udHMgaWYKCUZUX0xPQURfTk9fUkVDVVJTRSBpcyBzZXQuCglMb2FkIGVtYmVkZGVkIGJpdG1hcHMgb25seSBpZiBGVF9MT0FEX05PX0JJVE1BUCBpc24ndCBzZXQuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvY29udGVudC5weSwgc3JjL3Rvb2xzL2RvY21ha2VyL3NvdXJjZXMucHksCglzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5OiBGaXhpbmcgYSBmZXcgbmFzdHkgYnVncy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfdmFsaWRhdGUpOiBUaGUgdmFsaWRhdG9yIGZvciBmb3JtYXQgNAoJc3ViLXRhYmxlcyBpcyBub3cgY2FwYWJsZSBvZiBkZWFsaW5nIHdpdGggaW52YWxpZCBgbGVuZ3RoJyBmaWVsZHMgYXQKCXRoZSBzdGFydCBvZiB0aGUgc3ViLXRhYmxlLiAgVGhpcyBhbGxvd3MgZm9udHMgbGlrZSBgbWdfX19fX18udHRmJwoJKGkuZS4gIE1hcnJpYWdlKSB0byByZXR1cm4gYWNjdXJhdGUgY2hhcm1hcHMuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAyLTEwLTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoU1VCUElYRUxTKTogQWRkIGNhc3QgdG8gYFRQb3MnLgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoJKFRSVU5DKTogQWRkIGNhc3QgdG8gYFRDb29yZCcuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkoVFJhc3Rlcik6IFVzZSBgVFBvcycgZm9yIG1pbl9leCwgbWF4X2V4LCBtaW5fZXksIG1heF9leSwgYW5kCglsYXN0X2V5LgoJVXBkYXRlIGFsbCBjYXN0cy4KCShncmF5X3JlbmRlcl9saW5lKTogRml4IGNhc3RzIGZvciBgcCcgYW5kIGBmaXJzdCcuCgoyMDAyLTEwLTAyICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoYmRmX2xvYWRfZm9udCk6IEFsbG9jYXRlIHRoZSBfYmRmX3BhcnNlX3QKCXN0cnVjdHVyZSB3aXRoIEZUX0FMTE9DIGluc3RlYWQgb2YgdXNpbmcgdGhlIHN0YWNrLgoKMjAwMi0wOS0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChudW1fc2JpdF9zdHJpa2VzLAoJbnVtX3NiaXRfc2NhbGVzKTogVXNlIGBGVF9VTG9uZycuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChzZm50X2xvYWRfZmFjZSk6IFVwZGF0ZWQgYWNjb3JkaW5nbHkuCgkqIHNyYy9zZm50L3R0c2JpdC5jICh0dF9mYWNlX3NldF9zYml0X3N0cmlrZSk6IERpdHRvLgoJKGZpbmRfc2JpdF9pbWFnZSk6IFJlbW92ZSBjYXN0LgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBGaXggY2FzdC4KCjIwMDItMDktMjcgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX25hbWVzKTogVXNlIGNhc3QuCgkqIHNyYy9zZm50L3R0Y21hcC5jIChjb2RlX3RvX25leHQyKTogVXNlIGxvbmcgY29uc3RhbnQuCgkoY29kZV90b19pbmRleDQpOiBVc2UgY2FzdC4KCShjb2RlX3RvX2luZGV4OF8xMik6IEZpeCBjYXN0LgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X2NoYXJfbmV4dCwgdHRfY21hcDhfY2hhcl9pbmRleCwKCXR0X2NtYXAxMl9jaGFyX2luZGV4KTogVXNlIGNhc3QgZm9yIGByZXN1bHQnLgoJKHR0X2ZhY2VfYnVpbGRfY21hcHMpOiBVc2UgY2FzdC4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X25hbWVfZW50cnlfYXNjaWlfZnJvbV91Y3M0KTogVXNlIGNhc3QgZm9yCglgY29kZScuCgkoc2ZudF9sb2FkX2ZhY2UpOiBVc2UgRlRfSW50MzIgZm9yIGBmbGFncycuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfc2NhbmxpbmUsIGdyYXlfcmVuZGVyX2xpbmUsCglncmF5X2NvbXB1dGVfY2JveCwgZ3JheV9jb252ZXJ0X2dseXBoLCBncmF5X3Jhc3Rlcl9yZXNldCk6IEFkZCBjYXN0cwoJdG8gYFRDb29yZCcgYW5kIGBpbnQnLgoJTW9yZSAxNmJpdCBmaXhlcy4KCXMvRlRfUG9zL1RQb3MvLgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXJfZ2VuZXJpYyk6IEFkZCBjYXN0cy4KCjIwMDItMDktMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0cG9zdC5jIChsb2FkX3Bvc3RfbmFtZXMsIHR0X2ZhY2VfZnJlZV9wc19uYW1lcywKCXR0X2ZhY2VfZ2V0X3BzX25hbWUpOiBSZXBsYWNlIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aCBpZiBjbGF1c2VzIHRvCgltYWtlIGl0IG1vcmUgcG9ydGFibGUuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IERpdHRvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZHVsZS5oIChGVF9Nb2R1bGVfQ2xhc3MpOiBVc2UgYEZUX0xvbmcnIGZvcgoJYG1vZHVsZV9zaXplJy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHJlbmRlci5oIChGVF9HbHlwaF9DbGFzc18pOiBVc2UgYEZUX0xvbmcnIGZvcgoJYGdseXBoX3NpemUnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1JlbmRlcl9HbHlwaCk6IENoYW5nZSBzZWNvbmQgcGFyYW1ldGVyIHRvCglgRlRfUmVuZGVyX01vZGUnLgoJKEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCk6IENoYW5nZSB0aGlyZCBwYXJhbWV0ZXIgdG8KCWBGVF9SZW5kZXJfTW9kZScuCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogQ2hhbmdlIHNlY29uZCBwYXJhbWV0ZXIKCXRvIGBGVF9SZW5kZXJfTW9kZScuCgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBDaGFuZ2UgdGhpcmQgcGFyYW1ldGVyCgl0byBgRlRfUmVuZGVyX01vZGUnLgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXIsIGZ0X3Ntb290aF9yZW5kZXJfbGNkLAoJZnRfc21vb3RoX3JlbmRlcl9sY2Rfdik6IERpdHRvLgoJKGZ0X3Ntb290aF9yZW5kZXJfZ2VuZXJpYyk6IENoYW5nZSB0aGlyZCBhbmQgZmlmdGggcGFyYW1ldGVyIHRvCglgRlRfUmVuZGVyX01vZGUnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9mdGdseXBoLmg6IFVwZGF0ZWQuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKExvYWRfR2x5cGgpLCBzcmMvcGNmL3BjZmRyaXZlci5jCgkoUENGX0dseXBoX0xvYWQpLCBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX3Nsb3RfbG9hZCksCglzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9Mb2FkX0dseXBoKSwgc3JjL3Q0Mi90NDJvYmpzLmMKCShUNDJfR2x5cGhTbG90X0xvYWQpLCBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9HbHlwaF9Mb2FkKTogQ2hhbmdlCglmb3VydGggcGFyYW1ldGVyIHRvIGBGVF9JbnQzMicuCgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCk6IEFkZCB0d28gbWlzc2luZyBwYXJhbWV0ZXJzCglhbmQgZGVjbGFyZSB0aGVtIGFzIHVudXNlZC4KCgkqIHNyYy9jaWQvY2lkcGFyc2UuaCAoQ0lEX1BhcnNlcik6IFVzZSBGVF9Mb25nIGZvciBgcG9zdHNjcmlwdF9sZW4nLgoKCSogc3JjL3BzbmFtZXMvcHNuYW1lcy5oIChQU19Vbmljb2RlX1ZhbHVlX0Z1bmMpOiBDaGFuZ2UgcmV0dXJuCgl2YWx1ZSB0byBGVF9VSW50MzIuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKHBzX3VuaWNvZGVfdmFsdWUsIHBzX2J1aWxkX3VuaWNvZGVfdGFibGUpOgoJVXBkYXRlZCBhY2NvcmRpbmdseS4KCjIwMDItMDktMjYgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKEdldF9LZXJuaW5nKTogVXNlIEZUX0xvbmcgZm9yIGBtaWRkbGUnLgoJKGNmZl9nZXRfZ2x5cGhfbmFtZSk6IFVzZSBjYXN0IGZvciByZXN1bHQgb2YgZnRfc3RybGVuLgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9yZWFsKTogVXNlciBjYXN0IGZvciBhc3NpZ25pbmcKCWBleHAnLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2luZGV4X2dldF9wb2ludGVycyk6IFVzZSBGVF9VTG9uZyBmb3IKCXNvbWUgbG9jYWwgdmFyaWFibGVzLgoJKGNmZl9jaGFyc2V0X2xvYWQsIGNmZl9lbmNvZGluZ19sb2FkKTogVXNlIGNhc3RzIHRvIEZUX1VJbnQgZm9yIHNvbWUKCXN3aXRjaCBzdGF0ZW1lbnRzLgoJKGNmZl9mb250X2xvYWQpOiBVc2UgY2FzdCBpbiBjYWxsIHRvIENGRl9Mb2FkX0ZEX1NlbGVjdC4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9zaXplX2luaXQpOiBVc2UgbW9yZSBjYXN0cy4KCShjZmZfZmFjZV9pbml0KTogVXNlIEZUX0ludDMyIGZvciBgZmxhZ3MnLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9vcGVyYXRvcl9zZWFjKTogVXNlIGNhc3QgZm9yIGFzc2lnbmluZwoJYGFkeCcgYW5kIGBhZHknLgoJKGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKTogVXNlIEZUX1VMb25nIGZvciB0aGlyZCBwYXJhbWV0ZXIuCglVc2UgbW9yZSBjYXN0cy4KCSogc3JjL2NmZi9jZmZjbWFwLmMgKGNmZl9jbWFwX3VuaWNvZGVfaW5pdCk6IFVzZSBjYXN0IGZvciBgY291bnQnLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogVXNlIEZUX1VMb25nIGZvciBgbGVuJy4KCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCk6IEFkZCBtaXNzaW5nIGNhc3QgZm9yCglgY2lkX2dldF9vZmZzZXQnLgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKHQxX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpIDwxOD46IFVzZQoJY2FzdCBmb3IgYG51bV9wb2ludHMnLgoJKHQxX2RlY29kZXJfaW5pdCk6IFVzZSBjYXN0IGZvciBhc3NpZ25pbmcgYGRlY29kZXItPm51bV9nbHlwaHMnLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jIChmdF9kZWJ1Z19pbml0KTogVXNlIEZUX0ludC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oIChGVF9TbG90X0xvYWRGdW5jKTogVXNlCglgRlRfSW50MzInIGZvciBmb3VydGggcGFyYW1ldGVyLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlKTogVXNlIGNhc3QgZm9yIGNhbGxpbmcKCWNsYXp6LT5pbml0X2ZhY2UuCgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKFNldF9IaWdoX1ByZWNpc2lvbik6IFVzZSBgMScgaW5zdGVhZCBvZgoJYDFMJy4KCShGaW5hbGl6ZV9Qcm9maWxlX1RhYmxlLCBMaW5lX1VwLCBmdF9ibGFja19pbml0KTogVXNlIGNhc3RzLgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBEaXR0by4KCgkqIHNyYy9zZm50L3NmbnRfZGlyX2NoZWNrOiBDb21wYXJlIGBtYWdpYycgd2l0aCB1bnNpZ25lZCBsb25nCgljb25zdGFudC4KCjIwMDItMDktMjYgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogVXBkYXRlZC4KCjIwMDItMDktMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0hJTlRfTUVUUklDUyk6IERpc2FibGluZyBtZXRyaWNzCgloaW50aW5nIGluIHRoZSBhdXRvLWhpbnRlci4gIFRoaXMgcHJvZHVjZXMgbXVjaCBiZXR0ZXIgYW50aS1hbGlhc2VkCgl0ZXh0LgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGluZyB0aGUgY2hhbmdlcyBkb2N1bWVudGF0aW9uLgoKMjAwMi0wOS0yNSAgQW50aG9ueSBGb2sgIDxhbnRob255QHRoaXpsaW51eC5jb20+CgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X3ZhbGlkYXRlLCB0dF9jbWFwNF9jaGFyX2luZGV4LAoJdHRfY21hcDRfY2hhcl9uZXh0KTogQWRkZWQgc3VwcG9ydCBmb3Igb3BlbnNfX18udHRmIChpdCBjb250YWlucyBhCgljaGFybWFwIHRoYXQgdXNlcyBvZmZzZXQ9MHhGRkZGVSBpbnN0ZWFkIG9mIDB4MDAwMCB0byBpbmRpY2F0ZSBhCgltaXNzaW5nIGdseXBoKS4KCjIwMDItMDktMjEgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoTG9hZF9HbHlwaCk6IEZvdXJ0aCBwYXJhbWV0ZXIgbXVzdCBiZQoJRlRfSW50MzIuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dGdsb2FkLmggKFRUX0xvYWRfR2x5cGgpOgoJRGl0dG8uCgoyMDAyLTA5LTE5ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCU1vcmUgMTZiaXQgZml4ZXMuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoc29ydF92YWx1ZXMpOiBVc2UgRlRfUG9zIGZvciBgc3dhcCcuCgkoYWhfaGludGVyX2NvbXB1dGVfd2lkdGhzKTogVXNlIEZUX1BvcyBmb3IgYGRpc3QnLgoJVXNlIEFIX01BWF9XSURUSFMuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfc2NhbGVfYmx1ZV9lZGdlcyk6IFVzZSBGVF9Qb3MKCWZvciBgZGVsdGEnLgoJKGFoX291dGxpbmVfY29tcHV0ZV9lZGdlcyk6IFJlcGxhY2Ugc29tZSBpbnRzIHdpdGggRlRfSW50IGFuZAoJRlRfUG9zLgoJKGFoX3Rlc3RfZXh0cmVtYSk6IENsZWFuIHVwIGNvZGUuCgkoYWhfZ2V0X29yaWVudGF0aW9uKTogVXNlIDQgRlRfSW50IHZhcmlhYmxlcyBpbnN0ZWFkIG9mIEZUX0JCb3ggdG8KCWhvbGQgaW5kaWNlcy4KCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfU2VnbWVudFJlYyk6IENoYW5nZSB0eXBlIG9mIGBzY29yZScKCXRvIEZUX1Bvcy4KCjIwMDItMDktMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCB0bwoJcmVjZW50IHZlcnNpb25zLgoKMjAwMi0wOS0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xpYnJhcnlfVmVyc2lvbik6IEJ1Z2ZpeC4KCgkqIEZyZWVUeXBlIDIuMS4zcmMyIChyZWxlYXNlIGNhbmRpZGF0ZSAyKSBpcyByZWxlYXNlZCEKCjIwMDItMDktMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlci5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzaW8uaCwKCWluY2x1ZGUvZnJlZXR5cGUvZnRzeXNtZW0uaCwgaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBVcGRhdGluZwoJdGhlIGluLXNvdXJjZSBkb2N1bWVudGF0aW9uLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyL3RvaHRtbC5weTogVXBkYXRpbmcgdGhlIEhUTUwgZm9ybWF0dGVyIGluIHRoZQoJRG9jTWFrZXIgdG9vbC4KCgkqIHNyYy90b29scy9kb2NtYWtlci5weTogUmVtb3ZlZC4KCjIwMDItMDktMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNb3JlIDE2Yml0IGZpeGVzLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChyZWFsbG9jYXRlX3QxX3RhYmxlKTogVXNlIEZUX0xvbmcgZm9yCglzZWNvbmQgcGFyYW1ldGVyLgoKMjAwMi0wOS0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCTE2Yml0IGZpeGVzIGZyb20gV29sZmdhbmcgRG9tcvZzZS4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmggKFQxX1BhcnNlclJlYyk6IENoYW5nZSB0eXBlIG9mIGBiYXNlX2xlbicKCWFuZCBgcHJpdmF0ZV9sZW4nIHRvIEZUX0xvbmcuCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBSZW1vdmUgY2FzdCBmb3IKCWBwcml2YXRlX2xlbicuCgkqIHNyYy90eXBlMS90MWxvYWQuYzogVXNlIEZUX0ludCBjYXN0IGZvciBtb3N0IGNhbGxzIG9mIFQxX1RvSW50LgoJVXNlIEZUX1B0ckRpc3Qgd2hlcmUgYXBwcm9wcmlhdGUuCgkocGFyc2VfZW5jb2RpbmcpOiBVc2UgRlRfTG9uZyBmb3IgYGNvdW50JyBhbmQgYG4nLgoJKHJlYWRfYmluYXJ5X2RhdGEpOiBVc2UgRlRfTG9uZyogZm9yIHNlY29uZCBwYXJhbWV0ZXIuCgkqIHNyYy90eXBlMS90MWFmbS5jIChhZm1fYXRvaW5kZXgpOiBVc2UgRlRfUHRyRGlzdC4KCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBSZW1vdmUgdW51c2VkIGxhYmVsLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19oaW50X2FsaWduKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCjIwMDItMDktMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNYWtpbmcgZnRncmF5cy5jIGNvbXBpbGUgc3RhbmQtYWxvbmUgYWdhaW4uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogSW5jbHVkZSBmdDJidWlsZC5oIG9ubHkgaWYgX1NUQU5EQUxPTkVfCglpc24ndCBkZWZpbmVkLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyBbX1NUQU5EQUxPTkVfXTogRGVmaW5lIGZ0X21lbXNldCwKCUZUX0JFR0lOX0hFQURFUiwgRlRfRU5EX0hFQURFUi4KCShGVF9NRU1fWkVSTyk6IERlZmluZS4KCShUUmFzdGVyKSBbR1JBWVNfVVNFX0dBTU1BXTogVXNlIGB1bnNpZ25lZCBjaGFyJyBpbnN0ZWFkIG9mIEZUX0J5dGUuCgkoZ3JheV9yZW5kZXJfc3BhbiwgZ3JheV9pbml0X2dhbW1hKTogRG9uJ3QgdXNlIGBGVF9VSW50Jy4KCURvbid0IGNhc3Qgd2l0aCBgRlRfQnl0ZScuCgkoZ3JheXNfaW5pdF9nYW1tYSk6IERvbid0IHVzZSBgRlRfVUludCcuCgoyMDAyLTA5LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGluaXQuYyAoRlRfQWRkX0RlZmF1bHRfTW9kdWxlcyk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZS4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0ZhY2VfRG9uZSk6IEltcHJvdmUgdHJhY2luZyBtZXNzYWdlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9NQVhfTU9EVUxFUyk6IEluY3JlYXNlZAoJdG8gMzIuCgoyMDAyLTA5LTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IFNldCB0byA5OjI6My4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogZG9jcy9WRVJTSU9OLkRMTDogVXBkYXRlZC4KCjIwMDItMDktMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cyksCglzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19nbHlwaF9maW5kX3N0cm9uZ19wb2ludHMpOiBBZGRpbmcgZml4Cgl0byBwcmV2ZW50IHNlZyBmYXVsdCB3aGVuIGhpbnRzIGFyZSBwcm92aWRlZCBpbiBhbiBlbXB0eSBnbHlwaC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5pIChHRU5fQ0FDSEVfTE9PS1VQKSBbRlRfREVCVUdfTEVWRUxfRVJST1JdOgoJUmVtb3ZlZCBjb25kaXRpb25hbCBjb2RlLiAgVGhpcyBmaXhlcyBhIGJ1ZyB0aGF0IHByZXZlbnRlZAoJY29tcGlsYXRpb24gaW4gZGVidWcgbW9kZSBvZiB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IFJlbW92ZWQgaW5jb3JyZWN0IGB6ZnRfJyBkZWZpbml0aW9ucwoJYW5kIHVwZGF0ZWQgY29uc3RhbnRzIGRvY3VtZW50YXRpb24gY29tbWVudHMuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZXJfcnVuKTogRml4ZWQgdGhlIENGRiB0YWJsZSBsb2FkZXIuCglJdCBkaWRuJ3QgYWNjZXB0IGVtcHR5IGFycmF5cywgYW5kIHRoaXMgcHJldmVudGVkIHRoZSBsb2FkaW5nIG9mCgljZXJ0YWluIGZvbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9GYWNlUmVjKTogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbgoJY29tbWVudC4gIFRoZSBgZGVzY2VuZGVyJyB2YWx1ZSBpcyBhbHdheXMgKm5lZ2F0aXZlKiwgbm90IHBvc2l0aXZlLgoKMjAwMi0wOS0wOSAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfR2x5cGhfTG9hZCk6IEZpeGluZyBpbmNvcnJlY3QgY29tcHV0YXRpb24KCW9mIGJpdG1hcCBtZXRyaWNzLgoKMjAwMi0wOS0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVZhcmlvdXMgdXBkYXRlcyB0byBjb3JyZWN0bHkgc3VwcG9ydCBzdWItcGl4ZWwgcmVuZGVyaW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogQWRkIHR3byByZW5kZXJlcnMgZm9yIExDRC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcl9sY2QsCglmdF9zbW9vdGhfcmVuZGVyX2xjZF92KTogU2V0IEZUX1BJWEVMX01PREVfTENEIGFuZAoJRlRfUElYRUxfTU9ERV9MQ0RfViwgcmVzcGVjdGl2ZWx5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNpbWFnZS5oIChGVENfSW1hZ2VUeXBlUmVjKTogTmV3CglzdHJ1Y3R1cmUuCglVcGRhdGVkIGFsbCB1c2Vycy4KCShGVENfSW1hZ2VEZXNjKTogUmVtb3ZlZC4KCShGVENfSW1hZ2VDYWNoZV9Mb29rdXApOiBTZWNvbmQgcGFyYW1ldGVyIGlzIG5vdyBvZiB0eXBlCglgRlRDX0ltYWdlVHlwZScuCglVcGRhdGVkIGFsbCB1c2Vycy4KCShGVENfSU1BR0VfREVTQ19DT01QQVJFKTogVXBkYXRlZCBhbmQgcmVuYW1lZCB0by4uLgoJKEZUQ19JTUFHRV9UWVBFX0NPTVBBUkUpOiBUaGlzLgoJKEZUQ19JTUFHRV9ERVNDX0hBU0gpOiBVcGRhdGVkIGFuZCByZW5hbWVkIHRvLi4uCgkoRlRDX0lNQUdFX1RZUEVfSEFTSCk6IFRoaXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y3NiaXRzLmggKEZUQ19TQml0UmVjKTogRmllbGQgYG51bV9ncmF5cycKCXJlcGxhY2VkIHdpdGggYG1heF9ncmF5cycuCglgcGl0Y2gnIGlzIG5vdyBGVF9TaG9ydC4KCShGVENfU0JpdENhY2hlX0xvb2t1cCk6IFNlY29uZCBwYXJhbWV0ZXIgaXMgbm93IG9mIHR5cGUKCWBGVENfSW1hZ2VUeXBlJy4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoKCSogc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKEZUQ19JbWFnZVF1ZXJ5UmVjLCBGVENfSW1hZ2VGYW1pbHlSZWMpOgoJVXBkYXRlZC4KCShmdGNfaW1hZ2Vfbm9kZV9pbml0KTogVXBkYXRlZC4KCU1vdmVkIGNvZGUgdG8gY29udmVydCB0eXBlIGZsYWdzIHRvIGxvYWQgZmxhZ3MgdG8uLi4KCShGVENfSW1hZ2VfQ2FjaGVfTG9va3VwKTogVGhpcyBmdW5jdGlvbi4KCShmdGNfaW1hZ2VfZmFtaWx5X2luaXQpOiBVcGRhdGVkLgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXQuYyAoRlRDX1NCaXRRdWVyeVJlYywgRlRDX1NCaXRGYW1pbHlSZWMpOgoJVXBkYXRlZC4KCShmdGNfc2JpdF9ub2RlX2xvYWQpOiBVcGRhdGVkLgoJTW92ZWQgY29kZSB0byBjb252ZXJ0IHR5cGUgZmxhZ3MgdG8gbG9hZCBmbGFncyB0by4uLgoJKEZUQ19TQml0Q2FjaGVfTG9va3VwKTogVGhpcyBmdW5jdGlvbi4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0hpbnRlclJlYyk6IFJlcGxhY2UgYG5vXypfaGludHMnIHdpdGgKCWBkb18qX3NuYXBwaW5nJy4KCVVwZGF0ZSBhbGwgdXNlcnMgKHdpdGggbmVnYXRpb24pLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2NvbXB1dGVfc3RlbV93aWR0aCk6IEZpeCB0aHJlc2hvbGQgZm9yCglgZGlzdCcgZm9yIGBkZWx0YScgPCA0MC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oIChQU0gzX0dseXBoUmVjKTogUmVwbGFjZSBgbm9fKl9oaW50cycgd2l0aAoJYGRvXypfc25hcHBpbmcnLgoJVXBkYXRlIGFsbCB1c2VycyAod2l0aCBuZWdhdGlvbikuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2RpbWVuc2lvbl9xdWFudGl6ZV9sZW4pOiBOZXcKCWZ1bmN0aW9uLgoJKHBzaDNfaGludF9hbGlnbik6IFVzZSBpdC4KCUltcHJvdmUgaGludGluZyBjb2RlLgoJW1NUUk9OR0VSXTogUmVtb3ZlZC4KCShTVFJPTkdFUik6IFJlbW92ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX1NldF9IaW50X0ZsYWdzLCBGVF9ISU5UXyopOgoJUmVtb3ZlZC4KCjIwMDItMDktMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfU2l6ZV9Jbml0KTogUmVuYW1lZCB0by4uLgoJKGNpZF9zaXplX2luaXQpOiBUaGlzLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFQxX0J1aWxkZXJfQWRkX1BvaW50MSk6IFJlbmFtZWQgdG8uLi4KCSh0MV9idWlsZGVyX2FkZF9wb2ludDEpOiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19oaW50X2FsaWduKTogRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Db21wdXRlX01heF9BZHZhbmNlKTogRGl0dG8uCgoyMDAyLTA5LTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IENvcnJlY3RlZCB0aGUgZGVmaW5pdGlvbiBvZgoJZnRfZW5jb2Rpbmdfc3ltYm9sIHRvIGJlIEZUX0VOQ09ESU5HX01TX1NZTUJPTCAoaW5zdGVhZCBvZgoJdGhlIGVycm9uZW91cyBGVF9FTkNPRElOR19TWU1CT0wpLgoKCSogYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4gKGRhdGFkaXIpOiBJbml0aWFsaXplIGl0ICh0aGFua3MgdG8KCUFudGhvbnkgRm9rKS4KCjIwMDItMDgtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglTbGlnaHQgbW9kaWZpY2F0aW9uIHRvIHRoZSBQb3N0c2NyaXB0IGhpbnRlciB0byBzbGlnaHRseSBpbmNyZWFzZQoJdGhlIGNvbnRyYXN0IG9mIHNtb290aCBoaW50aW5nLiAgVGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gd2hhdCB0aGUKCWF1dG8taGludGVyIGRvZXMgd2hlbiBpdCBjb21lcyB0byBzdGVtIHdpZHRoIGNvbXB1dGF0aW9ucy4gIEhvd2V2ZXIsCglpdCBwcm9kdWNlcyBiZXR0ZXIgcmVzdWx0cyB3aXRoIHdlbGwtaGludGVkIGZvbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9EZWNvZGVyX0Z1bmNzUmVjKTogQWRkIGhpbnQKCW1vZGUgdG8gYGluaXQnIG1lbWJlciBmdW5jdGlvbi4KCShUMV9EZWNvZGVyUmVjKTogQWRkIGhpbnQgbW9kZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzIChUMV9IaW50c19BcHBseUZ1bmMsCglUMl9IaW50c19BcHBseUZ1bmMpOiBQYXNzIGBoaW50X21vZGUnLCBub3QgYGhpbnRfZmxhZ3MnLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAodDFfZGVjb2Rlcl9pbml0KTogQWRkIGhpbnQgbW9kZSBhcmd1bWVudC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzMV9oaW50c19hcHBseSk6IFBhc3MgaGludCBtb2RlLCBub3QKCWhpbnQgZmxhZ3MuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwczJfaGludHNfYXBwbHkpOiBEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzM19oaW50c19hcHBseSk6IERpdHRvLgoJKFNUUk9OR0VSKTogTmV3IG1hY3JvLgoJKHBzaDNfaGludF9hbGlnbiwgcHNoM19oaW50X3RhYmxlX2FsaWduX2hpbnRzKTogUGFzcyBgZ2x5cGgnIGluc3RlYWQKCW9mIGBoaW50X2ZsYWdzJy4KCUltcGxlbWVudCBhbm5vdW5jZWQgY2hhbmdlcy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmggKFBTSDNfR2x5cGhSZWMpOiBBZGQgZmxhZ3MgdG8gY29udHJvbAoJdmVydGljYWwgYW5kIGhvcml6b250YWwgaGludHMgYW5kIHNuYXBwaW5nLgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGZvciB0aGUgMi4xLjMgcmVsZWFzZS4KCjIwMDItMDgtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIE1hc3NpdmUgcmUtZm9ybWF0dGluZyBjaGFuZ2VzIHRvIG1hbnksIG1hbnkgc291cmNlIGZpbGVzLiAgSSBkb24ndAoJd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUuICBUaGUgb3BlcmF0aW9ucyBwZXJmb3JtZWQgd2VyZSBhbGwKCWxvZ2ljYWwgdHJhbnNmb3JtYXRpb25zIG9mIHRoZSBzb3VyY2VzOgoKCS0gdHJ5aW5nIHRvIGNvbnZlcnQgYWxsIGVudW1zIGFuZCBjb25zdGFudHMgdG8gQ0FQSVRBTElaRURfU1RZTEUsCgkgICN3aXRoIGRlZmluZSBkZWZpbml0aW9ucyBsaWtlCgoJICAgICNkZWZpbmUgbXlfb2xkX2NvbnN0YW50cyAgIE1ZX05FV19DT05TVEFOVAoKCS0gYmlnLCBiaWcgdXBkYXRlIG9mIHRoZSBkb2N1bWVudGF0aW9uIGNvbW1lbnRzCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIHNyYy9iYXNlL2Z0b2Jqcy5jLAoJc3JjL3Ntb290aC9mdHNtb290aC5jLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogQWRkaW5nIHN1cHBvcnQKCWZvciBMQ0Qtb3B0aW1pemVkIHJlbmRlcmluZyB0aG91Z2ggdGhlIG5ldyBjb25zdGFudHMvZW51bXM6CgoJICBGVF9SRU5ERVJfTU9ERV9MQ0QsIEZUX1JFTkRFUl9NT0RFX0xDRF9WCgkgIEZUX1BJWEVMX01PREVfTENELCAgRlRfUElYRUxfTU9ERV9MQ0RfVgoKCVRoaXMgaXMgc3RpbGwgd29yayBpbiBwcm9ncmVzcywgZG9uJ3QgZXhwZWN0IGV2ZXJ5dGhpbmcgdG8gd29yawoJY29ycmVjdGx5IHRob3VnaCBtb3N0IG9mIHRoZSBmZWF0dXJlcyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQuCgoJKiBBZGRpbmcgbmV3IEZUX0xPQURfWFhYIGZsYWdzLCB1c2VkIHRvIHNwZWNpZnkgYm90aCBoaW50aW5nIGFuZAoJcmVuZGVyaW5nIHRhcmdldHM6CgoJICBGVF9MT0FEX1RBUkdFVF9OT1JNQUwgOjogYW50aS1hbGlhc2VkIGhpbnRpbmcgJiByZW5kZXJpbmcKCSAgRlRfTE9BRF9UQVJHRVRfTU9OTyAgIDo6IG1vbm9jaHJvbWUgYml0bWFwcwoJICBGVF9MT0FEX1RBUkdFVF9MQ0QgICAgOjogaG9yaXpvbnRhbCBSR0IvQkdSIGRlY2ltYXRlZAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludGluZyAmIHJlbmRlcmluZwoJICBGVF9MT0FEX1RBUkdFVF9MQ0RfViAgOjogdmVydGljYWwgUkdCL0JHUiBkZWNpbWF0ZWQKCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRpbmcgJiByZW5kZXJpbmcKCglOb3RlIHRoYXQgRlRfTE9BRF9UQVJHRVRfTk9STUFMIGlzIDAsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGRlZmF1bHQKCWJlaGF2aW91ciBvZiB0aGUgZm9udCBlbmdpbmUgaXMgX3VuY2hhbmdlZF8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaAoJKEZUX091dGxpbmVfe01vdmUsTGluZSxDb25pYyxDdWJpY31Ub19GdW5jKTogUmVuYW1lZCB0by4uLgoJKEZUX091dGxpbmVfe01vdmUsTGluZSxDb25pYyxDdWJpY31Ub0Z1bmMpOiBUaGlzLgoJKEZUX1Jhc3Rlcl9TcGFuX0Z1bmMpOiBSZW5hbWVkIHRvIC4uLgoJKEZUX1NwYW5GdW5jKTogVGhpcy4KCShGVF9SYXN0ZXJfe05ldyxEb25lLFJlc2V0LFNldF9Nb2RlLFJlbmRlcn1fRnVuYyk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfUmFzdGVyX3tOZXcsRG9uZSxSZXNldCxTZXRNb2RlLFJlbmRlcn1GdW5jfTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHJlbmRlci5oCgkoRlRfR2x5cGhfe0luaXQsRG9uZSxUcmFuc2Zvcm0sQkJveCxDb3B5LFByZXBhcmV9X0Z1bmMpOiBSZW5hbWVkCgl0byAuLi4KCShGVF9HbHlwaF97SW5pdCxEb25lLFRyYW5zZm9ybSxHZXRCQm94LENvcHksUHJlcGFyZX1GdW5jKTogVGhpcy4KCShGVFJlbmRlcmVyX3tyZW5kZXIsdHJhbnNmb3JtLGdldENCb3gsc2V0TW9kZX0pOiBSZW5hbWVkIHRvIC4uLgoJKEZUX1JlbmRlcmVyX3tSZW5kZXJGdW5jLFRyYW5zZm9ybUZ1bmMsR2V0Q0JveEZ1bmMsU2V0ZU1vZGVGdW5jfSk6CglUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9Qb2ludCwgQUhfU2VnbWVudCwgQUhfRWRnZSwgQUhfR2xvYmFscywKCUFIX0ZhY2VfR2xvYmFscywgQUhfT3V0bGluZSwgQUhfSGludGVyKTogVGhlc2UgdHlwZWRlZnMgYXJlIG5vdwoJcG9pbnRlcnMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYCpSZWMnIHN0cnVjdHVyZXMuICBBbGwgc291cmNlIGZpbGVzCgloYXZlIGJlZW4gdXBkYXRlZCBhY2NvcmRpbmdseS4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2RlY29kZXJfaW5pdCk6IEFkZCBoaW50IG1vZGUgYXMgcGFyYW1ldGVyLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmggKENGRl9EZWNvZGVyKTogQWRkIGBoaW50X21vZGUnIGVsZW1lbnQuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Db21wdXRlX01heF9BZHZhbmNlKTogUmVuYW1lZCB0by4uLgoJKGNpZF9mYWNlX2NvbXB1dGVfbWF4X2FkdmFuY2UpOiBUaGlzLgoJKENJRF9Mb2FkX0dseXBoKTogUmVuYW1lZCB0by4uLgoJKGNpZF9zbG90X2xvYWRfZ2x5cGgpOiBUaGlzLgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoQ0lEX09wZW5fRmFjZSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfZmFjZV9vcGVuKTogVGhpcy4KCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9HbHlwaFNsb3Rfe0RvbmUsSW5pdH0pOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3Nsb3Rfe2RvbmUsaW5pdH0pOiBUaGlzLgoJKENJRF9TaXplX3tHZXRfR2xvYmFsc19GdW5jcyxEb25lLFJlc2V0KTogUmVuYW1lZCB0by4uLgoJKGNpZF9zaXplX3tnZXRfZ2xvYmFsc19mdW5jcyxkb25lLHJlc2V0KTogVGhpcy4KCShDSURfRmFjZV97RG9uZSxJbml0fSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfZmFjZV97ZG9uZSxpbml0fSk6IFRoaXMuCgkoQ0lEX0RyaXZlcl97RG9uZSxJbml0fTogUmVuYW1lZCB0by4uLgoJKGNpZF9kcml2ZXJfe2RvbmUsaW5pdH06IFRoaXMuCgkqIHNyYy9jaWQvY2lkcGFyc2UuYyAoQ0lEX3tOZXcsRG9uZX1fUGFyc2VyKTogUmVuYW1lZCB0by4uLgoJKGNpZF9wYXJzZXJfe25ldyxkb25lfSk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkcGFyc2UuaCAoQ0lEX1NraXBfe1NwYWNlcyxBbHBoYX0pOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3BhcnNlcl9za2lwX3tzcGFjZXMsYWxwaGF9KTogVGhpcy4KCShDSURfVG97SW50LEZpeGVkLENvb3JkQXJyYXksRml4ZWRBcnJheSxUb2tlbixUb2tlbkFycmF5fSk6IFJlbmFtZWQKCXRvLi4uCgkoY2lkX3BhcnNlcl90b197aW50LGZpeGVkLGNvb3JkX2FycmF5LGZpeGVkX2FycmF5LHRva2VuLHRva2VuX2FycmF5fSk6CglUaGlzLgoJKENJRF9Mb2FkX3tGaWVsZCxGaWVsZF9UYWJsZSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfcGFyc2VyX2xvYWRfe2ZpZWxkLGZpZWxkX3RhYmxlfSk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkcml2ZXIuYyAoQ0lEX0dldF9JbnRlcmZhY2UpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX2dldF9pbnRlcmZhY2UpOiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlXyopOiBSZW5hbWVkIHRvLi4uCgkocHNfdGFibGVfKik6IFRoaXMuCgkoVDFfQnVpbGRlcl8qKTogUmVuYW1lZCB0by4uLgoJKHQxX2J1aWxkZXJfKik6IFRoaXMuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyXyopOiBSZW5hbWVkIHRvLi4uCgkodDFfZGVjb2Rlcl8qKTogVGhpcy4KCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKFBTXyopOiBSZW5hbWVkIHRvLi4uCgkocHNfKik6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9zZm50L3NmZHJpdmVyIChTRk5UX0dldF9JbnRlcmZhY2UpOiBSZW5hbWVkIHRvLi4uCgkoc2ZudF9nZXRfaW50ZXJmYWNlKTogVGhpcy4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfKik6IFJlbmFtZWQgdG8uLi4KCShzZm50XyopOiBUaGlzLgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoVFRfQ2hhck1hcF97TG9hZCxGcmVlfSk6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlX3tsb2FkLGZyZWV9X2NoYXJtYXApOiBUaGlzLgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKFRUX0J1aWxkX0NNYXBzKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfYnVpbGRfY21hcHMpOiBUaGlzLgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfKik6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlXyopOiBUaGlzLgoJKiBzcmMvc2ZudC90dHBvc3QuYyAoVFRfUG9zdF9EZWZhdWx0X05hbWVzKTogUmVuYW1lZCB0by4uLgoJKHR0X3Bvc3RfZGVmYXVsdF9uYW1lcyk6IFRoaXMuCgkoTG9hZF8qKTogUmVuYW1lZCB0by4uLgoJKGxvYWRfKik6IFRoaXMuCgkoVFRfKik6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlXyopOiBUaGlzLgoJKiBzcmMvc2ZudC90dHNiaXQuYyAoVFRfKik6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlXyopOiBUaGlzLgoJKHtGaW5kLExvYWQsQ3JvcH1fKik6IFJlbmFtZWQgdG8uLi4KCSh7ZmluZCxsb2FkLGNyb3B9XyopOiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXIpOiBSZW5hbWVkIHRvLi4uCgkoZnRfc21vb3RoX3JlbmRlcl9nZW5lcmljKTogVGhpcy4KCU1ha2UgZnVuY3Rpb24gbW9yZSBnZW5lcmljIGJ5IGFkZGluZyB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBzY2FsaW5nCglmYWN0b3JzLgoJKGZ0X3Ntb290aF9yZW5kZXIsIGZ0X3Ntb290aF9yZW5kZXJfbGNkLCBmdF9zbW9vdGhfcmVuZGVyX2xjZF92KToKCU5ldyBmdW5jdGlvbnMuCgoJKGZ0X3Ntb290aF9sb2NkX3JlbmRlcmVyX2NsYXNzLCBmdF9zbW9vdGhfbGNkdl9yZW5kZXJlcl9jbGFzcyk6IE5ldwoJY2xhc3Nlcy4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfe0RvbmUsTmV3fV9HbHlwaFpvbmUpOiBSZW5hbWVkIHRvLi4uCgkodHRfZ2x5cGh6b25lX3tkb25lLG5ld30pOiBUaGlzLgoJKFRUX3tGYWNlLFNpemUsRHJpdmVyfV8qKTogUmVuYW1lZCB0by4uLgoJKHR0X3tmYWNlLHNpemUsZHJpdmVyfV8qKTogVGhpcy4KCSogc3JjL3RydWV0eXBlL3R0cGxvYWQuYyAoVFRfTG9hZF9Mb2NhdGlvbnMpOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV9sb2FkX2xvY2EpOiBUaGlzLgoJKFRUX0xvYWRfUHJvZ3JhbXMpOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV9sb2FkX2ZwZ20pOiBUaGlzLgoJKFRUXyopOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV8qKTogVGhpcy4KCjIwMDItMDgtMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvVkVSU0lPTi5ETEw6IE5ldyBmaWxlLgoKMjAwMi0wOC0yMyAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfb3BlcmF0b3Jfc2VhYykKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogSW5jcmVtZW50YWwgZm9udHMgKGFjdHVhbGx5IG5vdAoJaW5jcmVtZW50YWwgaW4gdGhlIGNhc2Ugb2YgQ0ZGIGJ1dCBqdXN0IHVzaW5nIGNhbGxiYWNrcyB0byBnZXQgZ2x5cGgKCXJlY2lwZXMpIHBhc3MgdGhlIGNoYXJhY3RlciBjb2RlLCBub3QgdGhlIGdseXBoIGluZGV4LCB0byB0aGUKCWdldF9nbHlwaF9kYXRhIGZ1bmN0aW9uOyB0aGV5IGhhdmUgbm8gdmFsaWQgY2hhcnNldCB0YWJsZS4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZm9udF9sb2FkKTogUmVtb3ZlZCBzcGVjaWFsIGNhc2VzIGZvcgoJRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCwgd2hpY2ggYXJlIG5vIGxvbmdlciBuZWNlc3Nhcnk7IENGRgoJZm9udHMgcHJvdmlkZWQgdmlhIHRoZSBpbmNyZW1lbnRhbCBpbnRlcmZhY2Ugbm93IGhhdmUgdG8gY29uZm9ybQoJbW9yZSBjbG9zZWx5IHRvIHRoZSBDRkYgZm9udCBmb3JtYXQuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaCAoY2ZmX2ZvbnRfbG9hZCk6IFJlbW92ZWQgYXJndW1lbnQgbm93IHVubmVlZGVkLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBDaGFuZ2VkIGNhbGwgdG8gY2ZmX2ZvbnRfbG9hZAoJdG8gY29uZm9ybSB3aXRoIG5ldyBzaWduYXR1cmUuCgoyMDAyLTA4LTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9iamVjdC5jLCBzcmMvYmFzZS9mdHN5bnRoLmMsIHNyYy9iYXNlL2Z0c3Ryb2tlci5jLAoJc3JjL2JkZi9iZGZkcml2ci5jOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMi0wOC0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfZ2x5cGhfY29tcHV0ZV9pbmZsZWN0aW9ucywKCXBzaDNfZ2x5cGhfY29tcHV0ZV9leHRyZW1hLCBwc2gzX2hpbnRfdGFibGVfZmluZF9zdHJvbmdfcG9pbnQpOiBGaXgKCWNvbXBpbGVyIHdhcm5pbmdzIGFuZCByZXNvbHZlIHNoYWRvd2luZyBvZiBsb2NhbCB2YXJpYWJsZXMuCgoyMDAyLTA4LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJVGhlIGF1dG9tYXRpYyBhbmQgUG9zdHNjcmlwdCBoaW50ZXIgbm93IGF1dG9tYXRpY2FsbHkgZGV0ZWN0CglpbmZsZWN0aW9uIHBvaW50cyBpbiBnbHlwaCBvdXRsaW5lcyBhbmQgdHJlYXRzIHRoZW0gc3BlY2lhbGx5LiAgVGhpcwoJaXMgdmVyeSB1c2VmdWwgdG8gcHJldmVudCBuYXN0eSBlZmZlY3QgbGlrZSB0aGUgZGlzYXBwZWFyaW5nCglkaWFnb25hbHMgb2YgYFMnIGFuZCBgcycgaW4gbWFueSwgbWFueSBmb250cy4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKGFoX2ZsYWdfaW5mbGVjdGlvbik6IE5ldyBtYWNyby4KCSogc3JjL2F1dG9oaW50L2FoYW5nbGVzLmMgKGFoX2FuZ2xlX2RpZmYpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9hdXRvaGludC9haGFuZ2xlcy5oOiBVcGRhdGVkLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2NvbXB1dGVfaW5mbGVjdGlvbnMpOiBOZXcKCWZ1bmN0aW9uLgoJKGFoX291dGxpbmVfZGV0ZWN0X2ZlYXR1cmVzKTogVXNlIGl0LgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9hbGlnbl9zdHJvbmdfcG9pbnRzKQoJWyFBSF9PUFRJT05fTk9fV0VBS19JTlRFUlBPTEFUSU9OXTogSGFuZGxlIGluZmxlY3Rpb24uCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvZG9jbWFrZXIucHksIHNyYy90b29scy9kb2NtYWtlci91dGlscy5weSwKCXNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHk6IFVwZGF0aW5nIHRoZSBEb2NNYWtlciB0b29sLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBDaGFuZ2luZyB0aGUgdHlwZSBvZiB0aGUgYGxvYWRfZmxhZ3MnCglwYXJhbWV0ZXIgZnJvbSBgRlRfSW50JyB0byBgRlRfSW50MzInLCB0aGlzIGluIG9yZGVyIHRvIHN1cHBvcnQgbW9yZQoJb3B0aW9ucy4gIFRoaXMgc2hvdWxkIG9ubHkgYnJlYWsgYmluYXJ5IGFuZC9vciBzb3VyY2UgY29tcGF0aWJpbGl0eQoJb24gMTYtYml0IHBsYXRmb3JtcyAoQXRhcmk/KS4KCShGVF9MT0FEX05PX0FVVE9ISU5UKTogTmV3IG1hY3JvLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoJSGFuZGxlIEZUX0xPQURfTk9fQVVUT0hJTlQuCgkoRlRfTG9hZF9DaGFyKTogVXBkYXRlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jLCBzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRvYmplY3QuYywKCXNyYy9hdXRvaGludC9haGdseXBoLmMsIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRml4aW5nIHR5cG9zCglhbmQgcmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAyLTA4LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9HZXRfTWV0cmljcyk6IEFkZCBndWFyZCBmb3IgayA9IDAuCgoyMDAyLTA4LTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsCglzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jLCBzcmMvcHNoaW50ZXIvcHNocmVjLmMsCglzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYyBbREVCVUdfSElOVEVSXTogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MKCShvbmx5IHVzZWQgaW4gZGV2ZWxvcG1lbnQgYnVpbGRzIGFueXdheSkuCgoJSW1wcm92ZSBzdXBwb3J0IG9mIGxvY2FsIGV4dHJlbWEgYW5kIHN0ZW0gZWRnZSBwb2ludHMuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaCAoUFNIM19IaW50X1RhYmxlUmVjKTogVXNlIFBTSDNfWm9uZVJlYwoJZm9yIGB6b25lcycuCgkoUFNIM19ESVJfVVAsIFBTSDNfRElSX0RPV04pOiBFeGNoYW5nZSB2YWx1ZXMuCgkoUFNIM19ESVJfSE9SSVpPTlRBTCwgUFNIM19ESVJfVkVSVElDQUwpOiBOZXcgbWFjcm9zLgoJKFBTSDNfRElSX0NPTVBBUkUsIFBTSDNfRElSX0lTX0hPUklaT05UQUwsIFBTSDNfSVNfVkVSVElDQUwpOiBOZXcKCW1hY3Jvcy4KCShQU0gzX1BPSU5UX0lORkxFWCk6IE5ldyBlbnVtLgoJKHBzaDNfcG9pbnRfe2lzLHNldH1fe29mZixpbmZsZXh9KTogTmV3IG1hY3Jvcy4KCShQU0gzX1BPSU5UX3tFWFRSRU1VTSxQT1NJVElWRSxORUdBVElWRSxFREdFX01JTixFREdFX01BWCk6IE5ldwoJZW51bSB2YWx1ZXMuCgkocHNoM19wb2ludF97aXMsc2V0fV97ZXh0cmVtdW0scG9zaXRpdmUsbmVnYXRpdmUsZWRnZV9taW4sZWRnZV9tYXh9KToKCU5ldyBtYWNyb3MuCgkoUFNIM19Qb2ludFJlYyk6IE5ldyBtZW1iZXJzIGBmbGFnczInIGFuZCBgb3JnX3YnLgoJKFBTSDNfUE9JTlRfRVFVQUxfQVJHLCBQU0gzX1BPSU5UX0FOR0xFKTogTmV3IG1hY3Jvcy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIFtERUJVR19ISU5URVJdOiBSZW1vdmluZyBjb21waWxlcgoJd2FybmluZ3MuCgkoQ09NUFVURV9JTkZMRVhTKTogTmV3IG1hY3JvLgoJKHBzaDNfaGludF9hbGlnbik6IFNpbXBsaWZ5IHNvbWUgYmFzaWMgYXJpdGhtZXRpYyBjb21wdXRhdGlvbnMuCgkocHNoM19wb2ludF9pc19leHRyZW11bSk6IFJlbW92ZWQuCgkocHNoM19nbHlwaF9jb21wdXRlX2luZmxlY3Rpb25zKSBbQ09NUFVURV9JTkZMRVhTXTogTmV3IGZ1bmN0aW9uLgoJKHBzaDNfZ2x5cGhfaW5pdCkgW0NPTVBVVEVfSU5GTEVYU106IFVzZSBpdC4KCShwc2gzX2dseXBoX2NvbXB1dGVfZXh0cmVtYSk6IE5ldyBmdW5jdGlvbi4KCShQU0gzX1NUUk9OR19USFJFU0hPTEQpOiBJbmNyZWFzZWQgdG8gMzAuCgkocHNoM19oaW50X3RhYmxlX2ZpbmRfc3Ryb25nX3BvaW50KTogSW1wcm92ZWQuCgkocHNoM19nbHlwaF9maW5kX3N0cm9uZ19wb2ludHMsCglwc2gzX2dseXBoX2ludGVycG9sYXRlX3N0cm9uZ19wb2ludHMpOiBVcGRhdGVkLgoJKHBzaDNfaGludHNfYXBwbHkpOiBVc2UgcHNoM19nbHlwaF9jb21wdXRlX2V4dHJlbWEuCgoJKiB0ZXN0L2d2aWV3LmMgKGRyYXdfcHMzX2hpbnQsIHBzM19kcmF3X2NvbnRyb2xfcG9pbnRzKTogTmV3CglmdW5jdGlvbnMuCglPdGhlciBzbWFsbCB1cGRhdGVzLgoKCSogSmFtZmlsZTogU21hbGwgdXBkYXRlcy4KCjIwMDItMDgtMTggIEFya2FkaXVzeiBNaXNraWV3aWN6ICA8bWlzaWVrQHBsZC5PUkcuUEw+CgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChpbnN0YWxsLCB1bmluc3RhbGwpOiBBZGQgJChERVNURElSKSB0bwoJbWFrZSBsaWZlIGVhc2llciBmb3IgcGFja2FnZSBtYWludGFpbmVycy4KCjIwMDItMDgtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HbHlwaF9Mb2FkKTogRml4IGNvbXB1dGF0aW9uIG9mCglob3JpQmVhcmluZ1guCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoTG9hZCk6IEZpeCBjb21wdXRhdGlvbiBvZgoJaG9yaUJlYXJpbmdZLgoKMjAwMi0wOC0xNiAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJQWRkIHN1cHBvcnQgZm9yIEFwcGxlIGNvbXBvc2l0ZSBnbHlwaHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCgkoVFRfQ09ORklHX09QVElPTl9DT01QT05FTlRfT0ZGU0VUX1NDQUxFRCk6IE5ldyBtYWNyby4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKE9WRVJMQVBfQ09NUE9VTkQsIFNDQUxFRF9DT01QT05FTlRfT0ZGU0VULAoJVU5TQ0FMRURfQ09NUE9ORU5UX09GRlNFVCk6IE5ldyBtYWNyb3MgZm9yIGFkZGl0aW9uYWwgT3BlblR5cGUKCWdseXBoIGxvYWRpbmcgZmxhZ3MuCgkobG9hZF90cnVldHlwZV9nbHlwaCk6IEltcGxlbWVudCBpdC4KCjIwMDItMDgtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2ZyZWVfZ2x5cGhfZGF0YSksCglzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2ZvbnRfbG9hZCk6IFVzZSBGVF9VTlVTRUQuCgoyMDAyLTA4LTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEluaXRpYWxpemUgYGVycm9yJy4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTA4LTE1ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJSW1wbGVtZW50ZWQgdGhlIGluY3JlbWVudGFsIGZvbnQgbG9hZGluZyBzeXN0ZW0gZm9yIHRoZSBDRkYgZHJpdmVyLgoJVGVzdGVkIHVzaW5nIHRoZSBHaG9zdFNjcmlwdC10by1GcmVlVHlwZSBicmlkZ2UgKHVuZGVyIGRldmVsb3BtZW50KS4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2dldF9nbHlwaF9kYXRhLCBjZmZfZnJlZV9nbHlwaF9kYXRhKTogTmV3CglmdW5jdGlvbnMuCgkoY2ZmX29wZXJhdG9yX3NlYWMsIGNmZl9jb21wdXRlX21heF9hZHZhbmNlLCBjZmZfc2xvdF9sb2FkKTogVXNlCgl0aGVtLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2ZvbnRfbG9hZCk6IEFkZCBgZmFjZScgcGFyYW1ldGVyLgoJTG9hZCBjaGFyc2V0IGFuZCBlbmNvZGluZyBvbmx5IGlmIHRoZXJlIGFyZSBnbHlwaHMuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEluY3JlbWVudGFsIGZvbnRzIGRvbid0IG5lZWQKCWNoYXJhY3RlciByZWNpcGVzLgoJKiBzcmMvY2ZmL2NmZmxvYWQuaCwgc3JjL2NmZi9jZmZvYmpzLmM6IFVwZGF0ZWQuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBDb3JyZWN0ZWQgdGhlIGluY3JlbWVudGFsIGZvbnQKCWxvYWRpbmcgaW1wbGVtZW50YXRpb24gdG8gdXNlIHRoZSBuZXcgc3lzdGVtIGludHJvZHVjZWQgb24KCTIwMDItMDgtMDEuCgoyMDAyLTA4LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmNtYXAuYzogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYywgc3JjL2NhY2hlL2Z0Y2NhY2hlLmksCglzcmMvcGZyL3BmcmxvYWQuYywgc3JjL3Bmci9wZnJnbG9hZC5jOiBzL2luZGV4L2lkeC8uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jOiBzL3NlbGVjdC9mZHNlbGVjdC8uCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzogcy93YWl0L3dhaXRpbmcvLgoKMjAwMi0wOC0wMSAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChUMV9PcGVuX0ZhY2UpOiBUb2xlcmF0ZSBhIGZhY2Ugd2l0aCBubwoJY2hhcnN0cmluZ3MgaWYgdGhlcmUgaXMgYW4gaW5jcmVtZW50YWwgbG9hZGluZyBpbnRlcmZhY2UuICBUeXBlIDEKCWZhY2VzIHN1cHBsaWVkIGJ5IFBvc3RTY3JpcHQgaW50ZXJwcmV0ZXJzIGxpa2UgR2hvc3RTY3JpcHQgd2lsbAoJdHlwaWNhbGx5IG5vdCBwcm92aWRlIGFueSBjaGFyc3RyaW5ncyBhdCBsb2FkIHRpbWUsIHNvIHRoaXMgaXMKCWVzc2VudGlhbCBpZiB0aGV5IGFyZSB0byB3b3JrLgoKMjAwMi0wOC0wMSAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCU1vZGlmaWVkIGluY3JlbWVudGFsIGxvYWRpbmcgaW50ZXJmYWNlIHRvIGJlIGNsb3NlciB0byBEYXZpZCdzCglwcmVmZXJlbmNlcy4gIFRoZSBoZWFkZXIgZnJlZXR5cGUuaCBpcyBub3Qgbm93IGFmZmVjdGVkLCB0aGUKCWludGVyZmFjZSBpcyBzcGVjaWZpZWQgdmlhIGFuIEZUX1BhcmFtZXRlciwgdGhlIHBvaW50ZXIgdG8gdGhlCglpbnRlcmZhY2UgaXMgaGlkZGVuIGluIGFuIGludGVybmFsIHBhcnQgb2YgdGhlIGZhY2UgcmVjb3JkLCBhbmQgYWxsCgl0aGUgZGVmaW5pdGlvbnMgYXJlIGluIGZ0aW5jcmVtLmguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJUmVtb3ZlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglJbmNsdWRlIEZUX0lOQ1JFTUVOVEFMX0guCgkoRlRfRmFjZV9JbnRlcm5hbFJlYykgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBBZGQKCWBpbmNyZW1lbnRhbF9pbnRlcmZhY2UnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSwgRlRfT3Blbl9GYWNlKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCVVwZGF0ZWQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJRnJlZSBsb2FkZWQgZ2x5cGggZGF0YSBwcm9wZXJseS4KCShjb21wdXRlX2dseXBoX21ldHJpY3MsIFRUX0xvYWRfR2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfRmFjZV9Jbml0KQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfUGFyc2VfR2x5cGhfQW5kX0dldF9DaGFyX1N0cmluZykKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCShUMV9QYXJzZV9HbHlwaCkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJRnJlZSBsb2FkZWQgZ2x5cGggZGF0YSBwcm9wZXJseS4KCShUMV9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogRnJlZSBsb2FkZWQgZ2x5cGggZGF0YSBwcm9wZXJseS4KCjIwMDItMDctMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbmNyZW0uaDogQWRkaW5nIG5ldyBleHBlcmltZW50YWwgaGVhZGVyIGZpbGUKCXRvIGRlbW9uc3RyYXRlIGEgYGNsZWFuZXInIEFQSSB0byBzdXBwb3J0IGluY3JlbWVudGFsIGZvbnQgbG9hZGluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0lOQ1JFTUVOVEFMX0gpOiBOZXcgbWFjcm8uCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvKjogQWRkaW5nIG5ldyAobW9yZSBhZHZhbmNlZCkgdmVyc2lvbiBvZgoJdGhlIERvY01ha2VyIHRvb2wsIHVzaW5nIFB5dGhvbidzIHNvcGhpc3RpY2F0ZWQgcmVnZXhwcy4KCjIwMDItMDctMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglzL2Z0X21lbXNldC9GVF9NRU1fU0VULy4KCXMvRlRfTUVNX1NFVC9GVF9NRU1fWkVSTy8gd2hlcmUgYXBwcm9wcmlhdGUuCgoyMDAyLTA3LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoc2ZudF9kaXJfY2hlY2spOiBNYWtlIGl0IHdvcmsgd2l0aCBUVENzLgoKMjAwMi0wNy0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogcy9tZW1zZXQvZnRfbWVtc2V0Ly4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludF9lZGdlc18zKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZW5jb2RpbmdfbG9hZCk6IFJlbW92ZSBgbWVtb3J5JyB2YXJpYWJsZS4KCSogc3JjL2NmZi9jZmZjbWFwLmMgKGNmZl9jbWFwX2VuY29kaW5nX2luaXQpOiBSZW1vdmUgYHBzbmFtZXMnCgl2YXJpYWJsZS4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IFJlbW92ZSBzdGF0ZW1lbnQKCXdpdGhvdXQgZWZmZWN0LgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIgKEdldF9DaGFyX0luZGV4LCBHZXRfTmV4dF9DaGFyKTogUmVtb3ZlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2hpbnRfdGFibGVfcmVjb3JkLAoJcHNoM19oaW50X3RhYmxlX2luaXQsIHBzaDNfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKTogRml4IGVycm9yCgltZXNzYWdlLgoKMjAwMi0wNy0yNCAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jOiBGaXggZm9yIGJ1ZyByZXBvcnRlZCBieSBTdmVuIE5ldW1hbm4KCVtzdmVuQGdpbXAub3JnXSBvbiB0aGUgRnJlZVR5cGUgZGV2ZWxvcG1lbnQgZm9ydW06IGBJZgoJRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCBpcyB1bmRlZmluZWQgKHRoaXMgaXMgdGhlIGRlZmF1bHQpLCB0aGUKCVRydWVUeXBlIGxvYWRlciBjcmFzaGVzIGluIGxpbmUgODUyIG9mIHNyYy90cnVldHlwZS90dGdsb2FkLmMgd2hlbgoJaXQgdHJpZXMgdG8gYWNjZXNzIGZhY2UtPmdseXBoX2xvY2F0aW9ucy4nCgoyMDAyLTA3LTE4ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJQWRkZWQgdHlwZXMgYW5kIHN0cnVjdHVyZXMgdG8gc3VwcG9ydCBpbmNyZW1lbnRhbCB0eXBlZmFjZSBsb2FkaW5nLgoJVGhlIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZSBzdHJ1Y3R1cmUsIGRlZmluZWQgaW4gZnJlZXR5cGUuaCwgaXMKCWRlc2lnbmVkIHRvIGJlIHBhc3NlZCB0byBGVF9PcGVuX0ZhY2UgdG8gcHJvdmlkZSBjYWxsYmFjayBmdW5jdGlvbnMKCXRvIG9idGFpbiBnbHlwaCByZWNpcGVzIGFuZCBtZXRyaWNzLCBmb3IgZm9udHMgbGlrZSB0aG9zZSBwYXNzZWQKCWZyb20gUG9zdFNjcmlwdCB0aGF0IGRvIG5vdCBuZWNlc3NhcmlseSBwcm92aWRlIGFsbCwgb3IgYW55LCBnbHlwaAoJaW5mb3JtYXRpb24sIHdoZW4gZmlyc3Qgb3BlbmVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCk6CglOZXcgY29uZmlndXJhdGlvbiBtYWNybyB0byBlbmFibGUgaW5jcmVtZW50YWwgZmFjZSBsb2FkaW5nLiAgQnkKCWRlZmF1bHQgaXQgaXMgbm90IGRlZmluZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0Jhc2ljX0dseXBoX01ldHJpY3MsCglGVF9HZXRfR2x5cGhfRGF0YV9GdW5jLCBGVF9HZXRfR2x5cGhfTWV0cmljc19GdW5jLAoJRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlX0Z1bmNzLCBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2UpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IE5ldy4KCShGVF9PcGVuX0FyZ3MsIEZUX0ZhY2VSZWMpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogTmV3IGZpZWxkCglgaW5jcmVtZW50YWxfaW50ZXJmYWNlJy4KCShGVF9PcGVuX0ZsYWdzKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IE5ldyBlbnVtCglgZnRfb3Blbl9pbmNyZW1lbnRhbCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaDogSW5jbHVkZSBGVF9DT05GSUdfQ09ORklHX0guCgkoRlRfRGF0YSk6IE5ldyBzdHJ1Y3R1cmUgdG8gcmVwcmVzZW50IGJpbmFyeSBkYXRhLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJQWRkIHBhcmFtZXRlciBmb3IgaW5jcmVtZW50YWwgbG9hZGluZy4KCShGVF9PcGVuX0ZhY2UpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXNlIGluY3JlbWVudGFsCglpbnRlcmZhY2UuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBBZGRlZCB0aGUgaW5jcmVtZW50YWwgbG9hZGluZyBzeXN0ZW0KCWZvciB0aGUgVHJ1ZVR5cGUgZHJpdmVyLgoJKGNvbXB1dGVfZ2x5cGhfbWV0cmljcyk6IFJldHVybiBGVF9FcnJvci4KCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQ2hlY2sgZm9yIG92ZXJyaWRpbmcgbWV0cmljcy4KCShUVF9Mb2FkX0dseXBoKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IERvbid0IGxvb2sgZm9yCgl0aGUgZ2x5cGggdGFibGUgd2hpbGUgaGFuZGxpbmcgYW4gaW5jcmVtZW50YWwgZm9udC4KCUdldCBnbHlwaCBvZmZzZXQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0ZhY2VfSW5pdCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ09SRU1FTlRBTF06IEFkZGVkIHRoZSBpbmNyZW1lbnRhbCBsb2FkaW5nCglzeXN0ZW0gZm9yIHRoZSBUcnVlVHlwZSBkcml2ZXIuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBBZGRlZCB0aGUgaW5jcmVtZW50YWwgbG9hZGluZyBzeXN0ZW0KCWZvciB0aGUgQ0lEIGRyaXZlci4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJQ2hhbmdlcyB0byBzdXBwb3J0IGluY3JlbWVudGFsIFR5cGUgNDIgZm9udHM6IEFzc3VtZSBhIGZvbnQgaGFzCglnbHlwaHMgaWYgaXQgaGFzIGFuIGluY3JlbWVudGFsIGludGVyZmFjZSBvYmplY3QuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9QYXJzZV9HbHlwaCk6IFJlbmFtZWQgdG8uLi4KCShUMV9QYXJzZV9HbHlwaF9BbmRfR2V0X0NoYXJfU3RyaW5nKTogVGhpcy4KCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkZWQgc3VwcG9ydCBmb3IgaW5jcmVtZW50YWxseQoJbG9hZGVkIFR5cGUgMSBmYWNlcy4KCShUMV9QYXJzZV9HbHlwaCk6IE5ldyBmdW5jdGlvbi4KCShUMV9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCjIwMDItMDctMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglDbGVhbmluZyB1cCB0aGUgY2FjaGUgc3ViLXN5c3RlbSBjb2RlOyBsaW5lYXIgaGFzaGluZyBpcyBub3cgdGhlCglkZWZhdWx0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNjYWNoZS5oLCBzcmMvY2FjaGUvZnRjY2FjaGUuaSwKCXNyYy9jYWNoZS9mdGNjYWNoZS5jIFshRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IFJlbW92ZWQuCgkoRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElORzogUmVtb3ZlZCBhbHNvLgoKCUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTIGlzIG5vdyB0aGUgZGVmYXVsdC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCAoRlRfRHJpdmVyX0NsYXNzUmVjKTogUmVtb3ZlCglgZ2V0X2NoYXJfaW5kZXgnIGFuZCBgZ2V0X25leHRfY2hhcicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgsIHNyYy9iYXNlL2Z0b2Jqcy5jLAoJc3JjL2JkZi9iZGZkcml2ci5jLCBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL3BjZi9wY2Zkcml2ci5jLAoJc3JjL3Bmci9wZnJkcml2ci5jLCBzcmMvc2ZudC9zZm9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jLAoJc3JjL3NmbnQvdHRjbWFwMC5oLCBzcmMvc2ZudC90dGxvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jLAoJc3JjL3R5cGU0Mi90NDJvYmpzLmMsIHNyYy93aW5mb250cy93aW5mbnQuYwoJWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106IFJlbW92ZWQuICBUaGUgbmV3IGNtYXAgY29kZSBpcyBub3cKCXRoZSBkZWZhdWx0LgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9DTWFwX0NoYXJJbmRleCwgVDQyX0NNYXBfQ2hhck5leHQpOgoJUmVtb3ZlZC4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKENpZF9HZXRfQ2hhcl9JbmRleCwgQ2lkX0dldF9OZXh0X0NoYXIpOgoJUmVtb3ZlZC4KCSh0MV9jaWRfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKHR0X2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgkqIHNyYy90eXBlMS90MWRyaXZlci5jIChHZXRfQ2hhcl9JbmRleCwgR2V0X05leHRfQ2hhcik6IFJlbW92ZWQKCSh0MV9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMgKHQ0Ml9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSk6IFNlbGVjdCBVbmljb2RlIGNtYXAgYnkgZGVmYXVsdC4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX1NGTlRfSGVhZGVyKTogRml4ZWQgYSByZWNlbnQgYnVnIHRoYXQKCXByZXZlbnRlZCBPcGVuVHlwZSBmb250cyB0byBiZSByZWNvZ25pemVkIGJ5IEZyZWVUeXBlLgoKMjAwMi0wNy0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUNoYW5naW5nIHRoZSBTRk5UIGxvYWRlciB0byBjaGVjayBmb3IgU0ZOVC1iYXNlZCBmb250IGZpbGVzCglkaWZmZXJlbnRseS4gIFdlIG5vdyBpZ25vcmUgdGhlIHJhbmdlIGBoZWxwZXInIGZpZWxkcyBhbmQgY2hlY2sgdGhlCglgaGVhZCcgdGFibGUncyBtYWdpYyBudW1iZXIgaW5zdGVhZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChTRk5UX0hlYWRlclJlYyk6IEFkZCBgb2Zmc2V0JwoJZmllbGQuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoc2ZudF9kaXJfY2hlY2spOiBOZXcgZnVuY3Rpb24uCgkoVFRfTG9hZF9TRk5UX0hlYWRlclJlYyk6IFJlbmFtZWQgdG8uLi4KCShUVF9Mb2FkX1NGTlRfSGVhZGVyKTogVGhpcy4KCUltcGxlbWVudCBuZXcgZnVuY3Rpb25hbGl0eS4KCSogc3JjL3NmbnQvdHRsb2FkLmg6IFVwZGF0ZWQuCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKHNmbnRfaW50ZXJmYWNlKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2JqZWN0LmMsIHNyYy9iYXNlL2Z0aGFzaC5jOiBVcGRhdGVkIG9iamVjdCBzdWItc3lzdGVtCglhbmQgZHluYW1pYyBoYXNoIHRhYmxlIGltcGxlbWVudGF0aW9uIChzdGlsbCBleHBlcmltZW50YWwsIGRvbid0Cgl1c2UpLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0aGFzaC5oOiBVcGRhdGVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9MaWJyYXJ5UmVjKTogTmV3IG1lbWJlcgoJYG1ldGFfY2xhc3MnLgoKCUZpeGluZyBhIGJ1ZyBpbiB0aGUgVHlwZSAxIGxvYWRlciB0aGF0IHByZXZlbnRlZCB2YWxpZCBmb250IGJvdW5kaW5nCglib3hlcyB0byBiZSBsb2FkZWQgZnJvbSBtdWx0aXBsZSBtYXN0ZXIgZm9udHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX0JsZW5kUmVjKTogQWRkIGBiYm94ZXMnIGZpZWxkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9GaWVsZFR5cGUpOiBBZGQKCWBUMV9GSUVMRF9UWVBFX0JCT1gnLgoJKFQxX0ZpZWxkTG9jYXRpb24pOiBBZGQgYFQxX0ZJRUxEX0xPQ0FUSU9OX0JCT1gnLgoJKFQxX0ZJRUxEX0JCT1gpOiBOZXcgbWFjcm8uCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1BhcnNlcl9Mb2FkRmllbGQpOiBIYW5kbGUgVDFfRklFTERfVFlQRV9CQk9YLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHQxX2FsbG9jYXRlX2JsZW5kKTogQ3JlYXRlIGJsZW5kLT5iYm94ZXMuCgkoVDFfRG9uZV9CbGVuZCk6IEZyZWUgYmxlbmQtPmJib3hlcy4KCSh0MV9sb2FkX2tleXdvcmQpOiBIYW5kbGUgVDFfRklFTERfTE9DQVRJT05fQkJPWC4KCShwYXJzZV9mb250X2Jib3gpOiBDb21tZW50ZWQgb3V0LgoJKHQxX2tleXdvcmRzKTogQ29tbWVudCBvdXQgYHBhcnNlX2ZvbnRfYmJveCcuCgkqIHNyYy90eXBlMS90MXRva2Vucy5oOiBEZWZpbmUgYEZvbnRCQm94JyBmaWVsZC4KCjIwMDItMDctMTAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jOiBTbWFsbCBmaXggdG8gc2VsZWN0IHRoZSBVbmljb2RlIGNoYXJtYXAgYnkKCWRlZmF1bHQgd2hlbiBuZWVkZWQuCglTbWFsbCBmaXggdG8gYWxsb3cgT3BlblR5cGUgZm9udHMgdG8gc3VwcG9ydCBBZG9iZSBjaGFybWFwcyB3aGVuCgluZWVkZWQuCgoJKiBzcmMvY2ZmL2NmZmNtYXAuYywgc3JjL2NmZi9jZmZjbWFwLmg6IE5ldyBmaWxlcyB0byBzdXBwb3J0CgljaGFybWFwcyBmb3IgQ0ZGIGZvbnRzLgoKCSogc3JjL2NmZi9jZmYuYywgc3JjL2NmZi9KYW1maWxlLCBzcmMvY2ZmL3J1bGVzLm1rOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oIChDRkZfRW5jb2RpbmdSZWMpOiBVc2UKCWZpeGVkLWxlbmd0aCBhcnJheXMgZm9yIGBzaWRzJyBhbmQgYGNvZGVzJy4gIEFkZCBgY291bnQnIG1lbWJlci4KCShDRkZfRm9udFJlYyk6IEFkZCBgcHNuYW1lcycgbWVtYmVyLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZsb2FkLmgsCglzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NmZi9jZmZvYmpzLmgsIHNyYy9jZmYvY2ZmcGFyc2UuYywKCXNyYy9jZmZwYXJzZS5oLCBzcmMvY2ZmL2NmZmdsb2FkLmMsIHNyYy9jZmYvY2ZmZ2xvYWQuaDogQWRkaW5nCglzdXBwb3J0IGZvciBDRkYgY2hhcm1hcHMsIHJlZm9ybWF0dGluZyB0aGUgc291cmNlcywgYW5kIHJlbW92aW5nCglzb21lIGJ1Z3MgaW4gdGhlIEVuY29kaW5nIGFuZCBDaGFyc2V0IGxvYWRlcnMuCglNYW55IGZvbnRzIHJlbmFtZWQgdG8gdXNlIGxvd2VyY2FzZSBvbmx5OgoKCSAgQ0ZGX0J1aWxkZXJfSW5pdCAtPiBjZmZfYnVpbGRlcl9pbml0CgkgIENGRl9CdWlsZGVyX0RvbmUgLT4gY2ZmX2J1aWxkZXJfZG9uZQoJICBDRkZfSW5pdF9EZWNvZGVyIC0+IGNmZl9kZWNvZGVyX2luaXQKCSAgQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzIC0+IGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzCgkgIENGRl9Mb2FkX0dseXBoIC0+IGNmZl9zbG90X2xvYWQKCSAgQ0ZGX0luaXRfRGVjb2RlciAtPiBjZmZfZGVjb2Rlcl9pbml0CgkgIENGRl9QcmVwYXJlX0RlY29kZXIgLT4gY2ZmX2RlY29kZXJfcHJlcGFyZQoJICBDRkZfR2V0X1N0YW5kYXJkX0VuY29kaW5nIC0+IGNmZl9nZXRfc3RhbmRhcmRfZW5jb2RpbmcKCSAgQ0ZGX0FjY2Vzc19FbGVtZW50IC0+IGNmZl9pbmRleF9hY2Nlc3NfZWxlbWVudAoJICBDRkZfRm9yZ2V0X0VsZW1lbnQgLT4gY2ZmX2luZGV4X2ZvcmdldF9lbGVtZW50CgkgIENGRl9HZXRfTmFtZSAtPiBjZmZfaW5kZXhfZ2V0X25hbWUKCSAgQ0ZGX0dldF9TdHJpbmcgLT4gY2ZmX2luZGV4X2dldF9zaWRfc3RyaW5nCgkgIENGRl9HZXRfRkQgLT4gY2ZmX2ZkX3NlbGVjdF9nZXQKCSAgQ0ZGX0RvbmVfQ2hhcnNldCAtPiBjZmZfY2hhcnNldF9kb25lCgkgIENGRl9Mb2FkX0NoYXJzZXQgLT4gY2ZmX2NoYXJzZXRfbG9hZAoJICBDRkZfRG9uZV9FbmNvZGluZyAtPiBjZmZfZW5jb2RpbmdfZG9uZQoJICBDRkZfTG9hZF9FbmNvZGluZyAtPiBjZmZfZW5jb2RpbmdfbG9hZAoJICBDRkZfRG9uZV9TdWJGb250IC0+IGNmZl9zdWJmb250X2RvbmUKCSAgQ0ZGX0xvYWRfRm9udCAtPiBjZmZfZm9udF9sb2FkCgkgIENGRl9Eb25lX0ZvbnQgLT4gY2ZmX2ZvbnRfZG9uZQoJICBDRkZfU2l6ZV9HZXRfR2xvYmFsX0Z1bmNzIC0+IGNmZl9zaXplX2dldF9nbG9iYWxfZnVuY3MKCSAgQ0ZGX1NpemVfRG9uZSAtPiBjZmZfc2l6ZV9kb25lCgkgIENGRl9TaXplX0luaXQgLT4gY2ZmX3NpemVfaW5pdAoJICBDRkZfU2l6ZV9SZXNldCAtPiBjZmZfc2l6ZV9yZXNldAoJICBDRkZfR2x5cGhTbG90X0RvbmUgLT4gY2ZmX3Nsb3RfZG9uZQoJICBDRkZfR2x5cGhTbG90X0luaXQgLT4gY2ZmX3Nsb3RfaW5pdAoJICBDRkZfU3RyQ29weSAtPiBjZmZfc3RyY3B5CgkgIENGRl9GYWNlX0luaXQgLT4gY2ZmX2ZhY2VfaW5pdAoJICBDRkZfRmFjZV9Eb25lIC0+IGNmZl9mYWNlX2RvbmUKCSAgQ0ZGX0RyaXZlcl9Jbml0IC0+IGNmZl9kcml2ZXJfaW5pdAoJICBDRkZfRHJpdmVyX0RvbmUgLT4gY2ZmX2RyaXZlcl9kb25lCgkgIENGRl9QYXJzZXJfSW5pdCAtPiBjZmZfcGFyc2VyX2luaXQKCSAgQ0ZGX1BhcnNlcl9SdW4gLT4gY2ZmX3BhcnNlcl9ydW4KCgkgIGFkZF9wb2ludCAtPiBjZmZfYnVpbGRlcl9hZGRfcG9pbnQKCSAgYWRkX3BvaW50MSAtPiBjZmZfYnVpbGRlcl9hZGRfcG9pbnQxCgkgIGFkZF9jb250b3VyIC0+IGNmZl9idWlsZGVyX2FkZF9jb250b3VyCgkgIGNsb3NlX2NvbnRvdXIgLT4gY2ZmX2J1aWxkZXJfY2xvc2VfY29udG91cgoJICBjZmZfZXhwbGljaXRfaW5kZXggLT4gY2ZmX2luZGV4X2dldF9wb2ludGVycwoKMjAwMi0wNy0wOSAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBGaXhlZCBhIGJ1ZyB0aGF0CglwcmV2ZW50ZWQgdGhlIGhpbnRlciBmcm9tIHVzaW5nIGNvcnJlY3Qgc3RhbmRhcmQgd2lkdGggYW5kIGhlaWdodAoJdmFsdWVzLCByZXN1bHRpbmcgaW4gaGludGluZyBidWdzIHdpdGggY2VydGFpbiBmb250cyAoZS5nLiBVdG9waWEpLgoKMjAwMi0wNy0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBBZGRlZCBjb2RlIHRvIHJldHVybgoJc3VjY2Vzc2Z1bGx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgYml0bWFwIGdseXBoICh0aGUKCXByZXZpb3VzIGNvZGUgc2ltcGx5IHJldHVybmVkIHdpdGggYW4gZXJyb3IpLgoKCSogZG9jcy9ERUJVRy5UWFQ6IEFkZGluZyBkZWJ1Z2dpbmcgc3VwcG9ydCBkb2N1bWVudGF0aW9uLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jIChmdF9kZWJ1Z19pbml0KSwgYnVpbGRzL3dpbjMyL2Z0ZGVidWcuYwoJKGZ0X2RlYnVnX2luaXQpLCBidWlsZHMvYW1pZ2Evc3JjL2Z0ZGVidWcuYyAoZnRfZGVidWdfaW5pdCk6IENoYW5nZWQKCXRoZSBzeW50YXggb2YgdGhlIEZUMl9ERUJVRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB1c2VkIHRvIGNvbnRyb2wKCWRlYnVnZ2luZyBvdXRwdXQgKGkuZS4gbG9nZ2luZyBhbmQgZXJyb3IgbWVzc2FnZXMpLiAgSXQgbXVzdCBub3cKCWxvb2sgbGlrZToKCgkgIGFueTo2IG1lbW9yeTo0IGlvOjMgICBvcgoJICBhbnk6NixtZW1vcnk6NCxpbzozICAgb3IKCSAgYW55OjY7bWVtb3J5OjQ7aW86MwoKMjAwMi0wNy0wNyAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc25hcF9zdGVtKTogQWRkaW5nIHN1cHBvcnQgZm9yCglibHVlIGZ1enouCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9CbHVlc1JlYyk6IEFkZCBgYmx1ZV9mdXp6JyBmaWVsZC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChUMV9PcGVuX0ZhY2UpOiBJbml0aWFsaXplIGBibHVlX2Z1enonLgoKCUFkZGluZyBzdXBwb3J0IGZvciBoaW50ZXItc3BlY2lmaWMgYml0IGZsYWdzLCBhbmQgdGhlIG5ldwoJRlRfU2V0X0hpbnRfRmxhZ3MgaGlnaC1sZXZlbCBBUEkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX1NldF9IaW50X0ZsYWdzKTogTmV3IGZ1bmN0aW9uLgoJKEZUX0hJTlRfTk9fSU5URUdFUl9TVEVNLCBGVF9ISU5UX05PX0hTVEVNX0FMSUdOLAoJRlRfSElOVF9OT19WU1RFTV9BTElHTik6IE5ldyBtYWNyb3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9GYWNlX0ludGVybmFsUmVjKTogQWRkCglgaGludF9mbGFncycgbWVtYmVyLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9IaW50X0ZsYWdzKTogTmV3IGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9EZWNvZGVyUmVjKTogQWRkIGBoaW50X2ZsYWdzJwoJbWVtYmVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmggKFQxX0hpbnRzX0FwcGx5RnVuYywKCVQyX0hpbnRzX0FwcGx5RnVuYyk6IEFkZCBwYXJhbWV0ZXIgdG8gcGFzcyBoaW50IGZsYWdzLgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MsCglUMV9EZWNvZGVyX0luaXQpOiBVc2UgZGVjb2Rlci0+aGludF9mbGFncy4KCSogc3JjL2NmZi9jZmZnbG9hZC5oIChDRkZfQnVpbGRlcik6IEFkZCBgaGludF9mbGFncycgZmllbGQuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX0J1aWxkZXJfSW5pdCk6IFNldCBidWlsZGVyLT5oaW50X2ZsYWdzLgoJKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IFVwZGF0ZWQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwczFfaGludHNfYXBwbHkpOiBBZGQgcGFyYW1ldGVyIHRvIGhhbmRsZQoJaGludCBmbGFncyAodW51c2VkKS4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmg6IFVwZGF0ZWQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwczJfaGludHNfYXBwbHkpOiBBZGQgcGFyYW1ldGVyIHRvIGhhbmRsZQoJaGludCBmbGFncyAodW51c2VkKS4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmg6IFVwZGF0ZWQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwczNfaGludHNfYXBwbHkpOiBBZGQgcGFyYW1ldGVyIHRvIGhhbmRsZQoJaGludCBmbGFncy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmg6IFVwZGF0ZWQuCgoyMDAyLTA3LTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX3Nsb3RfbG9hZCk6IEZpeGVkIGEgc21hbGwgYnVnIHRoYXQgcmV0dXJuZWQKCWluY29ycmVjdCBhZHZhbmNlcyB3aGVuIHRoZSBvdXRsaW5lIHJlc29sdXRpb24gd2FzIGRpZmZlcmVudCBmcm9tCgl0aGUgbWV0cmljcyByZXNvbHV0aW9uLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmM6IHMvRlRfTUVNX1NFVC9GVF9aRVJPLyB3aGVyZSBhcHByb3ByaWF0ZS4KCShhaF9vdXRsaW5lX2xpbmtfc2VnbWVudHMpOiBTbGlnaHQgaW1wcm92ZW1lbnRzIHRvIHRoZSBzZXJpZgoJZGV0ZWN0aW9uIGNvZGUuICBNb3JlIHdvcmsgaXMgbmVlZGVkIHRob3VnaC4KCjIwMDItMDctMDMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglTbWFsbCBpbXByb3ZlbWVudHMgdG8gdGhlIGF1dG9tYXRpYyBoaW50ZXIuICBVbmV2ZW4gc3RlbS13aWR0aHMgaGF2ZQoJbm93IGRpc2FwcGVhcmVkIGFuZCBldmVyeXRoaW5nIGxvb2tzIG11Y2ggYmV0dGVyLCBldmVuIGlmIHRoZXJlIGFyZQoJc3RpbGwgaXNzdWVzIHdpdGggc2VyaWZlZCBmb250cy4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0dsb2JhbHMpOiBBZGRlZCBgc3RkcycgYXJyYXkuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoT1BUSU1fU1RFTV9TTkFQKTogTmV3ICNkZWZpbmUuCgkoYWhfc25hcF93aWR0aCk6IENvbW1lbnRlZCBvdXQuCgkoYWhfYWxpZ25fbGlua2VkX2VkZ2UpOiBSZW5hbWVkIHRvLi4uCgkoYWhfY29tcHV0ZV9zdGVtX3dpZHRoKTogVGhpcy4KCURvbid0IGFsbG93IHVuZXZlbiBzdGVtLXdpZHRocy4KCShhaF9hbGlnbl9saW5rZWRfZWRnZSk6IE5ldyBmdW5jdGlvbi4KCShhaF9hbGlnbl9zZXJpZmVkX2VkZ2UpOiBEb24ndCBzdHJlbmd0aGVuIHNlcmlmcy4KCShhaF9oaW50X2VkZ2VzXzMsIGFoX2hpbnRlcl9zY2FsZV9nbG9iYWxzKTogVXBkYXRlZC4KCjIwMDItMDctMDMgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCUFkZGluZyBuZXcgYWxnb3JpdGhtIGJhc2VkIG9uIE93ZW4gVGF5bG9yJ3MgcmVjZW50IHdvcmsuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28zLmg6IE5ldyBmaWxlcy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28uaDogVXBkYXRlZC4KCVVzZSBwc2hhbGdvMyBieSBkZWZhdWx0LgoJKiBzcmMvcHNoaW50ZXIvcHNoaW50ZXIuYzogSW5jbHVkZSBwc2hhbGdvMy5jLgoKCSogc3JjL3BzaGludGVyL0phbWZpbGUsIHNyYy9wc2hpbnRlci9ydWxlcy5tazogVXBkYXRlZC4KCjIwMDItMDctMDEgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzKTogRml4IGEgYnVnCgl3aGVyZSwgaWYgYSBnbHlwaCBoYXMgbW9yZSB0aGFuIGhpbnQgbWFzaywgdGhlIHNlY29uZCBtYXNrIGdldHMKCWFwcGxpZWQgdG8gcG9pbnRzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjb3ZlcmVkIGJ5IHRoZSBmaXJzdCBtYXNrLgoKMjAwMi0wNy0wMSAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwOF9jaGFyX25leHQsIHR0X2NtYXAxMl9jaGFyX25leHQpOgoJRml4aW5nIHRoZSBjbWFwIDggYW5kIDEyIHBhcnNpbmcgcm91dGluZXMuCgoyMDAyLTA3LTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdHN5bnRoLmM6IEluY2x1ZGUgRlRfVFJJR09OT01FVFJZX0guCgkoRlRfT3V0bGluZV9FbWJvbGRlbik6IFJlbmFtZWQgdG8uLi4KCShGVF9HbHlwaFNsb3RfRW1ib2xkZW4pOiBUaGlzLgoJVXBkYXRlZCB0byBuZXcgdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMuCgkoRlRfT3V0bGluZV9PYmxpcXVlKTogUmVuYW1lZCB0by4uLgoJKEZUX0dseXBoU2xvdF9PYmxpcXVlKTogVGhpcy4KCShmdF9ub3JtKTogUmVtb3ZlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHN5bnRoLmg6IFVwZGF0ZWQuCgoyMDAyLTA2LTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2JqZWN0Lmg6IFVwZGF0aW5nIHRoZSBvYmplY3QKCXN1Yi1zeXN0ZW0gZGVmaW5pdGlvbnMgKHN0aWxsIGV4cGVyaW1lbnRhbCkuCgoJKiBzcmMvYmFzZS9mdGhhc2guYyAoZnRfaGFzaF9yZW1vdmUpOiBGaXhpbmcgYSBzbWFsbCByZWFsbG9jYXRpb24KCWJ1Zy4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyLCBGVF9BbmdsZV9EaWZmKTogTmV3CglmdW5jdGlvbnMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaDogVXBkYXRlZC4KCgoJQWRkaW5nIHBhdGggc3Ryb2tlciBjb21wb25lbnQgKHdvcmsgaW4gcHJvZ3Jlc3MpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZXIuaCwgc3JjL2Jhc2UvZnRzdHJva2VyLmM6IE5ldyBmaWxlcy4KCSogc3JjL2Jhc2UvSmFtZmlsZTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1NUUk9LRVJfSCk6IE5ldyBtYWNyby4KCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0NvbXBvc2l0ZV9HbHlwaCksCglzcmMvYmFzZS9mdG91dGxuLmMgKEZUX1ZlY3Rvcl9UcmFuc2Zvcm0pOiBGaXhlZCBXZXJuZXIncyBsYXRlc3QgZml4LgoJRlRfVmVjdG9yX1RyYW5zZm9ybSB3YXNuJ3QgYnVnZ3ksIHRoZSBUcnVlVHlwZSBjb21wb3NpdGUgbG9hZGVyIHdhcy4KCjIwMDItMDYtMjQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gMy4KCjIwMDItMDYtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS4yIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDYtMjEgIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDQydHlwZXMuaCAoVDQyX0ZvbnQpOiBSZW1vdmVkIHNpbmNlCglpdCBpcyBhbHJlYWR5IGluIHQ0Mm9ianMuaC4KCShUNDJfRmFjZSk6IFVzZSBUMV9Gb250UmVjLgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jIChGVF9HZXRfUFNfRm9udF9JbmZvKTogVXBkYXRlZC4KCShGVF9IYXNfUFNfR2x5cGhfTmFtZXMpOiBDaGVjayBmb3IgdHlwZTQyIGRyaXZlciBuYW1lIGFsc28uCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5oOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1RZUEU0Ml9UWVBFU19ILgoJKFQ0Ml9GYWNlKTogUmVtb3ZlZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGluIHQ0MnR5cGVzLmguCgoyMDAyLTA2LTIxICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3Bmcmdsb2FkLmMgKHBmcl9nbHlwaF9sb2FkX2NvbXBvdW5kKTogRml4IGxvYWRpbmcgb2YgY29tcG9zaXRlCglnbHlwaHMuCgoyMDAyLTA2LTIxICBTdmVuIE5ldW1hbm4gIDxzdmVuQGNvbnZlcmdlbmNlLmRlPgoKCSogc3JjL3ByZi9wZnJ0eXBlcy5oIChQRlJfS2VyblBhaXIpOiBOZXcgc3RydWN0dXJlLgoJKFBGUl9QaHlGb250KTogVXNlIGl0LgoJKFBGUl9LZXJuRmxhZ3MpOiBOZXcgZW51bWVyYXRpb24uCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfZXh0cmFfaXRlbV9sb2FkX2tlcm5pbmdfcGFpcnMpOiBOZXcKCWZ1bmN0aW9uLgoJKHBmcl9waHlfZm9udF9leHRyYV9pdGVtcyk6IFVzZSBpdC4KCShwZnJfcGh5X2ZvbnRfZG9uZSk6IFVwZGF0ZWQuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogU2V0IGtlcm5pbmcgZmxhZyBjb25kaXRpb25hbGx5LgoJKHBmcl9mYWNlX2dldF9rZXJuaW5nKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvcGZyL3Bmcm9ianMuaDogVXBkYXRlZC4KCSogc3JjL3Bmci9wZnJkcml2ci5jIChwZnJfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCjIwMDItMDYtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRSwgZG9jcy9DSEFOR0VTOiBQcmVwYXJpbmcgdGhlIDIuMS4yIHJlbGVhc2UuCgoyMDAyLTA2LTE5ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1RZUEU0Ml9UWVBFU19ILgoJKHQxX2ZhY2VfY2hlY2tfY2FzdCk6IFJlbW92ZWQuCgkoRlRfR2V0X1BTX0ZvbnRfSW5mbyk6IE1ha2UgaXQgd29yayB3aXRoIENJRCBhbmQgVHlwZSA0MiBkcml2ZXJzCglhbHNvLgoKMjAwMi0wNi0xOSAgU2ViYXN0aWVuIEJBUlJFICA8aHR0cDovL2JhcnJlLm5vbS5mci9jb250YWN0Lmh0bWwjZW1haWw+CgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9zZm50cyk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMi0wNi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9WZWN0b3JfVHJhbnNmb3JtKTogRml4IHNlcmlvdXMgdHlwbwoJKHh5IDwtPiB5eCkuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZXBsYWNlIGB8JyB3aXRoCglgfHwnIHRvIG1ha2UgY29kZSBlYXNpZXIgdG8gcmVhZC4KCjIwMDItMDYtMTggIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPi4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jICh0NDJfY2hlY2tfc2l6ZV9jaGFuZ2UpOiBSZW1vdmVkLgoJKFQ0Ml9TaXplX1NldENoYXJzLCBUNDJfU2l6ZV9TZXRQaXhlbHMpOiBVc2UgRlRfQWN0aXZhdGVfU2l6ZQoJaW5zdGVhZC4KCShUNDJfR2x5cGhTbG90X0xvYWQpOiBSZW1vdmUgY2FsbCB0byB0NDJfY2hlY2tfc2l6ZV9jaGFuZ2UuCgoyMDAyLTA2LTE4ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3BzYXV4L3QxY21hcC5jICh0MV9jbWFwX2N1c3RvbV9jaGFyX2luZGV4LAoJdDFfY21hcF9jdXN0b21fY2hhcl9uZXh0KTogRml4IGluZGV4IGNvbXB1dGF0aW9uIC0tIGluZGljZXMgc3RhcnQKCXdpdGggMCBhbmQgbm90IHdpdGggY21hcC0+Zmlyc3QuCgoJUHJvdmlkZSBkZWZhdWx0IGNoYXJtYXBzLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KSwgc3JjL3BjZi9wY2Zkcml2ZXIuYwoJKFBDRl9GYWNlX0luaXQpLCBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCksCglzcmMvdHlwZTEvdDFvYmpzIChUMV9GYWNlX0luaXQpLCBzcmMvd2luZm9udHMvd2luZm50LmMKCShGTlRfRmFjZV9Jbml0KTogSW1wbGVtZW50IGl0LgoKMjAwMi0wNi0xNyAgU3ZlbiBOZXVtYW5uICA8c3ZlbkBnaW1wLm9yZz4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogRml4IHR5cG8uCgoyMDAyLTA2LTE2ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJVXBkYXRlZCBXaW4zMi9WQysrIHByb2plY3RzIHRvIGluY2x1ZGUgdGhlIG5ldyBQRlIgZHJpdmVyLgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wNi0xNiAgQW50aG9ueSBGb2sgIDxmb2tAZGViaWFuLm9yZz4KCglJbnN0YWxsIGZyZWV0eXBlMi5tNC4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwsIHVuaW5zdGFsbCk6IEhhbmRsZSBpdC4KCjIwMDItMDYtMTYgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJU2FtZSBmaXggZm9yIFBGUiBkcml2ZXIuCgoJKiBzcmMvcGZyL3BmcmNtYXAuYyAocGZyX2NtYXBfY2hhcl9pbmRleCwgcGZyX2NtYXBfY2hhcl9uZXh0KToKCUluY3JlYXNlIHJldHVybiB2YWx1ZSBieSAxLgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX3Nsb3RfbG9hZCk6IERlY3JlYXNlIGluZGV4IGJ5IDEuCgoyMDAyLTA2LTE1ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCUZpeCBnbHlwaCBpbmRpY2VzIHRvIG1ha2UgaW5kZXggemVybyBhbHdheXMgdGhlIHVuZGVmaW5lZCBnbHlwaC4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoYmRmX2NtYXBfaW5pdCk6IERvbid0IGRlY3JlYXNlCgljbWFwLT5udW1fZW5jb2RpbmdzLgoJKGJkZl9jbWFwX2NoYXJfaW5kZXgsIGJkZl9jbWFwX2NoYXJfbmV4dCwgQkRGX0dldF9DaGFyX0luZGV4KToKCUluY3JlYXNlIHJlc3VsdCBieSAxIGZvciBub3JtYWwgY2FzZXMuCgkoQkRGX0dseXBoX0xvYWQpOiBEZWNyZWFzZSBpbmRleCBieSAxLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAocGNmX2NtYXBfY2hhcl9pbmRleCwgcGNmX2NtYXBfY2hhcl9uZXh0LAoJUENGX0NoYXJfR2V0X0luZGV4KTogSW5jcmVhc2UgcmVzdWx0IGJ5IDEgZm9yIG5vcm1hbCBjYXNlcy4KCShQQ0ZfR2x5cGhfTG9hZCk6IERlY3JlYXNlIGluZGV4IGJ5IDEuCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfZ2V0X2VuY29kaW5ncyk6IERvbid0IGRlY3JlYXNlIGogZm9yCglhbGxvY2F0aW5nIGBlbmNvZGluZycuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCwgRlRfR2V0X0dseXBoX05hbWUpOiBGaXgKCWJvdW5kaW5nIHRlc3RzLgoKMjAwMi0wNi0xNCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCglBZGQgbmV3IGNtYXAgc3VwcG9ydCB0byBCREYgZHJpdmVyLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfQ01hcFJlYykgW0ZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXToKCU5ldyBzdHJ1Y3R1cmUuCgkoYmRmX2NtYXBfaW5pdCwgYmRmX2NtYXBfZG9uZSwgYmRmX2NtYXBfY2hhcl9pbmRleCwKCWJkZl9jbWFwX2NoYXJfbmV4dCkgW0ZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXTogTmV3IGZ1bmN0aW9ucy4KCShCREZfR2V0X0NoYXJfSW5kZXgpIFshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOiBVc2Ugb25seQoJY29uZGl0aW9uYWxseS4KCShCREZfRmFjZV9Jbml0KTogSGFuZGxlIGBBVkVSQUdFX1dJRFRIJyBhbmQgYFBPSU5UX1NJWkUnIGtleXdvcmRzLgoJSW1wbGVtZW50IG5ldyBjbWFwIGhhbmRsaW5nLgoJKGJkZl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKMjAwMi0wNi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogTWFrZWZpbGUsIGNvbmZpZ3VyZSwgKi8qLm1rLCBidWlsZHMvdW5peC91bml4LWRlZi5pbiwKCWRvY3MvQ0hBTkdFUywgZG9jcy9JTlNUQUxMOiBzL1RPUC9UT1BfRElSLy4KCjIwMDItMDYtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvYmRmbGliLmM6IHMvRlRfU2hvcnQvc2hvcnQvIGZvciBjb25zaXN0ZW5jeS4KCjIwMDItMDYtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy93aW4zMi9mdGRlYnVnLmM6IEFkZGVkIGEgbWlzc2luZyAjZW5kaWYuCgoJKiBzcmMvc2ZudC90dGxvYWQuYywgc3JjL2JkZi9iZGZsaWIuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJUmVtb3ZlZCB0aGUgYnVnIGluIFR5cGUgNDIgZHJpdmVyIHRoYXQgcHJldmVudGVkIHVuLWhpbnRlZCBvdXRsaW5lcwoJdG8gYmUgbG9hZGVkLgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBDYWxsIEZUX0RvbmVfU2l6ZS4KCShUNDJfU2l6ZV9Jbml0KTogQ2FsbCBGVF9BY3RpdmF0ZV9TaXplLgoJKHQ0Ml9jaGVja19zaXplX2NoYW5nZSk6IE5ldyBmdW5jdGlvbi4KCShUNDJfU2l6ZV9TZXRDaGFycywgVDQyX1NpemVfU2V0UGl4ZWxzKTogVXNlIGl0LgoJKGZ0X2dseXBoc2xvdF9jbGVhcik6IFJlcGxhY2UgRlRfTUVNX1NFVCB3aXRoIEZUX1pFUk8uCgkoVDQyX0dseXBoU2xvdF9Mb2FkKTogVXNlIHQ0Ml9jaGVja19zaXplX2NoYW5nZS4KCUluaXRpYWxpemUgbW9yZSBmaWVsZHMgb2YgYGdseXBoJy4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDYtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS4xIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDYtMDggIEp1bGl1c3ogQ2hyb2JvY3playAgPGpjaEBwcHMuanVzc2lldS5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9hdXRvaGludC9haGdseXBoLmMsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jLCBzcmMvc21vb3RoL2Z0Z3JheXMuYzogRG9uJ3QKCXVzZSBgc2V0am1wJywgYGxvbmdqbXAnLCBhbmQgYGptcF9idWYnIGJ1dCBgZnRfc2V0am1wJywgYGZ0X2xvbmdqbXAnLAoJYW5kIGBmdF9qbXBfYnVmJy4KCVJlbW92ZWQgZGlyZWN0IHJlZmVyZW5jZXMgdG8gPHN0ZGlvLmg+IGFuZCA8c2V0am1wLmg+IHdoZW4KCWFwcHJvcHJpYXRlLCB0byBldmVudHVhbGx5IHJlcGxhY2UgdGhlbSB3aXRoIGEKCUZUX0NPTkZJR19TVEFOREFSRF9MSUJSQVJZX0guICBVc2VmdWwgZm9yIHRoZSBYRnJlZTg2IEZvbnQgU2VydmVyCgliYWNrZW5kIGJhc2VkIG9uIEZUMi4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYyAoRlRfSGFzX1BTX0dseXBoX05hbWVzKTogRml4IHJldHVybiB2YWx1ZS4KCjIwMDItMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKHBjZl9jbWFwX2NoYXJfbmV4dCk6IEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkCgl0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIGludmFsaWQgdmFsdWVzLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmk6IFJlbW92aW5nIGEgdHlwbyB0aGF0IHByZXZlbnRlZAoJdGhlIHNvdXJjZSdzIGNvbXBpbGF0aW9uLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2hhc2hfdW5saW5rKTogRml4ZWQgYQoJYnVnIHRoYXQgY2F1c2VkIG5hc3R5IG1lbW9yeSBvdmVyd3JpdGVzLiAgVGhlIGhhc2ggdGFibGUncwoJYnVja2V0cyBhcnJheSB3YXNuJ3QgY29ycmVjdGx5IHJlc2l6ZWQgd2hlbiBzaHJpbmtlZC4KCjIwMDItMDYtMDggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2Evc21ha2VmaWxlLCBidWlsZHMvYW1pZ2EvbWFrZWZpbGU6IFVwZGF0ZWQuCgoyMDAyLTA2LTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfaGFzaF91bmxpbmssIGZ0Y19ub2RlX2hhc2hfbGluaykKCVtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogRml4IHJldHVybmVkIGVycm9yIGNvZGUuCglGaXggZGVidWdnaW5nIG1lc3NhZ2VzLgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuaSAoR0VOX0NBQ0hFX0xPT0tVUCk6IE1vdmUgZGVjbGFyYXRpb24gb2YKCWBmYW1pbHknIGFuZCBgaGFzaCcgdXAgdG8gbWFrZSBpdCBjb21waWxhYmxlIHdpdGggZysrLgoKCSogc3JjL3R5cGU0Mi90NDJlcnJvci5oOiBOZXcgZmlsZS4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jLCBzcmMvdHlwZTQyL3Q0Mm9ianMuYywKCXNyYy90eXBlNDIvdDQycGFyc2UuYzogVXNlIHQ0MiBlcnJvciBjb2Rlcy4KCSogc3JjL3R5cGU0Mi9ydWxlcy5tazogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9TVFJFQU1fSC4KCjIwMDItMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmM6IEdFTl9DQUNIRV9GQU1JTFlfQ09NUEFSRSwKCUdFTl9DQUNIRV9OT0RFX0NPTVBBUkUsIEdFTl9DQUNIRV9MT09LVVApIFtGVENfQ0FDSEVfVVNFX0lOTElORV06CglOZXcgbWFjcm9zLgoJKGZ0Y19jbWFwX2NhY2hlX2xvb2t1cCkgWyFGVENfQ0FDSEVfVVNFX0lOTElORV06IFR5cGVkZWYgdG8KCWZ0Y19jYWNoZV9sb29rdXAuCgkoRlRDX0NNYXBDYWNoZV9Mb29rdXApOiBVcGRhdGVkLgoKCUFkZGluZyB2YXJpb3VzIGV4cGVyaW1lbnRhbCBvcHRpbWl6YXRpb25zIHRvIHRoZSBjYWNoZSBtYW5hZ2VyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNjYWNoZS5oIChGVENfQ0FDSEVfVVNFX0lOTElORSwKCUZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkcpOiBOZXcgb3B0aW9ucy4KCShGVENfQ2FjaGVSZWMpIFtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogTmV3IGVsZW1lbnRzIGBwJywKCWBtYXNrJywgYW5kIGBzbGFjaycuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoRlRDX0hBU0hfTUFYX0xPQUQsIEZUQ19IQVNIX01JTl9MT0FELAoJRlRDX0hBU0hfU1VCX0xPQUQpIFtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HLAoJRlRDX0hBU0hfSU5JVElBTF9TSVpFXTogTmV3IG1hY3Jvcy4KCShmdGNfbm9kZV9tcnVfbGluaywgZnRjX25vZGVfbXJ1X3VwKTogT3B0aW1pemVkLgoJKGZ0Y19ub2RlX2hhc2hfdW5saW5rLCBmdGNfbm9kZV9oYXNoX2xpbmspCglbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IE5ldyB2YXJpYW50cy4KCShGVENfUFJJTUVTX01JTiwgRlRDX1BSSU1FU19NQVgsIGZ0Y19wcmltZXMsIGZ0Y19wcmltZV9jbG9zZXN0LAoJRlRDX0NBQ0hFX1JFU0laRV9URVNULCBmdGNfY2FjaGVfcmVzaXplKQoJWyFGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogRGVmaW5lIGl0IGNvbmRpdGlvbmFsbHkuCgkoZnRjX2NhY2hlX2luaXQsIGZ0Y19jYWNoZV9jbGVhcikgW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOgoJVXBkYXRlZC4KCShmdGNfY2FjaGVfbG9va3VwKSBbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IEltcGxlbWVudCBpdC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5pOiBOZXcgZmlsZS4KCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChHRU5fQ0FDSEVfRkFNSUxZX0NPTVBBUkUsCglHRU5fQ0FDSEVfTk9ERV9DT01QQVJFLCBHRU5fQ0FDSEVfTE9PS1VQKSBbRlRDX0NBQ0hFX1VTRV9JTkxJTkVdOgoJTmV3IG1hY3Jvcy4KCShmdGNfc2JpdF9jYWNoZV9sb29rdXApIFshRlRDX0NBQ0hFX1VTRV9JTkxJTkVdOiBUeXBlZGVmIHRvCglmdGNfY2FjaGVfbG9va3VwLgoJKEZUQ19TQml0Q2FjaGVfTG9va3VwKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYzogUmVtb3ZpbmcgZHVwbGljYXRlIGZ1bmN0aW9uLgoKMjAwMi0wNi0wNyAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCk6IENoYW5nZWQgZGVmaW5pdGlvbgoJZnJvbSBGVF9FWFBPUlRfREVGIHRvIEZUX0JBU0VfREVGLgoKMjAwMi0wNi0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGVkIHRoZSBidWcgdGhhdCBwcmV2ZW50ZWQgdGhlIGNvcnJlY3QgZGlzcGxheSBvZiBmb250cyB3aXRoCglgZnR2aWV3Jy4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYzogU3BsaXQgaW50by4uLgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmgsIHNyYy90eXBlNDIvdDQycGFyc2UuYywKCXNyYy90eXBlNDIvdDQycGFyc2UuaCwgc3JjL3R5cGU0Mi90NDJvYmpzLmgsIHNyYy90eXBlNDIvdDQyb2Jqcy5jLAoJc3JjL3R5cGU0Mi90eXBlNDIuYzogTmV3IGZpbGVzLgoKCSh0NDJfZ2V0X2dseXBoX25hbWUsIHQ0Ml9nZXRfcHNfbmFtZSwgdDQyX2dldF9uYW1lX2luZGV4KTogVXNlCglgZmFjZS0+dHlwZTEnLgoKCShHZXRfSW50ZXJmYWNlKTogUmVuYW1lZCB0by4uLgoJKFQ0Ml9HZXRfSW50ZXJmYWNlKTogVGhpcy4KCVVwZGF0ZWQuCgkoVDQyX09wZW5fRmFjZSwgVDQyX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgkoVDQyX0ZhY2VfSW5pdCk6IEFkZCBuZXcgY21hcCBzdXBwb3J0LgoJVXBkYXRlZC4KCShUNDJfRHJpdmVyX0luaXQsIFQ0Ml9Ecml2ZXJfRG9uZSwgVDQyX1NpemVfSW5pdCwgVDQyX1NpemVfRG9uZSwKCVQ0Ml9HbHlwaFNsb3RfSW5pdCwgVDQyX0dseXBoU2xvdF9Eb25lKTogVXBkYXRlZC4KCShHZXRfQ2hhcl9JbmRleCwgR2V0X05leHRfQ2hhcik6IFJlbmFtZWQgdG8uLi4KCShUNDJfQ01hcF9DaGFySW5kZXgsIFQ0Ml9DTWFwX0NoYXJOZXh0KTogVGhpcy4KCVVwZGF0ZWQuCgkoVDQyX0NoYXJfU2l6ZSwgVDQyX1BpeGVsX1NpemUpOiBSZW5hbWVkIHRvLi4uCgkoVDQyX1NpemVfU2V0Q2hhcnMsIFQ0Ml9TaXplX1NldFBpeGVscyk6IFRoaXMuCgkoVDQyX0xvYWRfR2x5cGgpOiBSZW5hbWVkIHRvLi4uCgkoVDQyX0dseXBoU2xvdF9Mb2FkKTogVGhpcy4KCgkodDQyX2luaXRfbG9hZGVyLCB0NDJfZG9uZV9sb2FkZXIpOiBSZW5hbWVkIHRvLi4uCgkodDQyX2xvYWRlcl9pbml0LCB0NDJfbG9hZGVyX2RvbmUpOiBUaGlzLgoJKFQ0Ml9OZXdfUGFyc2VyLCBUNDJfRmluYWxpemVfUGFyc2VyKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9wYXJzZXJfaW5pdCwgdDQyX3BhcnNlcl9kb25lKTogVGhpcy4KCShwYXJzZV9kaWN0KTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9wYXJzZV9kaWN0KTogVGhpcy4KCShpc19hbHBoYSwgaXNfc3BhY2UsIGhleHZhbCk6IFJlbmFtZWQgdG8uLi4KCSh0NDJfaXNfYWxwaGEsIHQ0Ml9pc19zcGFjZSwgdDQyX2hleHZhbCk6IFRoaXMuCgkocGFyc2VfZm9udF9uYW1lLCBwYXJzZV9mb250X2Jib3gsIHBhcnNlX2ZvbnRfbWF0cml4LAoJcGFyc2VfZW5jb2RpbmcsIHBhcnNlX3NmbnRzLCBwYXJzZV9jaGFyc3RyaW5ncywgcGFyc2VfZGljdCk6CglSZW5hbWVkIHRvLi4uCgkodDQyX3BhcnNlX2ZvbnRfbmFtZSwgdDQyX3BhcnNlX2ZvbnRfYmJveCwgdDQyX3BhcnNlX2ZvbnRfbWF0cml4LAoJdDQyX3BhcnNlX2VuY29kaW5nLCB0NDJfcGFyc2Vfc2ZudHMsIHQ0Ml9wYXJzZV9jaGFyc3RyaW5ncywKCXQ0Ml9wYXJzZV9kaWN0KTogVGhpcy4KCVVwZGF0ZWQuCgoJKHQ0Ml9rZXl3b3Jkcyk6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTQyL0phbWZpbGUsIHNyYy90eXBlNDIvZGVzY3JpcC5tbXM6IFVwZGF0ZWQuCgoyMDAyLTA2LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQWRkIDhicHAgc3VwcG9ydCB0byBCREYgZHJpdmVyLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9wYXJzZV9zdGFydCk6IEhhbmRsZSA4YnBwLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9HbHlwaF9Mb2FkKTogRGl0dG8uCgkqIHNyYy9iZGYvUkVBRE1FOiBVcGRhdGVkLgoKMjAwMi0wNi0wMiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfcGh5X2ZvbnRfZG9uZSk6IEZyZWUgYGJsdWVfdmFsdWVzJyBhcnJheS4KCjIwMDItMDUtMjkgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3JlYWRzdHJlYW0pOiBBbGxvY2F0ZSBgYnVmJyBkeW5hbWljYWxseS4KCShfYmRmX3BhcnNlX2dseXBocyk6IFVzZSBjb3JyZWN0IHNpemUgZm9yIGFsbG9jYXRpbmcKCWBmb250LT51bmVuY29kZWQnLgoJKGJkZl9sb2FkX2ZvbnQpOiBGcmVlIGFycmF5IGNvbmRpdGlvbmFsbHkuCglSZXR1cm4gcHJvcGVyIGVycm9yIGNvZGUgaW4gY2FzZSBvZiBmYWlsdXJlLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBNYWtlIGl0IG1vcmUgcm9idXN0IGFnYWluc3QKCXVudXN1YWwgZm9udHMuCgoyMDAyLTA1LTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2Rlc2NyaXAubW1zLCBzcmMvdHlwZTQyL2Rlc2NyaXAubW1zOiBOZXcgZmlsZXMuCgkqIGRlc2NyaXAubW1zIChhbGwpOiBVcGRhdGVkLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9wYXJzZV9nbHlwaHMpOiBGaXggdHlwbyB3aGljaCBwcmV2ZW50ZWQKCWNvbXBpbGF0aW9uLgoJKiBzcmMvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc2NhbGVfem9uZXMpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDUtMjggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvbWFrZWZpbGUsIGJ1aWxkcy9hbWlnYS9zbWFrZWZpbGUsCglhbWlnYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBVcGRhdGVkIHRvIGluY2x1ZGUKCXN1cHBvcnQgZm9yIEJERiBhbmQgVHlwZTQyIGRyaXZlcnMuCgoJKiBkb2NzL21vZHVsZXMudHh0OiBVcGRhdGVkLgoKMjAwNS0wNS0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBmaWxlIGZvciBuZXh0IHJlbGVhc2UgKDIuMS4xKS4KCgkqIHNyYy9iZGYvYmRmbGliLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHhmODYuaCwgc3JjL2Jhc2UvZnR4Zjg2LmM6IE5ldyBmaWxlcy4KCVRoZXkgcHJvdmlkZSBhIG5ldyBBUEkgKEZUX0dldF9YMTFfRm9udF9Gb3JtYXQpIHRvIHJldHJpZXZlIGFuCglYMTEtY29tcGF0aWJsZSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZm9udCBmb3JtYXQgb2YgYSBnaXZlbiBmYWNlLgoJVGhpcyB3YXMgcHV0IGluIGEgbmV3IG9wdGlvbmFsIGJhc2Ugc291cmNlIGZpbGUsIGNvcnJlc3BvbmRpbmcgdG8gYQoJbmV3IHB1YmxpYyBoZWFkZXIgKG5hbWVkIEZUX1hGUkVFODZfSCBzaW5jZSB0aGlzIGZ1bmN0aW9uIHNob3VsZAoJb25seSBiZSB1c2VkIHdpdGhpbiB0aGUgWEZyZWU4NiBmb250IHNlcnZlciBJTU8pLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfWEZSRUU4Nl9IKTogTmV3IG1hY3JvIChub3QKCWRvY3VtZW50ZWQgeWV0KS4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYzogTmV3IGZpbGUsIHByb3ZvZGluZyB0d28gbmV3IEFQSSBmdW5jdGlvbnMKCShGVF9HZXRfUFNfRm9udF9JbmZvIGFuZCBGVF9IYXNfUFNfR2x5cGhfTmFtZXMpLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5taywgc3JjL2Jhc2UvZGVzY3JpcC5tbXM6CglVcGRhdGluZyBidWlsZCBjb250cm9sIGZpbGVzIGZvciB0aGUgbmV3IGZpbGVzIGBmdHhmODYuYycgYW5kCglgZnR0eXBlMS5jJyBpbiBzcmMvYmFzZS4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9ibHVlc19zY2FsZV96b25lcyk6IEZpeGVkIGEgYnVnIHRoYXQKCXByZXZlbnRlZCBmYW1pbHkgYmx1ZSB6b25lcyBzdWJzdGl0dXRpb24gZnJvbSBoYXBlbm5pbmcgY29ycmVjdGx5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGJkZi5oIEZUX0dldF9CREZfQ2hhcnNldF9JRCk6IEFkZGluZwoJZG9jdW1lbnRhdGlvbiBjb21tZW50LgoKMjAwMi0wNS0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRuYW1lcy5jIChGVF9HZXRfU2ZudF9OYW1lKTogRG9uJ3QgdXNlIEZUX1NUUkVBTV9SRUFEX0FUCglidXQgRlRfU1RSRUFNX1JFQUQuCglEZWNsYXJlIGBzdHJlYW0nIHZhcmlhYmxlLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9wYXJzZV9nbHlwaHMpOiBSZXBsYWNlIGZsb2F0aW5nIHBvaW50IG1hdGgKCXdpdGggY2FsbHMgdG8gYEZUX011bERpdicuCgoyMDAyLTA1LTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4aW5nIHRoZSBTRk5UIG5hbWUgdGFibGUgbG9hZGVyIHRvIHN1cHBvcnQgdmFyaW91cyBidWdneSBmb250cy4KCUl0IG5vdyBpZ25vcmVzIGVtcHR5IG5hbWUgZW50cmllcywgZW50cmllcyB3aXRoIGludmFsaWQgcG9pbnRlcgoJT2Zmc2V0cyBhbmQgY2VydGFpbiBmb250cyBjb250YWluaW5nIHRhYmxlcyB3aXRoIGJyb2tlbgoJYHN0b3JhZ2VPZmZzZXQnIGZpZWxkcy4KCglOYW1lIHN0cmluZ3MgYXJlIG5vdyBsb2FkZWQgb24gZGVtYW5kLCB3aGljaCByZWR1Y2VzIHRoZSBtZW1vcnkKCXJlcXVpcmVtZW50cyBmb3IgYSBnaXZlbiBGVF9GYWNlIHRyZW1lbmRvdXNseSAoZm9yIGV4YW1wbGUsIHRoZSBuYW1lCgl0YWJsZSBvZiBBcmlhbC50dGYgaXMgYWJvdXQgMTBLYiBhbmQgY29udGFpbnMgNzAgbmFtZXMpLgoKCVRoaXMgaXMgYSB0ZW1wb3JhcnkgZml4LiAgVGhlIHdob2xlIG5hbWUgdGFibGUgbG9hZGVyIGFuZCBpbnRlcmZhY2UKCXdpbGwgYmUgcmV3cml0dGVuIGluIGEgbXVjaCBtb3JlIGNsZWFubHkgd2F5IHNob3J0bHksIG9uY2UgQ1NFSCBoYXZlCgliZWVuIGludHJvZHVjZWQgaW4gdGhlIHNvdXJjZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfTmFtZUVudHJ5UmVjKTogQ2hhbmdlCgl0eXBlIG9mIGBzdHJpbmdPZmZzZXQnIHRvIEZUX1VMb25nLgoJKFRUX05hbWVUYWJsZVJlYyk6IENoYW5nZSB0eXBlIG9mIGBudW1OYW1lUmVjb3JkcycgYW5kCglgc3RvcmFnZU9mZnNldCcgdG8gRlRfVUludC4KCVJlcGxhY2UgYHN0b3JhZ2UnIHdpdGggYHN0cmVhbScuCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZSk6IExvYWQgbmFtZSBvbiBkZW1hbmQuCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IERpdHRvLgoJTWFrZSBjb2RlIG1vcmUgcm9idXN0LgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoVFRfTmFtZUVudHJ5X0NvbnZlcnRGdW5jKTogTmV3IHR5cGVkZWYuCgkodHRfZmFjZV9nZXRfbmFtZSk6IFVzZSBpdC4KCU1ha2UgY29kZSBtb3JlIHJvYnVzdC4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpOiBVc2UgYHN0YXRpYycgZm9yIGFycmF5cy4KCUhhbmRsZSBpbnZhbGlkIGBzdG9yYWdlT2Zmc2V0JyBkYXRhIGJldHRlci4KCVNldCBsZW5ndGggZmllbGRzIHRvIHplcm8gZm9yIGludmFsaWQgb3IgaWdub3JlZCBkYXRhLgoJUmVtb3ZlIGNvZGUgd2l0aGluIEZUX0RFQlVHX0xFVkVMX1RSQUNFLgoJKFRUX0ZyZWVfTmFtZXMpOiBVcGRhdGVkLgoKMjAwMi0wNS0yNCAgVGltIE1vb25leSAgPGVuY2hhbnRlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBidWlsZHMvdW5peC9mdC1tdW5tYXAubTQ6IE5ldyBmaWxlLCBleHRyYWN0ZWQgRlRfTVVOTUFQX0RFQ0wgYW5kCglGVF9NVU5NQVBfUEFSQU0gZnJvbSBhY2xvY2FsLm00IGludG8gaGVyZSwgc28gYWNsb2NhbC5tNCBjYW4gYmUKCXJlYnVpbHQgZnJvbSBzb3VyY2VzLiAgU2V0IG1hY3JvIHNlcmlhbCB0byAxLCBhbmQgdXNlIHRoaXJkIGFyZ3VtZW50Cgl0byBBQ19ERUZJTkUgZm9yIG91ciB0d28gY3VzdG9tIHN5bWJvbHMsIHNvIGZ0Y29uZmlnLmluIGNvdWxkIG9uZSBkYXkKCWJlIHJlYnVpbHQgd2l0aCBhdXRvaGVhZGVyIChub3QgcmVjb21tZW5kZWQgbm93LCBmdGNvbmZpZy5pbiBpcyBhCgljdXN0b20gc291cmNlIGZpbGUpCgoyMDAyLTA1LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9CRVpJRVJfSCk6IFJlbW92ZWQuCgkoRlRfQkRGX0gpOiBOZXcgbWFjcm8gZm9yIGFjY2Vzc2luZyBgZnRiZGYuaCcuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMgKGhleHZhbCk6IEZpeCB0eXBvLgoKMjAwMi0wNS0yMSAgTWFydGluIE11c2tlbnMgIDxtbXVza2Vuc0BhdXJlbG9uLmNvbT4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFSYWRpeCk6IE5ldyBmdW5jdGlvbi4KCSh0MV90b2ludCk6IFVzZSBpdCB0byBoYW5kbGUgbnVtYmVycyBpbiByYWRpeCBmb3JtYXQuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IEFkZCBkdW1teQoJZm9yIHVuZG9jdW1lbnRlZCwgb2Jzb2xldGUgb3Bjb2RlIDE1LgoKMjAwMi0wNS0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2JkZi9iZGZsaWIuYzogUmVtb3ZlZCBjb21waWxlciB3YXJuaW5nLCBhbmQgY2hhbmdlZCBhbGwgdGFibGVzCgl0byB0aGUgYHN0YXRpYyBjb25zdCcgc3RvcmFnZSBzcGVjaWZpZXIgKGluc3RlYWQgb2Ygc2ltcGx5Cglgc3RhdGljJykuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMgKGhleHZhbCk6IFVzZSBtb3JlIGVmZmljaWVudCBjb2RlLgoJUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9iZGYvYmRmZHJpdnIuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0YmRmLmgsIHNyYy9iYXNlL2Z0YmRmLmMsCglzcmMvYmFzZS9kZXNjcmlwLm1tcywgc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWsKCShGVF9HZXRfQkRGX0NoYXJzZXRfSUQpOiBOZXcgQVBJIHRvIHJldHJpZXZlIEJERi1zcGVjaWZpYyBzdHJpbmdzCglmcm9tIGEgZmFjZS4gIFRoaXMgaXMgbXVjaCBjbGVhbmVyIHRoYW4gYWNjZXNzaW5nIHRoZSBpbnRlcm5hbCB0eXBlcwoJYEJERl9QdWJsaWNfRmFjZScgZGVmaW5lZCBpbiBGVF9JTlRFUk5BTF9CREZfVFlQRVNfSC4KCjIwMDItMDUtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvUkVBRE1FOiBNZW50aW9uIE1pY3Jvc29mdCdzIFNCSVQgdG9vbC4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NpZC9jaWRyaXZlci5jLCBzcmMvcGNmL3BjZmRyaXZlci5jLAoJc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMsIHNyYy90eXBlMS90MWRyaXZlci5jLAoJc3JjL3dpbmZvbnRzL3dpbmZudC5jLCBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMsIHNyYy9iZGYvYmRmZHJpdnIuYwoJW0ZUX0NPTkZJR19PUFRJT05fRFlOQU1JQ19EUklWRVJTXTogQ29tcGxldGVseSByZW1vdmVkLiAgSXQgaGFzCgliZWVuIG5ldmVyIHVzZWQuCgoyMDAyLTA1LTIxICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4uCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IHMvVDQyX0VOQ09ESU5HX1RZUEVfL1QxX0VOQ09ESU5HX1RZUEVfLy4KCShwYXJzZV9mb250X21hdHJpeCk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBjb2RlLgoJKHBhcnNlX3NmbnRzKTogSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcy4KCSh0NDJfZHJpdmVyX2NsYXNzKSBbVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUl06IFVzZQoJZnRfbW9kdWxlX2RyaXZlcl9oYXNfaGludGVyIGNvbmRpdGlvbmFsbHkuCglNb3ZlZCBzb21lIHR5cGUgNDIgc3BlY2lmaWMgc3RydWN0dXJlIGRlZmluaXRpb25zIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDQydHlwZXMuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfVDQyX1RZUEVTX0gpOgoJTmV3IG1hY3JvLgoKMjAwMi0wNS0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNzYml0cy5oIChGVENfU0JpdCk6IEFkZGVkIGEgbmV3IGZpZWxkCglgbnVtX2dyYXlzJyBmb3Igc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIHVzZWQgZ3JheSBsZXZlbHMuCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBJbml0aWFsaXplIGl0LgoKMjAwMi0wNS0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUFkZGluZyBhIGRyaXZlciBmb3IgQkRGIGZvbnRzIHdyaXR0ZW4gYnkgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCgk8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4uICBIZWF2aWx5IG1vZGlmaWVkIGJ5IG1lIHRvCgliZXR0ZXIgYWRhcHQgaXQgdG8gRnJlZVR5cGUsIHJlbW92aW5nIHVubmVlZGVkIHN0dWZmLiAgQWRkaXRpb25hbGx5LAoJaXQgbm93IHN1cHBvcnRzIE1hcmsgTGVpc2hlcidzIEJERiBleHRlbnNpb24gZm9yIGFudGktYWxpYXNlZAoJYml0bWFwIGdseXBocyB3aXRoIDIgYW5kIDQgYnBwLgoKCSogc3JjL2JkZi8qOiBOZXcgZHJpdmVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2JkZnR5cGVzLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogQWRkZWQgQkRGIGRyaXZlciBjb21wb25lbnRzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyZGVmLmg6IEFkZGVkIGVycm9yIGNvZGVzIGZvciBCREYgZHJpdmVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLCBzcmMvSmFtZmlsZTogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9CREZfVFlQRVNfSCk6CglOZXcgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF9zcHJpbnRmKTogTmV3IGFsaWFzIGZvcgoJc3ByaW50Zi4KCjIwMDItMDUtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oOiBBZGRlZCBUeXBlIDQyIGRyaXZlcgoJY29tcG9uZW50LgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IFVzZSBpdC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfUENGX1RZUEVTX0gpOgoJTmV3IG1hY3JvLgoKMjAwMi0wNS0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGU0Mi9KYW1maWxlOiBOZXcgZmlsZS4KCjIwMDItMDUtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGRpbmcgYSBkcml2ZXIgZm9yIFR5cGU0MiBmb250cyB3cml0dGVuIGJ5IFJvYmVydG8gQWxhbWVkYQoJPG9qYW5jYW5vQGdlZWttYWlsLmRlPi4KCgkqIHNyYy90eXBlNDIvKjogTmV3IGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCwgc3JjL0phbWZpbGU6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggKGZ0X3hkaWdpdCwgZnRfbWVtY21wLAoJZnRfYXRvaSk6IE5ldyBhbGlhc2VzIGZvciB4ZGlnaXQsIG1lbWNtcCwgYW5kIGF0b2ksIHJlc3BlY3RpdmVseS4KCjIwMDItMDUtMTIgIE93ZW4gVGF5bG9yICA8b3RheWxvckByZWRoYXQuY29tPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvb2tVcF9UYWJsZSk6IFByb3RlY3QgYWdhaW5zdCB0YWJsZXMKCXdpdGggYSB6ZXJvIGxlbmd0aCB2YWx1ZS4KCjIwMDItMDUtMTIgIE1pY2hhZWwgUGZlaWZmZXIgIDxtaWNoYWVsLnBmZWlmZmVyQHV0YW5ldC5hdD4KCgkqIGJ1aWxkcy9iZW9zL2Jlb3MubWs6IEluY2x1ZGUgYGxpbmstc3RkLm1rJy4KCjIwMDItMDUtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuaCAoVDFfTG9hZGVyKTogUmVuYW1lZCB0by4uLgoJKFQxX0xvYWRlclJlYyk6IFRoaXMuCgkoVDFfTG9hZGVyKTogTm93IHBvaW50ZXIgdG8gVDFfTG9hZGVyUmVjLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmM6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCwgc3JjL3R5cGUxL3QxbG9hZC5jLAoJc3JjL3R5cGUxL3Qxb2Jqcy5jOgoJcy9UMV9FTkNPRElOR19UWVBFX0VYUE9SVC9UMV9FTkNPRElOR19UWVBFX0VYUEVSVC8uCgoyMDAyLTA1LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBSRUFETUU6IEFkZCBhIG5vdGUgcmVnYXJkaW5nIGxpYnR0ZiB2cy4gbGliZnJlZXR5cGUuCgoyMDAyLTA1LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJRnJlZVR5cGUgMiBjYW4gbm93IGJlIGJ1aWx0IGluIGFuIGV4dGVybmFsIGRpcmVjdG9yeSB3aXRoIHRoZQoJY29uZmlndXJlIHNjcmlwdCBhbHNvLgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChJTkNMVURFUyk6IEFkZCBgT0JKX0RJUicuCgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWsgKGhhdmVfbWspOiBOZXcgdmFyaWFibGUgdG8gdGVzdCBmb3IKCWV4dGVybmFsIGJ1aWxkLgoJKHVuaXgtZGVmLm1rKTogRGVmaW5lZCBhY2NvcmRpbmcgdG8gdmFsdWUgb2YgYGhhdmVfbWsnLgoJKiBidWlsZHMvdW5peC91bml4Lm1rIChoYXZlX21rKTogTmV3IHZhcmlhYmxlIHRvIHRlc3QgZm9yCglleHRlcm5hbCBidWlsZC4KCVNlbGVjdCBpbmNsdWRlIHBhdGhzIGZvciB1bml4LWRlZi5tayBhbmQgdW5peC1jYy5tayBhY2NvcmRpbmcKCXRvIHZhbHVlIG9mIGBoYXZlX21rJy4KCSogYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4gKE9CSl9CVUlMRCk6IE5ldyB2YXJpYWJsZS4KCShESVNUQ0xFQU4pOiBVc2UgaXQuCgkqIGJ1aWxkcy91bml4L3VuaXgtY2MuaW4gKExJQlRPT0wpOiBEZWZpbmUgZGVmYXVsdCB2YWx1ZSBvbmx5CglpZiBub3QgeWV0IGRlZmluZWQuCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwpOiBVc2UgYE9CSl9CVUlMRCcgZm9yIGluc3RhbGxpbmcKCWZyZWV0eXBlLWNvbmZpZy4KCgkqIGNvbmZpZ3VyZTogRG9uJ3QgZGVwZW5kIG9uIGJhc2ggZmVhdHVyZXMuCgkoZnQyX2RpciwgYWJzX2N1cnJfZGlyLCBhYnNfZnQyX2Rpcik6IE5ldyB2YXJpYWJsZXMgKGNvZGUKCXBhcnRpYWxseSB0YWtlbiBmcm9tIEF1dG9jb25mKS4KCUJ1aWxkIGEgZHVtbXkgTWFrZWZpbGUgaWYgbm90IGJ1aWxkaW5nIGluIHNvdXJjZSB0cmVlLgoKCSogZG9jcy9JTlNUQUxMOiBEb2N1bWVudCBpdC4KCjIwMDItMDUtMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGgpOiBGaW5hbGx5IGZpeGluZyB0aGUgbGFzdAoJYnVnIHRoYXQgcHJldmVudGVkIEZyZWVUeXBlIDIueCBhbmQgRnJlZVR5cGUgMS54IHRvIHByb2R1Y2UKCWJpdC1ieS1iaXQgaWRlbnRpY2FsIG1vbm9jaHJvbWUgZ2x5cGggYml0bWFwcyB3aXRoIG5hdGl2ZSBUcnVlVHlwZQoJaGludGluZy4gIFRoZSBjdWxwcml0IHdhcyBhIHNpbmdsZS1iaXQgZmxhZyB0aGF0IHdhc24ndCBzZXQKCWNvcnJlY3RseSBieSB0aGUgVHJ1ZVR5cGUgZ2x5cGggbG9hZGVyLgoKCSogc3JjL290bGF5b3V0L290bGF5b3V0LmgsIHNyYy9vdGxheW91dC9vdGxiYXNlLmMsCglzcmMvb3RsYXlvdXQvb3RsYmFzZS5oLCBzcmMvb3RsYXlvdXQvb3RsY29uZi5oLAoJc3JjL290bGF5b3V0L290bGdkZWYuYywgc3JjL290bGF5b3V0L290bGdkZWYuaCwKCXNyYy9vdGxheW91dC9vdGxncG9zLmMsIHNyYy9vdGxheW91dC9vdGxncG9zLmgsCglzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jLCBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5oLAoJc3JjL290bGF5b3V0L290bGpzdGYuYywgc3JjL290bGF5b3V0L290bGpzdGYuaCwKCXNyYy9vdGxheW91dC9vdGx0YWJsZS5jLCBzcmMvb3RsYXlvdXQvb3RsdGFibGUuaCwKCXNyYy9vdGxheW91dC9vdGx0YWdzLmg6IE5ldyBPcGVuVHlwZSBMYXlvdXQgc291cmNlIGZpbGVzLiAgVGhlCgltb2R1bGUgaXMgc3RpbGwgaW5jb21wbGV0ZS4KCjIwMDItMDUtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9pbmRleCk6IEZpeCBzZXJpb3VzIHR5cG8KCSgweEZGRlUgLT4gMHhGRkZGVSkuCgoyMDAyLTA1LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0lOU1RBTEw6IEZpeCBVUkwgb2YgbWFrZXBwLgoKMjAwMi0wNS0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X2ZhY2VfZ2V0X25hbWUpOiBGaXhpbmcgYSBidWcgdGhhdCBjYXVzZWQKCUZyZWVUeXBlIHRvIGNyYXNoIHdoZW4gY2VydGFpbiBicm9rZW4gZm9udHMgKGUuZy4gYGh5YTZnYi50dGYnKQoJd2VyZSBvcGVuZWQuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcyk6IEFwcGxpZWQgYSBzbWFsbCB3b3JrLWFyb3VuZCB0bwoJbWFuYWdlIGZvbnRzIGNvbnRhaW5pbmcgYSBicm9rZW4gbmFtZSB0YWJsZSAoZS5nLiBgaHlhNmdiLnR0ZicpLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF92YWxpZGF0ZSk6IEZpeGVkIG92ZXItcmVzdHJpY3RpdmUKCXZhbGlkYXRpb24gdGVzdC4gIFRoZSBjaGFybWFwIHZhbGlkYXRvciBub3cgYWNjZXB0cyBvdmVybGFwcGluZwoJcmFuZ2VzIGluIGZvcm1hdCA0IGNoYXJtYXBzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX2luZGV4KTogU3dpdGNoZWQgdG8gYSBiaW5hcnkKCXNlYXJjaCBhbGdvcml0aG0uICBDZXJ0YWluIGZvbnRzIGNvbnRhaW4gbW9yZSB0aGFuIDE3MCBkaXN0aW5jdAoJc2VnbWVudHMhCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oOiBBZGRpbmcgYW4gYWxpYXMgZm9yIHRoZSBgZXhpdCcKCWZ1bmN0aW9uLiAgVGhpcyB3aWxsIGJlIHVzZWQgaW4gdGhlIG5lYXIgZnV0dXJlIHRvIHBhbmljIGluIGNhc2Ugb2YKCXVuZXhwZWN0ZWQgZXhjZXB0aW9uICh3aGljaCBzaG91bGRuJ3QgaGFwcGVuIGluIHRoZW9yeSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0aGFzaC5oLCBzcmMvYmFzZS9mdGhhc2guYzogTmV3IGZpbGVzLgoJVGhpcyBpcyBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIGR5bmFtaWMgaGFzaCB0YWJsZXMgdXNpbmcgYSBsaW5lYXIKCWFsZ29yaXRobSAodG8gZ2V0IHJpZCBvZiBgc3RhbGxzJyBkdXJpbmcgcmVzaXplcykuICBJbiB0aGUgZnV0dXJlCgl0aGlzIHdpbGwgYmUgdXNlZCBpbiBhdCBsZWFzdCB0aHJlZSBwYXJ0cyBvZiB0aGUgbGlicmFyeTogdGhlIGNhY2hlCglzdWItc3lzdGVtLCB0aGUgb2JqZWN0IHN1Yi1zeXN0ZW0sIGFuZCB0aGUgbWVtb3J5IGRlYnVnZ2VyLgoKCSogc3JjL2Jhc2UvSmFtZmlsZTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfSEFTSF9ILAoJRlRfSU5URVJOQUxfT0JKRUNUX0gpOiBOZXcgbWFjcm9zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNvcmUuaDogTmV3IGZpbGUgdG8gZ3JvdXAgYWxsIG5ldwoJZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBleGNlcHRpb24gaGFuZGxpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50LiAgSXQKCWlzIHZlcnkgbGlrZWx5IHRoYXQgdGhpcyBmaWxlIHdpbGwgZGlzYXBwZWFyIG9yIGJlIHJlbmFtZWQgaW4gdGhlCglmdXR1cmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2JqZWN0LmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRzeXNtZW0uaDoKCUFkZGluZyBjb21tZW50cyB0byBiZXR0ZXIgZXhwbGFpbiB0aGUgb2JqZWN0IHN1Yi1zeXN0ZW0gYXMgd2VsbCBhcwoJdGhlIG5ldyBtZW1vcnkgbWFuYWdlciBpbnRlcmZhY2UuCgoyMDAyLTA0LTMwICBXZW5saW4gSW5zdGl0dXRlIChUb20gQmlzaG9wKSAgPHdlbmxpbkB3ZW5saW4uY29tPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAocDJjX3N0cik6IFJlbW92ZWQuCgkoZmlsZV9zcGVjX2Zyb21fcGF0aCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06IEFkZGVkIHN1cHBvcnQgZm9yCglPUyBYLgoJKGlzX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogRGVmaW5lIG9ubHkgZm9yIE9TIFguCglIYW5kbGUgYG5hbWVMZW4nIDw9IDYgYWxzby4KCShwYXJzZV9mb25kKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbmFtZV90YWJsZScuCglVc2UgZnVuY3Rpb25hbGl0eSBvZiBvbGQgcDJjX3N0ciBkaXJlY3RseS4KCUFkZCBzYWZldHkgY2hlY2tzLgoJKHJlYWRfbHdmbik6IEluaXRpYWxpemUgYHNpemVfcCcuCglDaGVjayBmb3Igc2l6ZV9wID09IE5VTEwuCgkobmV3X21lbW9yeV9zdHJlYW0sIG9wZW5fZmFjZV9mcm9tX2J1ZmZlcik6IFVwZGF0ZWQgdG8gRnJlZVR5cGUgMi4xLgoJKEZUX05ld19GYWNlX0Zyb21fTFdGTik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG1lbW9yeScuCglSZW1vdmUgc29tZSBkZWFkIGNvZGUuCgkoRlRfTmV3X0ZhY2VfRnJvbV9TRk5UKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgc3RyZWFtJy4KCShGVF9OZXdfRmFjZV9Gcm9tX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogRGVmaW5lIG9ubHkgZm9yCglPUyBYLgoJKEZUX05ld19GYWNlX0Zyb21fRk9ORCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGVycm9yJy4KCShSZXNvdXJjZUZvcmtTaXplKTogTmV3IGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlKTogVXNlIGl0LgoJSGFuZGxlIGVtcHR5IHJlc291cmNlIGZvcmtzLgoJQ29uZGl0aW9uYWxpemUgc29tZSBjb2RlIGZvciBPUyBYLgoJQWRkIGNvZGUgdG8gY2FsbCBub3JtYWwgbG9hZGVyIGFzIGEgZmFsbGJhY2suCgoyMDAyLTA0LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJYGludGVyZmFjZScgaXMgcmVzZXJ2ZWQgb24gdGhlIE1hYy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCwKCXNyYy9iYXNlL2Z0b3V0bG4uYzogcy9pbnRlcmZhY2UvZnVuY19pbnRlcmZhY2UvLgoJKiBzcmMvYmFzZS9mdGJib3guYyAoRlRfT3V0bGluZV9HZXRfQkJveCk6CglzL2ludGVyZmFjZS9iYm94X2ludGVyZmFjZS8uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogcy9pbnRlcmZhY2UvbW9kdWxlX2ludGVyZmFjZS8uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZmxvYWQuaDoKCXMvaW50ZXJmYWNlL3BzbmFtZXNfaW50ZXJmYWNlLy4KCSogc3JjL2NpZC9jaWRyaXZlci5jOiBzL2ludGVyZmFjZS9jaWRfaW50ZXJmYWNlLy4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogcy9pbnRlcmZhY2UvbW9kdWxlX2ludGVyZmFjZS8uCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBzL2ludGVyZmFjZS9mdW5jX2ludGVyZmFjZS8uCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jOiBzL2ludGVyZmFjZS90dF9pbnRlcmZhY2UvLgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYzogcy9pbnRlcmZhY2UvdDFfaW50ZXJmYWNlLy4KCglTb21lIG1vcmUgdmFyaWFibGUgcmVuYW1lcyB0byBhdm9pZCB0cm91YmxlcyBvbiB0aGUgTWFjLgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOgoJcy9Vbmtub3dufEFzY2VuZGluZ3xEZXNjZW5kaW5nfEZsYXQvXDFfU3RhdGUvLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogcy9UU2Nhbi9UQ29vcmQvLgoKCU90aGVyIGNoYW5nZXMgZm9yIHRoZSBNYWMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBEZWZpbmUgRlRfTUFDSU5UT1NIIGZvcgoJTWFjIHBsYXRmb3Jtcy4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IHMvbWFjaW50b3NoL0ZUX01BQ0lOVE9TSC8uCgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBNYWtlIGBwaXRjaCcgYWx3YXlzCglhbiBldmVuIG51bWJlci4KCjIwMDItMDQtMjkgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGRlc2NyaXAubW1zIChhbGwpOiBBZGQgcGZyIGRyaXZlci4KCjIwMDItMDQtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wZnIvcGZyZXJyb3IuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaDogQWRkIFBGUiBlcnJvciBjb2Rlcy4KCSogc3JjL3Bmci9wZnJnbG9hZC5jOiBJbmNsdWRlIHBmcmVycm9yLmguCglVc2UgUENGIGVycm9yIGNvZGVzLgoJKHBmcl9leHRyYV9pdGVtX2xvYWRfc3RlbV9zbmFwcyk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoJKiBzcmMvcGZyL3Bmcmdsb2FkLmM6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCVVzZSBQQ0YgZXJyb3IgY29kZXMuCgkocGZyX2V4dHJhX2l0ZW1fbG9hZF9iaXRtYXBfaW5mbywgcGZyX2dseXBoX2xvYWRfc2ltcGxlLAoJcGZyX2dseXBoX2xvYWRfY29tcG91bmQpOiBGaXggZGVidWcgbWVzc2FnZS4KCSogc3JjL3Bmci9wZnJvYmpzLmM6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCVVzZSBQQ0YgZXJyb3IgY29kZXMuCgkocGZyX2ZhY2VfaW5pdCk6IFJldHVybiBQRlJfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQuCgkqIHNyYy9wZnIvcnVsZXMubWsgKFBGUl9EUlZfSCk6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9GYWNlX0luaXQpIFshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOgoJYHJvb3QnIC0+IGBmYWNlLT5yb290Jy4KCSogc3JjL3NmbnQvdHRjbWFwMC5jIChUVF9CdWlsZF9DTWFwcykgWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106CglSZW1vdmVkLgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IERlY2xhcmUgVFRfQnVpbGRfQ01hcHMgb25seSBmb3IKCUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTLgoKMjAwMi0wNC0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19jYWNoZV9sb29rdXApLAoJc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfZmFtaWx5X2luaXQpLAoJc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MpLAoJc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKEZUQ19TQml0X0NhY2hlX0xvb2t1cCk6IFVzZSBGVENfRXJyXyouCglzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoRlRDX0ltYWdlX0NhY2hlX0xvb2t1cCk6IFVzZSBGVENfRXJyXyouCgkoRlRDX0ltYWdlQ2FjaGVfTG9va3VwKTogRml4IGhhbmRsaW5nIG9mIGludmFsaWQgYXJndW1lbnRzLgoKMjAwMi0wNC0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBTZXQgYHZlcnNpb25faW5mbycgdG8gOToxOjMgKEZUMgoJdmVyc2lvbiAyLjAuOSBoYXMgOTowOjMpLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkICh1c2luZyBhdXRvY29uZiAyLjUzKS4KCjIwMDItMDQtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfZXh0cmFfaXRlbXNfZmFyc2UpOiBGaXggZGVidWcgbWVzc2FnZS4KCShwZnJfcGh5X2ZvbnRfbG9hZCk6IHMvc2l6ZS9TaXplLyBmb3IgbG9jYWwgdmFyaWFibGUgdG8gYXZvaWQKCWNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogRml4IGRlYnVnIG1lc3NhZ2UuCgkocGZyX3Nsb3RfbG9hZCk6IFJlbW92ZSByZWR1bmRhbnQgbG9jYWwgdmFyaWFibGUuCgoyMDAyLTA0LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkaW5nIGEgUEZSIGZvbnQgZHJpdmVyIHRvIHRoZSBGcmVlVHlwZSBzb3VyY2VzLiAgTm90ZSB0aGF0IGl0Cglkb2Vzbid0IHN1cHBvcnQgZW1iZWRkZWQgYml0bWFwcyBvciBrZXJuaW5nIHRhYmxlcyB5ZXQuCgoJc3JjL3Bmci8qOiBOZXcgZmlsZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmgsIHNyYy9KYW1lZmlsZTogVXBkYXRlZC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmggKFQxX0xvYWRfR2x5cGgpLCBzcmMvdHlwZTEvdDFnbG9hZC5jCgkoVDFfTG9hZF9HbHlwaCk6IEZpeGVkIGluY29ycmVjdCBwYXJhbWV0ZXIgc2lnbi1uZXNzIGluIGNhbGxiYWNrCglmdW5jdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCAoRlRfTUVNX1pFUk8sIEZUX1pFUk8pOiBOZXcKCW1hY3Jvcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoRlRfTkVYVF9PRkYzLCBGVF9ORVhUX1VPRkYzLAoJRlRfTkVYVF9PRkYzX0xFLCBGVF9ORVhUX1VPRkYzX0xFKTogTmV3IG1hY3JvcyB0byBwYXJzZSBpbi1tZW1vcnkKCTI0LWJpdCBpbnRlZ2Vycy4KCjIwMDItMDQtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jLAoJYnVpbGRzL2FtaWdhL3NyYy9iYXNlL2Z0ZGVidWcuYzogVmVyc2lvbiAyLjEuMCBjb3VsZG4ndCBiZSBsaW5rZWQKCWFnYWluc3QgYXBwbGljYXRpb25zIGluIFdpbjMyIGFuZCBBbWlnYSBidWlsZHMgZHVlIHRvIGNoYW5nZXMgdG8KCWBzcmMvYmFzZS9mdGRlYnVnLmMnIHRoYXQgd2VyZSBub3QgcHJvcGVybHkgcHJvcGFnYXRlZCB0bwoJYGJ1aWxkcy93aW4zMicgYW5kIGBidWlsZHMvYW1pZ2EnLiAgVGhpcyBoYXMgYmVlbiBmaXhlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmplY3QuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRleGNlcHQuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHN5c21lbS5oLAoJaW5jbHVkZS9mcmVldHlwZS9mdHN5c2lvLmgsIHNyYy9iYXNlL2Z0c3lzbWVtLmMsIHNyYy9iYXNlL2Z0c3lzaW8uYzoKCU5ldyBleHBlcmltZW50YWwgZmlsZXMuCgoyMDAyLTA0LTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTA0LTE3ICBNaWNoYWVsIEphbnNzb24gIDxtamFuQGVtMi1zb2x1dGlvbnMuY29tPgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfQ29tcHV0ZV9NYXhfQWR2YW5jZSk6IEZpeGVkIGEgc21hbGwgYnVnCgl0aGF0IHByZXZlbnRlZCB0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlLgoKMjAwMi0wNC0xNiAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmcmVhZCAocGNmX2dldF9hY2NlbGwpOiBGaXggcGFyc2luZyBvZiBhY2NlbGVyYXRvcgoJdGFibGVzLgoKMjAwMi0wNC0xNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9GVEwudHh0OiBGb3JtYXR0aW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogUmVkdWNlIHRoZSBzaXplIG9mIHRoZQoJcmVuZGVyIHBvb2wgZnJvbSAzMmtCeXRlIHRvIDE2a0J5dGUuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IFJlbW92ZSBjb21waWxlcgoJd2FybmluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX01BWF9FWFRFTlNJT05TKTogUmVtb3ZlZC4KCgkqIGRvY3MvQ0hBTkdFUzogUHJlcGFyaW5nIDIuMS4wIHJlbGVhc2UuCgoyMDAyLTA0LTEzICBXZXJuZXIgTEVNQkVSRyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IHMvcmFuZC9SYW5kLyB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDQtMTIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRS5VTlg6IFVwZGF0ZWQgdGhlIFVuaXgtc3BlY2lmaWMgcXVpY2stY29tcGlsYXRpb24gZ3VpZGUgdG8KCXdhcm4gYWJvdXQgdGhlIEdOVSBNYWtlIHJlcXVpcmVtZW50IGF0IGNvbXBpbGUgdGltZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oLAoJaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCgoJc3JjL2F1dG9oaW50L2Fob3B0aW0uYywKCglzcmMvYmFzZS9mdGRiZ21lbS5jLCBzcmMvYmFzZS9mdGRlYnVnLmMsIHNyYy9iYXNlL2Z0bWFjLmMsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRzeXN0ZW0uYywKCglzcmMvY2FjaGUvZnRjaW1hZ2UuYywgc3JjL2NhY2hlL2Z0Y3NiaXRzLmMsCgoJc3JjL2NmZi9jZmZkcml2ZXIuYywgc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLAoKCXNyYy9jaWQvY2lkbG9hZC5jLCBzcmMvY2lkL2NpZHBhcnNlLmMsIHNyYy9jaWQvY2lkcml2ZXIuYywKCglzcmMvcGNmL3BjZmRyaXZlci5jLCBzcmMvcGNmL3BjZnJlYWQuYywKCglzcmMvcHNhdXgvdDFjbWFwLmMsIHNyYy9wc2F1eC90MWRlY29kZS5jLAoKCXNyYy9wc2hpbnRlci9wc2hhbGdvMS5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywKCXNyYy9wc2hpbnRlci9wc2hyZWMuYywKCglzcmMvcHNuYW1lcy9wc21vZHVsZS5jLAoKCXNyYy9yYXN0ZXIvZnRyYXN0ZXIuYywKCglzcmMvc2ZudC9zZmRyaXZlci5jLCBzcmMvc2ZudC90dGxvYWQuYywKCglzcmMvc21vb3RoL2Z0Z3JheXMuYywKCglzcmMvdHlwZTEvdDFhZm0uYywgc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MWdsb2FkLmMsCglzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywgc3JjL3R5cGUxL3QxcGFyc2UuYywKCglidWlsZHMvdW5peC9mdGNvbmZpZy5pbiwgYnVpbGRzL3Ztcy9mdGNvbmZpZy5oLAoKCWJ1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdGRlYnVnLmM6CgoJQWRkZWQgdGhlIG5ldyBjb25maWd1cmF0aW9uIGZpbGUgYGZ0c3RkbGliLmgnIHVzZWQgdG8gZGVmaW5lCglhbGlhc2VzIGZvciBhbGwgSVNPIEMgbGlicmFyeSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgZW5naW5lCgkoZS5nLiBzdHJsZW4sIHFzb3J0LCBzZXRqbXAsIGV0Yy4pLgoKCVRoaXMgZWFzZXMgdGhlIHBvcnRpbmcgb2YgRnJlZVR5cGUgMiB0byBlbnZpcm9ubWVudHMgbGlrZQoJWEZyZWU4NiBtb2R1bGVzL2V4dGVuc2lvbnMuCgoJQWxzbyByZW1vdmVkIG1hbnkgI2luY2x1ZGUgPHN0cmluZy5oPiwgI2luY2x1ZGUgPHN0ZGxpYi5oPiwgZXRjLgoJZnJvbSB0aGUgZW5naW5lJ3Mgc291cmNlcyB3aGVyZSB0aGV5IGFyZSBub3QgbmVlZGVkLgoKCSogc3JjL3NmbnQvdHRwb3N0LmM6IFVzZSBtYWNybyBuYW1lIGZvciBwc25hbWVzLmguCgoyMDAyLTA0LTEyICBWaW5jZW50IENhcm9uICA8di5jYXJvbkB6ZXJvZGV1eC5uZXQ+CgoJKiBjb25maWd1cmUsIGJ1aWxkcy9kZXRlY3QubWs6IFVwZGF0ZWQgdGhlIGJ1aWxkIHN5c3RlbSB0byBwcmludAoJYSB3YXJuaW5nIG1lc3NhZ2UgaW4gY2FzZSBHTlUgTWFrZSBpc24ndCB1c2VkIHRvIGJ1aWxkIHRoZSBsaWJyYXJ5LgoKMjAwMi0wNC0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVMsIEphbWZpbGUuaW46IFVwZGF0ZXMgZm9yIHRoZSAyLjEuMCByZWxlYXNlLgoKCSogZG9jcy9GVEwudHh0OiBVcGRhdGVkIGxpY2Vuc2UgdGV4dCB0byBwcm92aWRlIGEgcHJlZmVycmVkCglkaXNjbGFpbWVyIGFuZCBhZGp1c3QgY29weXJpZ2h0IGRhdGVzL2V4dGVudHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmg6IFJlbW92aW5nIG9ic29sZXRlIChhbmQKCWNvbmZ1c2luZykgY29tbWVudC4KCgkqIEphbWZpbGUuaW46IE5ldyBmaWxlLgoKMjAwMi0wNC0xMSAgTWF4aW0gU2hlbWFuYXJldiAgPG1jc2VlbWFnZ0B5YWhvby5jb20+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9obGluZSk6IE1pbm9yIG9wdGltaXphdGlvbi4KCjIwMDItMDQtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglGaXhlcyBmcm9tIHRoZSBzdGFibGUgYnJhbmNoOgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MpOgoJUmVtb3ZlZC4KCVtGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDU106IFJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgsIHNyYy9iYXNlL2Z0Y2FsYy5jCglbRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1NdOiBSZW1vdmVkLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfVmVjdG9yX0xlbmd0aCk6IENoYW5nZSBhbGdvcml0aG0gdG8gbWF0Y2gKCW91dHB1dCBvZiBGcmVlVHlwZSAxLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfc2NhbGVfd2lkdGhzKTogRml4ZWQgYSBzbWFsbAoJYnVnIHRoYXQgY3JlYXRlZCB1bi1ldmVuIHN0ZW0gd2lkdGhzIHdoZW4gaGludGluZyBQb3N0c2NyaXB0IGZvbnRzLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MXBhcnNlLmM6IDE2Yml0IGZpeGVzLgoKMjAwMi0wNC0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYzogMTZiaXQgZml4ZXMuCgkoVFRfTG9hZF9TaW1wbGVfR2x5cGgpOiBJbXByb3ZlIGRlYnVnIG1lc3NhZ2VzLgoJKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogMTZiaXQgZml4ZXMuCgkqIHNyYy90cnVldHlwZS90dG9ianMuYzogRGl0dG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c25hbWVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oLAoJc3JjL2NmZi9jZmZsb2FkLmgsIHNyYy9wc2F1eC9wc29ianMuaCwgc3JjL3RydWV0eXBlL3R0aW50ZXJwLltjaF0sCglzcmMvc2ZudC90dHBvc3QuaDogcy9pbmRleC9pZHgvLgoKMjAwMi0wMy0zMSAgWWFvIFpoYW5nICA8eWFvekB2aWRhci5uaWFhYS5uaWguZ292PgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9TaXplX0luaXQpOiBGaXggdHlwby4KCjIwMDItMDMtMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9vdGxheW91dC9vdGxjb21tbi5jLCBzcmMvb3RsYXlvdXQvb3RsY29tbW4uaDogcy9pbmRleC9pZHgvLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmM6IERpdHRvLgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IERpdHRvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCAoVFRfR290b19UYWJsZV9GdW5jKTogUmVuYW1lZCB0byAuLi4KCShUVF9Mb2FkZXJfR290b1RhYmxlRnVuYyk6IFRoaXMuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogRml4IGRlYnVnCgltZXNzYWdlcy4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNuYW1lc19pbnRlcmZhY2UpCglbIUZUX0NPTkZJR19PUFRJT05fQURPQkVfR0xZUEhfTElTVF06IEZpeCB0eXBvLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF90YWJsZSk6IDE2Yml0IGZpeC4KCSogc3JjL3NmbnQvdHRjbWFwLmM6IDE2Yml0IGZpeGVzICgweEZGRkYgLT4gMHhGRkZGVSkuCgkqIHNyYy9zZm50L3R0Y21hcDAuYzogMTZiaXQgZml4ZXMuCgkoVFRfQnVpbGRfQ01hcHMpOiBTaW1wbGlmeSBkZWJ1ZyBtZXNzYWdlcy4KCSh0dF9jbWFwMTJfY2hhcl9uZXh0KTogRml4IG9mZnNldC4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMsIFRUX0xvYWRfQ01hcCk6IEZpeCBkZWJ1ZwoJbWVzc2FnZXMuCgkoVFRfTG9hZF9PUzIpOiAxNmJpdCBmaXguCgoyMDAyLTAzLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaDogQWRkaW5nIGNvbW1lbnRzIHRvIHNvbWUgb2YKCXRoZSBUVF9GYWNlUmVjIGZpZWxkcy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAoVFRfQnVpbGRfQ01hcHMpOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X25hbWVfZW50cnlfYXNjaWlfZnJvbV97dXRmMTYsdWNzNCxvdGhlcn06CglOZXcgZnVuY3Rpb25zLgoJKHR0X2ZhY2VfZ2V0X25hbWUpOiBVc2UgdGhlbSB0byBwcm9wZXJseSBleHRyYWN0IGFuIGFzY2lpIGZvbnQgbmFtZS4KCjIwMDItMDMtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCAodDFfYmxlbmRfbWF4KTogRml4IHR5cG8uCgkqIHNyYy9iYXNlL2Z0c3RyZWFtLmM6IFNpbXBsaWZ5IEZUX0VSUk9SIGNhbGxzLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfZ2x5cGhfbmFtZSk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Ecml2ZXJfSW5pdCwgQ0ZGX0RyaXZlcl9Eb25lKQoJW1RUX0NPTkZJR19PUFRJT05fRVhURU5EX0VOR0lORV06IFJlbW92ZWQuCgkqIHNyYy9jZmYvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKQoJW1RUX0NPTkZJR19PUFRJT05fRVhURU5EX0VOR0lORV06IERpdHRvLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0luaXRfRHJpdmVyLCBUVF9Eb25lX0RyaXZlcikKCVtUVF9DT05GSUdfT1BUSU9OX0VYVEVORF9FTkdJTkVdOiBEaXR0by4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMsCglzcmMvdHJ1ZXR5cGUvdHRvYmpzLmg6IFJlbmFtaW5nIGRyaXZlciBmdW5jdGlvbnMgdG8gdGhlCglGVF88U3ViamVjdD5fPEFjdGlvbj4gc2NoZW1lOgoKCSAgVFRfSW5pdF9Ecml2ZXIgPT4gVFRfRHJpdmVyX0luaXQKCSAgVFRfRG9uZV9Ecml2ZXIgPT4gVFRfRHJpdmVyX0RvbmUKCSAgVFRfSW5pdF9GYWNlICAgPT4gVFRfRmFjZV9Jbml0CgkgIFRUX0RvbmVfRmFjZSAgID0+IFRUX0ZhY2VfRG9uZQoJICBUVF9Jbml0X1NpemUgICA9PiBUVF9TaXplX0luaXQKCSAgVFRfRG9uZV9TaXplICAgPT4gVFRfU2l6ZV9Eb25lCgkgIFRUX1Jlc2V0X1NpemUgID0+IFRUX1NpemVfUmVzZXQKCjIwMDItMDMtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy92bXMvZnRjb25maWcuaDogUmVuYW1lIExPQ0FMX0RFRiBhbmQgTE9DQUxfRlVOQyB0bwoJRlRfTE9DQUwgYW5kIEZUX0xPQ0FMX0RFRiwgcmVzcGVjdGl2ZWx5LCBhcyB3aXRoIG90aGVyIGZ0Y29uZmlnLmgKCWZpbGVzLgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogQWRkIGFyZ3VtZW50IHRvIEZUX0xPQ0FMIGFuZAoJRlRfTE9DQUxfREVGLgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogcy9GVF9Bc3NlcnQvRlRfQVNTRVJULy4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBUZW1wb3JhcmlseSBkZWFjdGl2YXRlIGNyZWF0aW9uIG9mCgkuLi8uLi9KYW1maWxlLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgoyMDAyLTAzLTI4ICBLVVNBTk8gVGFrYXl1a2kgIDxBRTVULUtTTkBhc2FoaS1uZXQub3IuanA+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBGaXggc2VyaW91cyB0eXBvcy4KCjIwMDItMDMtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNBdXhfU2VydmljZVJlYyk6IEZpeAoJY29tcGlsZXIgd2FybmluZ3MuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChUMV9GYWNlUmVjKTogVXNlIGBjb25zdCcgZm9yCglzb21lIG1lbWJlcnMuCgkqIHNyYy9iYXNlL2Z0YXBpLmMgKEZUX05ld19NZW1vcnlfU3RyZWFtKTogRml4IHR5cG9zLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmMgKHQxX2NtYXBfc3RkX2luaXQsIHQxX2NtYXBfdW5pY29kZV9pbml0KTogQWRkCgljYXN0LgoJKHQxX2NtYXBfe3N0YW5kYXJkLGV4cGVydCxjdXN0b20sdW5pY29kZX1fY2xhc3NfcmVjKTogVXNlCglgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGJy4KCSogc3JjL3BzYXV4L3QxY21hcC5oOiBVcGRhdGVkLgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKFRUX0J1aWxkX0NNYXBzKTogVXNlIGBmdF9lbmNvZGluZ19ub25lJwoJaW5zdGVhZCBvZiB6ZXJvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IFVzZSBjYXN0cy4KCjIwMDItMDMtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmM6CglGaXhlZCBhIHNtYWxsIGJ1ZyBpbiB0aGUgRlRfQ01hcHMgc3VwcG9ydCBjb2RlLgoKMjAwMi0wMy0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKE5vcm0pOiBSZXBsYWNlZCB3aXRoLi4uCgkoVFRfVmVjTGVuKTogVGhpcy4KCShUVF9NdWxGaXgxNCwgVFRfRG90Rml4MTQpOiBOZXcgZnVuY3Rpb25zLgoJKFByb2plY3QsIER1YWxfUHJvamVjdCwgRnJlZV9Qcm9qZWN0LCBDb21wdXRlX1BvaW50X0Rpc3BsYWNlbWVudCwKCUluc19TSFBJWCwgSW5zX01JQVAsIEluc19NSVJQKTogVXNlIHRoZW0uCglbRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1NdOiBSZW1vdmVkIGFsbCBjb2RlLgoKMjAwMi0wMy0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jOgoJVmFyaW91cyBmaXhlcyB0byBtYWtlIHRoZSBGVF9DTWFwcyBzdXBwb3J0IHdvcmsgY29ycmVjdGx5IChtb3JlCgl0ZXN0cyBhcmUgc3RpbGwgbmVlZGVkKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9zZm50L0phbWZpbGUsCglzcmMvc2ZudC9ydWxlcy5taywgc3JjL3NmbnQvc2ZudC5jLCBzcmMvc2ZudC9zZm9ianMuYywKCXNyYy9zZm50L3R0bG9hZC5jLCBzcmMvc2ZudC90dGNtYXAwLmMsIHNyYy9zZm50L3R0Y21hcDAuaDogVXBkYXRlZAoJdGhlIFNGTlQgY2hhcm1hcCBzdXBwb3J0IHRvIHVzZSBGVF9DTWFwcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJkZWYuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaDogSW5jbHVkZSBpdC4gIEl0IGNvbnRhaW5zIGFsbCBlcnJvcgoJY29kZXMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0VSUk9SX0RFRklOSVRJT05TX0gpOiBOZXcKCW1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oLCBhbmQgYSBsb3Qgb2Ygb3RoZXIgZmlsZXM6CglDaGFuZ2VkIHRoZSBuYW1lcyBvZiBtZW1vcnkgbWFjcm9zLiAgRXhhbXBsZXM6CgoJICBNRU1fU2V0ICAgPT4gRlRfTUVNX1NFVAoJICBNRU1fQ29weSAgPT4gRlRfTUVNX0NPUFkKCSAgTUVNX01vdmUgID0+IEZUX01FTV9NT1ZFCgoJICBBTExPQyAgICAgPT4gRlRfQUxMT0MKCSAgRlJFRSAgICAgID0+IEZUX0ZSRUUKCSAgUkVBTExPQyAgID0gPkZUX1JFQUxMT0MKCglGVF9ORVcgd2FzIGludHJvZHVjZWQgdG8gYWxsb2NhdGUgYSBuZXcgb2JqZWN0IGZyb20gYSBfdHlwZWRfCglwb2ludGVyLgoKCU5vdGUgdGhhdCBBTExPQ19BUlJBWSBhbmQgUkVBTExPQ19BUlJBWSBoYXZlIGJlZW4gcmVwbGFjZWQgYnkKCUZUX05FV19BUlJBWSBhbmQgRlRfUkVORVdfQVJSQVkgd2hpY2ggdGFrZSBfdHlwZWRfIHBvaW50ZXIKCWFyZ3VtZW50cy4KCglUaGlzIHJlc3VsdHMgaW4gX2xvdHNfIG9mIHNvdXJjZXMgYmVpbmcgY2hhbmdlZCwgYnV0IG1ha2VzIHRoZSBjb2RlCgltb3JlIGdlbmVyaWMgYW5kIGxlc3MgZXJyb3ItcHJvbmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgsIHNyYy9iYXNlL2Z0c3RyZWFtLmMsCglzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL3BjZi9wY2ZyZWFkLmMsIHNyYy9zZm50L3R0Y21hcC5jLAoJc3JjL3NmbnQvdHRjbWFwMC5jLCBzcmMvc2ZudC90dGxvYWQuYywgc3JjL3NmbnQvdHRwb3N0LmMsCglzcmMvc2ZudC90dHNiaXQuYywgc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0cGxvYWQuYywKCXNyYy93aW5mb250cy93aW5mbnQuYzogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbnMgb2Ygc3RyZWFtIG1hY3Jvcy4KCUV4YW1wbGVzOgoKCSAgTkVYVF9CeXRlICAgICA9PiBGVF9ORVhUX0JZVEUKCSAgTkVYVF9TaG9ydCAgICA9PiBGVF9ORVhUX1NIT1JUCgkgIE5FWFRfVVNob3J0TEUgPT4gRlRfTkVYVF9VU0hPUlRfTEUKCSAgUkVBRF9TaG9ydCAgICA9PiBGVF9SRUFEX1NIT1JUCgkgIEdFVF9Mb25nICAgICAgPT4gRlRfR0VUX0xPTkcKCSAgZXRjLgoKCUFsc28gaW50cm9kdWNlZCB0aGUgRlRfUEVFS19YWFhYIGZ1bmN0aW9ucy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfQnVpbGRfVW5pY29kZV9DaGFybWFwKTogUmVtb3ZlZCBjb21tZW50ZWQKCW91dCBmdW5jdGlvbi4KCShmaW5kX2VuY29kaW5nKTogUmVtb3ZlZC4KCShDRkZfRmFjZV9Jbml0KTogUmVtb3ZlIGNoYXJtYXAgc3VwcG9ydC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTLAoJVFRfQ09ORklHX0NNQVBfRk9STUFUezAsMiw0LDYsOCwxMCwxMn0pOiBOZXcgbWFjcm9zIHRvIGZpbmUtdHVuZQoJc3VwcG9ydCBvZiBjbWFwcy4KCjIwMDItMDMtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvcGNmL3BjZmRyaXZlci5jLCBzcmMvcGNmL3BjZnJlYWQuYzogVXBkYXRlZAoJdG8gbmV3IEZUX0NNYXAgZGVmaW5pdGlvbnMuCgoJKiBzcmMvcHNhdXgvdDFjbWFwLmgsIHNyYy9wc2F1eC90MWNtYXAuYywgc3JjL3R5cGUxL3QxY21hcC5oLAoJc3JjL3R5cGUxL3QxY21hcC5jOiBVcGRhdGluZyBhbmQgbW92aW5nIHRoZSBUeXBlIDEgRlRfQ01hcCBzdXBwb3J0Cglmcm9tIGBzcmMvdHlwZTEnIHRvIGBzcmMvcHNhdXgnIHNpbmNlIGl0IGlzIGdvaW5nIHRvIGJlIHNoYXJlZCBieQoJdGhlIFR5cGUgMSBhbmQgQ0lEIGZvbnQgZHJpdmVycy4KCgkqIHNyYy9wc2F1eC9KYW1maWxlLCBzcmMvcHNhdXgvcHNhdXguYywgc3JjL3BzYXV4L3BzYXV4bW9kLmMsCglzcmMvcHNhdXgvcnVsZXMubWssIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaDogQWRkZWQgc3VwcG9ydAoJZm9yIFR5cGUgMSBGVF9DTWFwcy4KCjIwMDItMDMtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2xvYWRyLmMgKEZUX0dseXBoTG9hZGVyX0NoZWNrU3ViR2x5cGhzKTogRml4ZWQgYQoJbWVtb3J5IGFsbG9jYXRpb24gYnVnIHRoYXQgd2FzIGR1ZSB0byB1bi1jYXJlZnVsIHJlbmFtaW5nIG9mIHRoZQoJRlRfU3ViR2x5cGggdHlwZS4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGZ0X21lbV90YWJsZV9kZXN0cm95KTogRml4ZWQgYSBzbWFsbCBidWcgdGhhdAoJY2F1c2VkIHRoZSBsaWJyYXJ5IHRvIGNyYXNoIHdpdGggRWxlY3RyaWMgRmVuY2Ugd2hlbiBtZW1vcnkKCWRlYnVnZ2luZyBpcyB1c2VkLgoKCSogUmVuYW1pbmcgc3RyZWFtIG1hY3Jvcy4gIEV4YW1wbGVzOgoKCSAgRklMRV9Ta2lwICAgID0+IEZUX1NUUkVBTV9TS0lQCgkgIEZJTEVfUmVhZCAgICA9PiBGVF9TVFJFQU1fUkVBRAoJICBBQ0NFU1NfRnJhbWUgPT4gRlRfRlJBTUVfRU5URVIKCSAgRk9SR0VUX0ZyYW1lID0+IEZUX0ZSQU1FX0VYSVQKCSAgZXRjLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRml4ZWQgbWVtb3J5IGxlYWsuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBDaGFuZ2luZyB0aGUgZGVmaW5pdGlvbiBvZgoJRlRfQ01hcF9DaGFyTmV4dEZ1bmMgc2xpZ2h0bHkuCgoJKiBzcmMvY2ZmLyouYzogVXBkYXRpbmcgQ0ZGIHR5cGUgZGVmaW5pdGlvbnMuCgoyMDAyLTAzLTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2F1dG9oaW50LmgsIHNyYy9hdXRvaGludC9haG1vZHVsZS5jLAoJc3JjL2Jhc2UvZnRhcGkuYywgc3JjL2Jhc2UvZnRvYmpzLmM6IFVwZGF0aW5nIHRoZSB0eXBlIGRlZmluaXRpb25zCglmb3IgdGhlIGF1dG8taGludGVyIG1vZHVsZS4KCgkgIEZUX0F1dG9IaW50ZXJfSW50ZXJmYWNlICA9PiBGVF9BdXRvSGludGVyX1NlcnZpY2VSZWMKCSAgRlRfQXV0b0hpbnRlcl9JbnRlcmZhY2UqID0+IEZUX0F1dG9IaW50ZXJfU2VydmljZQoJICBldGMuCgoJICBGVF9BdXRvSGludGVyX0dldF9HbG9iYWxfRnVuYyAgPT4gRlRfQXV0b0hpbnRlcl9HbG9iYWxHZXRGdW5jCgkgIEZUX0F1dG9IaW50ZXJfRG9uZV9HbG9iYWxfRnVuYyA9PiBGVF9BdXRvSGludGVyX0dsb2JhbERvbmVGdW5jCgkgIGV0Yy4KCgkqIGFobG9hZGVyLmggW19TVEFOREFMT05FX106IFJlbW92ZWQgYWxsIGNvbmRpdGlvbmFsIGNvZGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmgsIHNyYy9jZmYvKi5jOiBVcGRhdGluZyB0aGUKCXR5cGUgZGVmaW5pdGlvbnMgb2YgdGhlIENGRiBmb250IGRyaXZlci4KCgkgIENGRl9Gb250ICA9PiBDRkZfRm9udFJlYwoJICBDRkZfRm9udCogPT4gQ0ZGX0ZvbnQKCSAgZXRjLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oLCBzcmMvd2luZm9udHMvKi5jOiBVcGRhdGluZwoJdHlwZSBkZWZpbml0aW9ucyBvZiB0aGUgV2luZG93cyBGTlQgZm9udCBkcml2ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvYmFzZS9mdGFwaS5jLAoJc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmZkcml2ci5oLAoJc3JjL2NpZC9jaWRyaXZlci5jLCBzcmMvY2lkL2NpZHJpdmVyLmgsIHNyYy9wY2YvcGNmZHJpdmVyLmMsCglzcmMvcGNmL3BjZmRyaXZlci5oLCBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywKCXNyYy90cnVldHlwZS90dGRyaXZlci5oLCBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3QxZHJpdmVyLmgsCglzcmMvd2luZm9udHMvd2luZm50LmMsIHNyYy93aW5mb250cy93aW5mbnQuaDogVXBkYXRpbmcgdHlwZQoJZGVmaW5pdGlvbnMgZm9yIGZvbnQgZHJpdmVycy4KCgkgIEZURHJpdmVyX2luaXRGYWNlICAgICAgPT4gRlRfRmFjZV9Jbml0RnVuYwoJICBGVERyaXZlcl9pbml0R2x5cGhTbG90ID0+IEZUX1Nsb3RfSW5pdEZ1bmMKCSAgZXRjLgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9GYWNlX0luaXQpOiBSZW1vdmUgZGVhZCBjb2RlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwgc3JjL2Jhc2UvZnRvYmpzLmM6IFVwZGF0ZWQgYQoJZmV3IGZhY2UgbWV0aG9kIGRlZmluaXRpb25zOgoKCSAgRlRfUFNOYW1lX1JlcXVlc3RlciAgICAgPT4gRlRfRmFjZV9HZXRQb3N0c2NyaXB0TmFtZUZ1bmMKCSAgRlRfR2x5cGhfTmFtZV9SZXF1ZXN0ZXIgPT4gRlRfRmFjZV9HZXRHbHlwaE5hbWVGdW5jCgkgIEZUX05hbWVfSW5kZXhfUmVxdWVzdGVyID0+IEZUX0ZhY2VfR2V0R2x5cGhOYW1lSW5kZXhGdW5jCgoJKiBzcmMvYmFzZS9mdGFwaS5jOiBOZXcgZmlsZS4gIEl0IGNvbnRhaW5zIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CglmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgsIHNyYy9jaWQvY2lkbG9hZC5jLAoJc3JjL2NpZHRva2VuLmgsIHNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3Bzb2Jqcy5oLAoJc3JjL3BzYXV4L3QxZGVjb2RlLmMsIHN0Yy90eXBlMS90MWxvYWQuYywgc3JjL3R5cGUxL3QxdG9rZW5zLmg6CglVcGRhdGVkIGNvbW1vbiBQb3N0U2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMuCglSZW5hbWVkIGFsbCBlbnVtZXJhdGlvbiB2YWx1ZXMgbGlrZSB0byB1cHBlcmNhc2UgdmFyaWFudHM6CgoJICB0MV90b2tlbl9hbnkgICAgICA9PiBUMV9UT0tFTl9UWVBFX0FOWQoJICB0MV9maWVsZF9jaWRfaW5mbyA9PiBUMV9GSUVMRF9MT0NBVElPTl9DSURfSU5GTwoJICBldGMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzZ2xvYmFscy5oOiBSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCwgc3JjL3BzaGludGVyL3BzaGdsb2IuaDoKCVVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oLCBzcmMvYmFzZS9mdG5hbWVzLmMsCglzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9zZm50LyouYywgc3JjL3RydWV0eXBlLyouYzogVXBkYXRlZAoJU0ZOVC9UcnVlVHlwZSB0eXBlIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmg6CglVcGRhdGluZyB0eXBlIGRlZmludGlpb25zIGZvciB0aGUgZ2x5cGggbG9hZGVyLgoKMjAwMi0wMy0xMyAgQW50b2luZSBMZWNhICA8YW50b2luZUBvcmlvbG5ldC5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBDaGFuZ2VkIHRoZSBhdXRvbWF0aWMKCWRldGVjdGlvbiBvZiBNaWNyb3NvZnQgQyBjb21waWxlcnMgdG8gYXV0b21hdGljYWxseSBzdXBwb3J0IDY0LWJpdAoJaW50ZWdlcnMgb25seSBzaW5jZSByZXZpc2lvbiA5LjAwIChpLmUuID49IFZpc3VhbCBDKysgMi4wKS4KCjIwMDItMDMtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0dXRpbC5jIChGVF9SZWFsbG9jKTogVXNlIE1FTV9TZXQgaW5zdGVhZCBvZiBtZW1zZXQuCgoyMDAyLTAzLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fdGFibGVfcmVzaXplLCBmdF9tZW1fdGFibGVfbmV3LAoJZnRfbWVtX3RhYmxlX3NldCwgZnRfbWVtX2RlYnVnX2FsbG9jLCBmdF9tZW1fZGVidWdfZnJlZSwKCWZ0X21lbV9kZWJ1Z19yZWFsbG9jLCBmdF9tZW1fZGVidWdfZG9uZSwgRlRfQWxsb2NfRGVidWcsCglGVF9SZWFsbG9jX0RlYnVnLCBGVF9GcmVlX0RlYnVnKTogRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRml4KTogRGl0dG8uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogRGl0dG8uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfU2l6ZV9HZXRfR2xvYmFsX0Z1bmNzLCBDRkZfU2l6ZV9Jbml0LAoJQ0ZGX0dseXBoU2xvdF9Jbml0KTogRGl0dG8uCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfR2x5cGhTbG90X0luaXQsCglDSURfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcyk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsIFQxX0dseXBoU2xvdF9Jbml0KToKCURpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNobW9kLmMgKHBzaGludGVyX2ludGVyZmFjZSk6IFVzZSBgc3RhdGljIGNvbnN0Jy4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfR2V0X05leHRfQ2hhcik6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfQnVpbGRlcl9GdW5jcyk6IFJlbmFtZWQKCXRvLi4uCgkoVDFfQnVpbGRlcl9GdW5jc1JlYyk6IFRoaXMuCgkoVDFfQnVpbGRlcl9GdW5jcyk6IE5ldyB0eXBlZGVmLgoJKFBTQXV4X0ludGVyZmFjZSk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL3BzYXV4L3BzYXV4bW9kLmMgKHQxX2J1aWxkZXJfZnVuY3MpLCBzcmMvcHNhdXgvcHNvYmpzLmgKCSh0MV9idWlsZGVyX2Z1bmNzKTogVXBkYXRlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9CbHVlX0FsaWduKTogUmVwbGFjZWQgd2l0aCAuLi4KCShQU0hfQkxVRV9BTElHTl97Tk9ORSxUT1AsQk9UfSk6IE5ldyBkZWZpbmVzLgoJKFBTSF9BbGlnbm1lbnRSZWMpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChHRVRfQ2hhciwgR0VUX0J5dGUpOiBGaXgKCXR5cG8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaCAoRlRfU3ViR2x5cGgpOiBEaXR0by4KCSogc3JjL2Jhc2UvZnRzdHJlYW0gKEZUX0dldF9DaGFyKTogUmVuYW1lIHRvLi4uCgkoRlRfU3RyZWFtX0dldF9DaGFyKTogVGhpcy4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZSk6IHMvaW5kZXgvaWR4LyAtLSBgaW5kZXgnIGlzCglhIGJ1aWx0LWluIGZ1bmN0aW9uIGluIGdjYywgY2F1c2luZyB3YXJuaW5nIG1lc3NhZ2VzIHdpdGggZ2NjIDMuMC4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9sb2FkKTogRGl0dG8uCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChhaF9oaW50ZXJfY29tcHV0ZV9ibHVlcyk6IERpdHRvLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX2ZhbWlseV90YWJsZV9hbGxvYywKCWZ0Y19mYW1pbHlfdGFibGVfZnJlZSwgRlRDX01hbmFnZXJfRG9uZSwgRlRDX01hbmFnZXJfUmVnaXN0ZXJfQ2FjaGUpOgoJRGl0dG8uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfbmV3X2luZGV4LCBjZmZfZG9uZV9pbmRleCwKCWNmZl9leHBsaWNpdF9pbmRleCwgQ0ZGX0FjY2Vzc19FbGVtZW50LCBDRkZfRm9yZ2V0X0VsZW1lbnQsCglDRkZfR2V0X05hbWUsIENGRl9HZXRfU3RyaW5nLCBDRkZfTG9hZF9TdWJGb250LCBDRkZfTG9hZF9Gb250LAoJQ0ZGX0RvbmVfRm9udCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlX0FkZCwgUFNfUGFyc2VyX0xvYWRGaWVsZCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX21hc2tfdGVzdF9iaXQsIHBzX21hc2tfY2xlYXJfYml0LAoJcHNfbWFza19zZXRfYml0LCBwc19kaW1lbnNpb25fYWRkX3Qxc3RlbSwgcHNfaGludHNfdDFzdGVtMywKCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9yZWNvcmQsCglwc2gxX2hpbnRfdGFibGVfcmVjb3JkX21hc2ssIHBzaDFfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfcmVjb3JkLAoJcHNoMl9oaW50X3RhYmxlX3JlY29yZF9tYXNrLCBwc2gyX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IERpdHRvLgoJKiBzcmMvc2ZudC90dHBvc3QuYyAoTG9hZF9Gb3JtYXRfMjAsIExvYWRfRm9ybWF0XzI1LAoJVFRfR2V0X1BTX05hbWUpOiBEaXR0by4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfR2V0X01ldHJpY3MsIEdldF9ITWV0cmljcywKCWxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgVDFfT3Blbl9GYWNlKTogRGl0dG8uCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9HZXRfS2VybmluZyk6IERpdHRvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21hbmFnLmggKGZ0Y19mYW1pbHlfdGFibGVfZnJlZSk6IERpdHRvLgoKMjAwMi0wMy0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpLCBzcmMvY2lkL2NpZG9ianMuYwoJKENJRF9GYWNlX0luaXQpOiBGaXhlZCBhbm90aGVyIGJ1ZyByZWxhdGVkIHRvIHRoZQoJYXNjZW5kZXIvZGVzY2VuZGVyL3RleHQgaGVpZ2h0IG9mIFBvc3RzY3JpcHQgZm9udHMuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHJpbnRfem9uZSk6IFJlbmFtZWQgdG8gLi4uCgkocHNoMl9wcmludF96b25lKTogVGhpcy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHByaW50X3pvbmUpOiBSZW5hbWVkIHRvIC4uLgoJKHBzaDFfcHJpbnRfem9uZSk6IFRoaXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCglzcmMvYmFzZS9mdG9ianMuYzogQWRkaW5nIHRoZSBuZXcgRlRfTGlicmFyeV9WZXJzaW9uIEFQSSB0byByZXR1cm4KCXRoZSBsaWJyYXJ5J3MgY3VycmVudCB2ZXJzaW9uIGluIGR5bmFtaWMgbGlua3MuCgkqIHNyYy9iYXNlL2Z0aW5pdC5jIChGVF9Jbml0X0ZyZWVUeXBlKTogVXBkYXRlZC4KCjIwMDItMDMtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9EaW1lbnNpb25SZWMpOiBzL3N0ZC9zdGR3Ly4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbF9zY2FsZV93aWR0aHMsCglwc2hfZGltZW5zaW9uX3NuYXBfd2lkdGgsIHBzaF9nbG9iYWxzX2Rlc3Ryb3ksIHBzaF9nbG9iYWxzX25ldyk6CglEaXR0by4KCjIwMDItMDMtMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KSwgc3JjL2NmZi9jZmZvYmpzLmMKCShDRkZfRmFjZV9Jbml0KSwgc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9GYWNlX0luaXQpOiBSZW1vdmluZyB0aGUgYnVnCgl0aGF0IHJldHVybmVkIGdsb2JhbCBCQm94IHZhbHVlcyBpbiAxNi4xNiBmaXhlZCBmb3JtYXQgKGluc3RlYWQgb2YKCWludGVnZXIgZm9udCB1bml0cykuCgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKGNpZF9nZXRfcG9zdHNjcmlwdF9uYW1lKTogRml4ZWQgYSBidWcgdGhhdAoJY2F1c2VkIHRoZSBDSUQgZHJpdmVyIHRvIHJldHVybiBQb3N0c2NyaXB0IGZvbnQgbmFtZXMgd2l0aCBhIGxlYWRpbmcKCXNsYXNoIChgLycpIGFzIGluIGAvTU9FS2FpLVJlZ3VsYXInLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpLCBzcmMvc2ZudC9zZm9ianMuYyAoR2V0X05hbWUpLAoJc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRml4ZWQgdGhlIGxvYWRlciBzbwoJdGhhdCBpdCBhY2NlcHRzIGJyb2tlbiBmb250cyBsaWtlIGBmb3hqdW1wLnR0ZicsIHdoaWNoIG1hZGUgRnJlZVR5cGUKCWNyYXNoIHdoZW4gdHJ5aW5nIHRvIGxvYWQgdGhlbS4KCglBbHNvIGltcHJvdmVkIHRoZSBuYW1lIHRhYmxlIHBhcnNlciB0byBiZSBhYmxlIHRvIGxvYWQKCVdpbmRvd3MtZW5jb2RlZCBlbnRyaWVzIGJlZm9yZSBNYWNpbnRvc2ggb3IgVW5pY29kZSBvbmVzLCBzaW5jZSBpdAoJc2VlbXMgc29tZSBmb250cyBkb24ndCBoYXZlIHJlbGlhYmxlIHZhbHVlcyBoZXJlIGFueXdheS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNuYW1lcy5oOiBBZGQgdHlwZWRlZiBmb3IKCWBQU05hbWVzX1NlcnZpY2UnLgoKMjAwMi0wMy0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvYWNsb2NhbC5tNCwgYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBVcGRhdGUgdG8gbGlidG9vbAoJMS40LjIuCglBcHBseSBhIHNtYWxsIHBhdGNoIGZvciBBSVggdG8gbWFrZSBzaGFyZWQgbGlicmFyaWVzIHdvcmsgKHRoaXMKCXBhdGNoIGlzIGFscmVhZHkgaW4gdGhlIENWUyB2ZXJzaW9uIG9mIGxpYnRvb2wpLgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLnN1YiwgYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzOiBVcGRhdGVkIHRvCglyZWNlbnQgdmVyc2lvbnMuCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEZpeCB0eXBvCgkoQUNfQ09ORklHX0ZJTEUtPkFDX0NPTkZJR19GSUxFUykuCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMi0wMi0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNvbmZpZy5oOiBDaGFuZ2VkIGBGVF9MT0NBTCB4eHh4JyB0bwoJYEZUX0xPQ0FMKCB4eHh4ICknIGV2ZXJ5d2hlcmUgaW4gdGhlIHNvdXJjZS4gIFRoZSBzYW1lIGdvZXMgZm9yCglgRlRfTE9DQUxfREVGIHh4eHgnIHdoaWNoIGlzIHRyYW5zbGF0ZWQgdG8gYEZUX0xPQ0FMX0RFRiggeHh4eHggKScuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX01JTk9SLCBGUkVFVFlQRV9QQVRDSCk6CglDaGFuZ2luZyB2ZXJzaW9uIHRvIDIuMS4wIHRvIGluZGljYXRlIGFuIHVuc3RhYmxlIGJyYW5jaC4KCUFkZGVkIHRoZSBkZWNsYXJhdGlvbnMgb2YgRlRfR2V0X0ZpcnN0X0NoYXIgYW5kIEZUX0dldF9OZXh0X0NoYXIuCgoJKiBzcmMvYmFzZS9mdG9ianMuYzogSW1wbGVtZW50IEZUX0dldF9GaXJzdF9DaGFyIGFuZAoJRlRfR2V0X05leHRfQ2hhci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaDogUmVuYW1pbmcgc3RydWN0dXJlIHR5cGVzLiAgVGhpcwoKCSAgdHlwZWRlZiAgVDFfU3RydWN0XwoJICB7CgkgIH0gVDFfU3RydWN0OwoKCWJlY29tZXMKCgkgIHR5cGVkZWYgIFBTX1N0cnVjdFJlY18KCSAgewoJICB9IFBTX1N0cnVjdFJlYywgKlBTX1N0cnVjdDsKCgkgIHR5cGVkZWYgUFNfU3RydWN0UmVjICBUMV9TdHJ1Y3Q7ICAvKiBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSAqLwoKCUhlbmNlLCB3ZSBpbmNyZWFzZSB0aGUgY29oZXJlbmN5IG9mIHRoZSBzb3VyY2UgY29kZSBieSBlZmZlY3RpdmVseQoJdXNpbmcgdGhlIGBSZWMnIHByZWZpeCBmb3Igc3RydWN0dXJlIHR5cGVzLgoKMjAwMi0wMi0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpOiBTaW1wbGlmeWluZyBhbmQgc2VjdXJpbmcgdGhlCgluYW1lcyB0YWJsZSBsb2FkZXIuICBJbnZhbGlkIGluZGl2aWR1YWwgbmFtZSBlbnRyaWVzIGFyZSBub3cgaGFuZGxlZAoJY29ycmVjdGx5LiAgVGhpcyBhbGxvd3MgdGhlIGxvYWRpbmcgb2YgdmVyeSBidWdneSBmb250cyBsaWtlCglgZm94anVtcC50dGYnIHdpdGhvdXQgYWxsb2NhdGluZyB0b25zIG9mIG1lbW9yeSBhbmQgY2F1c2luZyBjcmFzaGVzLgoKCSogc3JjL290bGF5b3V0L290bGNvbW1vbi5oLCBzcmMvb3RsYXlvdXQvb3RsY29tbW9uLmM6IEFkZGluZyAoc3RpbGwKCWV4cGVyaW1lbnRhbCkgY29kZSBmb3IgT3BlblR5cGUgTGF5b3V0IHRhYmxlcyB2YWxpZGF0aW9uIGFuZAoJcGFyc2luZy4KCgkqIHNyYy90eXBlMS90MWNtYXAuaCwgc3JjL3R5cGUxL3QxY21hcC5jOiBBZGRpbmcgKHN0aWxsCglleHBlcmltZW50YWwpIGNvZGUgZm9yIFR5cGUgMSBjaGFybWFwIHByb2Nlc3NpbmcuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IE5ldyBmaWxlLiAgSXQgY29udGFpbnMgYSBuZXcsIHN0aWxsCglleHBlcmltZW50YWwgU0ZOVCBjaGFybWFwIHByb2Nlc3Npbmcgc3VwcG9ydC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IEFkZGluZyB2YWxpZGF0aW9uIHN1cHBvcnQgYXMKCXdlbGwgYXMgaW50ZXJuYWwgY2hhcm1hcCBvYmplY3QgZGVmaW5pdGlvbnMgKEZUX0NNYXAgIT0gRlRfQ2hhck1hcCkuCgoyMDAyLTAyLTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSZW5hbWluZyBzdHJlYW0gZnVuY3Rpb25zIHRvIHRoZSBGVF88U3ViamVjdD5fPEFjdGlvbj4gc2NoZW1lOgoKCSAgRlRfU2Vla19TdHJlYW0gICAgPT4gRlRfU3RyZWFtX1NlZWsKCSAgRlRfU2tpcF9TdHJlYW0gICAgPT4gRlRfU3RyZWFtX1NraXAKCSAgRlRfUmVhZF9TdHJlYW0gICAgPT4gRlRfU3RyZWFtX1JlYWQKCSAgRlRfUmVhZF9TdHJlYW1fQXQgPT4gRlRfU3RyZWFtX1JlYWRfQXQKCSAgRlRfQWNjZXNzX0ZyYW1lICAgPT4gRlRfU3RyZWFtX0VudGVyX0ZyYW1lCgkgIEZUX0ZvcmdldF9GcmFtZSAgID0+IEZUX1N0cmVhbV9FeGl0X0ZyYW1lCgkgIEZUX0V4dHJhY3RfRnJhbWUgID0+IEZUX1N0cmVhbV9FeHRyYWN0X0ZyYW1lCgkgIEZUX1JlbGVhc2VfRnJhbWUgID0+IEZUX1N0cmVhbV9SZWxlYXNlX0ZyYW1lCgkgIEZUX0dldF9YWFhYICAgICAgID0+IEZUX1N0cmVhbV9HZXRfWFhYWAoJICBGVF9SZWFkX1hYWFggICAgICA9PiBGVF9TdHJlYW1fUmVhZF9YWFhYCgoJICBGVF9OZXdfU3RyZWFtKCBmaWxlbmFtZSwgc3RyZWFtICkgPT4KCSAgICBGVF9TdHJlYW1fT3Blbiggc3RyZWFtLCBmaWxlbmFtZSApCgoJICAgIChUaGUgZnVuY3Rpb24gZG9lc24ndCBjcmVhdGUgdGhlIEZUX1N0cmVhbSBzdHJ1Y3R1cmUsIGl0IHNpbXBseQoJICAgIGluaXRpYWxpemVzIGl0IGZvciByZWFkaW5nLikKCgkgIEZUX05ld19NZW1vcnlfU3RyZWFtKCBsaWJyYXJ5LCBGVF9CeXRlKiAgYmFzZSwgc2l6ZSwgc3RyZWFtICkgPT4KCSAgICBGVF9TdHJlYW1fT3Blbl9NZW1vcnkoIHN0cmVhbSwgY29uc3QgRlRfQnl0ZSogYmFzZSwgc2l6ZSApCgoJICBGVF9Eb25lX1N0cmVhbSAgPT4gRlRfU3RyZWFtX0Nsb3NlCgkgIEZUX1N0cmVhbV9JTyAgICA9PiBGVF9TdHJlYW1fSU9GdW5jCgkgIEZUX1N0cmVhbV9DbG9zZSA9PiBGVF9TdHJlYW1fQ2xvc2VGdW5jCgoJICBmdF9jbG9zZV9zdHJlYW0gPT4gZnRfYW5zaV9zdHJlYW1fY2xvc2UgKGluIGJhc2UvZnRzeXN0ZW0uYyBvbmx5KQoJICBmdF9pb19zdHJlYW0gICAgPT4gZnRfYW5zaV9zdHJlYW1faW8gICAgKGluIGJhc2UvZnRzeXN0ZW0uYyBvbmx5KQoKCSogc3JjL2Jhc2UvZnR1dGlsLmM6IE5ldyBmaWxlLiAgQ29udGFpbnMgYWxsIG1lbW9yeSBhbmQgbGlzdAoJbWFuYWdlbWVudCBjb2RlIChwcmV2aW91c2x5IGluIGBmdG9ianMuYycgYW5kIGBmdGxpc3QuYycsCglyZXNwZWN0aXZlbHkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogTW92aW5nIGFsbCBjb2RlIHJlbGF0ZWQgdG8KCWdseXBoIGxvYWRlcnMgdG8gLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaDogVGhpcyBuZXcgZmlsZS4KCWBGVF9HbHlwaExvYWRlcicgaXMgbm93IGEgcG9pbnRlciB0byB0aGUgc3RydWN0dXJlCglgRlRfR2x5cGhMb2FkZXJSZWMnLgoJKGZ0X2dseXBoX293bl9iaXRtYXApOiBSZW5hbWVkIHRvIC4uLgoJKEZUX0dMWVBIX09XTl9CSVRNQVApOiBUaGlzLgoJKiBzcmMvYmFzZS9mdG9ianMuYzogTW92aW5nIGFsbCBjb2RlIHJlbGF0ZWQgdG8gZ2x5cGggbG9hZGVycwoJdG8gLi4uCgkqIHNyYy9iYXNlL2Z0Z2xvYWRyLmM6IFRoaXMgbmV3IGZpbGUuCgoyMDAyLTAyLTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCAoRlRfVHJhY2UpOiBSZW1vdmUgY29tbWEgaW4KCWVudW0gdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAyLTAyLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTW9kaWZpZWQgdGhlIGRlYnVnIHN1Yi1zeXN0ZW0gaW5pdGlhbGl6YXRpb24uICBUcmFjZSBsZXZlbHMgY2FuIG5vdwoJYmUgc3BlY2lmaWVkIHdpdGhpbiB0aGUgYEZUMl9ERUJVRycgZW52aXJvbm1lbnQgdmFyaWFibGUuICBTZWUgdGhlCgljb21tZW50cyB3aXRoaW4gYGZ0ZGVidWcuYycgZm9yIG1vcmUgZGV0YWlscy4KCgkqIHNyYy9iYXNlL2Z0ZGVidWcuYzogKEZUX1NldFRyYWNlTGV2ZWwpOiBSZW1vdmVkLgoJKGZ0X2RlYnVnX2luaXQpOiBOZXcgZnVuY3Rpb24uCgkoZnRfZGVidWdfZHVtbXkpOiBSZW1vdmVkLgoJVXBkYXRlZCB0byBjaGFuZ2VzIGluIGZ0ZGVidWcuaAoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IEFsd2F5cyBkZWZpbmUKCUZUX0RFQlVHX0xFVkVMX0VSUk9SIGlmIEZUX0RFQlVHX0xFVkVMX1RSQUNFIGlzIGRlZmluZWQuCgkoRlRfQXNzZXJ0KTogUmVuYW1lZCB0byAuLi4KCShGVF9BU1NFUlQpOiBUaGlzLgoJU29tZSBzdHVmZiBmcm9tIGZ0ZGVidWcuaCBoYXMgYmVlbiBtb3ZlZCB0byAuLi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oOiBOZXcgZmlsZSwgdG8gZGVmaW5lIHRoZSB0cmFjZQoJbGV2ZWxzIHVzZWQgZm9yIGRlYnVnZ2luZy4gIEl0IGlzIHVzZWQgYm90aCB0byBkZWZpbmUgZW51bXMgYW5kCgl0b2dnbGUgbmFtZXMgZm9yIEZUMl9ERUJVRy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvYmFzZS9mdHN0cmVhbS5jOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGV4dGVuZC5oLCBzcmMvYmFzZS9mdGV4dGVuZC5jOgoJUmVtb3ZlZC4gIEJvdGggZmlsZXMgYXJlIG5vdyBjb21wbGV0ZWx5IG9ic29sZXRlLgoJKiBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5tazogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaDogQWRkaW5nIGAjdW5kZWYgRlRfRVJSX0NBVCcgYW5kCglgI3VuZGVmIEZUX0VSUl9YQ0FUJyB0byBhdm9pZCB3YXJuaW5ncyB3aXRoIGNlcnRhaW4gY29tcGlsZXJzIChsaWtlCglMQ0MpLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHByaW50X3pvbmUpOiBSZW5hbWVkIHRvIC4uLgoJKHBzaDJfcHJpbnRfem9uZSk6IFRoaXMgdG8gYXZvaWQgZXJyb3JzIGR1cmluZyBjb21waWxhdGlvbiBvZiBkZWJ1ZwoJbGlicmFyeS4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChGVF9DT01QT05FTlQpOiBDaGFuZ2UgZGVmaW5pdGlvbiB0byBhcwoJYHRyYWNlX3Ntb290aCcuCgoyMDAyLTAyLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUU6IEFkZGluZyBgZGV2ZWxAZnJlZXR5cGUub3JnJyBhZGRyZXNzIGZvciBidWcgcmVwb3J0cy4KCjIwMDItMDItMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGNoZWNrKTogTmV3IGR1bW15IHRhcmdldC4KCSguUEhPTlkpOiBBZGQgaXQuCgoyMDAyLTAyLTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKEZUX0NGTEFHUyk6IFVzZSAkKElOQ0xVREVfRkxBR1MpIGZpcnN0LgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19jYWNoZV9yZXNpemUpOiBNYXJrIGBlcnJvcicgYXMgdW51c2VkCgl0byBhdm9pZCBjb21waWxlciB3YXJuaW5nLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0dldF9TdHJpbmcpOiBEaXR0by4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9TdHJDb3B5KTogRGl0dG8uCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfVGFibGVfRG9uZSk6IERpdHRvLgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IERpdHRvLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBEaXR0by4KCShwY2ZfZ2V0X2JpdG1hcHMpOiBUaGUgc2FtZSBmb3IgYHNpemViaXRtYXBzJy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZV9QYXJzZV9DaGFyc3RyaW5ncyk6IFRoZSBzYW1lIGZvcgoJYG9yaWdfeScuCgkodDFvcGVyYXRvcl9zZWFjKTogQ29tbWVudCBvdXQgbW9yZSBkZWFkIGNvZGUuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwczJfaGludHNfYXBwbHkpOiBBZGQgYERFQlVHX0hJTlRFUicKCWNvbmRpdGlvbmFsLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Qcm9jZXNzX1NpbXBsZV9HbHlwaCwKCWxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBBZGQgYFRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVInCgljb25kaXRpb25hbC4KCjIwMDItMDItMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbGlua19zZWdtZW50cyk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlcy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9hbGlnbl9zZXJpZl9lZGdlKTogVXNlIEZUX1VOVVNFRCBpbnN0ZWFkCglvZiBVTlVTRUQuCgkqIHNyYy9hdXRvaGludC9haG1vZHVsZS5jIChmdF9hdXRvaGludGVyX3Jlc2V0KTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfbWFza190YWJsZV9tZXJnZSk6IEZpeCB0eXBvIGluIHZhcmlhYmxlCglzd2FwcGluZyBjb2RlLgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfQmx1ZV9BbGlnbik6IEFkZCBQU0hfQkxVRV9BTElHTl9OT05FLgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc25hcF9zdGVtKTogVXNlIGl0LgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX29wdGltaXplKTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfYWxpZ24pOiBEaXR0by4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoVU5VU0VEKTogUmVtb3ZlZC4KCjIwMDItMDItMTAgIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPgoKCUFkZCBzdXBwb3J0IGZvciBJU09MYXRpbjEgUFMgZW5jb2RpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKGZ0X2VuY29kaW5nX2xhdGluXzEpOiBOZXcgdGFnCgkoYGxhdDEnKS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKFQxX0VuY29kaW5nX1R5cGUpOiBBZGQKCWB0MV9lbmNvZGluZ19pc29sYXRpbjEnLgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAoR2V0X0NoYXJfSW5kZXgsIEdldF9OZXh0X0NoYXIpOiBIYW5kbGUKCWZ0X2VuY29kaW5nX2xhdGluXzEuCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZW5jb2RpbmcpOiBIYW5kbGUgYElTT0xhdGluMUVuY29kaW5nJy4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBIYW5kbGUgYHQxX2VuY29kaW5nX2lzb2xhdGluMScuCgoyMDAyLTAyLTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBSRUFETUU6IEZpeCB0eXBvLgoJKiBkb2NzL0NIQU5HRVM6IE1pbm9yIGZpeGVzLgoKCgkqIFZlcnNpb24gMi4wLjggcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wMi0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBmb3IgMi4wLjguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IFNldHRpbmcgYFBBVENIX0xFVkVMJyB0byA4IGFuZAoJcmVtb3ZpbmcgYEZUX0dldF9OZXh0X0NoYXInIGZyb20gdGhlIEFQSSAodGVtcG9yYXJpbHkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGRpbmcgY29tbWVudHMgdG8gRlRfR2V0X05leHRfQ2hhcjsKCW5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IHRlbXBvcmFyaWx5IGJlIHJlbW92ZWQgZm9yIHRoZSAyLjAuOAoJcmVsZWFzZS4KCjIwMDItMDItMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogUmVtb3ZlZCBpbW1hdHVyZSBzdXBwb3J0IG9mCgl0aGUgQVZFUkFHRV9XSURUSCBwcm9wZXJ0eS4KCjIwMDItMDItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IFNpbmNlIG1hbnkgZm9udHMgZW1iZWRkZWQgaW4KCVBERiBkb2N1bWVudHMgZG8gbm90IGluY2x1ZGUgJ2NtYXAnLCAncG9zdCcgYW5kICduYW1lJyB0YWJsZXMsIHRoZQoJU0ZOVCBmYWNlIGxvYWRlciBoYXMgYmVlbiBjaGFuZ2VkIHRvIG5vdCBpbW1lZGlhdGVseSByZXBvcnQgYW4KCWVycm9yIGlmIHRoZXNlIGFyZSBub3QgcHJlc2VudC4KCglOb3RlIHRoYXQgdGhlIHNwZWNpZmljYXRpb24gX3JlcXVpcmVzXyB0aGVzZSB0YWJsZXMsIGJ1dCBBZG9iZQoJc2VlbXMgdG8gaWdub3JlIGl0IGNvbXBsZXRlbHkuCgoJKiBzcmMvc2ZudC90dGNtYXAuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3JlYWRfVE9DKTogVXNlIEZUX1VJbnQuCgkocGNmX3BhcnNlX21ldHJpYywgcGNmX3BhcnNlX2NvbXByZXNzZWRfbWV0cmljKTogUmVtb3ZlZC4gIENvZGUKCWlzIG5vdyBpbiAuLi4KCShwY2ZfZ2V0X21ldHJpYyk6IEhlcmUuCgkocGNmU2Vla1RvVHlwZSk6IFJlbmFtZWQgdG8gLi4uCgkocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKHBjZkhhc1R5cGUpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9oYXNfdGFibGVfdHlwZSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKGZpbmRfcHJvcGVydHkpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9maW5kX3Byb3BlcnR5KTogVGhpcy4KCVVzZSBGVF9JbnQuCgkocGNmX2dldF9iaXRtYXBzLCBwY2ZfZ2V0X2VuY29kaW5ncyk6IEhhbmRsZSBpbnZhbGlkIFBDRiBmb250cwoJYmV0dGVyIChkZWxheWluZyBmb3JtYXQgY2hlY2tzIG91dCBvZiBGVF9BY2Nlc3NfRnJhbWUgLi4KCUZUX0ZvcmdldF9GcmFtZSBibG9ja3MgdG8gYXZvaWQgbGVhdmluZyB0aGUgc3RyZWFtIGluIGFuIGluY29ycmVjdAoJc3RhdGUgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCBQQ0YgZm9udCkuCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRG9uZV9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfRmFjZV9Eb25lKTogVGhpcy4KCShQQ0ZfSW5pdF9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfRmFjZV9Jbml0KTogVGhpcy4KCShQQ0ZfR2V0X0NoYXJfSW5kZXgpOiBSZW5hbWVkIHRvIC4uLgoJKFBDRl9DaGFyX0dldF9JbmRleCk6IFRoaXMuCgkoUENGX0dldF9OZXh0X0NoYXIpOiBSZW5hbWVkIHRvIC4uLgoJKFBDRl9DaGFyX0dldF9OZXh0KTogVGhpcy4KCShwY2ZfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIHNyYy9wY2YvcGNmLmggKFBDRl9Eb25lX0ZhY2UpOiBSZW1vdmVkLgoKMjAwMi0wMi0wNiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKEZUX0RvbmVfRmFjZSk6IEZpeGVkIHNtYWxsIG1lbW9yeSBsZWFrLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBOb3cgaGFuZGxlcyB0aGUgYEFWRVJBR0VfV0lEVEgnCglwcm9wZXJ0eSB0byByZXR1cm4gY29ycmVjdCBjaGFyYWN0ZXIgcGl4ZWwgKHdpZHRoL2hlaWdodCkgcGFpcnMgZm9yCgllbWJlZGRlZCBiaXRtYXBzLgoKMjAwMi0wMi0wNCAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCUFkZGluZyB0aGUgZnVuY3Rpb24gYEZUX0dldF9OZXh0X0NoYXInLCBkb2luZyB0aGUgb2J2aW91cyB0aGluZwoJdy5yLnQuIHRoZSBzZWxlY3RlZCBjaGFybWFwLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGQgcHJvdG90eXBlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmg6IEFkZCBgRlREcml2ZXJfZ2V0TmV4dENoYXInCgl0eXBlZGVmLgoJKEZUX0RyaXZlcl9DbGFzcyk6IFVzZSBpdC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc25hbWVzLmg6IEFkZCBgUFNfTmV4dF9Vbmljb2RlX0Z1bmMnCgl0eXBlZGVmLgoJKFBTTmFtZXNfSW50ZXJmYWNlKTogVXNlIGl0LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaDogQWRkIGBUVF9DaGFyTmV4dF9GdW5jJwoJdHlwZWRlZi4KCShUVF9DTWFwVGFibGUpOiBVc2UgaXQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbiwgaW1wbGVtZW50aW5nCgloaWdoLWxldmVsIEFQSS4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25leHRfY2hhcik6IE5ldyBmdW5jdGlvbi4KCShjZmZfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKENpZF9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHQxY2lkX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkocGNmX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAoUFNfTmV4dF9Vbmljb2RlKTogTmV3IGZ1bmN0aW9uLgoJKHBzbmFtZXNfaW50ZXJmYWNlKTogQWRkIGl0LgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoY29kZV90b19uZXh0MCwgY29kZV90b19uZXh0MiwgY29kZV90b19uZXh0NCwKCWNvZGVfdG9fbmV4dDYsIGNvZGVfdG9fbmV4dF84XzEyLCBjb2RlX3RvX25leHRfMTApOiBOZXcgYXV4aWxpYXJ5CglmdW5jdGlvbnMuCgkoVFRfQ2hhck1hcF9Mb2FkKTogVXNlIHRoZW0uCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChHZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHR0X2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKEdldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkodDFfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHdpbmZudF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IEZvciBub3csIHJlcG9ydCBVbmljb2RlIGZvcgoJVW5pY29kZSBhbmQgTGF0aW4gMSBlbmNvZGluZ3MuCgoyMDAyLTAyLTAyICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IEFkZCBtaXNzaW5nIGBmaScuCgoKCSogVmVyc2lvbiAyLjAuNyByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTAyLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEluY3JlYXNpbmcgRlJFRVRZUEVfUEFUQ0ggdG8gNwoJZm9yIHRoZSBuZXcgcmVsZWFzZS4KCjIwMDItMDEtMzEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRSwgUkVBRE1FLlVOWCwgZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBkb2N1bWVudGF0aW9uIGZvciB0aGUKCTIuMC43IHJlbGVhc2UuCgoyMDAyLTAxLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBJTlNUQUxMOiBNb3ZlZCB0byAuLi4KCSogZG9jcy9JTlNUQUxMOiBIZXJlIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZSBgaW5zdGFsbCcgc2NyaXB0IG9uCglXaW5kb3dzLCB3aGVyZSB0aGUgZmlsZXN5c3RlbSBkb2Vzbid0IHByZXNlcnZlIGNhc2UuCgoyMDAyLTAxLTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBjb25maWd1cmU6IEZpeGVkIHRoZSBzY3JpcHQuICBJdCBwcmV2aW91c2x5IGRpZG4ndCBhY2NlcHQgbW9yZQoJdGhhbiBvbmUgYXJndW1lbnQgY29ycmVjdGx5LiAgRm9yIGV4YW1wbGUsIHdoZW4gdHlwaW5nOgoKCSAgLi9jb25maWd1cmUgLS1kaXNhYmxlLXNoYXJlZCAtLWRpc2FibGUtbmxzCgoJdGhlIGAtLWRpc2FibGUtbmxzJyB3YXMgaW5jb3JyZWN0bHkgc2VudCB0byB0aGUgYG1ha2UnIHByb2dyYW0uCgoyMDAyLTAxLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBSRUFETUUuVU5YOiBGaXggdHlwby4KCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAodW5pbnN0YWxsKTogRml4IGxpYnJhcnkgbmFtZSBmb3IgbGlidG9vbC4KCjIwMDItMDEtMjggIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRG9uZV9GYWNlKTogRml4IGluY29ycmVjdCBkZXN0cnVjdGlvbiBvZgoJdGhlIGZhY2Ugb2JqZWN0IChmYWNlLT50b2MudGFibGVzLCBmYWNlLT5yb290LmZhbWlseV9uYW1lLAoJZmFjZS0+cm9vdC5hdmFpbGFibGVfc2l6ZSwgZmFjZS0+Y2hhcnNldF9lbmNvZGluZywKCWZhY2UtPmNoYXJzZXRfcmVnaXN0cnkgYXJlIG5vdyBmcmVlZCkuICBUaGFua3MgdG8gTmllbHMgTW9zZWxleS4KCjIwMDItMDEtMjggIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9lbmNvZGluZyk6IFNldCBgbG9hZGVyLT5udW1fY2hhcnMnLgoKMjAwMi0wMS0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgcGFyc2VfY2hhcnN0cmluZ3MpOiBVc2UgY29weQoJb2YgYGJhc2UnIHN0cmluZyBmb3IgZGVjcnlwdGluZyB0byBub3QgbW9kaWZ5IHRoZSBvcmlnaW5hbCBkYXRhLgoJQmFzZWQgb24gYSBwYXRjaCBieSBKYWt1YiBCb2d1c3ogPHFib29zaEBwbGQub3JnLnBsPi4KCjIwMDItMDEtMjcgIEdpdWxpYW5vIFBvY2hpbmkgIDxwb2NoaW5pQHNoaW55Lml0PgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX3NjYW5saW5lKTogRml4IGJ1ZyB3aGljaCBjYXVzZWQKCWJhZCByZW5kZXJpbmcgb2YgdGhpbiBsaW5lcyAobGVzcyB0aGFuIG9uZSBwaXhlbCB0aGljaykuCgoyMDAyLTAxLTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IE1ha2UgbGFzdCBwYXRjaCB3b3JrCglhY3R1YWxseS4KCjIwMDItMDEtMjUgIE1hcnRpbiBaaW5zZXIgIDx6aW5zZXJAZGVjdXMuZGU+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZG9uZSwgZnRjX25vZGVfZGVzdHJveSk6IEZpeAoJY29tcGlsYXRpb24gd2FybmluZ3MuCgkqIHNyYy9iYXNlL2Rlc2NyaXAubW1zIChPQkpTKTogQWRkIGBmdG1tLm9iaicuCgkqIHNyYy9jYWNoZS9kZXNjcmlwLm1tcyAoZnRjYWNoZS5vYmopOiBEZXBlbmRlbmNpZXMgYWRkZWQuCgoyMDAyLTAxLTI1ICBXQU5HIFlpICA8d2FuZ3lpQGZvdW5kZXIuY29tLmNuPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBGaXggZGVhbGxvY2F0aW9uIGJ1Zy4KCjIwMDItMDEtMjEgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBkb2NzL1BBVEVOVFM6IFR5cG8gZml4ZWQgKHRoYW5rcyB0byBEZXRsZWYgYEhhd2tleWUnIFf8cmtuZXIpIGluCgl0aGUgVVJMIGZvciB0aGUgb25saW5lIHJlc291cmNlLgoKMjAwMi0wMS0xOCAgSWFuIEJyb3duICA8aWFuLmJyb3duQHByaW50c29mdC5kZT4KCgkqIGJ1aWxkcy93aW4zMi9mdGRlYnVnLmM6IE5ldyBmaWxlLgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IFVwZGF0ZWQuCgoyMDAyLTAxLTE4ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhL3NyYy9iYXNlL2Z0c3lzdGVtLmM6IFVwZGF0ZWQgZm9yIEFtaWdhT1MgMy45LgoJKiBidWlsZHMvYW1pZ2EvUkVBRE1FOiBVcGRhdGVkLgoKMjAwMi0wMS0xOCAgSWFuIEJyb3duICA8aWFuLmJyb3duQHByaW50c29mdC5kZT4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDEtMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5hNDogVGhlIHNjcmlwdCB3YXMgc3RpbGwgYnVnZ3kuCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogTWFrZSBpdCByZWFsbHkgd29yayBmb3IgYW55IGluc3RhbGwKCXByZWZpeC4KCjIwMDItMDEtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5hNDogRml4IHNvbWUgc2VyaW91cyBidWdzLgoKMjAwMi0wMS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBCdWlsZCB0b3AtbGV2ZWwgSmFtZmlsZS4KCjIwMDItMDEtMDkgIE1heGltIFNoZW1hbmFyZXYgIDxtY3NlZW1hZ2dAeWFob28uY29tPgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX2xpbmUpOiBTbWFsbCBvcHRpbWl6YXRpb24gdG8KCXRoZSBzbW9vdGggYW50aS1hbGlhc2VkIHJlbmRlcmVyIHRoYXQgZGVhbHMgd2l0aCB2ZXJ0aWNhbCBzZWdtZW50cy4KCVRoaXMgcmVzdWx0cyBpbiBhIDUtNyUgc3BlZWR1cCBpbiByZW5kZXJpbmcgc3BlZWQuCgoyMDAyLTAxLTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkZWQgc29tZSB3cmFwcGVyIHNjcmlwdHMgdG8gbWFrZSB0aGUgaW5zdGFsbGF0aW9uIG1vcmUKCVVuaXgtZnJpZW5kbHkuCgoJKiBjb25maWd1cmUsIGluc3RhbGw6IE5ldyBmaWxlcy4KCgkqIElOU1RBTEwsIFJFQURNRS5VTlg6IFVwZGF0ZWQgaW5zdGFsbGF0aW9uIGRvY3VtZW50YXRpb24gdG8gdXNlIHRoZQoJbmV3ICdjb25maWd1cmUnIGFuZCAnaW5zdGFsbCcgc2NyaXB0cy4KCjIwMDItMDEtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMC42IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCgkqIGRvY3MvQlVHUywgZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBkb2N1bWVudGF0aW9uIGZvciAyLjAuNiByZWxlYXNlLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5OiBGaXhlZCBIVE1MIHF1b3RpbmcgaW4gc291cmNlcy4KCShodG1sX2Zvcm1hdCk6IFJlcGxhY2VkIHdpdGggLi4uCgkoaHRtbF9xdW90ZSk6IE5ldyBmdW5jdGlvbi4KCShodG1sX3F1b3RlMCk6IE5ldyBmdW5jdGlvbi4KCShEb2NDb2RlOjpkdW1wX2h0bWwpOiBTbWFsbCBpbXByb3ZlbWVudC4KCShEb2NQYXJhZ3JhcGg6OmR1bXAsIERvY0Jsb2NrOjpodG1sKTogVXNlIGh0bWxfcXVvdGUwIGFuZCBodG1sX3F1b3RlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogU2V0dGluZyBkZWZhdWx0IG9wdGlvbnMgZm9yCglhIHJlbGVhc2UgYnVpbGQgKGRlYnVnZ2luZyBvZmYsIGJ5dGVjb2RlIGludGVycHJldGVyIG9mZikuCgoJKiBzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRvdXRsbi5jLCBzcmMvY2FjaGUvZnRjY21hcC5jLAoJc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywKCXNyYy9zZm50L3R0bG9hZC5jLCBzcmMvc2ZudC90dHNiaXQuYzogUmVtb3Zpbmcgc21hbGwgY29tcGlsZXIKCXdhcm5pbmdzIChpbiBwZWRhbnRpYyBjb21waWxhdGlvbiBtb2RlcykuCgoyMDAyLTAxLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2FsaWduX2xpbmtlZF9lZGdlKTogTW9kaWZpZWQgY29tcHV0YXRpb24KCW9mIGF1dG8taGludGVkIHN0ZW0gd2lkdGhzOyB0aGlzIGF2b2lkcyBjb2xvciBmcmluZ2VzIGluCglgQ2xlYXJUeXBlLWxpa2UnIHJlbmRlcmluZy4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGhfSGVhZGVyLAoJVFRfTG9hZF9TaW1wbGVfR2x5cGgsIFRUX0xvYWRfQ29tcG9zaXRlX0dseXBoLCBsb2FkX3RydWV0eXBlX2dseXBoKToKCU1vZGlmaWVkIHRoZSBUcnVlVHlwZSBsb2FkZXIgdG8gbWFrZSBpdCBtb3JlIHBhcmFub2lkOyB0aGlzIGF2b2lkcwoJbmFzdHkgYnVmZmVyIG92ZXJmbG93cyBpbiB0aGUgY2FzZSBvZiBpbnZhbGlkIGdseXBoIGRhdGEgKGFzCgllbmNvdW50ZXJlZCBpbiB0aGUgb3V0cHV0IG9mIHNvbWUgYnVnZ3kgZm9udCBjb252ZXJ0ZXJzKS4KCjIwMDItMDEtMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRS5VTlg6IEFkZGVkIHNwZWNpYWwgUkVBRE1FIGZpbGUgZm9yIFVuaXggdXNlcnMuCgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfU3RyZWFtKTogRml4ZWQgdHlwby4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBBZGRlZCAjaW5jbHVkZSBGVF9PVVRMSU5FX0ggdG8gZ2V0IHJpZAoJb2YgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX091dGxpbmVfQ2hlY2spOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDEtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogQWRkIGNhc3QgdG8gYXZvaWQgY29tcGlsZXIKCXdhcm5pbmcuCgoyMDAyLTAxLTAzICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfU3RyZWFtKTogQWRkZWQgYSBmaXggdG8gZW5zdXJlIHRoYXQKCWFsbCBGcmVlVHlwZSBpbnB1dCBzdHJlYW1zIGFyZSBjbG9zZWQgaW4gY2hpbGQgcHJvY2Vzc2VzIG9mIGEgYGZvcmsnCglvbiBVbml4IHN5c3RlbXMuICBUaGlzIGlzIGltcG9ydGFudCB0byBhdm9pZCAocG90ZW50aWFsKSBhY2Nlc3MKCWNvbnRyb2wgaXNzdWVzLgoKMjAwMi0wMS0wMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBGaXhlZCBhIGJ1ZyB0aGF0IGNyYXNoZWQgdGhlCglsaWJyYXJ5IHdoZW4gZGVhbGluZyB3aXRoIGNlcnRhaW4gd2VpcmQgZm9udHMgbGlrZSBgU3RhbGluZ3JhZCcsIGluCglgc2Fkbi5wZmInICh0aGlzIGZvbnQgaGFzIG5vIGZ1bGwgZm9udCBuYW1lIGVudHJ5KS4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYywgaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmggKEZUX091dGxpbmVfQ2hlY2spOgoJTmV3IGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBjb25zaXN0ZW5jeSBvZiBvdXRsaW5lIGRhdGEuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IFVzZSBgRlRfT3V0bGluZV9DaGVjaycgdG8KCWVuc3VyZSB0aGF0IGxvYWRlZCBnbHlwaHMgYXJlIHZhbGlkLiAgVGhpcyBhbGxvd3MgY2VydGFpbiBmb250cyBsaWtlCglgdHQxMDk1bV8udHRmJyB0byBiZSBsb2FkZWQgZXZlbiB0aG91Z2ggaXQgYXBwZWFycyB0aGV5IGNvbnRhaW4KCXJlYWxseSBmdW5reSBnbHlwaHMuCgoJVGhlcmUgc3RpbGwgaXMgYSBidWcgdGhlcmUsIHRob3VnaC4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXggZXJyb3IgY29uZGl0aW9uLgoKMjAwMS0xMi0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCk6IEZpeCBhZHZhbmNlIHdpZHRoCgljb21wdXRhdGlvbiBvZiBhdXRvLWhpbnRlZCBnbHlwaHMuICBUaGlzIG5vdGljZWFibHkgaW1wcm92ZXMgdGhlCglzcGFjaW5nIG9mIGxldHRlcnMgaW4gS0RFIGFuZCBHbm9tZS4KCjIwMDEtMTItMjUgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBidWlsZHMvZG9zL2RldGVjdC5tazogQ29ycmVjdGluZyB0aGUgb3JkZXIgZm9yIEJvcmxhbmQgY29tcGlsZXJzOgoJMTYtYml0IGJjYyB3YXMgbmV2ZXIgc2VsZWN0ZWQsIGFsd2F5cyBvdmVycmlkZGVuIGJ5IDMyLWJpdCBiY2MzMi4KCjIwMDEtMTItMjIgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGZjL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IEhhbmRsZSBwcm9wZXJ0eSBgUE9JTlRfU0laRScKCWFuZCBmaXggaW5jb3JyZWN0IGNvbXB1dGF0aW9uIG9mIGBhdmFpbGFibGVfc2l6ZXMnLgoKMjAwMS0xMi0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCk6IEF1dG8taGludGVkIGdseXBocyBoYWQgYW4KCWluY29ycmVjdCBnbHlwaCBhZHZhbmNlIGluIHRoZSBjYXNlIG9mIG1vbm8td2lkdGggZm9udHMgKGxpa2UKCUNvdXJpZXIsIEFuZGFsZSBNb25vLCBhbmQgb3RoZXJzKS4KCjIwMDEtMTItMjIgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvKjogQWRhcHRhdGlvbnMgdG8gbGF0ZXN0IGNoYW5nZXMuCglTdXBwb3J0IGFkZGVkIGZvciBNb3JwaE9TLgoKMjAwMS0xMi0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChGVF9DT01QT05FTlQpOiBSZWRlZmluZSB0byBgdHJhY2VfcHNocmVjJy4KCShwc19tYXNrX3RhYmxlX21lcmdlLCBwc19oaW50c19vcGVuLCBwc19oaW50c19zdGVtLAoJcHNfaGludHNfdDFzdGVtMywgcHNfaGludHNfdDJtYXNrLCBwc19oaW50c190MmNvdW50ZXIpOiBGaXgKCUZUX0VSUk9SIG1lc3NhZ2VzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAoRlRfQ09NUE9ORU5UKTogRGVmaW5lIGFzCglgdHJhY2VfcHNoYWxnbzEnLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAoRlRfQ09NUE9ORU5UKTogRGVmaW5lIGFzCglgdHJhY2VfcHNoYWxnbzInLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCAoRlRfVHJhY2UpOiBVcGRhdGVkLgoKCSogZG9jcy9tb2R1bGVzLnR4dDogTmV3IGZpbGUuCgoyMDAxLTEyLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX2hpbnRzX3QybWFzaywgcHNfaGludHNfdDJjb3VudGVyKToKCUlnbm9yZSBpbnZhbGlkIGBoaW50bWFzaycgYW5kIGBjbnRybWFzaycgb3BlcmF0b3JzIChpbnN0ZWFkIG9mCglyZXR1cm5pbmcgYW4gZXJyb3IpLiAgR2x5cGggMjAyOCBvZiB0aGUgQ0ZGIGZvbnQgYE1TdW5nLUxpZ2h0LUFjcm8nCgljb3VsZG4ndCBiZSByZW5kZXJlZCBvdGhlcndpc2UgKGl0IHNlZW1zIGl0cyBjaGFyc3RyaW5nIGlzIGJ1Z2d5LAoJdGhvdWdoIHRoaXMgcmVxdWlyZXMgbW9yZSBhbmFseXNpcykuCgkoRlRfQ09NUE9ORU5UKTogRGVmaW5lLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfUGFyc2VfQ2hhclN0cmluZ3MpLCBzcmMvcHNhdXgvdDFkZWNvZGUuYwoJKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAoKiksIEZpeGVkIGEKCWJ1ZyB3aGVyZSB0aGUgWCBhbmQgWSBheGlzIHdoZXJlIGludmVyc2VkIGluIHRoZSBwb3N0c2NyaXB0IGhpbnRlci4KCVRoaXMgY2F1c2VkIHByb2JsZW0gd2hlbiBkaXNwbGF5aW5nIG9uIG5vbi1zcXVhcmUgc3VyZmFjZXMuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYzogcy92ZXJ0aWNhbC9kaW1lbnNpb24vLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfbmV3KTogUmVwbGFjZWQgYSBmbG9hdGluZwoJcG9pbnQgY29uc3RhbnQgd2l0aCBhIGZpeGVkLWZsb2F0IGVxdWl2YWxlbnQuICBGb3Igc29tZSByZWFzb25zIG5vdAoJYWxsIGNvbXBpbGVycyBhcmUgY2FwYWJsZSBvZiBkaXJlY3RseSBjb21wdXRpbmcgYSBmbG9hdGluZyBwb2ludGVyCgljb25zdGFudCBjYXN0ZWQgdG8gRlRfRml4ZWQsIGFuZCB3aWxsIGxpbmsgYSBtYXRoIGxpYnJhcnkgaW5zdGVhZC4KCjIwMDEtMTItMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9kZXN0cm95LCBmdGNfY2FjaGVfbG9va3VwKTogRml4Cgl0cmFjaW5nIHN0cmluZ3MuCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmMgKGZ0Y19jbWFwX2ZhbWlseV9pbml0KTogRGl0dG8uCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfZmFtaWx5X3RhYmxlX2FsbG9jLAoJZnRjX2ZhbWlseV90YWJsZV9mcmVlLCBGVENfTWFuYWdlcl9DaGVjayk6IERpdHRvLgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9sb2FkKTogRGl0dG8uCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfRG9uZV9MaWJyYXJ5KTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAxLTEyLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkZWQgUG9zdFNjcmlwdCBoaW50ZXIgc3VwcG9ydCB0byB0aGUgQ0ZGIGFuZCBDSUQgZHJpdmVycy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaCAoQ0ZGX0ZvbnQpOiBOZXcgbWVtYmVyCglgcHNoaW50ZXInLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0dldF9TdGFuZGFyZF9FbmNvZGluZyk6IE5ldyBmdW5jdGlvbi4KCSogc3JjL2NmZi9jZmZsb2FkLmg6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX0luaXRfQnVpbGRlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0J1aWxkZXJfSW5pdCk6IFRoaXMuCglBZGRlZCBuZXcgYXJndW1lbnQgYGhpbnRpbmcnLgoJKENGRl9Eb25lX0J1aWxkZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9CdWlsZGVyX0RvbmUpOiBUaGlzLgoJKENGRl9Jbml0X0RlY29kZXIpOiBBZGRlZCBuZXcgYXJndW1lbnQgYGhpbnRpbmcnLgoJKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IEltcGxlbWVudCB2c3RlbSBzdXBwb3J0LgoJKENGRl9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCUFkZCBoaW50aW5nIHN1cHBvcnQuCgkoY2ZmX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSk6IFVzZSBDRkZfR2V0X1N0YW5kYXJkX0VuY29kaW5nKCkuCgkoY2ZmX2FyZ3VtZW50X2NvdW50cyk6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaDogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZvYmpzLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9ISU5UU19ILgoJKENGRl9TaXplX0dldF9HbG9iYWxzX0Z1bmNzLCBDRkZfU2l6ZV9Eb25lLCBDRkZfU2l6ZV9Jbml0LAoJQ0ZGX1NpemVfUmVzZXQsIENGRl9HbHlwaFNsb3RfRG9uZSwgQ0ZGX0dMeXBoU2xvdF9Jbml0KTogTmV3CglmdW5jdGlvbnMuCgkoQ0ZGX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0ZhY2VfSW5pdCk6IFRoaXMuCglBZGQgaGludGVyIHN1cHBvcnQuCgkoQ0ZGX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0ZhY2VfRG9uZSk6IFRoaXMuCgkoQ0ZGX0luaXRfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRHJpdmVyX0luaXQpOiBUaGlzLgoJKENGRl9Eb25lX0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0RyaXZlcl9Eb25lKTogVGhpcy4KCSogc3JjL2NmZi9jZmZvYmpzLmg6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCAoQ0lEX0ZhY2VSZWMpOiBOZXcgbWVtYmVyCglgcHNoaW50ZXInLgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Mb2FkX0dseXBoKTogQWRkIGhpbnRlciBzdXBwb3J0LgoJKiBzcmMvY2lkL2NpZG9ianMuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0hJTlRTX0guCgkoQ0lEX0dseXBoU2xvdF9Eb25lLCBDSURfR2x5cGhTbG90X0luaXQsIENJRF9TaXplX0dldF9HbG9iYWxzX0Z1bmNzLAoJQ0lEX1NpemVfRG9uZSwgQ0lEX1NpemVfSW5pdCwgQ0lEX1NpemVfUmVzZXQpOiBOZXcgZnVuY3Rpb25zLgoJKENJRF9Eb25lX0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKENJRF9GYWNlX0RvbmUpOiBUaGlzLgoJKENJRF9Jbml0X0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKENJRF9GYWNlX0luaXQpOiBUaGlzLgoJQWRkIGhpbnRpbmcgc3VwcG9ydC4KCShDSURfSW5pdF9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENJRF9Ecml2ZXJfSW5pdCk6IFRoaXMuCgkoQ0lEX0RvbmVfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDSURfRHJpdmVyX0RvbmUpOiBUaGlzLgoJKiBzcmMvY2lkL2NpZG9ianMuaDogVXBkYXRlZC4KCSogc3JjL2NpZHJpdmVyLmM6IFVwZGF0ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHQyX2hpbnRfc3RlbXMpOiBGaXhlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Eb25lX0xpYnJhcnkpOiBGaXhlZCBhIHN0dXBpZCBidWcgdGhhdAoJY3Jhc2hlZCB0aGUgbGlicmFyeSBvbiBleGl0LgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCk6IEVuYWJsZSBmb250IG1hdHJpeAoJdHJhbnNmb3JtYXRpb24gb2YgaGludGVkIGdseXBocy4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfcmVhZF9zdWJycyk6IEZpeCBlcnJvciBjb25kaXRpb24uCgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0ZhY2VfRG9uZSk6IEZpeGVkIGEgbWVtb3J5IGxlYWs7IHRoZSBzdWJycwoJcm91dGluZXMgd2VyZSBuZXZlciByZWxlYXNlZCB3aGVuIENJRCBmYWNlcyB3ZXJlIGRlc3Ryb3llZC4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oLCBzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZnbG9hZC5jOiBVcGRhdGVkCgl0byBtb3ZlIHRoZSBkZWZpbml0aW9uIG9mIGVuY29kaW5nIHRhYmxlcyBiYWNrIHdpdGhpbiBgY2ZmbG9hZC5jJwoJaW5zdGVhZCBvZiBtYWtpbmcgdGhlbSBwYXJ0IG9mIGEgc2hhcmVkIGhlYWRlciAoY2F1c2luZyBwcm9ibGVtcyBpbgoJYG11bHRpJyBidWlsZHMpLiAgVGhpcyByZXZlcnRzIGNoYW5nZSAyMDAxLTA4LTA4LgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkIGZvciAyLjAuNiByZWxlYXNlLgoJKiBkb2NzL1RPRE86IEFkZGVkIGBzdGVtMyBhbmQgY291bnRlciBoaW50cyBzdXBwb3J0JyB0byB0aGUgVE9ETwoJbGlzdCBmb3IgdGhlIFBvc3RzY3JpcHQgaGludGVyLgoJKiBkb2NzL0JVR1M6IENsb3NlZCB0aGUgQVVUT0hJTlQtTk8tU0JJVFMgYnVnLgoKMjAwMS0xMi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNhY2hlLmg6IEFkZGVkIGNvbW1lbnRzIHRvIGluZGljYXRlIHRoYXQKCXNvbWUgb2YgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucyBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucwoJdGhhdCBuZWVkIHRvIGltcGxlbWVudCBjdXN0b20gY2FjaGUgdHlwZXMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChjdXJfdG9fb3JnLCBvcmdfdG9fY3VyKTogRml4ZWQgYSBuYXN0eSBidWcKCXRoYXQgcHJldmVudGVkIGNvbXBvc2l0ZXMgZnJvbSBsb2FkaW5nIGNvcnJlY3RseSwgZHVlIHRvIG1pc3NpbmcKCXBhcmVudGhlc2VzIGFyb3VuZCBtYWNybyBwYXJhbWV0ZXJzLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKTogTWFrZSB0aGUgYHBvc3QnIGFuZCBgbmFtZScKCXRhYmxlcyBvcHRpb25hbCB0byBsb2FkIFBDTCBmb250cyBwcm9wZXJseS4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGgpLCBzcmMvYmFzZS9mdG9ianMuYwoJKEZUX0xvYWRfR2x5cGgpLCBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0xPQURfU0JJVFNfT05MWSk6CglgRml4ZWQnIHRoZSBidWcgdGhhdCBwcmV2ZW50ZWQgZW1iZWRkZWQgYml0bWFwcyB0byBiZSBsb2FkZWQgd2hlbgoJdGhlIGF1dG8taGludGVyIGlzIHVzZWQuICBUaGlzIGFjdHVhbGx5IGlzIGEgaGFjayBidXQgd2lsbCBiZSBlbm91Z2gKCXVudGlsIHRoZSBpbnRlcm5hbCByZS1kZXNpZ24gc2NoZWR1bGVkIGZvciBGcmVlVHlwZSAyLjEuCgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBGaXhlZCBhIG5hc3R5IG91dGxpbmUKCXNoaWZ0aW5nIGJ1ZyBpbiB0aGUgbW9ub2Nocm9tZSByZW5kZXJlci4KCgkqIFJFQURNRTogVXBkYXRlZCB2ZXJzaW9uIG51bWJlcnMgdG8gMi4wLjYuCgoyMDAxLTEyLTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4IHRlc3QgZm9yIGludmFsaWQKCWdseXBoIGhlYWRlci4KCjIwMDEtMTItMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oIChGVENfTm9kZV9VbnJlZik6IFJlbW92ZWQuICBJdCBpcwoJYWxyZWFkeSBpbiBmdGNtYW5hZy5oLgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9sb2FkKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYGdmYW0nLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX2ZhbWlseV90YWJsZV9hbGxvYywKCSogZnRjX2ZhbWlseV90YWJsZV9mcmVlKTogVXNlIEZUX0VYUE9SVF9ERUYuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaDogVXBkYXRlZC4KCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2Rlc3Ryb3kpOiBVc2UgRlRfRVhQT1JUX0RFRi4KCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfbm9kZV9pbml0KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYGNmYW0nLgoJUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgkoRlRDX0NNYXBDYWNoZV9Mb29rdXApOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgkoZnRjX2NtYXBfZmFtaWx5X2luaXQpOiBEaXR0by4KCShGVENfQ01hcENhY2hlX0xvb2t1cCk6IERpdHRvLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBJbmNyZWFzZSBgdmVyc2lvbl9pbmZvJyB0byA4OjA6Mi4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMTItMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9tYWMvUkVBRE1FOiBVcGRhdGVkLgoKMjAwMS0xMi0xNCAgU2NvdHQgTG9uZyAgPHNjb3R0QHN3aWZ0dmlldy5jb20+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4aW5nIGNyYXNoIHdoZW4KCWRlYWxpbmcgd2l0aCBpbnZhbGlkIGZvbnRzIChpLmUuIGdseXBoIHNpemUgPCAxMCBieXRlcykuCgoyMDAxLTEyLTE0ICBTYW0gTGF0aW5nYSAgPHNsb3VrZW5AZGV2b2x1dGlvbi5jb20+CgoJKiBidWlsZHMvbWFjL2ZyZWV0eXBlLm1ha2U6IEEgbmV3IE1ha2VmaWxlIHRvIGJ1aWxkIHdpdGggTVBXIG9uCglNYWNPUyBjbGFzc2ljLgoKMjAwMS0xMi0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaCksIHNyYy90eXBlMS90MWdsb2FkLmMKCShUMV9Mb2FkX0dseXBoKSwgc3JjL2NpZC9jaWRnbG9hZC5jIChDSURfTG9hZF9HbHlwaCksCglzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9Mb2FkX0dseXBoKTogRml4ZWQgYSBzZXJpb3VzIGJ1ZyBjb21tb24gdG8KCWFsbCBmb250IGRyaXZlcnMgKHRoZSBhZHZhbmNlIHdpZHRoIHdhcyBuZXZlciBoaW50ZWQgd2hlbiBpdAoJc2hvdWxkKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGRlYnVnX21lbV9kdW1teSkgWyFGVF9ERUJVR19NRU1PUlldOiBEb24ndAoJdXNlIGBleHRlcm4nIGtleXdvcmQuCgoyMDAxLTEyLTEyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc2NhbGVfem9uZXMsIHBzaF9ibHVlc19zbmFwX3N0ZW0KCXBzaF9nbG9iYWxzX25ldyk6IEFkZGluZyBjb3JyZWN0IEJsdWVTY2FsZS9CbHVlU2hpZnQgc3VwcG9ydCwgcGx1cwoJZmFtaWx5IGJsdWVzIHByb2Nlc3NpbmcuCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9CbHVlc1JlYyk6IFVwZGF0ZWQuCgoJU3RhcnRlZCBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIFBvc3RzY3JpcHQgaGludGVyIGluIHRoZSBDRkYgbW9kdWxlLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSC4KCShDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBJbXBsZW1lbnQgaXQuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaDogVXBkYXRlZC4KCjIwMDEtMTItMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5tNDogU29tZSBwb3J0YWJpbGl0eSBmaXhlcy4KCjIwMDEtMTItMTEgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIHNyYy9iYXNlL2Rlc2NyaXAubW1zIChPQkpTKTogQWRkIGZ0ZGVidWcub2JqLgoKMjAwMS0xMi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfR2VuZXJpY19IZWFkZXIpOiBUeXBvcy4KCjIwMDEtMTItMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogTW9kaWZpZWQgdGhlIHNjcmlwdCB0byBwcmV2ZW50CglwYXNzaW5nIGAtTC91c3IvbGliJyB0byBnY2MuCgoJKiBkb2NzL0ZUTC5UWFQ6IFNpbXBsZSBmaXggKGNoYW5nZSBgTElDRU5TRS5UWFQnIHRvIGBGVEwuVFhUJykuCgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIubTQ6IE5ldyBmaWxlIGZvciBjaGVja2luZyBjb25maWd1cmUgcGF0aHMuCglXZSBuZWVkIHRvIGluc3RhbGwgaXQgaW4gJChwcmVmaXgpL3NoYXJlL2FjbG9jYWwvZnJlZXR5cGUyLm00IGJ1dCBJCglkaWRuJ3QgbW9kaWZ5IGJ1aWxkcy91bml4L2luc3RhbGwubWsgeWV0LgoKCSogSU5TVEFMTDogVXBkYXRlZCB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgd2l0aAoJSmFtLiAgVGhleSB3ZXJlIHNpbXBseSB3cm9uZy4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX0Nvcyk6IEZpeGVkIGEgc21hbGwgYnVnIHRoYXQgY2F1c2VkCglzbGlnaHRseSBpbXByb3BlciByZXN1bHRzIGZvciBgRlRfQ29zJyBhbmQgYEZUX1NpbicgKGV4YW1wbGU6CglGVF9TaW4oMCkgPT0gLTEhKS4KCjIwMDEtMTItMTEgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEdFVF9Mb25nTEUsIEdFVF9VTG9uZ0xFKToKCUZpeGVkIGluY29ycmVjdCBhcmd1bWVudCB0eXBlcy4KCjIwMDEtMTItMTAgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfSW5pdF9GYWNlKTogQWxsb3cgWGZ0IHRvIHVzZSBQQ0YgZm9udHMKCWJ5IHNldHRpbmcgdGhlIGBmYWNlLT5tZXRyaWNzLm1heF9hZHZhbmNlJyBjb3JyZWN0bHkuCgoyMDAxLTEyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NtYXAuaCwgc3JjL2NhY2hlL2Z0Y2NtYXAuYzogQWRkZWQgbmV3CgljaGFybWFwIGNhY2hlLgoJKiBzcmMvY2FjaGUvZnRjYWNoZS5jOiBVcGRhdGVkLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfaGludF9lZGdlcyk6IHMvVU5VU0VEL0ZUX1VOVVNFRC8uCgoyMDAxLTEyLTA2ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJQWRkZWQgc3VwcG9ydCBmb3IgcmVhZGluZyAuZGZvbnQgZmlsZXMgb24gTWFjIE9TIFguICBBbHNvIGFkZGVkIGEKCW5ldyByb3V0aW5lIHdoaWNoIGxvb2tzIHVwIGEgZ2l2ZW4gZm9udCBieSBuYW1lIGluIHRoZSBNYWMgT1MgYW5kCglyZXR1cm5zIHRoZSBkaXNrIGZpbGUgd2hlcmUgaXQgcmVzaWRlcy4KCgkqIHNyYy9iYXNlL2Z0bWFjLmM6IEluY2x1ZGUgPEZpbGVzLmg+IGFuZCA8VGV4dFV0aWxzLmg+LgoJKGlzX2Rmb250KTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbi4KCShGVF9OZXdfRmFjZV9Gcm9tX2Rmb250KTogTmV3IGZ1bmN0aW9uLgoJKEZUX0dldEZpbGVfRnJvbV9NYWNfTmFtZSk6IE5ldyBleHBvcnRlZCBmdW5jdGlvbi4KCShGVF9OZXdfRmFjZSk6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtYWMuaDogVXBkYXRlZC4KCjIwMDEtMTItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9KYW1maWxlLCBzcmMvY2FjaGUvcnVsZXMubWs6IFVwZGF0ZWQuCgoyMDAxLTEyLTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMOiBTbWFsbCB1cGRhdGUuCgoyMDAxLTEyLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IFJlLW9yZGVyZWQgY29kZSBmb3IKCWRlYnVnZ2luZyBwdXJwb3Nlcy4KCUNvbW1lbnQgb3V0IHVzZSBvZiBgb3JpZ2luJy4KCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcik6IEZpeGVkIGEgbmFzdHkgaGlkZGVuIGJ1ZwoJd2hlcmUgb3V0bGluZSBzaGlmdGluZyB3YXNuJ3QgY29ycmVjdGx5IHVuZG9uZSBhZnRlciBiaXRtYXAKCXJhc3Rlcml6YXRpb24uICBUaGlzIGNyZWF0ZWQgcHJvYmxlbXMgd2l0aCBjZXJ0YWluIGdseXBocyAobGlrZSAnIicKCW9mIGNlcnRhaW4gZm9udHMpIGFuZCB0aGUgY2FjaGUgc3lzdGVtLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9pbml0KTogRml4IHR5cG8uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfaW5pdCk6IEZpeCB0eXBvLgoJKHBzMl9oaW50c19hcHBseSk6IFNtYWxsIGZpeC4KCjIwMDEtMTItMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfaW5pdCksCglzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX2luaXQpOiBSZW1vdmVkIGNvbXBpbGVyCgl3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLyosIHNyYy9jYWNoZS8qOgoJWWV0IGFub3RoZXIgbWFzc2l2ZSByZXdyaXRlIG9mIHRoZSBjYWNoaW5nIHN1Yi1zeXN0ZW0gaW4gb3JkZXIgdG8KCWJvdGggaW5jcmVhc2UgcGVyZm9ybWFuY2UgYW5kIGFsbG93IHNpbXBsZXIgY2FjaGUgc3ViLWNsYXNzaW5nLiAgQXMKCWFuIGV4YW1wbGUsIHRoZSBjb2RlIGZvciB0aGUgaW1hZ2UgYW5kIHNiaXQgY2FjaGVzIGlzIG5vdyBtdWNoCglzaW1wbGVyLgoKCUkgc3RpbGwgbmVlZCB0byB1cGRhdGUgdGhlIGRvY3VtZW50YXRpb24gaW4KCXd3dy9mcmVldHlwZTIvZG9jcy9jYWNoZS5odG1sIHRvIHJlZmxlY3QgdGhlIG5ldyBkZXNpZ24gdGhvdWdoLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfQ0FDSEVfQ0hBUk1BUF9IKTogTmV3CgltYWNyby4KCShGVF9DQUNIRV9JTlRFUk5BTF9DQUNIRV9IKTogVXBkYXRlZC4KCjIwMDEtMTItMDUgIERhdmlkIEtyYXVzZSAgPGZyZWV0eXBlQGRhdmlka3JhdXNlLmNvbT4KCgkqIGRvY3MvbGljZW5zZS50eHQ6IHMvWCBXaW5kb3dzL1ggV2luZG93IFN5c3RlbS8uCgoyMDAxLTEyLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmM6IEZpeCBkZWZpbml0aW9uIGNvbmRpdGlvbiBvZiBNRU1fU2V0KCkuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChNX1kpOiBDaGFuZ2UgdmFsdWUgdG8gMTkyLgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fdGFibGVfZGVzdHJveSk6IEZpeCBwcmludGYoKSBwYXJhbWV0ZXIuCglSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKiBzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoZnRjX2ltYWdlX25vZGVfaW5pdCwKCWZ0Y19pbWFnZV9ub2RlX2NvbXBhcmUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfd2VpZ2h0KTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGUuCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoTUVNX1NldCk6IE1vdmUgZGVmaW5pdGlvbiBkb3duIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogVXNlIFVOVVNFRCgpIHRvCglhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHRhYmxlTmFtZXMpOiBVc2UgYGNvbnN0Jy4KCShwY2ZfcmVhZF9UT0MpOiBDaGFuZ2UgY291bnRlciBuYW1lIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmcuCglVc2UgYGNvbnN0Jy4KCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChwc19oaW50c19jbG9zZSk6IFJlbW92ZSByZWR1bmRhbnQKCWRlY2xhcmF0aW9uLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX2luaXQpOiBSZW5hbWUgdmFyaWFibGVzCgl0byBhdm9pZCBzaGFkb3dpbmcuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmg6IFJlbW92ZSBkb3VibGUgZGVjbGFyYXRpb25zIG9mIGBUMV9TaXplX0luaXQoKScKCWFuZCBgVDFfU2l6ZV9Eb25lKCknLgoKMjAwMS0xMS0yMCAgQW50b2luZSBMZWNhICA8YW50b2luZWxlY2FAbXVsdGltYW5pYS5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IEFkZGVkIHNvbWUgbmV3IE1pY3Jvc29mdCBsYW5ndWFnZQoJY29kZXMgYW5kIExDSURzIGFzIGZvdW5kIGluIE1TRE4gKFBhc3Nwb3J0IFNESykuICBBbHNvIGFkZGVkCgljb21tZW50cyBhYm91dCB0aGUgbWVhbmluZyBvZiBiaXQgNTcgb2YgdGhlIGBPUy8yJyB0YWJsZQoJKFRUX1VDUl9TVVJST0dBVEVTKSB3aGljaCAod2l0aCBPcGVuVHlwZSB2LjEuMykgbm93IG1lYW5zIGB0aGVyZSBpcwoJYSBjaGFyYWN0ZXIgYmV5b25kIDB4RkZGRiBpbiB0aGlzIGZvbnQnLiAgVGhhbmtzIHRvIERldGxlZiBX/HJrbmVyCgk8VGV0aVNvZnRAYXBnLmxhaG4uZGU+IGZvciBub3RpY2luZyB0aGlzLgoKMjAwMS0xMS0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3twc2hhbGdvMi5jLCBwc2hhbGdvMS5jfTogRml4ZWQgc3R1cGlkIGJ1ZyBpbiBzb3J0aW5nCglyb3V0aW5lIHRoYXQgY3JlYXRlZCBuYXN0eSBhbGlnbm1lbnQgYXJ0ZWZhY3RzLgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jLCB0ZXN0cy9ndmlldy5jOiBEZWJ1Z2dpbmcgdXBkYXRlcy4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBEZS1hY3RpdmF0ZWQgZXhwZXJpbWVudGFsIGdhbW1hIHN1cHBvcnQuCglBcHBhcmVudGx5LCBgb3B0aW1hbCcgZ2FtbWEgdGFibGVzIGRlcGVuZCBvbiB0aGUgbW9uaXRvciB0eXBlLAoJcmVzb2x1dGlvbiBhbmQgZ2VuZXJhbCBrYXJtYSwgc28gaXQncyBiZXR0ZXIgdG8gY29tcHV0ZSB0aGVtIG91dHNpZGUKCW9mIHRoZSByYXN0ZXJpemVyIGl0c2VsZi4KCShncmF5X2NvbnZlcnRfZ2x5cGgpOiBVc2UgYHZvbGF0aWxlJyBrZXl3b3JkLgoKMjAwMS0xMC0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBleHBlcmltZW50YWwgYGdhbW1hJyBzdXBwb3J0LiAgVGhpcyBwcm9kdWNlcyBzbW9vdGhlciBnbHlwaHMKCWF0IHNtYWxsIHNpemVzIGZvciB2ZXJ5IGxpdHRsZSBjb3N0LgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX2luaXRfZ2FtbWEpOiBOZXcgZnVuY3Rpb24uCgkoZ3JheV9yYXN0ZXJfbmV3KTogVXNlIGl0LgoKCVZhcmlvdXMgZml4ZXMgdG8gdGhlIGF1dG8taGludGVyLiAgVGhleSBtZXJlbHkgaW1wcm92ZSB0aGUgb3V0cHV0IG9mCglzYW5zLXNlcmlmIGZvbnRzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzdGlsbCBwcm9ibGVtcyB3aXRoIHNlcmlmZWQKCWZvbnRzIGFuZCBjb21wb3NpdGVzIChhY2NlbnRlZCBjaGFyYWN0ZXJzKS4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbG9hZCwKCWFoX291dGxpbmVfbGlua19zZWdtZW50cyk6IEltcGxlbWVudCBpdC4KCUZpeCB0eXBvcy4KCShhaF9vdXRsaW5lX3NhdmUsIGFoX291dGxpbmVfY29tcHV0ZV9zZWdtZW50cyk6IEZpeCB0eXBvcy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9hbGlnbl9zZXJpZl9lZGdlKTogTmV3IGFyZ3VtZW50CglgdmVydGljYWwnLiAgSW1wbGVtZW50IGltcHJvdmVtZW50LgoJKGFoX2hpbnRfZWRnZXNfMywgYWhfaGludGVyX2hpbnRfZWRnZXMpOiBJbXBsZW1lbnQgaXQuCglGaXggdHlwb3MuCgkoYWhfaGludGVyX2FsaWduX3N0cm9uZ19wb2ludHMsIGFoX2hpbnRlcl9hbGlnbl93ZWFrX3BvaW50cyk6IEZpeAoJdHlwb3MuCgkoYWhfaGludGVyX2xvYWQpOiBTZXQgYGFoX2RlYnVnX2hpbnRlcicgaWYgREVCVUdfSElOVEVSIGlzIGRlZmluZWQuCgkqIHNyYy9hdXRvaGludC9haG1vZHVsZS5jOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgREVCVUdfSElOVEVSIG1hY3JvLgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oOiBEaXR0by4KCShBSF9IaW50ZXIpOiBSZW1vdmUgYGRpc2FibGVfaG9yel9lZGdlcycgYW5kIGBkaXNhYmxlX3ZlcnRfZWRnZXMnCgkobWFraW5nIHRoZW0gZ2xvYmFsIGFzIGBhaF9kZWJ1Z19kaXNhYmxlX2hvcnonIGFuZAoJYGFoX2RlYnVnX2Rpc2FibGVfdmVydCcpLgoJRml4IHR5cG9zLgoKCSogdGVzdHMvZ3ZpZXcuYzogVXBkYXRlZCB0aGUgZGVidWdnaW5nIGdseXBoIHZpZXdlciB0byBzaG93IHRoZQoJaGludHMgZ2VuZXJhdGVkIGJ5IHRoZSBgYXV0b2hpbnQnIG1vZHVsZS4KCjIwMDEtMTAtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjaHVuay5jIChmdGNfY2h1bmtfY2FjaGVfbG9va3VwKTogRml4ZWQgYSBidWcgdGhhdAoJY29uc2lkZXJhYmx5IGxvd2VyZWQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBhYnN0cmFjdCBjaHVuayBjYWNoZS4KCjIwMDEtMTAtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLyouaCwKCXNyYy9jYWNoZS8qLmM6IE1ham9yIHJlLWRlc2lnbiBvZiB0aGUgY2FjaGUgc3ViLXN5c3RlbSB0byBwcm92aWRlCgliZXR0ZXIgcGVyZm9ybWFuY2UgYXMgd2VsbCBhcyBhbiBgQWNxdWlyZScvYFJlbGVhc2UnIEFQSS4gIFNlZW1zIHRvCgl3b3JrIHdlbGwgaGVyZSwgYnV0IHByb2JhYmx5IG5lZWRzIGEgYml0IG1vcmUgdGVzdGluZy4KCjIwMDEtMTAtMjYgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCgkqIGJ1aWxkcy9tYWMvUkVBRE1FOiBVcGRhdGVkIHRvIHJlZmxlY3QgbXkgdGFraW5nIG92ZXIgdGhlIHByb2plY3QKCWFuZCB0aGF0IGlzIG5vdyBiZWluZyBhY3RpdmVseSBtYWludGFpbmVkLgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAocGFyc2VfZm9uZCk6IEFwcGxpZWQgcGF0Y2hlcyBmcm9tIFBhdWwgTWlsbGVyCgk8cGF1bG1AcHJvZm91bmRlZmZlY3RzLmNvbT4gdG8gc3VwcG9ydCBsb2FkaW5nIGEgZmFjZSBvdGhlciB0aGFuIHRoZQoJZmlyc3QgZnJvbSBhIEZPTkQgcmVzb3VyY2UuCgkoRlRfTmV3X0ZhY2VfRnJvbV9GT05EKTogVXBkYXRlZC4KCjIwMDEtMTAtMjUgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCgkqIGJ1aWxkcy9tYWMvZnRsaWIucHJqOiBVcGRhdGUgb2YgQ29kZVdhcnJpb3IgcHJvamVjdCBmaWxlIGZvciBNYWMKCU9TIGZvciBsYXRlc3QgdmVyc2lvbiAoNykgb2YgQ1dQcm8gYW5kIGZvciByZWNlbnQgY2hhbmdlcyB0byB0aGUgRlQKCXNvdXJjZSB0cmVlLgoKMjAwMS0xMC0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogVXBkYXRlZCBjb21tZW50cyB0byBleHBsYWluCglwcmVjaXNlbHkgaG93IHRvIHVzZSBwcm9qZWN0LXNwZWNpZmljIG1hY3JvIGRlZmluaXRpb25zIHdpdGhvdXQKCW1vZGlmeWluZyB0aGlzIGZpbGUgbWFudWFsbHkuCgoJKEZUX0NPTkZJR19GT1JDRV9JTlQ2NCk6IERlZmluZS4KCgkoRlRfREVCVUdfTUVNT1JZKTogTmV3IG1hY3JvLgoKMjAwMS0xMC0yNCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnkpOiBBZGRlZCBhIG1pc3NpbmcgYHsnLgoKMjAwMS0xMC0yMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oLCBzcmMvYmFzZS9mdGRiZ21lbS5jOgoJSW1wcm92ZW1lbnRzIHRvIHRoZSBtZW1vcnkgZGVidWdnZXIgdG8gcmVwb3J0IG1vcmUgaW5mb3JtYXRpb24gaW4KCWNhc2Ugb2YgZXJyb3JzLiAgQWxzbywgc29tZSBhbGxvY2F0aW9ucyB0aGF0IG9jY3VycmVkIHRocm91Z2ggUkVBTExPQwoJY291bGRuJ3QgYmUgcHJldmlvdXNseSBjYXRjaGVkIGNvcnJlY3RseS4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfY29tcHV0ZV9zZWdtZW50cywKCWFoX291dGxpbmVfY29tcHV0ZV9lZGdlcyksIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoZnRfYmxhY2tfbmV3KSwKCXNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9zcGFuLCBncmF5X3Jhc3Rlcl9uZXcpOiBSZXBsYWNlZAoJbGliZXJhbCB1c2VzIG9mIG1lbXNldCgpIGJ5IHRoZSBNRU1fU2V0KCkgbWFjcm8uCgoyMDAxLTEwLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKFVwZGF0ZSk6IFJlbW92ZWQgdG8gYmUgaW5saW5lZCBpbiAuLi4KCShTb3J0KTogVXBkYXRlZC4KCjIwMDEtMTAtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KSwKCWJ1aWxkcy92bXMvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJYnVpbGRzL2FtaWdhL2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KSwKCXNyYy9iYXNlL2Z0ZGJnbWVtLmM6IFVwZGF0ZWQgdGhlIG1lbW9yeSBkZWJ1Z2dlciBhbmQKCXBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBvZiBgZnRzeXN0ZW0nIGluIG9yZGVyIHRvIGJlIGFibGUKCXRvIGRlYnVnIG1lbW9yeSBhbGxvY2F0aW9ucyBvbiBVbml4LCBWTVMgYW5kIEFtaWdhIHRvbyEKCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfcmVjb3JkX21hc2spOiBSZW1vdmVkCglzb21lIGJvZ3VzIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oLCBzcmMvYmFzZS9mdGRiZ21lbS5jOgoJTW9kaWZpZWQgdGhlIGRlYnVnZ2luZyBtZW1vcnkgbWFuYWdlciB0byByZXBvcnQgdGhlIGxvY2F0aW9uIChzb3VyY2UKCWZpbGUgbmFtZSArIGxpbmUgbnVtYmVyKSB3aGVyZSBsZWFrZWQgbWVtb3J5IGJsb2NrcyBhcmUgYWxsb2NhdGVkIGluCgl0aGUgc291cmNlIGZpbGUuCgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jOiBOZXcgZGVidWdnaW5nIG1lbW9yeSBtYW5hZ2VyLiAgWW91IG11c3QKCWRlZmluZSB0aGUgRlRfREVCVUdfTUVNT1JZIG1hY3JvIGluIGBmdG9wdGlvbi5oJyB0byBlbmFibGUgaXQuICBJdAoJd2lsbCByZWNvcmQgZXZlcnkgbWVtb3J5IGJsb2NrIGFsbG9jYXRlZCBhbmQgcmVwb3J0IHNpbXBsZSBlcnJvcnMKCWxpa2UgbWVtb3J5IGxlYWtzIGFuZCBkb3VibGUgZGVsZXRlcy4KCgkqIHNyYy9iYXNlL0phbWZpbGU6IEluY2x1ZGUgZnRkYmdtZW0uCgkqIHNyYy9iYXNlL3J1bGVzLm1rOiBEaXR0by4KCSogc3JjL2Jhc2UvZnRiYXNlLmM6IEluY2x1ZGUgZnRkYmdtZW0uYy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IEFkZGVkIHRoZSBGVF9ERUJVR19NRU1PUlkKCW1hY3JvIGRlZmluaXRpb24uCgoJKiBzcmMvYmFzZS9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSk6IE1vZGlmaWVkIHRoZQoJYmFzZSBjb21wb25lbnQgdG8gdXNlIHRoZSBkZWJ1Z2dpbmcgbWVtb3J5IG1hbmFnZXIgd2hlbiB0aGUgbWFjcm8KCUZUX0RFQlVHX01FTU9SWSBpcyBkZWZpbmVkLgoKMjAwMS0xMC0yMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfRG9uZV9Gb250KTogRnJlZSBzdWJmb250cyBhcnJheSBvbmx5IGlmCgl3ZSBhcmUgd29ya2luZyB3aXRoIGEgQ0lEIGtleWVkIENGRiBmb250LiAgT3RoZXJ3aXNlLCBhIHZhcmlhYmxlCgl0aGF0IHdhcyBuZXZlciBhbGxvY2F0ZWQgbWVtb3J5IG1pZ2h0IGZyZWVkLiAgVGhpcyBpcyBhIGNvcnJlY3Rpb24KCXRvIHRoZSBwcmV2aW91cyBwYXRjaCBmb3IgZnJlZWluZyBzdWJmb250cy4KCjIwMDEtMTAtMjEgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0RvbmVfRm9udCk6IEZyZWUgdGhlIHN1YmZvbnRzIGFycmF5IHRvCglhdm9pZCBhIG1lbW9yeSBsZWFrLgoKMjAwMS0xMC0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jLAoJc3JjL3BzaGludGVyL3BzaGdsb2IuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MgaW4gcGVkYW50aWMgbW9kZXMKCShpbiBtdWx0aS1vYmplY3QgY29tcGlsYXRpb24gbW9kZSwgbWFpbmx5KS4KCjIwMDEtMTAtMjAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogQWRkIGEgdGVzdCB0byBtYWtlIHN1cmUKCXRoYXQgY3VzdG9tIGVuY29kaW5ncyAoaS5lLiwgbmVpdGhlciBTdGFuZGFyZEVuY29kaW5nIG5vcgoJRXhwZXJ0RW5jb2RpbmcpIGFyZSBub3QgbG9hZGVkIHR3aWNlIHdoZW4gdGhlIFR5cGUgMSBmb250IGlzCglzeW50aGV0aWMuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbmFtZSwgcGFyc2Vfc3VicnMpOiBBZGRlZCBhIHRlc3QKCWZvciB3aGVuIGxvYWRpbmcgc3ludGhldGljIGZvbnRzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmb250IG5hbWUKCWFuZCBzdWJyb3R1aW5lcyBhcmUgbm90IGxvYWRlZCB0d2ljZS4gIFRoaXMgaXMgdG8gcmVtb3ZlIGEgbWVtb3J5CglsZWFrIHRoYXQgb2NjdXJyZWQgYmVjYXVzZSB0aGUgb3JpZ2luYWwgbWVtb3J5IGJsb2NrcyBmb3IgdGhlc2UKCW9iamVjdHMgd2VyZSBub3QgZGVhbGxvY2F0ZWQgd2hlbiB0aGUgb2JqZWN0cyB3ZXJlIHBhcnNlZCB0aGUKCXNlY29uZCB0aW1lLgoKMjAwMS0xMC0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMsIHNyYy9wc2hpbnRlci9wc2hnbG9iLmgsCglzcmMvcHNoaW50ZXIvcHNocmVjLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jOiBHZXR0aW5nIHJpZCBvZgoJY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvcHNoaW50ZXIvbW9kdWxlLm1rLCBzcmMvcHNoaW50ZXIvcnVsZXMubWs6IEFkZGluZyBjb250cm9sCglmaWxlcyB0byBidWlsZCB0aGUgUG9zdFNjcmlwdCBoaW50ZXIgd2l0aCB0aGUgYG9sZCcgYnVpbGQgc3lzdGVtLgoKMjAwMS0xMC0xOSAgSmFjb2IgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGRlc2NyaXAubW1zLCBzcmMvcHNoaW50ZXIvZGVzY3JpcC5tbXM6IFVwZGF0ZXMgdG8gdGhlIFZNUyBidWlsZAoJZmlsZXMuCgoyMDAxLTEwLTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oLCBzcmMvdG9vbHMvZ2xuYW1lcy5weTogUmV3cm90ZSB0aGUKCWBnbG5hbWVzLnB5JyBzY3JpcHQgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYHBzdGFibGVzLmgnIGhlYWRlciBmaWxlLgoJVGhlIG9sZCBvbmUgY29udGFpbmVkIGEgc2VyaW91cyBidWcgdGhhdCBtYWRlIEZyZWVUeXBlIHJldHVybgoJaW5jb3JyZWN0IGdseXBoIG5hbWVzIGZvciBjZXJ0YWluIGdseXBocy4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcyk6IENoYW5naW5nIGNvbXB1dGF0aW9uIG9mCglwaXhlbCBzaXplIGZyb20gY2hhcmFjdGVyIHNpemUgdG8gdXNlIHJvdW5kaW5nLiAgVGhpcyBpcyBhbgoJZXhwZXJpbWVudCB0byBzZWUgd2hldGhlciB0aGlzIGdpdmVzIHZhbHVlcyBzaW1pbGFyIHRvIFdpbmRvd3MgZm9yCglzY2FsZWQgYXNjZW50L2Rlc2NlbnQvZXRjLgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX0RpdjY0YnkzMik6IENoYW5nZWQgdGhlIGltcGxlbWVudGF0aW9uCglzbGlnaHRseSBzaW5jZSB0aGUgb3JpZ2luYWwgY29kZSB3YXMgbWlzLWNvbXBpbGVkIG9uIE1hYyBtYWNoaW5lcwoJdXNpbmcgdGhlIE1QVyBDIGNvbXBpbGVyLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1JlYWxsb2MpOiBXaGVuIGEgbWVtb3J5IGJsb2NrIHdhcyBncm93bgoJdGhyb3VnaCBGVF9SZWFsbG9jKCksIHRoZSBuZXcgYnl0ZXMgd2VyZSBub3Qgc2V0IHRvIDAsIHdoaWNoIGNyZWF0ZWQKCXNvbWUgc3RyYW5nZSBidWdzIGluIHRoZSBQb3N0U2NyaXB0IGhpbnRlci4KCShkZXN0cm95X2ZhY2UpOiBEb24ndCBkZWFsbG9jYXRlIHVuY29uZGl0aW9uYWxseS4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0NvbXB1dGVfTWF4X0FkdmFuY2UsIENJRF9Mb2FkX0dseXBoKToKCUFkZGluZyBzdXBwb3J0IHRvIG5ldyBQb3N0U2NyaXB0IGhpbnRlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNnbG9iYWwuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oLAoJaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCwgc3JjL3BzaGludGVyL0phbWZpbGUsCglzcmMvcHNoaW50ZXIvcHNoYWxnby5oLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuaCwKCXNyYy9wc2hpbnRlci9wc2hhbGdvMS5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuaCwKCXNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLCBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oLAoJc3JjL3BzaGludGVyL3BzaGdsb2IuYywgc3JjL3BzaGludGVyL3BzaGludGVyLmMsCglzcmMvcHNoaW50ZXIvcHNobW9kLmMsIHNyYy9wc2hpbnRlci9wc2htb2QuaCwgc3JjL3BzaGludGVyL3BzaHJlYy5jLAoJc3JjL3BzaGludGVyL3BzaHJlYy5oOiBBZGRpbmcgbmV3IFBvc3RTY3JpcHQgaGludGVyIG1vZHVsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCwgc3JjL3BzYXV4L3Bzb2Jqcy5jLAoJc3JjL3BzYXV4L3Bzb2Jqcy5oLCBzcmMvcHNhdXgvdDFkZWNvZGUuaCwgc3JjL3BzYXV4L3QxZGVjb2RlLmMsCglzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3QxZ2xvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jLAoJc3JjL3R5cGUxL3Qxb2Jqcy5oOiBVcGRhdGVzIHRvIHVzZSB0aGUgbmV3IFBvc3RTY3JpcHQgaGludGVyLgoKCSogdGVzdHMvSmFtZmlsZSwgdGVzdHMvZ3ZpZXcuYzogQWRkaW5nIGEgbmV3IGdseXBoIGhpbnRpbmcKCXZpZXdlci9kZWJ1Z2dlciB0byB0aGUgc291cmNlIHRyZWUuICBOb3RlIHRoYXQgeW91IHdpbGwgX25vdF8gYmUKCWFibGUgdG8gY29tcGlsZSBpdCBzaW5jZSBpdCBkZXBlbmRzIG9uIGFuIHVuYXZhaWxhYmxlIGdyYXBoaWNzCglsaWJyYXJ5IG5hbWVkIGBOaXJ2YW5hJyB0byByZW5kZXIgdmVjdG9yIGltYWdlcy4KCjIwMDEtMTAtMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMC41IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgaW5jbHVkZS9pbnRlcm5hbC9mdG9ianMuaCwKCXNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvdHlwZTEvdDFkcml2ZXIuYzogQWRkaW5nIGEgbmV3IGZ1bmN0aW9uIG5hbWVkCgknRlRfR2V0X1Bvc3RzY3JpcHRfTmFtZScgdG8gcmV0cmlldmUgdGhlIFBvc3RTY3JpcHQgbmFtZSBvZiBhIGdpdmVuCglmb250LiAgU2hvdWxkIHdvcmsgd2l0aCBhbGwgZm9ybWF0cyBleGNlcHQgcHVyZSBDRkYvQ0VGIGZvbnRzICh0aGlzCgl3aWxsIGJlIGFkZGVkIHNvb24pLgoKCSogc3JjL2NpZC9jaWRyaXZlciAoY2lkX2dldF9wb3N0c2NyaXB0X25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoQ0lEX0dldF9JbnRlcmZhY2UpOiBIYW5kbGUgYHBvc3RzY3JpcHRfbmFtZScgaW50ZXJmYWNlLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKFNGTlRfR2V0X0ludGVyZmFjZSk6IEhhbmRsZSBgcG9zdHNjcmlwdF9uYW1lJyBpbnRlcmZhY2UuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAodDFfZ2V0X3BzX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoR2V0X0ludGVyZmFjZSk6IEhhbmRsZSBgcG9zdHNjcmlwdF9uYW1lJyBpbnRlcmZhY2UuCgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUzogVXBkYXRlZCBmb3IgMi4wLjUgcmVsZWFzZS4KCjIwMDEtMTAtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhlZCBhIGJ1ZyBpbiBgZ2xuYW1lcy5weScgdGhhdCBwcmV2ZW50ZWQgaXQgZnJvbSBnZW5lcmF0aW5nCgljb3JyZWN0IGdseXBoIG5hbWVzIHRhYmxlcy4gIFRoaXMgcmVzdWx0ZWQgaW4gdGhlIHVuYXZhaWxhYmlsaXR5IG9mCgljZXJ0YWluIGdseXBocyBsaWtlIGBDYWN1dGUnLCBgY2FjdXRlJyBhbmQgYGxzbGFzaCcgaW4gVW5pY29kZQoJY2hhcm1hcHMsIGV2ZW4gaWYgdGhlc2Ugd2VyZSBwcmVzZW50IGluIHRoZSBmb250IChjYXVzaW5nIHByb2JsZW1zCglmb3IgUG9saXNoIHVzZXJzKS4KCgkqIHNyYy90b29scy9nbG5hbWVzLnB5IChtYWNfc3RhbmRhcmRfbmFtZXMpOiBGaXhlZC4KCSh0MV9zdGFuZGFyZF9zdHJpbmdzKTogU29tZSBmaXhlcyBhbmQgcmVuYW1lZCB0byAuLi4KCShzaWRfc3RhbmRhcmRfbmFtZXMpOiBUaGlzLgoJKHQxX2V4cGVydF9lbmNvZGluZyk6IEZpeGVkLgoJKHRoZV9hZG9iZV9nbHlwaF9saXN0KTogUmVuYW1lZCB0byAuLi4KCShhZG9iZV9nbHlwaF9uYW1lcyk6IFRoaXMuCgkodGhlX2Fkb2JlX2dseXBocyk6IFJlbmFtZWQgdG8gLi4uCgkoYWRvYmVfZ2x5cGhfdmFsdWVzKTogVGhpcy4KCShkdW1wX21hY19pbmRpY2VzLCBkdW1wX2dseXBoX2xpc3QsIGR1bXBfdW5pY29kZV92YWx1ZXMsIG1haW4pOgoJVXBkYXRlZC4KCSogc3JjL3BzbmFtZXMvcHN0YWJsZXMuaDogUmVnZW5lcmF0ZWQuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKFBTX1VuaWNvZGVfVmFsdWUpOiBGaXggb2Zmc2V0LgoJRml4IHJldHVybiB2YWx1ZS4KCVVzZSBgc2lkX3N0YW5kYXJkX3RhYmxlJyBhbmQgYHBzX25hbWVzX3RvX3VuaWNvZGUnIGluc3RlYWQgb2YKCWB0MV9zdGFuZGFyZF9nbHlwaHMnIGFuZCBgbmFtZXNfdG9fdW5pY29kZScuCgkoUFNfTWFjaW50b3NoX05hbWUpOiBVc2UgYHBzX2dseXBoX25hbWVzJyBpbnN0ZWFkIG9mCglgc3RhbmRhcmRfZ2x5cGhfbmFtZXMnLgoJKFBTX1N0YW5kYXJkX1N0cmluZ3MpOiBVc2UgYHNpZF9zdGFuZGFyZF9uYW1lcycgaW5zdGVhZCBvZgoJYHQxX3N0YW5kYXJkX2dseXBocycuCgoJKiBkb2MvQlVHUywgZG9jL1RPRE86IE5ldyBkb2N1bWVudHMuCgoyMDAxLTEwLTA3ICBSaWNoYXJkIEJhcmJlciAgPHJpY2hAc29sdXRpb251ay5jb20+CgoJKiBzcmMvY2FjaGUvZnRscnUuYyAoRlRfTHJ1X0xvb2t1cF9Ob2RlKTogRml4ZWQgYSBidWcgdGhhdCBwcmV2ZW50ZWQKCWNvcnJlY3QgTFJVIGJlaGF2aW91ci4KCjIwMDEtMTAtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglzZXRqbXAoKSBhbmQgbG9uZ2ptcCgpIGFyZSBub3cgdXNlZCBmb3Igcm9sbGJhY2sgKGkuZS4gd2hlbiBtZW1vcnkKCXBvb2wgb3ZlcmZsb3cgb2NjdXJzKS4KCglGdW5jdGlvbiBuYW1lcyBhcmUgbm93IGFsbCB1bmlmb3JtbHkgcHJlZml4ZWQgd2l0aCBgZ3JheV8nLgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmM6IEluY2x1ZGUgPHNldGptcC5oPi4KCShFcnJSYXN0ZXJfTWVtb3J5T3ZlcmZsb3cpOiBOZXcgbWFjcm8uCgkoVEFyZWEpOiBOZXcgdHlwZSB0byBzdG9yZSBhcmVhIHZhbHVlcyBpbiBlYWNoIGNlbGwgKHVzaW5nIGBpbnQnIHdhcwoJdG9vIHNtYWxsIG9uIDE2LWJpdCBzeXN0ZW1zKS4gIDxsaW1pdHMuaD4gaXMgaW5jbHVkZWQgdG8gcHJvcGVybHkKCWdldCB0aGUgbmVlZGVkIGRhdGEgdHlwZS4KCShUQ2VsbCwgVFJhc3Rlcik6IFVzZSBpdC4KCShUUmFzdGVyKTogTmV3IGVsZW1lbnQgYGp1bXBfYnVmZmVyJy4KCShncmF5X2NvbXB1dGVfY2JveCk6IFVzZSBgUkFTX0FSRycgYXMgdGhlIG9ubHkgcGFyYW1ldGVyIGFuZCBnZXQKCWBvdXRsaW5lJyBmcm9tIGl0LgoJKGdyYXlfcmVjb3JkX2NlbGwpOiBVc2UgbG9uZ2ptcCgpLgoJKGdyYXlfc2V0X2NlbGwpOiBVc2UgZ3JheV9yZWNvcmRfY2VsbCgpIGZvciBlcnJvciBoYW5kbGluZy4KCShncmF5X3JlbmRlcl9saW5lLCBncmF5X3JlbmRlcl9jb25pYywgZ3JheV9yZW5kZXJfY3ViaWMpOiBTaW1wbGlmeS4KCShncmF5X2NvbnZlcnRfZ2x5cGhfaW5uZXIpOiBOZXcgZnVuY3Rpb24sIHVzaW5nIHNldGptcCgpLgoJKGdyYXlfY29udmVydF9nbHlwaCk6IFVzZSBpdC4KCjIwMDEtMTAtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglQcm92aWRlIGEgcHVibGljIEFQSSB0byBtYW5hZ2UgbXVsdGlwbGUgc2l6ZSBvYmplY3RzIGZvciBhIGdpdmVuCglGVF9GYWNlIGluIHRoZSBuZXcgaGVhZGVyIGZpbGUgYGZ0c2l6ZXMuaCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c2l6ZXMuaDogTmV3IGhlYWRlciBmaWxlLAoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBVc2UgaXQuCglSZW1vdmUgZGVjbGFyYXRpb25zIG9mIEZUX05ld19TaXplIGFuZCBGVF9Eb25lX1NpemUgKG1vdmVkIHRvCglmdHNpemVzLmgpLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9TSVpFU19IKTogTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfQWN0aXZhdGVfU2l6ZSk6IE5ldyBmdW5jdGlvbi4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmM6IEluY2x1ZGUgZnRzaXplcy5oLgoJKGZ0Y19tYW5hZ2VyX2luaXRfc2l6ZSwgZnRjX21hbmFnZXJfZmx1c2hfc2l6ZSk6IFVzZQoJRlRfQWN0aXZhdGVfU2l6ZS4KCjIwMDEtMDktMjAgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvKjogQWRkZWQgcG9ydCB0byBBbWlnYSB3aXRoIHRoZSBTQVMvQyBjb21waWxlci4KCjIwMDEtMDktMTUgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoVDFfRG9uZV9BRk0pOiBGcmVlIGBhZm0nLgoKMjAwMS0wOS0xMCAgWWFvIFpoYW5nICA8eXpoYW5nQHNoYXJlbWVkaWEuY29tPgoKCSogc3JjL3NmbnQvdHRjbWFwLmMgKGNvZGVfdG9faW5kZXgyKTogSGFuZGxlIGNvZGUgdmFsdWVzIHdpdGgKCWhpLWJ5dGUgPT0gMCBjb3JyZWN0bHkuCgoyMDAxLTA5LTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvbGluay1zdGQubWsgKCQoUFJPSkVDVF9MSUJSQVJZKSk6IEZpeCB0eXBvLgoKMjAwMS0wOC0zMCAgTWFydGluIE11c2tlbnMgIDxtbXVza2Vuc0BhdXJlbG9uLmNvbT4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBBIG5ldyB3YXkgdG8gY29tcHV0ZSB0aGUKCXVuaXRzIHBlciBFTSB3aXRoIGdyZWF0ZXIgYWNjdXJhY3kgKGltcG9ydGFudCBmb3IgZW1iZWRkZWQgVDEgZm9udHMKCWluIFBERiBkb2N1bWVudHMgdGhhdCB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gVHJ1ZVR5cGUKCW9uZXMpLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChpc19hbHBoYSk6IE5vdyBzdXBwb3J0cyBgKycgaW4gZm9udCBuYW1lczsKCXRoaXMgaXMgdXNlZCBpbiBlbWJlZGRlZCBmb250cy4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfVGFibGVfQWRkKTogRml4ZWQgYSByZWFsbG9jYXRpb24gYnVnIHRoYXQKCWdlbmVyYXRlZCBhIGRhbmdsaW5nIHBvaW50ZXIgcmVmZXJlbmNlLgoKMjAwMS0wOC0zMCAgQW50aG9ueSBGZWlrICA8YWZlaWNrQGhvdG1haWwuY29tPgoKCSogc3JjL3R5cGUxL3QxYWZtLmMgKFQxX1JlYWRfQWZtKTogTm93IGNvcnJlY3RseSBzZXRzIHRoZSBmbGFnCglGVF9GQUNFX0ZMQUdfS0VSTklORyB3aGVuIGFwcHJvcHJpYXRlIGZvciBUeXBlMSArIEFGTSBmaWxlcy4KCjIwMDEtMDgtMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0NNYXApOiBGaXggZnJhbWUgbGVuZ3RoIG9mCglgY21hcF9yZWNfZmllbGRzJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCBbIUZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlNdOgoJVW5kZWZpbmUgRlRfRVJSX0JBU0UgYmVmb3JlIGRlZmluaW5nIGFnYWluLgoKMjAwMS0wOC0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmg6IEZpeCBwcm90b3R5cGUgb2YgVFRfTW92ZV9GdW5jLgoKMjAwMS0wOC0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2Rvcy9kb3MtZGVmLm1rIChOT19PVVRQVVQpOiBEb24ndCB1c2UgYCY+JyBidXQgYD4nLgoKMjAwMS0wOC0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogQ2hhbmdlZCB0aGUgZGVmYXVsdCBzZXR0aW5nCglmb3IgRlRfQ09ORklHX09QVElPTl9VU0VfTU9EVUxFX0VSUk9SUyB0byB1bmRlZmluZWQsIHNpbmNlIGl0IGJyZWFrcwoJc291cmNlIGNvbXBhdGliaWxpdHkgaW4gYSBmZXcgY2FzZXMuICBVcGRhdGVkIHRoZSBjb21tZW50IHRvIGV4cGxhaW4KCXRoYXQgdG9vLgoKMjAwMS0wOC0xNyAgTWFydGluIE11c2tlbnMgIDxtbXVza2Vuc0BhdXJlbG9uLmNvbT4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYpOiBGaXhlZCBzZXJpb3VzIHR5cG8uCgoyMDAxLTA4LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJVXBkYXRpbmcgdG8gT3BlblR5cGUgMS4zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0NNYXAwLCBUVF9DTWFwMiwgVFRfQ01hcDQsCglUVF9DTWFwNik6IEFkZGluZyBmaWVsZCBgbGFuZ3VhZ2UnLgoJKFRUX0NNYXBUYWJsZSk6IFJlbW92aW5nIGZpZWxkIGBsYW5ndWFnZScuCglUeXBlIG9mIGBsZW5ndGgnIGZpZWxkIGNoYW5nZWQgdG8gRlRfVUxvbmcuCglBZGRpbmcgZmllbGRzIGZvciBjbWFwcyBmb3JtYXQgOCwgMTAsIGFuZCAxMi4KCShUVF9DTWFwR3JvdXApOiBOZXcgYXV4aWxpYXJ5IHN0cnVjdHVyZS4KCShUVF9DTWFwOF8xMiwgVFRfQ01hcDEwKTogTmV3IHN0cnVjdHVyZXMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCAoVFRfSG9yaUhlYWRlciwgVFRfVmVydEhlYWRlcik6CglSZW1vdmVkIGxhc3QgZWxlbWVudCBvZiBgUmVzZXJ2ZWQnIGFycmF5LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmggKFRUX1BMQVRGT1JNX0NVU1RPTSwgVFRfTVNfSURfVUNTXzQsCglUVF9OQU1FX0lEX0NJRF9GSU5ERk9OVF9OQU1FKTogTmV3IG1hY3Jvcy4KCgkqIHNyYy9zZm50L3R0Y21hcC5jIChUVF9DaGFyTWFwX0xvYWQpOiBVcGRhdGVkIGxvYWRpbmcgb2YgYGxhbmd1YWdlJwoJZmllbGQgdG8gdGhlIG5ldyBzdHJ1Y3R1cmVzLgoJRml4ZWQgZnJlZWluZyBvZiBhcnJheXMgaW4gY2FzZSBvZiB1bnN1Y2Nlc3NmdWwgbG9hZHMuCglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIGZvcm1hdCA4LCAxMCwgYW5kIDEyIGNtYXBzLgoJKFRUX0NoYXJNYXBfRnJlZSk6IEFkZGVkIHN1cHBvcnQgZm9yIGZyZWVpbmcgZm9ybWF0IDgsIDEwLCBhbmQgMTIKCWNtYXBzLgoJKGNvZGVfdG9faW5kZXg0KTogU21hbGwgaW1wcm92ZW1lbnQuCgkoY29kZV90b19pbmRleDYpOiBEaXR0by4KCShjb2RlX3RvX2luZGV4OF8xMiwgY29kZV90b19pbmRleDEwKTogTmV3IGZ1bmN0aW9ucy4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTWV0cmljc19IZWFkZXIpOiBVcGRhdGVkIHRvIG5ldwoJc3RydWN0dXJlLgoJKFRUX0xvYWRfQ01hcCk6IERpdHRvLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X2VuY29kaW5ncyk6IEFkZCBNUyBVQ1M0IHRhYmxlIChiZWZvcmUgTVMKCVVuaWNvZGUpLgoKMjAwMS0wOC0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX2dldF9uYW1lX2luZGV4KTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAxLTA4LTA5ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChnZXRfY2ZmX2dseXBoX25hbWUpOiBSZW5hbWVkIHRvCgljZmZfZ2V0X2dseXBoX25hbWUgZm9yIGNvbnNpc3RlbmN5LgoKCShjZmZfZ2V0X2dseXBoX2luZGV4KTogTWlub3IgZG9jdW1lbnRhdGlvbiBjaGFuZ2UuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAodDFfZ2V0X25hbWVfaW5kZXgpOiBOZXcgZnVuY3Rpb24gdXNlZCBpbgoJR2V0X0ludGVyZmFjZSBhcyB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgd2hlbiB0aGUgYG5hbWVfaW5kZXgnCglmdW5jdGlvbiBpcyByZXF1ZXN0ZWQuCgoJKGdldF90MV9nbHlwaF9uYW1lKTogUmVuYW1lZCB0byB0MV9nZXRfZ2x5cGhfbmFtZSBmb3IgY29uc2lzdGVuY3kuCgoyMDAxLTA4LTA4ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmM6IFJlbW92ZWQgZGVmaW5pdGlvbnMgb2YgY2ZmX2lzb2Fkb2JlX2NoYXJzZXQsCgljZmZfZXhwZXJ0X2NoYXJzZXQsIGNmZl9leHBlcnRzdWJzZXRfY2hhcnNldCwgY2ZmX3N0YW5kYXJkX2VuY29kaW5nLAoJYW5kIGNmZl9leHBlcnRfZW5jb2RpbmcgYXJyYXlzIHRvIGNmZmxvYWQuaC4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBBZGRlZCBkZWZpbml0aW9ucyBvZiBjZmZfaXNvYWRvYmVfY2hhcnNldCwKCWNmZl9leHBlcnRfY2hhcnNldCwgY2ZmX2V4cGVydHN1YnNldF9jaGFyc2V0LCBjZmZfc3RhbmRhcmRfZW5jb2RpbmcsCglhbmQgY2ZmX2V4cGVydF9lbmNvZGluZyBhcnJheXMuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IE5ldyBmdW5jdGlvbiwgcmV0dXJuZWQKCXdoZW4gYGNmZl9nZXRfaW50ZXJmYWNlJyBpcyBjYWxsZWQgd2l0aCBhIHJlcXVlc3QgZm9yIHRoZQoJYG5hbWVfaW5kZXgnIGZ1bmN0aW9uLgoKCShjZmZfZ2V0X2ludGVyZmFjZSk6IE1vZGlmaWVkIHNvIHRoYXQgaXQgcmV0dXJucyB0aGUgZnVuY3Rpb24KCWBjZmZfZ2V0X25hbWVfaW5kZXgnIHdoZW4gdGhlIGBuYW1lX2luZGV4JyBmdW5jdGlvbiBpcyByZXF1ZXN0ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2V0X05hbWVfSW5kZXgpOiBOZXcgZnVuY3Rpb24sIHVzZWQgdG8KCXJldHVybiBhIGdseXBoIGluZGV4IGZvciBhIGdpdmVuIGdseXBoIG5hbWUgb25seSBpZiB0aGUgZHJpdmVyCglzdXBwb3J0cyBnbHlwaCBuYW1lcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX05hbWVfSW5kZXhfUmVxdWVzdGVyKToKCU5ldyBmdW5jdGlvbiBwb2ludGVyIHR5cGUgZGVmaW50aW9uIHVzZWQgaW4gdGhlIGZ1bmN0aW9uCglGVF9HZXRfTmFtZV9JbmRleC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfR2V0X05hbWVfSW5kZXgpOiBBZGRlZAoJZG9jdW1lbnRhdGlvbiBhbmQgcHJvdG90eXBlLgoKMjAwMS0wNy0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2N5Z3dpbi8qOiBSZW1vdmVkLiAgVXNlIHRoZSB1bml4IHN0dWZmIGluc3RlYWQuCgoyMDAxLTA3LTI2ICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBidWlsZHMvdm1zL2Z0Y29uZmlnLmggKEZUX0NBTExCQUNLX0RFRik6IFVwZGF0ZWQgdG8gY2hhbmdlIGRhdGVkCgkyMDAxLTA2LTI3LgoKMjAwMS0wNy0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChQU19UYWJsZSk6IFVzZSBGVF9PZmZzZXQgZm9yCglgY3Vyc29yJyBhbmQgYGNhcGFjaXR5Jy4KCSogc3JjL3BzYXV4L3Bzb2JqYy5jIChyZWFsbG9jYXRlX3QxX3RhYmxlKTogVXNlIEZUX0xvbmcgZm9yIHNlY29uZAoJcGFyYW1ldGVyLgoJKFBTX1RhYmxlX0FkZCk6IFVzZSBGVF9PZmZzZXQgZm9yIGBuZXdfc2l6ZScuCgoJQWRkIHN1cHBvcnQgZm9yIHZlcnNpb24gMC41IG1heHAgdGFibGVzLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTWF4UHJvZmlsZSk6IEltcGxlbWVudCBpdC4KCShUVF9Mb2FkX09TMik6IEluaXRpYWxpemUgc29tZSB2YWx1ZXMuCgoyMDAxLTA3LTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdHN5bnRoLmM6IEluY2x1ZGUgZnRjYWxjLmggdW5jb25kaXRpb25hbGx5LgoKMjAwMS0wNy0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMsIHNyYy9wY2YvcGNmcmVhZDoKCVJlbW92ZWQgcGVkYW50aWMgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiB0aGUgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgaXMKCWNvbXBpbGVkIGluLgoKMjAwMS0wNy0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfYWxpZ25fd2Vha19wb2ludHMpOiBSZW1vdmUKCXVudXNlZCB2YXJpYWJsZSBgZWRnZXMnLgoJKGFoX2hpbnRlcl9sb2FkKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgYG9sZF93aWR0aCcgYW5kCglgbmV3X3dpZHRoJy4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9kZWNyeXB0KTogVXNlIGBVJyBmb3IgY29uc3RhbnQgKGFnYWluKS4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChUMV9EZWNyeXB0KTogRGl0dG8uCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBEaXR0by4KCjIwMDEtMDYtMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvaW50ZXJuYWwvZnRzdHJlYW0uaDogTW9kaWZpZWQgdGhlIGRlZmluaXRpb25zCglvZiB0aGUgRlRfR0VUX1hYWFggYW5kIE5FWFRfWFhYWCBtYWNyb3MgZm9yIDE2LWJpdCBjb3JyZWN0bmVzcy4KCjIwMDEtMDYtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jLCBzcmMvY2lkL2NpZGxvYWQuaCAoY2lkX2RlY3J5cHQpOiBVc2UgRlRfT2Zmc2V0CglpbnN0ZWFkIG9mIEZUX0ludCBhcyB0eXBlIGZvciBgbGVuZ3RoJyBwYXJhbWV0ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNBdXhfSW50ZXJmYWNlKTogVXBkYXRlZC4KCjIwMDEtMDYtMjcgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMsIHNyYy9wc2F1eC9wc29ianMuaCAoVDFfRGVjcnlwdCk6IFVzZSBGVF9PZmZzZXQKCWluc3RlYWQgb2YgRlRfSW50IGFzIHR5cGUgZm9yIGBsZW5ndGgnIHBhcmFtZXRlci4KCgoJKiBWZXJzaW9uIDIuMC40IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDEtMDYtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0Y29uZmlnLmluOiBDaGFuZ2VkIHRoZSBkZWZpbml0aW9uIG9mIHRoZQoJRlRfQ0FMTEJBQ0tfREVGIG1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNvbmZpZy5oLCBzcmMvKi8qLmM6IENoYW5nZWQgdGhlIGRlZmluaXRpb24gYW5kCgl1c2Ugb2YgdGhlIEZUX0NBTExCQUNLX0RFRiBtYWNybyBpbiBvcmRlciB0byBzdXBwb3J0IDE2LWJpdAoJY29tcGlsZXJzLgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW46IENoYW5nZWQgdGhlIGRlZmluaXRpb24gb2YgdGhlCglGVF9DQUxMQkFDS19ERUYgbWFjcm8uCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9LZXJuKTogVGhlIGtlcm4gdGFibGUgbG9hZGVyIG5vdyBlbnN1cmVzCgl0aGF0IHRoZSBrZXJuaW5nIHRhYmxlIGlzIGNvcnJlY3RseSBzb3J0ZWQgKHNvbWUgcHJvYmxlbSBmb250cyBkb24ndAoJaGF2ZSBhIGNvcnJlY3Qga2VybiB0YWJsZSkuCgoyMDAxLTA2LTI2ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChGVF9HRVRfT0ZGM19MRSk6IEZpeCB0eXBvLgoKMjAwMS0wNi0yNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKGZ0X2RpdjY0YnkzMik6IEZpeGVkIHRoZSBzb3VyY2UgdG8gd29yawoJY29ycmVjdGx5IG9uIDE2LWJpdCBzeXN0ZW1zLgoKMjAwMS0wNi0yMyAgQW50aG9ueSBGb2sgIDxmb2tAZGViaWFuLm9yZz4KCgkqIGRlYmlhbi8qOiBBZGRlZCBEZWJpYW4gcGFja2FnZSBidWlsZCBkaXJlY3RvcnkgZm9yIDIuMC40LgoKMjAwMS0wNi0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9QQVRFTlRTOiBBZGRlZCBwYXRlbnRzIGRpc2NsYWltZXIuICBUaGlzIG9uZSB3YXMgbWlzc2luZyEKCgkqIGRvY3MvQ0hBTkdFUywgZG9jcy90b2RvOiBVcGRhdGVkIGZvciB0aGUgdXBjb21pbmcgMi4wLjQgcmVsZWFzZS4KCjIwMDEtMDYtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IEFkZCB0d28gbW9yZSBgTCdzIHRvCgljb25zdGFudHMuCglBZGQgbWlzc2luZyBzZW1pY29sb25zLgoKCSogYnVpbGRzL3RvcGxldmVsLm1rOiBEbyBzaW1pbGFyIGNoYW5nZSBhcyBmb3IKCWJ1aWxkcy91bml4L2RldGVjdC5tay4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRU5DX1RBRyk6IE5ldyB2ZXJzaW9uIHRvIG1ha2UgaXQKCWVhc2llciB0byByZWRlZmluZS4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmggKEZUX0lNQUdFX1RBRyk6IERpdHRvLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9nZXRfZW5jb2RpbmdzKTogQWRkIGNhc3QuCgoyMDAxLTA2LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3AsIGJ1aWxkcy93aW4zMi92aXN1YWxjL2luZGV4Lmh0bWw6CglVcGRhdGVkIHRoZSBWaXN1YWwgQysrIHByb2plY3QgKGZvciB0aGUgMi4wLjQgcmVsZWFzZSkuCgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWs6IEFkZGVkIHJ1bGUgZm9yIEFJWCBkZXRlY3Rpb24gKHdoaWNoIHVzZXMKCS91c3Ivc2Jpbi9pbml0IGluc3RlYWQgb2YgL3NiaW4vaW5pdCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmgsIHNyYy8qLyplcnIqLmg6IFVwZGF0ZWQgc29tZSBvZiB0aGUKCWVycm9yIG1hY3JvcyB0byBzaW1wbGlmeSBoYW5kbGluZyBvZiBuZXcgZXJyb3Igc2NoZW1lLgoKMjAwMS0wNi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmggKEZUX0VSUk9SX01PRFVMRSk6IE5ldyBtYWNyby4KCjIwMDEtMDYtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglSZW1vdmluZyBfbG90c18gb2YgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiB0aGUgbW9zdCBwZWRhbnRpYyB3YXJuaW5nCglsZXZlbHMgb2YgVmlzdWFsIEMrKyBhbmQgQm9ybGFuZCBDKysgYXJlIHVzZWQuICBUb28gbWFueSBmaWxlcyB0byBiZQoJbGlzdGVkIGhlcmUsIGJ1dCBGVDIgbm93IGNvbXBpbGVzIHdpdGhvdXQgd2FybmluZ3Mgd2l0aCBWQysrIGFuZCB0aGUKCWAvVzQnIHdhcm5pbmcgbGV2ZWwgKGxpbnQtc3R5bGUpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9OZXdfTWVtb3J5X0ZhY2UpOiBVcGRhdGVkCglkb2N1bWVudGF0aW9uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaCAoRlRfQk9PTCk6IE5ldyBtYWNyby4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IEFkZCAjcHJhZ21hIGZvciBWaXN1YWwgQysrCgl0byBzdXBwcmVzcyB3YXJuaW5nLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEZUX0dFVF9TSE9SVF97QkUsTEV9LAoJRlRfR0VUX09GRjNfe0JFLExFfSwgRlRfR0VUX0xPTkdfe0JFLExFfSk6IE5ldyBtYWNyb3MuCgkoTkVYVF8qKTogVXNlIHRoZW0uCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX0RFQlVHX0guCgkoRlRfTmV3X01lbW9yeV9GYWNlKTogQWRkIGBjb25zdCcgdG8gZnVuY3Rpb24gZGVjbGFyYXRpb24uCgoyMDAxLTA2LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWlub3IgY2xlYW51cHMgdG8gcmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtYW5hZy5oIChGVENfTUFYX0JZVEVTX0RFRkFVTFQpOiBVc2UKCWBMJyBmb3IgY29uc3RhbnQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX1JFTkRFUl9QT09MX1NJWkUpOiBEaXR0by4KCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bERpdik6IFVzZSBgTCcgZm9yIGNvbnN0YW50LgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX0dldF9DQm94KTogUmVtb3ZlIGBlcnJvcicgdmFyaWFibGUuCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKGZ0X3RyaWdfYXJjdGFuX3RhYmxlKTogVXNlIGBMJyBmb3IgY29uc3RhbnRzLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfRG9uZV9TaXplKTogRml4IHJldHVybiB2YWx1ZS4KCShGVF9TZXRfQ2hhcl9TaXplLCBGVF9TZXRfUGl4ZWxfU2l6ZXMsIEZUX0dldF9LZXJuaW5nKTogUmVtb3ZlCgl1bnVzZWQgYG1lbW9yeScgdmFyaWFibGUuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX2dldF9vcmllbnRhdGlvbik6IFVzZSBgTCcgZm9yIGNvbnN0YW50LgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRfZWRnZXNfMywKCWFoX2hpbnRlcl9hbGlnbl9lZGdlX3BvaW50cyk6IFJlbW92ZSB1bnVzZWQgYGJlZm9yZScgYW5kIGBhZnRlcicKCXZhcmlhYmxlcy4KCShhaF9oaW50ZXJfYWxpZ25fd2Vha19wb2ludHMpOiBSZW1vdmUgdW51c2VkIGBlZGdlX2xpbWl0JyB2YXJpYWJsZS4KCShhaF9oaW50ZXJfbG9hZCk6IFJlbW92ZSB1bnVzZWQgYG5ld19hZHZhbmNlJywgYHN0YXJ0X2NvbnRvdXInLAoJYW5kIGBtZXRyaWNzJyB2YXJpYWJsZXMuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfTG9hZF9FbmNvZGluZyk6IFJlbW92ZSBkZWFkIGNvZGUgdG8gYXZvaWQKCWNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogUmVtb3ZlIHVudXNlZCBgYmFzZV9vZmZzZXQnCgl2YXJpYWJsZS4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBSZW1vdmUgdW51c2VkCglgb3V0bGluZScgdmFyaWFibGUuCgkoY2ZmX2NvbXB1dGVfYmlhcyk6IFVzZSBgVScgZm9yIGNvbnN0YW50LgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX2RlY3J5cHQpOiBEaXR0by4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChUMV9EZWNyeXB0KTogRGl0dG8uCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJTdHJpbmdzKTogRGl0dG8uCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0tlcm4pOiBSZW1vdmUgdW51c2VkIGB2ZXJzaW9uJwoJdmFyaWFibGUuCgkqIHNyYy9zZm50L3R0c2JpdC5jIChUVF9Mb2FkX1NCaXRfSW1hZ2UpOiBSZW1vdmUgdW51c2VkIGB0b3AnCgl2YXJpYWJsZS4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IFJlbW92ZSB1bnVzZWQKCWBudW1fY29udG91cnMnIGFuZCBgaW5zX29mZnNldCcgdmFyaWFibGVzLgoJKGNvbXB1dGVfZ2x5cGhfbWV0cmljcyk6IFJlbW92ZSB1bnVzZWQgYFRvcCcgYW5kIGB4X3NjYWxlJwoJdmFyaWFibGVzLgoJKFRUX0xvYWRfR2x5cGgpOiBSZW1vdmUgdW51c2VkIGBtZW1vcnknIHZhcmlhYmxlLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheXNfcmFzdGVyX3JlbmRlcik6IFVzZSBgTCcgZm9yIGNvbnN0YW50cy4KCjIwMDEtMDYtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNYWtlIHRoZSBuZXcgZXJyb3Igc2NoZW1lIHNvdXJjZSBjb21wYXRpYmxlIHdpdGggb2xkZXIgRlQgdmVyc2lvbnMKCWJ5IGludHJvZHVjaW5nIGFub3RoZXIgbGF5ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmggKEZUX0VSUk9SREVGXywgRlRfTk9FUlJPUkRFRl8pOiBOZXcKCW1hY3Jvcy4KCShGVF9OT0VSUk9SREVGKTogUmVtb3ZlZC4KCSogaW5jbHVkZS8qLyplcnIqLmg6IFVzZSBGVF9FUlJPUkRFRl8gYW5kIEZUX05PRVJST1JERUZfLgoKMjAwMS0wNi0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9FTkNfVEFHKTogTmV3IG1hY3JvLgoJKEZUX0VuY29kaW5nXyk6IFVzZSBpdC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmggKEZUX0lNQUdFX1RBRyk6IERlZmluZSBpdAoJY29uZGl0aW9uYWxseS4KCjIwMDEtMDYtMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglNb2RpZmllZCB0aGUgVHJ1ZVR5cGUgaW50ZXJwcmV0ZXIgdG8gbGV0IGl0IHVzZSB0aGUgbmV3Cgl0cmlnb25vbWV0cmljIGZ1bmN0aW9ucyBwcm92aWRlZCBpbiBgZnR0cmlnb24uaCcuICBUaGlzIGdldHMgcmlkIG9mCglzb21lIG9sZCA2NC1iaXQgY29tcHV0YXRpb24gcm91dGluZXMsIGFzIHdlbGwgYXMgbWFueSB3YXJuaW5ncyB3aGVuCgljb21waWxpbmcgdGhlIGxpYnJhcnkgd2l0aCB0aGUgYGxvbmcgbG9uZycgNjQtYml0IGludGVnZXIgdHlwZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFVuZGVmaW5lCglGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaDogUmVhcnJhbmdlIHVzZSBvZgoJRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MuCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jOiBBZGQgZGVjbGFyYXRpb24gb2YgRlRfSW50NjQgaWYKCUZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTIGlzbid0IGRlZmluZWQuCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jOiBVc2UgRlRfVFJJR09OT01FVFJZX0guCgkoTm9ybSk6IEFkZCBhIHNwZWNpYWwgdmVyc2lvbiBpZiBGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUyBpc24ndAoJZGVmaW5lZC4KCShDdXJyZW50X1JhdGlvLCBOb3JtYWxpemUpOiBTaW1wbGlmeSBjb2RlLgoKMjAwMS0wNi0xMSAgTWlrZSBPd2VucyAgPE1Pd2Vuc0BhbXRkYXRhc291dGguY29tPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bERpdiwgRlRfRGl2Rml4LCBGVF9TcXJ0NjQpOiBSZW1vdmUKCWNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMS0wNi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmluOiBSZW5hbWVkIHRvIC4uLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IFRoaXMgdG8gbWFrZSBzdXJlIHRoYXQgYXV0b2NvbmYgMi41MCBpcwoJbmVlZGVkLgoJUnVuIGBhdXRvdXBkYXRlJyBvbiBpdC4KCUluY3JlYXNlIGB2ZXJzaW9uX2luZm8nIHRvIDc6MDoxLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0wNi0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6IEZpeGVkIGEgYnVnIHRoYXQKCWNvcnJ1cHRlZCB0cmFuc2Zvcm1lZCBnbHlwaHMgdGhhdCB3ZXJlIGF1dG8taGludGVkICh0aGUgdHJhbnNmb3JtCgl3YXMgYXBwbGllZCB0d2ljZSkuCgoJRml4ZWQgYSBidWcgdGhhdCByZXR1cm5lZCBhbiBpbnZhbGlkIGxpbmVhciB3aWR0aCBmb3IgY29tcG9zaXRlCglUcnVlVHlwZSBnbHlwaHMuCgoJKiBpbmNsdWRlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfTG9hZGVyXyk6IFR3byBuZXcgZWxlbWVudHMgYGxpbmVhcicKCWFuZCBgbGluZWFyX2RlZicuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgsCgljb21wdXRlX2dseXBoX21ldHJpY3MpOiBVc2UgaXQuCgoJKiBpbmNsdWRlL2Z0dHlwZXMuaCAoRlRfRVJST1JfQkFTRSk6IE5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSwgRlRfUmVuZGVyX0dseXBoX0ludGVybmFsKTogVXNlIGl0Cgl0byBtYWtlIHNvdXJjZSBjb2RlIHdvcmsgd2l0aCB0aGUgbmV3IGVycm9yIHNjaGVtZSBpbXBsZW1lbnRlZCBieQoJV2VybmVyLgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX091dGxpbmVfUmVuZGVyKTogRGl0dG8uCgoyMDAxLTA2LTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJVXBkYXRpbmcgdG8gbGlidG9vbCAxLjQuMCBhbmQgYXV0b2NvbmYgMi41MC4KCgkqIGJ1aWxkcy91bml4L2x0Y29uZmlnOiBSZW1vdmVkLgoJKiBidWlsZHMvdW5peC9sdG1haW4uc2gsIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbiwKCWJ1aWxkcy91bml4L2FjbG9jYWwubTQ6IFVwZGF0ZWQuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAxLTA2LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQ29tcGxldGUgcmVkZXNpZ24gb2YgZXJyb3IgY29kZXMuICBQbGVhc2UgY2hlY2sgZnRtb2RlcnIuaCBmb3IgbW9yZQoJZGV0YWlscy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmZXJycy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dGVycm9ycy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MWVycm9ycy5oOiBSZW1vdmVkLiAgUmVwbGFjZWQgd2l0aCBmaWxlcwoJbG9jYWwgdG8gdGhlIG1vZHVsZS4gIEFsbCBleHRyYSBlcnJvciBjb2RlcyBoYXZlIGJlZW4gbW92ZWQgdG8KCWBmdGVycm9ycy5oJy4KCgkqIHNyYy9zZm50L3R0cG9zdC5oOiBNb3ZlIGVycm9yIGNvZGVzIHRvIGBmdGVycm9ycy5oJy4KCgkqIHNyYy9hdXRvaGludC9haGVycm9ycy5oLCBzcmMvY2FjaGUvZnRjZXJyb3IuaCwgc3JjL2NmZi9jZmZlcnJzLmgsCglzcmMvY2lkL2NpZGVycnMuaCwgc3JjL3BjZi9wY2ZlcnJvci5oLCBzcmMvcHNhdXgvcHNhdXhlcnIuaCwKCXNyYy9wc25hbWVzL3BzbmFtZXJyLmgsIHNyYy9yYXN0ZXIvcmFzdGVycnMuaCwgc3JjL3NmbnQvc2ZlcnJvcnMuaCwKCXNyYy9zbW9vdGgvZnRzbWVycnMuaCwgc3JjL3RydWV0eXBlL3R0ZXJyb3JzLmgsCglzcmMvdHlwZTEvdDFlcnJvcnMuaCwgc3JjL3dpbmZvbnRzL2ZudGVycnMuaDogTmV3IGZpbGVzIGRlZmluaW5nIHRoZQoJZXJyb3IgbmFtZXMgZm9yIHRoZSBtb2R1bGUgaXQgYmVsb25ncyB0by4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaDogTmV3IGZpbGUsIGRlZmluaW5nIHRoZSBtb2R1bGUgZXJyb3IKCW9mZnNldHMuICBJdHMgc3RydWN0dXJlIGlzIHNpbWlsYXIgdG8gYGZ0ZXJyb3JzLmgnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIChGVF9OT0VSUk9SREVGKTogTmV3IG1hY3JvLgoJKEZUX0VSUk9SREVGKTogUmVkZWZpbmVkIHRvIHVzZSBtb2R1bGUgZXJyb3Igb2Zmc2V0cy4KCUFsbCBpbnRlcm5hbCBlcnJvciBjb2RlcyBhcmUgbm93IHB1YmxpYzsgdW51c2VkIGVycm9yIGNvZGVzIGhhdmUKCWJlZW4gcmVtb3ZlZCwgc29tZSBhcmUgbmV3LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfTU9EVUxFX0VSUk9SU19IKTogTmV3CgltYWNyby4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAoJKEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMpOiBOZXcgbWFjcm8uCgoJQWxsIG90aGVyIHNvdXJjZSBmaWxlcyBoYXZlIGJlZW4gdXBkYXRlZCB0byB1c2UgdGhlIG5ldyBlcnJvciBjb2RlczsKCXNvbWUgYWxyZWFkeSBleGlzdGluZyAoaW50ZXJuYWwpIGVycm9yIGNvZGVzIGxvY2FsIHRvIGEgbW9kdWxlIGhhdmUKCWJlZW4gcmVuYW1lZCB0byBnaXZlIHRoZW0gdGhlIHNhbWUgbmFtZSBhcyBpbiB0aGUgYmFzZSBtb2R1bGUuCgoJQWxsIG1ha2UgZmlsZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gaW5jbHVkZSB0aGUgbG9jYWwgZXJyb3IgZmlsZXMuCgoyMDAxLTA2LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZHRva2Vucy5oOiBSZXBsYWNlZCB3aXRoLi4uCgkqIHNyYy9jaWQvY2lkdG9rZW4uaDogVGhpcyBmaWxlIGZvciA4KzMgY29uc2lzdGVuY3kuCgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmM6IFVzZSBtYWNyb3MgZm9yIGhlYWRlciBmaWxlIG5hbWVzLgoKCSogc3JjL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCAoVFRfSG9yaUhlYWRlcl8sIFRUX1ZlcnRIZWFkZXJfKToKCUZpeCBsZW5ndGggb2YgYFJlc2VydmVkJyBhcnJheS4gIE5vdGUgdGhhdCB0aGlzIGlzbid0IHRoZSByZWFsIGZpeAoJc2luY2UgcmVjZW50IE9wZW5UeXBlIHNwZWNzIGhhdmUgaW50cm9kdWNlZCBhIGBDYXJldE9mZnNldCcgZmllbGQKCWluc3RlYWQgb2YgdGhlIGZpcnN0IHJlc2VydmVkIGJ5dGUuCgoyMDAxLTA1LTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMOiBNaW5vciBmaXhlcy4KCgoJKiBWZXJzaW9uIDIuMC4zIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDEtMDUtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIElOU1RBTEwsIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDEtMDUtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglNb3ZlZCBzZXZlcmFsIGRvY3VtZW50cyBmcm9tIHRoZSB0b3AtbGV2ZWwgdG8gdGhlIGBkb2NzJyBkaXJlY3RvcnkuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfRGl2Rml4KTogU21hbGwgZml4IHRvIHJldHVybiB2YWx1ZS4KCjIwMDEtMDUtMTYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXhlZCBhIGJ1ZyBpbiB0aGUKCWNvbXBvc2l0ZSBsb2FkZXIuICBTcG90dGVkIGJ5IEtlaXRoIFBhY2thcmQuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9HbHlwaExvYWRlcl9DaGVja19Qb2ludHMsCglGVF9HbHlwaExvYWRlcl9DaGVja19TdWJnbHlwaHMpOiBEaXR0by4KCjIwMDEtMDUtMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhlZCB0aGUgaW5jb3JyZWN0IGJsdWUgem9uZSBjb21wdXRhdGlvbnMsIGFuZCBpbXByb3ZlZCB0aGUKCWNvbXBvc2l0ZSBzdXBwb3J0LiAgTm90ZSB0aGF0IHRoZXNlIGNoYW5nZXMgcmVzdWx0IGluIGltcHJvdmVkCglyZW5kZXJpbmcsIHdoaWxlIHNvbWV0aW1lcyBpbnRyb2R1Y2luZyB0aGVpciBvd24gYXJ0ZWZhY3RzLiAgVGhpcyBpcwoJcHJvYmFibHkgdGhlIGxhc3QgYmlnIGNoYW5nZSB0byB0aGUgYXV0b2hpbnRlciBiZWZvcmUgdGhlCglpbnRyb2R1Y3Rpb24gb2YgYSBjb21wbGV0ZSByZXBsYWNlbWVudC4KCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChzb3J0X3ZhbHVlcyk6IEZpeCBsb29wLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jOiBSZW1vdmVkIHNvbWUgb2Jzb2xldGUgY29kZS4KCShhaF9vdXRsaW5lX2NvbXB1dGVfZWRnZXMpOiBNb2RpZnkgY29kZSB0byBzZXQgdGhlIGFoX2VkZ2Vfcm91bmQKCWZsYWcuCgkoYWhfb3V0bGluZV9jb21wdXRlX2JsdWVfZWRnZXMpOiBBZGQgY29kZSB0byBjb21wdXRlIGFjdGl2ZSBibHVlCgl6b25lcy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfZ2x5cGhfbG9hZCk6IENoYW5nZSBsb2FkX2ZsYWdzCgl2YWx1ZS4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9EaXZGaXgpOiBGaXhlZCBhIGJ1ZyBpbiB0aGUgNjQtYml0IGNvZGUgdGhhdAoJY3JlYXRlZCBpbmNvcnJlY3Qgc2NhbGUgZmFjdG9ycyEKCShGVF9Sb3VuZF9GaXgsIEZUX0NlaWxGaXgsIEZUX0Zsb29yRml4KTogTWlub3IgaW1wcm92ZW1lbnRzLgoKMjAwMS0wNS0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGJib3guaDogRlRCQk9YX0ggLT4gX19GVEJCT1hfSF9fLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmg6IF9fRlRfVFJJR09OT01FVFJZX0hfXyAtPgoJX19GVFRSSUdPTl9IX18uCglJbmNsdWRlIEZUX0ZSRUVUWVBFX0guCglCZWF1dGlmaWVkOyBhZGRlZCBjb3B5cmlnaHQuCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmM6IEJlYXV0aWZpZWQ7IGFkZGVkIGNvcHlyaWdodC4KCjIwMDEtMDUtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfbWF0cml4KSwgc3JjL2NpZC9jaWRsb2FkLmMKCShwYXJzZV9mb250X21hdHJpeCksIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBGaXhlZAoJdGhlIGluY29ycmVjdCBFTSBzaXplIGNvbXB1dGF0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oLCBzcmMvYmFzZS9mdHRyaWdvbi5jOiBOZXcgZmlsZXMsCglhZGRpbmcgdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgdG8gdGhlIGNvcmUgQVBJICh1c2luZyBDb3JkaWMKCWFsZ29yaXRobXMpLgoJKiBzcmMvYmFzZS9mdGJhc2UuYywgc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWs6IFVzZSB0aGVtLgoKCSogYnVpbGRzL25ld2xpbmU6IE5ldyBmaWxlLgoJKiBidWlsZHMvdG9wX2xldmVsLm1rLCBidWlsZHMvZGV0ZWN0Lm1rOiBVc2UgaXQuICBUaGlzIGZpeGVzCglwcm9ibGVtcyB3aXRoIE1ha2Ugb24gV2luZG93cyAyMDAwLCBhcyB3ZWxsIGFzIHByb2JsZW1zIHdoZW4gYG1ha2UKCWRpc3RjbGVhbicgaXMgaW52b2tlZCBvbiBhIG5vbi1Vbml4IHBsYXRmb3JtIHdoZW4gdGhlcmUgaXMgbm8KCWBjb25maWcubWsnIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tazogRml4ZWQgYSBwcm9ibGVtIHdpdGggb2JqZWN0IGRlbGV0aW9ucyB1bmRlcgoJRG9zL1dpbmRvd3MvT1MvMiBzeXN0ZW1zLgoKCUFkZGVkIG5ldyBkaXJlY3RvcnkgdG8gaG9sZCB0b29scyBhbmQgdGVzdCBwcm9ncmFtcy4KCgkqIGRvY3MvZG9jbWFrZXIucHksIGRvY3MvZ2xuYW1lcy5weTogTW92ZWQgdG8uLi4KCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5LCBzcmMvdG9vbHMvZ2xuYW1lcy5weTogVGhpcyBwbGFjZS4KCSogc3JjL3Rvb2xzL2NvcmRpYy5weTogTmV3IGZpbGUgdXNlZCB0byBjb21wdXRlIGFyY3RhbmdlbnQgdGFibGUKCW5lZWRlZCBieSBmdHRyaWdvbi5jLgoJKiBzcmMvdG9vbHMvdGVzdF9iYm94LmMsIHNyYy90b29scy90ZXN0X3RyaWcuYzogTmV3IHRlc3QgZmlsZXMuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHk6IEltcHJvdmVkIHRoZSBzY3JpcHQgdG8gYWRkIHRoZSBjdXJyZW50IGRhdGUKCWF0IHRoZSBmb290ZXIgb2YgZWFjaCB3ZWIgcGFnZSAodXNlZnVsIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KCXZlcnNpb25zKS4KCgkqIEphbWZpbGU6IEZpeGVkIGluY29ycmVjdCBIRFJNQUNSTyBhcmd1bWVudC4KCgkqIFRPRE86IFJlbW92ZWQgdGhlIGN1YmljIGFyYyBiYm94IGNvbXB1dGF0aW9uIG5vdGUsIHNpbmNlIGl0IGhhcyBiZWVuCglmaXhlZCByZWNlbnRseS4KCSogc3JjL2Jhc2UvZnRiYm94LmMgKHRlc3RfY3ViaWNfemVybyk6IFJlbmFtZWQgdG8uLi4KCSh0ZXN0X2N1YmljX2V4dHJlbWEpOiBUaGlzIGZ1bmN0aW9uLiAgVXNlIGBVTCcgZm9yIHVuc2lnbmVkIGxvbmcKCWNvbnN0YW50cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCwgaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDoKCUZvcm1hdHRpbmcuCgoyMDAxLTA1LTEwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfT3Blbl9GYWNlKTogRml4ZWQgYSBzbWFsbCBtZW1vcnkgbGVhawoJd2hpY2ggaGFwcGVuZWQgd2hlbiB0cnlpbmcgdG8gb3BlbiAwLXNpemUgZm9udCBmaWxlcyEKCjIwMDEtMDUtMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg6IE1vdmUgZGVjbGFyYXRpb24gb2YKCUZUX1NxcnRGaXhlZCgpIG91dCBvZiBgI2lmZGVmIEZUX0xPTkc2NCcuCgoyMDAxLTA1LTA4ICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZmRyaXZlci5jIChQQ0ZfTG9hZF9HbHlwaCk6IEZpeGVkIGluY29ycmVjdCBiaXRtYXAgd2lkdGgKCWNvbXB1dGF0aW9uLgoKMjAwMS0wNS0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogVXBkYXRlZCB0aGUgRG9jTWFrZXIgc2NyaXB0IGluIG9yZGVyIHRvIGFkZAoJY29tbWFuZCBsaW5lIG9wdGlvbnMgKC0tb3V0cHV0LC0tcHJlZml4LC0tdGl0bGUpLCBmaXggdGhlIGVycm9uZW91cwoJbGluZSBudW1iZXJzIHJlcG9ydGVkIGR1cmluZyBlcnJvcnMgYW5kIHdhcm5pbmdzLCBhbmQgb3RoZXIKCWZvcm1hdHRpbmcgaXNzdWVzLgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bERpdiwgRlRfTXVsRml4LCBGVF9EaXZGaXgpOiBWYXJpb3VzIHRpbnkKCWZpeGVzIHJlbGF0ZWQgdG8gcm91bmRpbmcgaW4gNjQtYml0cyByb3V0aW5lcyBhbmQKCXBzZXVkby1gb3B0aW1pemF0aW9ucycuCgoyMDAxLTA0LTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGJib3guYyAoQkJveF9DdWJpY19DaGVjayk6IEZpeGVkIHRoZSBjb2VmZmljaWVudAoJbm9ybWFsaXphdGlvbiBhbGdvcml0aG0gKGludmFsaWQgZmluYWwgYml0IHBvc2l0aW9uLCBhbmQgaW52YWxpZAoJc2hpZnQgY29tcHV0YXRpb24pLgoKMjAwMS0wNC0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzLCBidWlsZHMvdW5peC9jb25maWcuc3ViOiBVcGRhdGVkIHRvCglsYXRlc3QgdmVyc2lvbnMgZnJvbSBnbnUub3JnLgoKCSogYnVpbGRzL2NvbXBpbGVyL2djYy1kZXYubWs6IEFkZCBgLVduby1sb25nLWxvbmcnIGZsYWcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oOiBEZWZpbmUgRlRfU3FydEZpeGVkKCkKCXVuY29kaXRpb25hbGx5LgoJKiBzcmMvYmFzZS9mdGJib3guYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9DQUxDX0guCglGaXggY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jOiBGaXggKHBvdGVudGlhbCkgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAxLTA0LTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfU3FydEZpeGVkKTogQ29ycmVjdGVkL29wdGltaXplZCB0aGUgMzItYml0CglmaXhlZC1wb2ludCBzcXVhcmUgcm9vdCBjb21wdXRhdGlvbi4gIEl0IGlzIG5vdyB1c2VkIGV2ZW4gd2l0aAoJNjQtYml0cyBpbnRlZ2VycywgYXMgaXQgaXMgX211Y2hfIGZhc3RlciB0aGFuIGNhbGxpbmcgRlRfU3FydDY0IDotKQoKCSogc3JjL2Jhc2UvZnRiYm94LmM6IFJlbW92ZWQgaW52YWxpZCBgI2luY2x1ZGUgRlRfQkVaSUVSX0gnIGxpbmUuCgoyMDAxLTA0LTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGJib3guYyAoQkJveF9DdWJpY19DaGVjayk6IFJld3JvdGUgZnVuY3Rpb24gdG8gdXNlCglkaXJlY3QgY29tcHV0YXRpb25zIHdpdGggMTYuMTYgdmFsdWVzIGluc3RlYWQgb2Ygc3ViLWRpdmlzaW9ucy4gIEl0CglpcyBub3cgc2xvd2VyLCBidXQgcHJvdmVzIGEgcG9pbnQgOi0pCgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMsIHNyYy9zbW9vdGgvZnRncmF5cy5jLCBzcmMvYmFzZS9mdGJib3guYzoKCUZpeGVkIHRoZSBiZXppZXIgc3RhY2sgZGVwdGhzLgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bEZpeCk6IE1pbm9yIHJvdW5kaW5nIGZpeC4KCgkqIGJ1aWxkcy9iZW9zOiBBZGRlZCBCZU9TLXNwZWNpZmljIGZpbGVzIHRvIHRoZSBvbGQgYnVpbGQgc3lzdGVtCgkobm8gY2hhbmdlcyB3ZXJlIG5lY2Vzc2FyeSB0byBzdXBwb3J0IEJlT1MgaW4gdGhlIEphbWZpbGUgdGhvdWdoKS4KCjIwMDEtMDQtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGZ0Y29uZmlnLmgsIGZ0b3B0aW9uLmg6IFVwZGF0ZWQgYGZ0Y29uZmlnLmgnIHRvIGRldGVjdCA2NC1iaXQgaW50Cgl0eXBlcyBvbiBwbGF0Zm9ybXMgd2hlcmUgQXV0b2NvbmYgaXMgbm90IGF2YWlsYWJsZSkuICBBbHNvIHJlbW92ZWQKCUZUQ0FMQ19VU0VfTE9OR19MT05HIGFuZCByZXBsYWNlZCBpdCB3aXRoCglGVF9DT05GSUdfT1BUSU9OX0ZPUkNFX0lOVDY0LgoKCSogYnVpbGRzL3dpbjMyL2ZyZWV0eXBlLmRzcDogVXBkYXRlZCB0aGUgVmlzdWFsIEMrKyBwcm9qZWN0IGZpbGUuCglEb2Vzbid0IGNyZWF0ZSBhIERMTCB5ZXQuCgoJKiBjZmZnbG9hZC5jOiBSZW1vdmVkIGEgY29tcGlsYXRpb24gd2FybmluZy4KCjIwMDEtMDQtMTAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiB0MWxvYWQuYyAocGFyc2VfY2hhcnN0cmluZ3MpOiBDaGFuZ2VkIGNvZGUgZm9yIHBsYWNpbmcgLm5vdGRlZgoJZ2x5cGggaW50byBzbG90IDAgc28gdGhhdCB3ZSBubyBsb25nZXIgaGF2ZSBhIG1lbW9yeSBhY2Nlc3MKCXZpb2xhdGlvbi4KCgkqIHQxbG9hZC5oOiBJbiBzdHJ1Y3R1cmUgVDFfTG9hZGVyLCBhZGRlZCBzd2FwX3RhYmxlIChvZiB0eXBlCglQU19UYWJsZSkgdG8gZmFjaWxpdGF0ZSBwbGFjaW5nIHRoZSAubm90ZGVmIGdseXBoIGludG8gc2xvdCAwLgoKMjAwMS0wNC0xMCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8ZnJhbmNlc2NvLnphcHBhLm5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HZXRfQ2hhcl9JbmRleCk6IEZpeCByZXR1cm4gdmFsdWUuCgoyMDAxLTA0LTA5ICBMYXVyZW5jZSBXaXRoZXJzICA8bHdpdGhlcnNAbHdpdGhlcnMuZGVtb24uY28udWs+CgoJKiBidWlsZHMvZG9zL2RldGVjdC5tazogQWRkIHN1cHBvcnQgZm9yIGJhc2guCgoyMDAxLTA0LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvb3MyLyoubWs6IFRoZXNlIGZpbGVzIGhhdmUgYmVlbiBmb3Jnb3R0ZW4gdG8gdXBkYXRlIHRvCgl0aGUgc3RydWN0dXJlIG9mIHNpbWlsYXIgbWFrZWZpbGVzLgoJKiBidWlsZHMvZG9zLyoubWs6IERpdHRvLgoJKiBidWlsZHMvYW5zaS8qLm1rOiBEaXR0by4KCgkqIGJ1aWxkcy93aW4zMi93aW4zMi1kZWYubWsgKEJVSUxEKTogRml4IHR5cG8uCgoJKiBidWlsZHMvY29tcGlsZXIvKi5tayAoQ0xFQU5fTElCUkFSWSk6IERvbid0IHVzZSBOT19PVVRQVVQuCglUaGlzIGlzIGFscmVhZHkgdXNlZCBpbiB0aGUgbGlua18qLm1rIGZpbGVzLgoKMjAwMS0wNC0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjLyovSmFtZmlsZTogU2xpZ2h0IGNoYW5nZXMJdG8gbWFrZSBmaWxlcyBtb3JlIGNyeXB0aWMuCgoyMDAxLTA0LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBKYW1maWxlLCBzcmMvSmFtZmlsZSwgc3JjLyovSmFtZmlsZTogRm9ybWF0dGVkLiAgU2xpZ2h0IGNoYW5nZXMKCXRvIGdpdmUgZmlsZXMgaWRlbnRpY2FsIHN0cnVjdHVyZS4KCjIwMDEtMDQtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIENIQU5HRVM6IFJlZm9ybWF0dGVkLCBtaW5vciBmaXhlcy4KCSogVE9ETzogVXBkYXRlZC4KCSogUkVBRE1FOiBGb3JtYXR0aW5nLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEZvcm1hdHRpbmcuCgoJKiBKYW1maWxlOiBGaXggdHlwby4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYzogTW92ZSBlcnJvciBjb2RlICNkZWZpbmVzIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmZXJycy5oOiBUaGlzIGZpbGUuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9jZmYvY2ZmbG9hZC5jOiBSZXBsYWNlZAoJYEZUX0Vycl8qJyB3aXRoIGBDRkZfRXJyXyonLgoJKiBzcmMvY2lkL2NpZHBhcnNlLmM6IFJlcGxhY2VkIGBGVF9FcnJfKicgd2l0aCBgVDFfRXJyXyonLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMsIHNyYy9wc2F1eC90MWRlY29kZS5jOiBEaXR0by4KCSogc3JjL3NmbnQvc2ZvYmNzLmMsIHNyYy9zZm50L3R0bG9hZC5jOiBSZXBsYWNlZCBgRlRfRXJyXyonIHdpdGgKCWBUVF9FcnJfKicuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dG9ianMuYzogRGl0dG8uCgkqIHNyYy90eXBlMS90MWdsb2FkLmMsIHNyYy90eXBlMS90MWxvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jLAoJc3JjL3R5cGUxL3QxcGFyc2UuYzogUmVwbGFjZWQgYEZUX0Vycl8qJyB3aXRoIGBUMV9FcnJfKicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZmVycnMuaDogQWRkCglgQ0ZGX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0Jy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MWVycm9ycy5oOiBBZGQKCWBUMV9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdCcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHRlcnJvcnMuaDogQWRkCglgVFRfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQnLgoKCSogc3JjL2NmZi9jZmZsb2FkLmg6IEFkZCBgY2ZmXypfZW5jb2RpbmcnIGFuZCBgY2ZmXypfY2hhcnNldCcKCXJlZmVyZW5jZXMuCgkqIHNyYy9wc2F1eC9wc29ianMuYzogSW5jbHVkZSBgRlRfSU5URVJOQUxfVFlQRTFfRVJST1JTX0gnLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UsIENGRl9Eb25lX0ZhY2UpOiBVc2UKCUZUX0xPQ0FMX0RFRi4KCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9Eb25lX0RyaXZlcik6IERpdHRvLgoJKiBzcmMvdHJ1dHlwZS90dG9ianMuYyAoVFRfSW5pdF9GYWNlLCBUVF9Eb25lX0ZhY2UsIFRUX0luaXRfU2l6ZSk6CglEaXR0by4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Eb25lX0RyaXZlcik6IERpdHRvLgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRG9uZV9GYWNlKTogRGl0dG8uCgkqIHNyYy9wY2YvcGNmLmg6IFVzZSBGVF9MT0NBTCBmb3IgYFBDRl9Eb25lX0ZhY2UnLgoKMjAwMS0wNC0wMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX01ldHJpY3MpOiBGaXggYW4gaW1wcm9wZXIgcG9pbnRlcgoJZGVyZWZlcmVuY2UuICBTdWJtaXR0ZWQgYnkgSGVyYmVydCBEdWVyciA8ZHVlcnJAc3VuLmNvbT4uCgoyMDAxLTAzLTI2ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogQ2hhbmdlZCBoZXhhZGVjaW1hbAoJY29uc3RhbnRzIHRvIHVzZSBzdWZmaXggVSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIEhQLVVYJ3MgYzg5Cgljb21waWxlci4gIFN1Ym1pdHRlZCBieSBHLlcuIEx1Y2FzIDxnbHVjYXNAc29uYWx5c3RzLmNvbT4uCgoyMDAxLTAzLTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogSmFtcnVsZXMsIEphbWZpbGUsIHNyYy9KYW1maWxlLCBzcmMvKi9KYW1maWxlOiBBZGRpbmcgamFtZmlsZXMgdG8KCXRoZSBzb3VyY2UgdHJlZS4gIFNlZSB3d3cuZnJlZXR5cGUub3JnL2phbS9pbmRleC5odG1sIGZvciBkZXRhaWxzLgoKCgkqIFZlcnNpb24gMi4wLjIgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMS0wMy0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3dpbjMyL2RldGVrdC5tazogRml4IC5QSE9OWSB0YXJnZXQgZm9yIEludGVsIGNvbXBpbGVyLgoKMjAwMS0wMy0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRzbmFtZXMuaDoKCVJlbmFtZWQgYGZ0bmFtZXMuaCcgdG8gYGZ0c25hbWVzLmgnLCBhbmQgRlRfTkFNRVNfSCB0bwoJRlRfU0ZOVF9OQU1FU19ILgoKCSogZG9jcy9kb2NtYWtlci5weTogQWRkZWQgZ2VuZXJhdGlvbiBvZiBJTkRFWCBsaW5rIGluIHRhYmxlIG9mCgljb250ZW50cy4KCgkqIElOU1RBTEwsIGRvY3MvQlVJTEQ6IFVwZGF0ZWQgZG9jdW1lbnRhdGlvbiB0byBpbmRpY2F0ZSB0aGF0IHRoZQoJY29tcGlsYXRpb24gcHJvY2VzcyBoYXMgY2hhbmdlZCBzbGlnaHRseSAobm8gbW9yZSBgc3JjJyByZXF1aXJlZCBpbgoJdGhlIGluY2x1ZGUgcGF0aCkuCgoJKiBidWlsZHMvKi8qLWRlZi5tazogQ2hhbmdlZCB0aGUgb2JqZWN0cyBkaXJlY3RvcnkgZnJvbSBgb2JqJyB0bwoJYG9ianMnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaDogUmVtb3ZlZCBvYnNvbGV0ZSBtYWNyb3MgbGlrZQoJRlRfU09VUkNFX0ZJTEUsIGV0Yy4gYW5kIGFkZGVkIGNhY2hlLXNwZWNpZmljIG1hY3JvIGRlZmluaXRpb25zIHRoYXQKCXdlcmUgcHJldmlvdXNseSBkZWZpbmVkIGluIDxmcmVldHlwZS9mdGNhY2hlLmg+LiAgQWRkZWQgY29tbWVudHMgdG8KCWJlIGluY2x1ZGVkIGluIGEgbmV3IEFQSSBSZWZlcmVuY2Ugc2VjdGlvbi4KCgkqIHNyYy8qLyo6IFJlbW92ZWQgdGhlIHVzZSBvZiBGVF9TT1VSQ0VfRklMRSwgZXRjLiAgTm93LCBlYWNoCgljb21wb25lbnQgbmVlZHMgdG8gYWRkIGl0cyBvd24gZGlyZWN0b3J5IHRvIHRoZSBpbmNsdWRlIHBhdGggYXQKCWNvbXBpbGUgdGltZS4gIE1vZGlmaWVkIGFsbCBgcnVsZXMubWsnIGFuZCBgZGVzY3JpcC5tbXMnCglhY2NvcmRpbmdseS4KCjIwMDEtMDMtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbjogQWRkICRmdF92ZXJzaW9uLgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IFVzZSBpdC4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBVcGRhdGVkLgoKMjAwMS0wMy0xOSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBBc3NpZ24gdGhlIHVuaXRzIHBlciBlbQoJdmFsdWUgYW4gdW5zaWduZWQgc2hvcnQgdmFsdWUsIGZpcnN0IGJ5IHNoaWZ0aW5nIHJpZ2h0IDE2IGJpdHMsCgl0aGVuIGJ5IGNhc3RpbmcgdGhlIHJlc3VsdHMgdG8gRlRfVVNob3J0LgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9iYm94KTogQXNzaWduIHRoZSB1bml0cyBwZXIgZW0KCXZhbHVlIGFuIHVuc2lnbmVkIHNob3J0IHZhbHVlLCBmaXJzdCBieSBzaGlmdGluZyByaWdodCAxNiBiaXRzLAoJdGhlbiBieSBjYXN0aW5nIHRoZSByZXN1bHRzIHRvIEZUX1VTaG9ydC4KCjIwMDEtMDMtMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2lkL2NpZG9ianMuYywgc3JjL2NpZC9jaWRsb2FkLmMsIHNyYy9wY2YvcGNmcmVhZC5jLAoJc3JjL3R5cGUxL3QxbG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmM6IEFkZGVkIGEgZmV3IGNhc3RzIHRvIHJlbW92ZQoJY29tcGlsZXIgd2FybmluZ3MgaW4gcGVkYW50aWMgbW9kZXMuCgoJKiBpbmNsdWRlL2NvbmZpZy9mdDJidWlsZC5oLCBpbmNsdWRlL2NvbmZpZy9mdGhlYWRlci5oOiBUaGUgZmlsZQoJYGZ0MmJ1aWxkLmgnIHdhcyByZW5hbWVkIHRvIGBmdGhlYWRlci5oJyB0byBhdm9pZCBjb25mbGljdHMgd2l0aCB0aGUKCXRvcC1sZXZlbCA8ZnQyYnVpbGQuaD4uCgoJKiBpbmNsdWRlL2NvbmZpZy9mdGhlYWRlci5oOiBBZGRlZCBuZXcgc2VjdGlvbiBkZXNjcmliaW5nIHRoZSAjaW5jbHVkZQoJbWFjcm9zLgoKMjAwMS0wMy0xNyAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfYmJveCk6IE9idGFpbiByb3VuZGVkIEZUX0ZpeGVkCgl2YWx1ZXMgZm9yIHRoZSBib3VuZGluZyBib3ggbnVtYmVycy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogV2hlbiBwcm9jZXNzaW5nIGEgQ0ZGL0NFRiBmb250LAoJc2V0IGByb290LT5hc2NlbmRlcicgKGByb290LT5kZXNjZW5kZXInKSB0byB0aGUgaW50ZWdlciBwYXJ0IG9mCglgcm9vdC0+YmJveC55TWF4JyAoYHJvb3QtPmJib3gueU1pbicsIHJlc3BlY3RpdmVseSkuCgoyMDAxLTAzLTE2ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChnZXRfY2ZmX2dseXBoX25hbWUpOiAgTmV3IGZ1bmN0aW9uLiAgVXNlZCBpbgoJY2ZmX2dldF9pbnRlcmZhY2UgdG8gZmFjaWxpdGF0ZSBnZXR0aW5nIGEgZ2x5cGggbmFtZSBmb3IgZ2x5cGggaW5kZXgKCXZpYSBGVF9HZXRfR2x5cGhfTmFtZSgpLgoKCShjZmZfZ2V0X2ludGVyZmFjZSk6IEFkZGVkIHN1cHBvcnQgZm9yIGdldHRpbmcgYSBnbHlwaCBuYW1lIHZpYSB0aGUKCWBnbHlwaF9uYW1lJyBtb2R1bGUgaW50ZXJmYWNlLiAgVXNlcyB0aGUgbmV3IGZ1bmN0aW9uCglnZXRfY2ZmX2dseXBoX25hbWUoKS4KCVN1Ym1pdHRlZCBieSBTYW5kZXIgdmFuIGRlciBXYWwgPHN2ZHdhbEB4czRhbGwubmw+LgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBMb2dpY2FsIG9yIHRoZSBmYWNlIGZsYWdzIHdpdGgKCUZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUyBvbmx5IGlmIEZUX0NPTkZJR19PUFRJT05fTk9fR0xZUEhfTkFNRVMgaXMKCW5vdCBkZWZpbmVkLiAgVGhpcyBpcyB0byBhZGQgc3VwcG9ydCBmb3IgZ2V0dGluZyBhIGdseXBoIG5hbWUgZnJvbSBhCglnbHlwaCBpbmRleCB2aWEgRlRfR2V0X0dseXBoX05hbWUoKS4KCVN1Ym1pdHRlZCBieSBTYW5kZXIgdmFuIGRlciBXYWwgPHN2ZHdhbEB4czRhbGwubmw+LgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBBZGRlZCBzdXBwb3J0IGZvcgoJZGVwcmVjYXRlZCBvcGVyYXRvciBgZG90c2VjdGlvbicuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPi4KCjIwMDEtMDMtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogRml4IGVycm9yCgltZXNzYWdlcy4KCgkqIElOU1RBTEwsIGRvY3MvQlVJTEQ6IFdlIG5lZWQgR05VIG1ha2UgMy43OC4xIG9yIG5ld2VyLgoKMjAwMS0wMy0xMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaDogIENoYW5nZWQgdGhlIGxlbklWIG1lbWJlciBvZgoJdGhlIFQxX0RlY29kZXJfIHN0cnVjdCB0byBiZSBhbiBGVF9JbnQgaW5zdGVhZCBvZiBhbiBGVF9VSW50LgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiAgQWRqdXN0Cglmb3IgbGVuSVYgc2VlZCBieXRlcyBhdCB0aGUgc3RhcnQgb2YgYSBkZWNyeXB0ZWQgc3Vicm91dGluZS4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfcmVhZF9zdWJycyk6IERlY3J5cHQgc3Vicm91dGluZXMgb25seQoJaWYgbGVuSVYgPj0gMC4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpOiBEZWNyeXB0IGNoYXJzdHJpbmdzIG9ubHkKCWlmIGxlbklWID49IDAuCgoyMDAxLTAzLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBUT0RPOiBVcGRhdGVkLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmM6IFB1dCBSRUFEX0ZpZWxkcygpIGFsd2F5cyBpbiBhIGNvbmRpdGlvbmFsIHRvCglhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCjIwMDEtMDMtMTAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBUT0RPOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkZWQgcHJvdG90eXBlcyBhbmQgbm90ZXMgZm9yCgl0aHJlZSBuZXcgZnVuY3Rpb25zOiBGVF9Sb3VuZEZpeCwgRlRfQ2VpbEZpeCwgYW5kIEZUX0Zsb29yRml4LgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfUm91bmRGaXgsIEZUX0NlaWxGaXgsIEZUX0Zsb29yRml4KTogQWRkZWQKCWltcGxlbWVudGF0aW9uIGNvZGUuCgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0luaXRfRmFjZSk6IFVzZSBjYWxjdWxhdGVkIHVuaXRzX3Blcl9FTSwKCWFuZCBpZiB0aGF0IGlzIG5vdCBhdmFpbGFibGUsIGRlZmF1bHQgdG8gMTAwMCB1bml0cyBwZXIgRU0uICBDaGFuZ2VkCglhc3NpZ25tZW50IGNvZGUgZm9yIGFzY2VuZGVyIGFuZCBkZXNjZW5kZXIgdmFsdWVzLgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCB1bml0c19wZXJfRU0KCXByb2Nlc3NpbmcuCgkocGFyc2VfZm9udF9iYm94KTogQ2hhbmdlZCB0byB1c2UgRlRfRml4ZWQgbnVtYmVyIGhhbmRsaW5nLgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBDaGFuZ2VkIHRoZSBhc3NpZ25tZW50IGNvZGUKCWZvciBhc2NlbmRlciwgZGVzY2VuZGVyLCBhbmQgbWF4X2FkdmFuY2Vfd2lkdGguCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9iYm94KTogQ2hhbmdlZCB0byB1c2UgRlRfRml4ZWQKCW51bWJlciBoYW5kbGluZy4KCjIwMDEtMDMtMTAgIEhlbnJpayBHcnViYnN0cvZtICA8Z3J1YmJhQHJveGVuLmNvbT4KCgkqIHNyYy8qLyouYzogQWRkZWQgbWFueSBjYXN0cyB0byBtYWtlIGNvZGUgbW9yZSA2NGJpdC1zYWZlLgoKMjAwMS0wMy0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTCwgZG9jcy9CVUlMRDogV2UgbmVlZCBHTlUgbWFrZSAzLjc4IG9yIG5ld2VyLgoKMjAwMS0wMy0wNyAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogTWlub3IgY29ycmVjdGlvbjogV2UgbXVzdCB3YWl0Cgl1bnRpbCBwYXJzZV9mb250X2Jib3ggaXMgY2hhbmdlZCBiZWZvcmUgd2UgdXNlIGxvZ2ljYWwgc2hpZnQgcmlnaHRzCglpbiB0aGUgYXNzaWdubWVudHMgb2YgYHJvb3QtPmFzY2VuZGVyJywgYHJvb3QtPmRlc2NlbmRlcicsIGFuZAoJYHJvb3QtPm1heF9hZHZhbmNlX3dpZHRoJy4KCgkoVDFfRG9uZV9GYWNlKTogRnJlZSBgY2hhcl9uYW1lJyB0YWJsZSB0byBhdm9pZCBhIG1lbW9yeSBsZWFrLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4uCgoyMDAxLTAzLTA1ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfTG9hZF9HbHlwaCk6IFNldCBnbHlwaCBjb250cm9sIGRhdGEgdG8gdGhlCgl0aGUgVHlwZSAyIGdseXBoIGNoYXJzdHJpbmcgKHVzZWQgYnkgY29udmVyc2lvbiBwcm9ncmFtcykuCglTdWJtaXR0ZWQgYnkgSGEgU2hhbyA8aGFzaGFvQGNoaW5lc2UuY29tPi4KCjIwMDEtMDMtMDQgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUuTGVjYUByZW5hdWx0LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBDb3JyZWN0IGEgc3R1cGlkIHR5cG8gd2hpY2ggcHJldmVudGVkCgljb3JyZWN0IGNvbXBpbGF0aW9uIChUVF9NU19MQU5HSURfVElHUklHTkFfRVRISU9QSUEgYXBwZWFyZWQgdHdpY2UpLgoKMjAwMS0wMy0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSGludGVyKTogQWRkIGVsZW1lbnRzCglgZGlzYWJsZV9ob3J6X2VkZ2VzJywgYGRpc2FibGVfdmVydF9lZGdlcycuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYwkoYWhfaGludF9lZGdlc18zLCBhaF9oaW50ZXJfaGludF9lZGdlcyk6IFVzZQoJdGhlbSAoYW5kIHJlbW92ZSBzdGF0aWMgdmFyaWFibGVzIHdpdGggdGhlIHNhbWUgbmFtZXMpLgoJKiBzcmMvcGNmL3BjZnV0aWwuYyAoQml0T3JkZXJJbnZlcnQpOiBBZGQgYGNvbnN0Jy4KCSogZG9jcy9nbG5hbWVzLnB5OiBVcGRhdGVkIHRvIGxhdGVzdCBwc3RhYmxlcy5oIGNoYW5nZXMuCgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWs6IEFkZCB0ZXN0IGZvciBIdXJkLgoJKiBidWlsZHMvaHVyZC9kZXRlY3QubWs6IFJlbW92ZWQuCgoyMDAxLTAzLTA0ICBTYW5kZXIgdmFuIGRlciBXYWwgIDxzdmR3YWxAeHM0YWxsLm5sPgoKCSogc3JjL3BzbmFtZXMvcHN0YWJsZXMuaDogQWRkIG1vcmUgYGNvbnN0Jy4KCSogc3JjL3BjZi9wY2Z1dGlsLmM6IERpdHRvLgoKMjAwMS0wMy0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBGaXhpbmcgdHlwbwoJKEZUX0dseXBoX0RvbmUgLT4gRlRfRG9uZV9HbHlwaCkuCgoyMDAxLTAzLTAxICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLkxlY2FAcmVuYXVsdC5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogQWRkZWQgc29tZSBuZXcgTWljcm9zb2Z0IGxhbmd1YWdlCgljb2RlcyBhbmQgTENJRHMgYXMgZm91bmQgaW4gT2ZmaWNlIFhwLgoKMjAwMS0wMi0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy9odXJkL2RldGVjdC5tazogTmV3IGZpbGUuICBBZGRlZCBzdXBwb3J0IHRvIGRldGVjdCB0aGUgR05VCglIdXJkIG9wZXJhdGluZyBzeXN0ZW0gYXMgVW5peC1saWtlLiAgRml4IHN1Ym1pdHRlZCBieSBBbnRob255IEZvawoJPGZva2FAZGViaWFuLm9yZz4uCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKTogU2V0IGdseXBoIGNvbnRyb2wgZGF0YSB0byB0aGUKCXRoZSBUeXBlIDEgZ2x5cGggY2hhcnN0cmluZyAodXNlZCBieSBjb252ZXJzaW9uIHByb2dyYW1zKS4KCVN1Ym1pdHRlZCBieSBIYSBTaGFvIDxoYXNoYW9AY2hpbmVzZS5jb20+LgoKMjAwMS0wMi0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z3JheXMuYyAoZ3JheXNfc3dlZXApOiBUaGUgZnVuY3Rpb24gZGlkbid0IGV4aXQKCWltbWVkaWF0ZWx5IGlmIGBudW1fY2VsbHMnIHdhcyAwIGFzIGl0IHNob3VsZC4gIFRoYW5rcyB0byBCb3JpcyBmb3IKCWZpbmRpbmcgdGhpcyBvdXQuCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEZpeGVkIG1lbW9yeSBsZWFrIHdoZW4KCWJpdG1hcCByZW5kZXJpbmcgZmFpbHMgKHRoYW5rcyB0byBHcmFoYW0gQXNoZXIpLgoKMjAwMS0wMi0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weSAoRG9jU2VjdGlvbjo6YWRkX2VsZW1lbnQpOiBVc2UKCWBzZWxmLnByaW50X2Vycm9yKCknLgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLntndWVzcyxzdWJ9OiBVcGRhdGVkIChmcm9tIGZ0cC5nbnUub3JnKS4KCjIwMDEtMDItMTMgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5LCBpbmNsdWRlL2ZyZWV0eXBlLyouaDogVXBkYXRlZCB0aGUgRG9jTWFrZXIKCXNjcmlwdCB0byBzdXBwb3J0IGNoYXB0ZXJzIGFuZCBzZWN0aW9uIGJsb2NrIG9yZGVyaW5nLiAgVXBkYXRlZCB0aGUKCXB1YmxpYyBoZWFkZXIgZmlsZXMgYWNjb3JkaW5nbHkuCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX0NvcHkpOiBBZHZhbmNlIHdpZHRoIGFuZCBnbHlwaCBmb3JtYXQKCXdlcmUgbm90IGNvcnJlY3RseSBjb3BpZWQuCgoyMDAxLTAyLTA4ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpOiBSZW1vdmVkIGFuCgl1bm5lY2Vzc2FyeSBmcHJpbnRmKCBzdGRlcnIsIC4uLiApLgoKMjAwMS0wMi0wNyAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogQWRkZWQgY29kZSB0byBnZXQgdGhlCgl1bml0c19wZXJfRU0gZnJvbSB0aGUgdmFsdWUgYXNzaWduZWQgaW4gcGFyc2VfZm9udF9tYXRyaXgsIGlmCglhdmFpbGFibGUuICBEZWZhdWx0IHRvIDEwMDAgaWYgbm90IGF2YWlsYWJsZS4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfbWF0cml4KTogQWRkZWQgbG9naWMgdG8gZ2V0Cgl0aGUgdW5pdHNfcGVyX0VNIGZyb20gdGhlIEZvbnRNYXRyaXguCgoJKGNmZl9wYXJzZV9maXhlZF90aG91c2FuZCk6IE5ldyBmdW5jdGlvbi4gIEdldHMgYSByZWFsIG51bWJlciBmcm9tCgl0aGUgQ0ZGIGZvbnQsIGJ1dCBtdWx0aXBsaWVzIGJ5IDEwMDAgKHRoaXMgaXMgdG8gYXZvaWQgcm91bmRpbmcKCWVycm9ycyB3aGVuIHBsYWNpbmcgdGhpcyByZWFsIG51bWJlciBpbnRvIGEgMTYuMTYgZml4ZWQgbnVtYmVyKS4KCgkoY2ZmX3BhcnNlX3JlYWwpOiBBZGRlZCBjb2RlIHNvIHRoYXQgdGhlIGludGVnZXIgcGFydCBpcyBtb3ZlZAoJaW50byB0aGUgaGlnaCBzaXh0ZWVuIGJpdHMgb2YgdGhlIDE2LjE2IGZpeGVkIG51bWJlci4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogQWRkZWQgbG9naWMgdG8gZ2V0IHRoZSB1bml0cwoJcGVyIEVNIGZyb20gdGhlIENGRiBkaWN0aW9uYXJ5LCBpZiBhdmFpbGFibGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmg6IEluIHN0cnVjdCBDRkZfRm9udF9EaWN0XywKCWFkZGVkIGEgdW5pdHNfcGVyX2VtIG1lbWJlciB0byBmYWNpbGl0YXRlIHBhc3Npbmcgb2YgdW5pdHNfcGVyX2VtCglmcm9tIGZ1bmN0aW9uIGNmZl9wYXJzZV9mb250X21hdHJpeC4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoaXNfYWxwaGEpOiBNYWtlIGAtJyBhIGxlZ2FsIGFscGhhbnVtZXJpYwoJY2hhcmFjdGVyLiAgVGhpcyBpcyBzbyB0aGF0IGZvbnQgbmFtZXMgd2l0aCBgLScgYXJlIGZ1bGx5IHBhcnNlZCwKCWV0Yy4uLgoKMjAwMS0wMi0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChzaGlmdF9lbGVtZW50cyk6IFJlbW92ZSBpZiBjbGF1c2UgKHdoaWNoIGlzCglvYnNvbGV0ZSBub3cpLgoKCShyZWFsbG9jYXRlX3QxX3RhYmxlLCBQU19UYWJsZV9Eb25lKTogUmVwbGFjZSBSRUFMTE9DKCkgd2l0aCBBTExPQygpCgkrIE1FTV9Db3B5KCkgdG8gYXZvaWQgYSBtZW1vcnkgYnVnLgoKMjAwMS0wMi0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEltcHJvdmVkIHRoZSBpbmRleCBzb3J0aW5nIHJvdXRpbmUgdG8gcGxhY2UKCWNhcGl0YWwgbGV0dGVycyBiZWZvcmUgc21hbGwgb25lcy4gIEFkZGVkIHRoZSBgPG9yZGVyPicgbWFya2VyIHRvCglzZWN0aW9uIGJsb2NrcyBpbiBvcmRlciB0byBnaXZlIHRoZSBvcmRlciBvZiBibG9ja3MuCgoyMDAxLTAxLTMwICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLkxlY2FAcmVuYXVsdC5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogTGF0ZXN0IHVwZGF0ZXMgdG8gTWljcm9zb2Z0IGxhbmd1YWdlCglJRCBjb2Rlcy4KCjIwMDEtMDEtMjQgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIGhldXJpc3RpYyB0byBnZXQKCXVuaXRzX3Blcl9FTSBmcm9tIHRoZSBmb250IG1hdHJpeC4KCgkocGFyc2VfZGljdCk6IERlbGV0ZWQgdGVzdCB0byBzZWUgd2hldGhlciB0aGUgRm9udEluZm8ga2V5d29yZCBoYXMKCWJlZW4gc2Vlbi4gIERlbGV0aW9uIG9mIHRoaXMgdGVzdCBhbGxvd3MgZm9udHMgd2l0aG91dCBGb250SW5mbwoJZGljdGlvbmFyaWVzIHRvIGJlIHBhcnNlZCBieSB0aGUgVHlwZSAxIGRyaXZlci4KCgkoVDFfT3Blbl9GYWNlKTogRGVsZXRlZCBlbXB0eSBzdWJyb3V0aW5lcyBhcnJheSB0ZXN0IHRvIG1ha2Ugc3VyZQoJZm9udHMgd2l0aCBubyBzdWJyb3V0aW5lcyBzdGlsbCBhcmUgcGFyc2VkLgoKMjAwMS0wMS0xNyAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8ZnJhbmNlc2NvLnphcHBhLm5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2ZyZWFkLmMgKHBjZl9nZXRfcHJvcGVydGllcywgcGNmX2dldF9tZXRyaWNzLAoJcGNmX2dldF9iaXRtYXBzKTogRml4IGNvbXBpbGVyIGVycm9ycy4KCjIwMDEtMDEtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYzogUmVtb3ZlZCBzb21lIGNvbXBpbGF0aW9uIHdhcm5pbmdzIHJlbGF0ZWQKCXRvIGNvbXBhcmlzb24gb2Ygc2lnbmVkIHZzLiB1bnNpZ25lZCBpbnRlZ2Vycy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBDaGFuZ2VkIHRoZSBkZWJ1ZyB0cmFjZQoJY29uc3RhbnRzIGZyb20gdHJhY2VfdDJ4eHh4IHRvIHRyYWNlX2NmZnh4eHggdG8gYmUgYWJsZSB0byBjb21waWxlCgl0aGUgQ0ZGIGRyaXZlciBpbiBkZWJ1ZyBtb2RlLgoKMjAwMS0wMS0xMSAgTWF0dGhldyBDcm9zYnkgIDxtY3Jvc2J5QG1hcnRob24ub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBGaXggcHJvYmxlbXMgd2l0aCBzZXBhcmF0ZQoJLS1wcmVmaXggYW5kIC0tZXhlYy1wcmVmaXguCgoyMDAxLTAxLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogQWRkZWQgY3Jvc3MtcmVmZXJlbmNlcyBnZW5lcmF0aW9uIGFzIHdlbGwgYXMKCW1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIHBhdGhuYW1lIHdpbGRjYXJkIG1hdGNoaW5nLgoKMjAwMS0wMS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogTWlub3IgaW1wcm92ZW1lbnRzIHRvIHJlZHVjZSB1bndhbnRlZCBzcGFjZXMKCWFuZCBlbXB0eSBsaW5lcyBpbiBvdXRwdXQuCgoyMDAxLTAxLTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogSW1wcm92ZWQgc2NyaXB0IHRvIGdlbmVyYXRlIHRhYmxlIG9mIGNvbnRlbnRzCglhbmQgaW5kZXggcGFnZXMuICBJdCBhbHNvIHN1cHBvcnRzIHdpbGRjYXJkcyBvbiBub24gVW5peCBzeXN0ZW1zLgoKCSogaW5jbHVkZS9mcmVldHlwZS8qLmgsIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvKi5oOiBVcGRhdGVkIGNvbW1lbnRzCgl0byBpbmNsdWRlIHNlY3Rpb24gZGVmaW5pdGlvbnMvZGVsaW1pdGF0aW9ucyBmb3IgdGhlIEFQSSBSZWZlcmVuY2UKCWdlbmVyYXRvci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogTW92ZWQgZGVjbGFyYXRpb24gb2YKCWBGVF9HZW5lcmljX0ZpbmFsaXplcicgYW5kIHRoZSBgRlRfR2VuZXJpYycgc3RydWN0dXJlIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oOiBoZXJlLgoKMjAwMS0wMS0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBVcGRhdGVkIFVuaWNvZGUgY29kZSByYW5nZSBjb21tZW50cy4KCjIwMDEtMDEtMDMgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3J1bGVzLm1rOiBVc2UgY2ZmZ2xvYWQue2MsaH0gaW5zdGVhZCBvZiB0Mmdsb2FkLntjLGh9LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBDaGFuZ2VkIHRvIHVzZSBjZmZ0eXBlcy5oCgkoY2ZmZXJycy5oKSBpbnN0ZWFkIG9mIHQydHlwZXMuaCAodDJlcnJvcnMuaCwgcmVzcGVjdGl2ZWx5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogTWVyZ2VkIGluIGNoYW5nZXMgZnJvbQoJdDJ0eXBlcy5oIGFuZCBtYWRlIHRoaXMgdGhlIGNhbm9uaWNhbCBgdHlwZXMnIGhlYWRlciBmb3IgdGhlIENGRgoJZHJpdmVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MnR5cGVzLmg6IFRoaXMgZmlsZSB3YXMgbWVyZ2VkIHdpdGgKCWNmZnR5cGVzLmggYW5kIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QyZXJyb3JzLmg6CVJlbmFtZWQgdG8gY2ZmZXJycy5oLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9jZmYvY2Zmb2Jqcy5oLCBzcmMvY2ZmL2NmZnBhcnNlLmMsCglzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2ZmLmMsIHNyYy9jZmYvY2ZmbG9hZC5jLAoJc3JjL2NmZi9jZmZnbG9hZC5jLCBzcmMvY2ZmL2NmZmdsb2FkLmg6IENoYW5nZWQgdG8gdXNlCgljZmZnbG9hZC57YyxofSBpbnN0ZWFkIG9mIHQyZ2xvYWQue2MsaH0uICBBbGwgb2NjdXJyZW5jZXMgb2YgdDJfCgkoVDJfKSB3ZXJlIHJlcGxhY2VkIHdpdGggY2ZmXyAoQ0ZGXywgcmVzcGVjdGl2ZWx5KS4KCgkqIHNyYy9jZmYvdDJnbG9hZC5oOiBSZW5hbWVkIGNmZmdsb2FkLmguCgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYzogUmVuYW1lZCBjZmZnbG9hZC5jCgoyMDAwLTAxLTAyICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBidWlsZHMvdm1zOiBTdXBwb3J0IGZpbGVzIGZvciBWTVMgYXJjaGl0ZWN0dXJlIGFkZGVkLgoJKiBkZXNjcmlwLm1tcywgc3JjLyovZGVzY3JpcC5tbXM6IFZNUyBtYWtlZmlsZXMgYWRkZWQuCgkqIFJFQURNRS5WTVM6IE5ldyBmaWxlLgoKMjAwMC0wMS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogTElDRU5TRS5UWFQ6IEFkZGVkIGluZm8gYWJvdXQgUENGIGRyaXZlciBsaWNlbnNlLgoKMjAwMS0wMS0wMSAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8ZnJhbmNlc2NvLnphcHBhLm5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvKjogTmV3IGRyaXZlciBtb2R1bGUgZm9yIFBDRiBmb250IGZvcm1hdCAodXNlZCBpbgoJWCBXaW5kb3cgU3lzdGVtKS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggKEZUX1RyYWNlKTogQWRkZWQgdmFsdWVzIGZvcgoJUENGIGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wY2Z0eXBlcy5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogQWRkZWQgUENGIGRyaXZlciBtb2R1bGUuCgoyMDAxLTAxLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9HZXRfQ2hhcl9JbmRleCk6IEZpeCBwYXJhbWV0ZXIgdHlwZS4KCjIwMDAtMTItMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9tb2R1bGVzLm1rIChjbGVhbl9tb2R1bGVfbGlzdCk6IEZpeGVkIGRlbGV0aW9uIG9mIG1vZHVsZQoJZmlsZSBpbiBjYXNlIGBtYWtlIG1ha2VfbW9kdWxlX2xpc3QnIGlzIGNhbGxlZCBiZWZvcmUgYG1ha2Ugc2V0dXAnLgoKMjAwMC0xMi0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Mb2FkX0NoYXJzZXQpOiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlcy4KCShDRkZfTG9hZF9DaGFyc2V0LCBDRkZfTG9hZF9FbmNvZGluZyk6IFJlbW92ZSB1bm5lY2Vzc2FyeSB2YXJpYWJsZQoJZGVmaW5pdGlvbi4KCjIwMDAtMTItMzAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QydHlwZXMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogQ2hhbmdlZCB0aGUgc3RydWN0dXJlcyBmb3IKCUNGRl9FbmNvZGluZyBhbmQgQ0ZGX0VuY29kaW5nIGZvciB0aGUgbmV3IGltcGxlbWVudGF0aW9ucyBvZiB0aGUKCWNoYXJzZXQgYW5kIGVuY29kaW5nIHBhcnNlcnMgaW4gdGhlIENGRiBkcml2ZXIuCgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYyAodDJfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlLAoJdDJfb3BlcmF0b3Jfc2VhYyk6IEFkZGVkIHRoZXNlIGZ1bmN0aW9ucyBmb3IgdXNlIGluIGltcGxlbWVudGluZyB0aGUKCXNlYWMgZW11bGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBUeXBlIDIgZW5kY2hhciBvcGVyYXRvci4KCShUMl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIHNlYWMgZW11bGF0aW9uIGZvciB0aGUgZW5kY2hhcgoJb3BlcmF0b3IuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0xvYWRfRW5jb2RpbmcsIENGRl9Mb2FkX0NoYXJzZXQsCglDRkZfRG9uZV9FbmNvZGluZywgQ0ZGX0RvbmVfQ2hhcnNldCk6IEV4dGVuZGVkIHRvIGxvYWQgYW5kIHBhcnNlIHRoZQoJY2hhcnNldC9lbmNvZGluZyB0YWJsZXMsIGFuZCBmcmVlIHRoZSBtZW1vcnkgdXNlZCBieSB0aGVtIHdoZW4gdGhlCglDRkYgZHJpdmVyIGlzIGZpbmlzaGVkIHdpdGggdGhlbS4gIEFkZGVkIHRhYmxlcwoKCSAgICBjZmZfaXNvYWRvYmVfY2hhcnNldAoJICAgIGNmZl9leHBlcnRfY2hhcnNldAoJICAgIGNmZl9leHBlcnRzdWJzZXRfY2hhcnNldAoJICAgIGNmZl9zdGFuZGFyZF9lbmNvZGluZwoJICAgIGNmZl9leHBlcnRfZW5jb2RpbmcKCglzbyB0aGF0IHRoZSBlbmNvZGluZy9jaGFyc2V0IHBhcnNlciBjYW4gaGFuZGxlIHByZWRlZmluZWQgZW5jb2RpbmdzIGFuZAoJY2hhcnNldHMuCgoyMDAwLTEyLTI0ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90Mmdsb2FkLmMgKFQyX0xvYWRfR2x5cGgpOiBBZGRlZCBjb2RlCXNvIHRoYXQgdGhlIGZvbnQKCXRyYW5zZm9ybSBpcyBhcHBsaWVkLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBjb2RlIHNvIHRoYXQKCXRoZSBmb250IG1hdHJpeCBudW1iZXJzCWFyZSBzY2FsZWQgYnkgMS8obWF0cml4LT55eSkuICBBbHNvLCB0aGUKCW9mZnNldCB2ZWN0b3Igbm93IGNvbnRhaW5zIGludGVnZXIgdmFsdWVzIGluc3RlYWQgb2YgMTYuMTYgZml4ZWQKCW51bWJlcnMuCgoyMDAwLTEyLTIyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGNvbW1lbnRzIGFuZCBjb21tZW50ZWQtb3V0IGNvZGUuCgoyMDAwLTEyLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NpZC9jaWRhZm0uYywgc3JjL2NpZC9jaWRhZm0uaDogcmVtb3ZlZCB1bi1uZWVkZWQgZmlsZXMsCgl3ZSdsbCB3b3JrIG9uIHN1cHBvcnRpbmcgQ0lEIEFGTSBmaWxlcyBsYXRlciBJIGd1ZXNzIDotKQoKMjAwMC0xMi0yMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQsIGFoX2hpbnRlcl9sb2FkX2dseXBoKToKCUNoYW5nZWQgc28gdGhhdCBmb250cyB3aXRoIGEgbm9uLXN0YW5kYXJkIEZvbnRNYXRyaXggcmVuZGVyCgljb3JyZWN0bHkuICBQcmV2aW91c2x5LCB0aGUgZmlyc3QgZ2x5cGggcmVuZGVyZWQgZnJvbSBzdWNoIGEKCWZvbnQgZGlkIG5vdCBoYXZlIHRoZSB0cmFuZm9ybWF0aW9uIG1hdHJpeCBhcHBsaWVkLgoKMjAwMC0xMi0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogKi5tazogQWRkZWQgbG90cyBvZiBgLlBIT05ZJyB0YXJnZXRzLgoKMjAwMC0xMi0xNyAgS2Fyc3RlbiBGbGVpc2NoZXIgIDxrZmxlaXNjMUBmb3JkLmNvbT4KCgkqICoubWs6IEltcGxlbWVudGVkIGBwbGF0Zm9ybScgdGFyZ2V0IHRvIGRpc2FibGUgYXV0by1kZXRlY3Rpb24uCgoyMDAwLTEyLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2Rlc2lnbi9tb2R1bGVzLmh0bWw6IFJlbW92ZWQuICBDb3ZlcmVkIGJ5IGRlc2lnbi0qLmh0bWwuCgoJKiBJTlNUQUxMOiBBZGRlZCBpbmZvIGFib3V0IG1ha2VwcC4KCjIwMDAtMTItMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJQWRkZWQgc3VwcG9ydCBmb3IgY2xpcHBlZCBkaXJlY3QgcmVuZGVyaW5nIGluIHRoZSBzbW9vdGggcmVuZGVyZXIuCglUaGlzIHNob3VsZCBub3QgYnJlYWsgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgZXhpc3RpbmcgYXBwbGljYXRpb25zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBNb3ZlCglkZWZpbml0aW9uIG9mIHRoZSBGVF9CQm94IHN0cnVjdHVyZSBmcm9tIHRoZSBmb3JtZXIgdG8gdGhlIGxhdHRlci4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IEFkZCBgZnRfcmFzdGVyX2ZsYWdfY2xpcCcgdmFsdWUgdG8KCUZUX1Jhc3Rlcl9GbGFnIGVudW1lcmF0aW9uLgoJQWRkIGBjbGlwX2JveCcgZWxlbWVudCB0byBGVF9SYXN0ZXJfUGFyYW1zIHN0cnVjdHVyZS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX2NvbnZlcnRfZ2x5cGgpOiBJbXBsZW1lbnQgaXQuCgoJKiBJTlNUQUxMOiBVcGRhdGVkIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgb24gV2luMzIsIGxpc3RpbmcgdGhlCgluZXcgYG1ha2Ugc2V0dXAgbGlzdCcgdGFyZ2V0IHVzZWQgdG8gbGlzdCBzdXBwb3J0ZWQKCWNvbXBpbGVycy90YXJnZXRzLgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChmdF9ibGFja19yZW5kZXIpOiBUZXN0IGZvciB1bnN1cHBvcnRlZAoJZGlyZWN0IHJlbmRlcmluZyBiZWZvcmUgdGVzdGluZyBhcmd1bWVudHMuCgoyMDAwLTEyLTEzICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnQyYnVpbGQuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogRml4ZWQgaGVhZGVyIGluY2x1c2lvbiBtYWNyb3MKCXRvIHVzZSBkaXJlY3QgZGVmaW5pdGlvbnMuICBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBkbyB0aGVzZSB0aGluZ3MKCWluIGEgcG9ydGFibGUgd2F5IDotKCAgVGhlIHJlc3Qgb2YgdGhlIGNvZGUgc2hvdWxkIGZvbGxvdyBzaG9ydGx5Cgl0aG91Z2ggZXZlcnl0aGluZyBjb21waWxlcyBub3cuCgoJKiBidWlsZHMvY29tcGlsZXIvaW50ZWxjLm1rLCBidWlsZHMvY29tcGlsZXIvd2F0Y29tLm1rOiBOZXcgZmlsZXMuCgoJKiBidWlsZHMvd2luMzIvZGV0ZWN0Lm1rOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW50ZWwgQy9DKysKCWNvbXBpbGVyLCBhcyB3ZWxsIGFzIF9wcmVsaW1pbmFyeV8gKHJlYWQ6IGRvZXNuJ3Qgd29yayEpIHN1cHBvcnQgZm9yCglXYXRjb20uICBBbHNvIGFkZGVkIGEgbmV3IHNldHVwIHRhcmdldC4gIFR5cGUgYG1ha2Ugc2V0dXAgbGlzdCcgZm9yCglhIGxpc3Qgb2Ygc3VwcG9ydGVkIGNvbW1hbmQtbGluZSBjb21waWxlcnMgb24gV2luMzIuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmM6IEFkZGVkIGR1bW15IHN5bWJvbCB0byBhdm9pZCBlbXB0eSBmaWxlIGlmCgljb25kaXRpb25hbHMgYXJlIG9mZi4KCjIwMDAtMTItMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmM6IEZpeGVkIHR5cG9zLiAgRml4ZWQgaW5jbHVzaW9uIG9mIHdyb25nCglmdGNvbmZpZy5oIGZpbGUuCgoyMDAwLTEyLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdDJidWlsZC5oIChGVDJfUk9PVCwgRlQyX0NPTkZJR19ST09UKToKCVJlbW92ZWQuICBBTlNJIEMgZG9lc24ndCAoZXhwbGljaXRseSkgYWxsb3cgbWFjcm8gZXhwYW5zaW9uIGluCglhcmd1bWVudHMgdXNpbmcgYCMjJy4KCShGVDJfUFVCTElDX0ZJTEUsIEZUMl9DT05GSUdfRklMRSwgRlQyX0lOVEVSTkFMX0ZJTEUpOiBVc2UgZGlyZWN0b3J5CgluYW1lcyBkaXJlY3RseS4gIE1ha2UgdGhlbSBjb25maWd1cmFibGUuICBVc2UgYCMjJyB0byBzdHJpcCBsZWFkaW5nCglhbmQgdHJhaWxpbmcgc3BhY2VzIGZyb20gYXJndW1lbnRzLgoKCSogYnVpbGRzL3VuaXgvZnQydW5peC5oOiBBZGFwdGVkLgoKCSogc3JjL2Jhc2UvZnRzeXN0ZW0uYyAoZnRfYWxsb2MsIGZ0X3JlYWxsb2MsIGZ0X2ZyZWUsIGZ0X2lvX3N0cmVhbSwKCWZ0X2Nsb3NlX3N0cmVhbSk6IFVzZSBGVF9DQUxMQkFDS19ERUYuCgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jOiBVc2UgbmV3IGhlYWRlciBzY2hlbWUuCgkoRlRfRG9uZV9NZW1vcnkpOiBVc2UgZnJlZSgpIGZyb20gRlRfTWVtb3J5IHN0cnVjdHVyZS4KCgkqIHNyYy9iYXNlL2Z0aW5pdC5jLCBzcmMvYmFzZS9mdG1hYy5jOiBIZWFkZXIgc2NoZW1lIGZpeGVzLgoKMjAwMC0xMi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnQyYnVpbGQuaCAoRlQyX0NPTkZJR19ST09ULAoJRlQyX1BVQkxJQ19GSUxFLCBGVDJfQ09ORklHX0ZJTEUsIEZUMl9JTlRFUk5BTF9GSUxFLAoJRlRfU09VUkNFX0ZJTEUpOiBVc2UgYCMjJyBvcGVyYXRvciB0byBiZSByZWFsbHkgQU5TSSBDIGNvbXBsaWFudC4KCjIwMDAtMTItMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogUmVtb3ZlIHVudXNlZCBVU0VfQ0ZMQUdTIHZhcmlhYmxlLgoKMjAwMC0xMi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogKi8qLmg6IENoYW5nZWQgYm9keSBpbmNsdXNpb24gbWFjcm8gbmFtZXMgdG8gc3RhcnQgYW5kIGVuZCB3aXRoCglgX18nICh0aG9zZSB3aGljaCBoYXZlbid0IGNvbnZlcnRlZCB5ZXQpLiAgRml4ZWQgbWlub3IgY29udmVyc2lvbgoJaXNzdWVzLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBVcGRhdGVkIHRvIG5ldyBoZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jOiBSZW1vdmUgdW51c2VkIENBTENfTGVuZ3RoKCkgbWFjcm8uCgoyMDAwLTEyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogKi8qLltjaF06IENoYW5nZWQgc291cmNlIGZpbGVzIHRvIGFkaGVyZSB0byB0aGUgbmV3CgloZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4gIE5vdCBjb21wbGV0ZWx5IHRlc3RlZCBidXQgd29ya3MgZm9yIG5vdwoJaGVyZS4KCgkqIHNyYy9jZmYvdDJkcml2ZXIuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QyZHJpdmVyLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZkcml2ci5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MmxvYWQuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJsb2FkLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZsb2FkLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3Qyb2Jqcy5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90Mm9ianMuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZm9ianMuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJwYXJzZS5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJwYXJzZS5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJ0b2tlbnMuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZnRva2VuLmg6IE5ldyBmaWxlLgoKCSogc3JjL2NmZi9jZmYuYywgc3JjL2NmZi9ydWxlcy5tazogVXBkYXRlZC4KCjIwMDAtMTItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRscnUuYyAoRlRfTHJ1X0RvbmUpOiBGaXhlZCBtZW1vcnkgbGVhay4KCjIwMDAtMTItMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9tb2R1bGUubWs6IFJlcGxhY2VkIGB4eHggIycgd2l0aCBgeHh4JChzcGFjZSkuCgkqIGJ1aWxkcy9vczIvZGV0ZWt0Lm1rLCBidWlsZHMvd2luMzIvZGV0ZWt0Lm1rOiBNb3ZlZCBjb21tZW50IHRvCglhdm9pZCB0cmFpbGluZyBzcGFjZXMgaW4gdmFyaWFibGUuCgkqIGJ1aWxkcy9mcmVldHlwZS5tazogVXNlICQoRCkgaW5zdGVhZCBvZiAkRCB0byBtYWtlIHN0YXRlbWVudCBtb3JlCglyZWFkYWJsZS4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEZvcm1hdHRpbmcuCgoyMDAwLTEyLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzYXV4L3BzYXV4bW9kLmM6IEZpeGVkIGEgYnJva2VuIGluY2x1c2lvbiBvZiBjb21wb25lbnQKCWhlYWRlciBmaWxlcyAoYW4gRlRfRkxBVF9DT01QSUxFIHRlc3Qgd2FzIG1pc3NpbmcpLgoKCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKEZUQ19NYW5hZ2VyX0RvbmUpOiBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZAoJYW4gb2NjYXNpb25hbCBjcmFzaCB3aGVuIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIChkdWUgdG8gYSBkYW5nbGluZwoJcG9pbnRlcikuCgoJKiBzcmMvYmFzZS9mdHN5c3RlbS5jIChGVF9Eb25lX01lbW9yeSk6IEZpeGVkIGFuIG9idmlvdXMgYnVnOgoJVGhlIEFOU0kgYGZyZWUoKScgZnVuY3Rpb24gd2FzIGNhbGxlZCBpbnN0ZWFkIG9mIGBtZW1vcnktPmZyZWUoKScuCgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBzZWN0aW9uIGZpbHRlcmluZywgbXVsdGktcGFnZSBnZW5lcmF0aW9uCgkoaW5kZXggcGFnZSBnZW5lcmF0aW9uIGlzIHN0aWxsIG1pc3NpbmcgdGhvdWdoKS4KCjIwMDAtMTItMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rLCBidWlsZHMvdW5peC9mdDJ1bml4Lmg6IFRoZSBmaWxlIGBmdDJ1bml4LmgnCglpcyBub3cgaW5zdGFsbGVkIGFzIDxmdDJidWlsZC5oPiBmb3IgVW5peCBzeXN0ZW1zLiAgTm90ZSB0aGF0IHdlCglzdGlsbCB1c2UgdGhlIGBmcmVldHlwZTIvZnJlZXR5cGUnIGluc3RhbGxhdGlvbiBwYXRoIGZvciBub3cuCgoJKiAqLyouW2NoXTogTm93IHVzaW5nIDxmdDJidWlsZC5oPiBhcyB0aGUgZGVmYXVsdCBidWlsZCBhbmQgc2V0dXAKCWNvbmZpZ3VyYXRpb24gZmlsZSBpbiBhbGwgcHVibGljIGhlYWRlcnMuICBJbnRlcm5hbCBzb3VyY2UgZmlsZXMKCXN0aWxsIG5lZWQgc29tZSBjaGFuZ2VzIHRob3VnaC4KCgkqIGJ1aWxkcy9kZXZlbC9mdDJidWlsZC5oLCBidWlsZHMvZGV2ZWwvZnRvcHRpb24uaDogQ3JlYXRlZCBhIG5ldwoJZGlyZWN0b3J5IHRvIGhvbGQgYWxsIGRldmVsb3BtZW50IG9wdGlvbnMgZm9yIGJvdGggdGhlIFVuaXggYW5kCglXaW4zMiBkZXZlbG9wZXIgYnVpbGRzLgoKCSogYnVpbGRzL3dpbjMyL2RldGVjdC5taywgYnVpbGRzL3dpbjMyL3czMi1iY2NkLm1rLAoJYnVpbGRzL3dpbjMyL3czMi1kZXYubWs6IENoYW5nZWQgdGhlIGRldmVsb3BlciBidWlsZCB0YXJnZXRzIHRvCglgZGV2ZWwtZ2NjJyBhbmQgYGRldmVsLWJjYycgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXZlbG9wIHdpdGggdGhlCglCb3JsYW5kIEMrKyBjb21waWxlci4KCjIwMDAtMTItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuMSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW4sIGJ1aWxkcy91bml4L2NvbmZpZ3VyZSwKCWJ1aWxkcy9jeWd3aW4vY29uZmlndXJlLmluLCBidWlsZHMvY3lnd2luL2NvbmZpZ3VyZTogU2V0dGluZwoJYHZlcnNpb25faW5mbycgdG8gNjoxOjAgZm9yIHRoZSAyLjAuMSByZWxlYXNlLgoKCSogQ0hBTkdFUzogQWRkZWQgYSBzdW1tYXJ5IG9mIGNoYW5nZXMgYmV0d2VlbiAyLjAuMSBhbmQgMi4wLgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW4sIGJ1aWxkcy9jeWd3aW4vZnRjb25maWcuaW46IENoYW5nZXMKCXRvIGFsbG93IGNvbXBpbGF0aW9uIHVuZGVyIFVuaXggd2l0aCB0aGUgVW5peC1zcGVjaWZpYyBjb25maWcKCWZpbGVzLgoKMjAwMC0xMi0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogUmV2aXNlZC4KCSogYnVpbGRzL2NvbXBpbGVyL2JjYy1kZXYubWssIGJ1aWxkcy9jb21waWxlci92aXN1YWxhZ2UubWssCglidWlsZHMvY29tcGlsZXIvYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjYy5taywKCWJ1aWxkcy93aW4zMi93MzItYmNjZC5tazogUmV2aXNlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRidWlsZC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBSZXZpc2VkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogVXBkYXRlZCB0byBuZXcgaGVhZGVyIGluY2x1c2lvbiBzY2hlbWUuCgoyMDAwLTExLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdG9wbGV2ZWwubWsgKC5QSE9OWSk6IEFkZGluZyBgZGlzdGNsZWFuJy4KCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rICguUEhPTlkpOiBBZGRpbmcgYGRldmVsJywgYHVuaXgnLCBgbGNjJywKCWBzZXR1cCcuCgoyMDAwLTExLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub2dyPgoKCSogSU5TVEFMTDogU2xpZ2h0bHkgdXBkYXRlZCB0aGUgcXVpY2sgc3RhcnRlciBkb2N1bWVudGF0aW9uIHRvCglpbmNsdWRlIElERSBjb21waWxhdGlvbiwgcHJldmVudCBhZ2FpbnN0IEJTRCBNYWtlLCBhbmQgc3BlY2lmeSBgbWFrZQoJc2V0dXAnIGluc3RlYWQgb2YgYSBzaW5nbGUgYG1ha2UnIGZvciBidWlsZCBjb25maWd1cmF0aW9uLgoKCSogaW5jbHVkZS9jb25maWcvZnRidWlsZC5oLCBpbmNsdWRlL2ludGVybmFsL2ludGVybmFsLmg6IEFkZGVkIG5ldwoJY29uZmlndXJhdGlvbiBmaWxlcyB1c2VkIHRvIGRldGVybWluZSB0aGUgbG9jYXRpb24gb2YgYWxsIHB1YmxpYywKCWNvbmZpZ3VyYXRpb24sIGFuZCBpbnRlcm5hbCBoZWFkZXIgZmlsZXMgZm9yIEZyZWVUeXBlIDIuICBNb2RpZmllZAoJYWxsIGhlYWRlcnMgdW5kZXIgYGluY2x1ZGUvZnJlZXR5cGUnIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuICBOb3RlCgl0aGF0IHdlIHN0aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBsaWJyYXJ5IHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzCgl0aG91Z2guCgoJKiBidWlsZHMvY29tcGlsZXIvYmNjLm1rLCBidWlsZHMvY29tcGlsZXIvYmNjLWRldi5taywKCWJ1aWxkcy93aW4zMi93MzItYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjY2QubWssCglidWlsZHMvd2luMzIvZGV0ZWN0Lm1rOiBBZGRlZCBuZXcgZmlsZXMgdG8gc3VwcG9ydCBjb21waWxhdGlvbiB3aXRoCgl0aGUgZnJlZSBCb3JsYW5kIEMrKyBjb21tYW5kLWxpbmUgY29tcGlsZXIuICBNb2RpZmllZCB0aGUgZGV0ZWN0aW9uCglydWxlcyB0byByZWNvZ25pemUgdGhlIG5ldyBgYmNjMzInIHRhcmdldCBpbiBgbWFrZSBzZXR1cCBiY2MzMicuCgoJKiBzcmMvc2ZudC90dGNtYXAuYywgc3JjL3NmbnQvdHRwb3N0LmMsIHNyYy9zZm50L3R0c2JpdC5jLAoJc3JjL3RydWV0eXBlL3R0b2Jqcy5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLAoJc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IEZpeGVkIGEgZmV3IGNvbXBhcmlzb25zIHRoYXQgQm9ybGFuZCBDKysKCWRpZG4ndCByZWFsbHkgbGlrZS4gIEJhc2ljYWxseSwgdGhpcyBjb21waWxlciBjb21wbGFpbnMgd2hlbiBGVF9VSW50CglpcyBjb21wYXJlZCB0byBGVF9VU2hvcnQgKGFwcGFyZW50bHksIGl0IHByb21vdGVzIGBVU2hvcnQnIHRvIGBJbnQnCglpbiB0aGVzZSBjYXNlcykuCgoyMDAwLTExLTMwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogdDJvYmpzLmMgKFQyX0luaXRfRmFjZSk6IEFkZGVkIGNhbGN1bGF0aW9uIG9mIGBmYWNlLT5oZWlnaHQnIGZvcgoJcHVyZSBDRkYgZm9udHMuCgoJKiB0MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogRml4ZWQgY29tcHV0YXRpb24gb2YgYGZhY2UtPmhlaWdodCcuCgoyMDAwLTExLTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ29uaWNfQ2hlY2spOiBGaXhlZCBhIHJlYWxseSBzdHVwaWQKCWJ1ZyBpbiB0aGUgZm9ybXVsYSB1c2VkIHRvIGNvbXB1dGUgdGhlIGNvbmljIELpemllciBleHRyZW1hCglvZiBub24tbW9ub3Rvbm91cyBhcmNzLgoKMjAwMC0xMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1NxcnRGaXhlZCksIHNyYy9iYXNlL2Z0b2Jqcy5jCgkoRlRfU2V0X1JlbmRlcmVyKTogVXNlIEZUX0VYUE9SVF9ERUYuCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChGVENfSW1hZ2VfQ2FjaGVfTG9va3VwKSwKCXNyYy9jYWNoZS9mdGNtYW5hZy5jIChGVENfTWFuYWdlcl9Eb25lLCBGVENfTWFuYWdlcl9SZXNldCwKCUZUQ19NYW5hZ2VyX0xvb2t1cF9GYWNlLCBGVENfTWFuYWdlcl9Mb29rdXBfU2l6ZSwKCUZUQ19NYW5hZ2VyX1JlZ2lzdGVyX0NhY2hlKSwgc3JjL2NhY2hlL2Z0Y3NiaXRzLmMKCShGVENfU0JpdF9DYWNoZV9Mb29rdXApOiBEaXR0by4KCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmggKEZUQ19HbHlwaE5vZGVfSW5pdCksCglzcmMvaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oIChGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQpOiBVc2UgRlRfRVhQT1JULgoKMjAwMC0xMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogSW5jbHVkZSB0dHNiaXQuaCBhbmQgdHRwb3N0Lmggb25seQoJY29uZGl0aW9uYWxseS4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcywgU2V0X1BpeGVsX1NpemVzKTogU2V0Cglgc2l6ZS0+c3RyaWtlX2luZGV4JyBvbmx5IGNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jOiBJbmNsdWRlIHQxYWZtLmggb25seQoJY29uZGl0aW9uYWxseS4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuaDogTW92ZSBhbGwgdHlwZSBkZWZpbml0aW9ucyB0by4uLgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oOiBOZXcgZmlsZS4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBVc2UgaXQuCgoyMDAwLTExLTI5ICA/Pz8gPz8/ICA8ZGFyaW5AZWF6ZWwuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IFJlcGxhY2VkIEZUX0NBVCBhbmQgRlRfWENBVAoJd2l0aCBhIGRpcmVjdCBzb2x1dGlvbiAod2hpY2ggYWxzbyBzYXRpZmllcyBwaWNreSBjb21waWxlcnMpLgoKMjAwMC0xMS0yOCAgWUFNQU5PLVVDSEkgSGlkZXRvc2hpICA8bWVyQGRpbi5vci5qcD4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfSW5pdF9TaXplKTogRml4ICNpZmRlZidzIHRvIHdvcmsgd2l0aAoJZGlzYWJsZWQgaW50ZXJwcmV0ZXIgYWxzby4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZV9Db3VudCk6IEZpeCBpbmNvcnJlY3QKCXBhcmVudGhlc2VzLgoKMjAwMC0xMS0yNiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jIChUMl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIGxvZ2ljIHRvIGdseXBoCgl3aWR0aCBzZXR0aW5nIGNvZGUgdG8gdGFrZSBpbnRvIGFjY291bnQgZXZlbi9vZGQgYXJndW1lbnQgY291bnRzCglhbmQgZ2x5cGggd2lkdGggb3BlcmFuZCBiZWZvcmUgZW5kY2hhci9obW92ZXRvL3Ztb3ZldG8uCgoyMDAwLTExLTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvYW5zaS9hbnNpLm1rOiBGaXggaW5jbHVzaW9uIG9yZGVyIG9mIGZpbGVzLgoKMjAwMC0xMS0yNiAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBDb21wdXRlIHN0eWxlIGZsYWdzLgoKMjAwMC0xMS0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2NvbXBpbGVyL2Fuc2ktY2MubWsgKENMRUFOX0xJQlJBUlkpOiBGaXggcnVsZSBhbmQKCWNvbmRpdGlvbmFsLgoKMjAwMC0xMS0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgcGFyc2VfY2hhcnN0cmluZ3MpOiBVc2UgZGVjcnlwdAoJZnVuY3Rpb24gZnJvbSBQU0F1eCBtb2R1bGUuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9Eb25lX1BhcnNlKTogUmVuYW1lZCB0by4uLgoJKFQxX0ZpbmFsaXplX1BhcnNlcik6IE5ldyBmdW5jdGlvbiAodG8gYXZvaWQgbmFtZSBjbGFzaCB3aXRoIGEKCWZ1bmN0aW9uIGluIHRoZSBQU0F1eCBtb2R1bGUpLgoJKFQxX0RlY3J5cHQpOiBSZW1vdmVkIHNpbmNlIGl0IGlzIGR1cGxpY2F0ZWQgaW4gdGhlIFBTQXV4IG1vZHVsZS4KCShUMV9HZXRfUHJpdmF0ZV9EaWN0KTogQWRkZWQgYHBzYXV4JyBhcyBuZXcgcGFyYW1ldGVyOyB1c2UgZGVjcnlwdAoJZnVuY3Rpb24gZnJvbSBQU0F1eCBtb2R1bGUuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5oOiBBZGFwdGVkLgoKMjAwMC0xMS0yMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDJvYmpzLmMgKFQyX0luaXRfRmFjZSk6IEZvciBwdXJlIENGRiBmb250cywgc2V0Cglgcm9vdC0+bnVtX2ZhY2VzJyB0byBgY2ZmLT5udW1fZmFjZXMnIGFuZCBzZXQgYHVuaXRzX3Blcl9FTScKCXRvIDEwMDAuCgoJKiBzcmMvY2ZmL3QycGFyc2UuYyAocGFyc2VfdDJfcmVhbCk6IEZpeGVkIHJlYWwgbnVtYmVyIHBhcnNpbmcKCWxvb3AuCgoJKiBzcmMvY2ZmL3QybG9hZC5jIChUMl9HZXRfU3RyaW5nKTogQ2FsbGVkIFQyX0dldF9OYW1lIHdpdGggYQoJc2lkIHRoYXQgd2FzIG9mZiBieSBvbmUuCgoyMDAwLTExLTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXIpOiBBZGRlZCBuZXcgZmllbGRzIHRvIGNvbnRyb2wKCWF1dG8taGludGluZyBvZiBzeW50aGV0aWMgVHlwZSAxIGZvbnRzLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCwgYWhfaGludGVyX2xvYWRfZ2x5cGgpOgoJQWRkZWQgYXV0by1oaW50aW5nIHN1cHBvcnQgb2Ygc3ludGhldGljIFR5cGUgMSBmb250cy4KCjIwMDAtMTEtMTIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9va1VwX1RhYmxlLCBUVF9Mb2FkX0dlbmVyaWNfVGFibGUpOiBDaGFuZ2UKCXRyYWNpbmcgb3V0cHV0LgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKTogU2V0IGJvb2xlYW4gdmFyaWFibGUKCWBoYXMtb3V0bGluZScgdG8gdHJ1ZSBvbmx5IGlmIHRoZSBmb250IGhhcyBhIGBnbHlmJyBvciBgQ0ZGICcgdGFibGUuCgoyMDAwLTExLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IEZpeCByYXN0ZXIxLT5yYXN0ZXIgYW5kCgl0eXBlMXotPnR5cGUxLgoKMjAwMC0xMS0xMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbiwgYnVpbGRzL2N5Z3dpbi9mcmVldHlwZS1jb25maWcuaW46CglBZGRlZCBhIC0tbGlidG9vbCBvcHRpb24uICBXaGVuIGZyZWV0eXBlLWNvbmZpZyAtLWxpYnRvb2wgaXMKCWludm9rZWQsIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnkKCWlzIHJldHVybmVkLgoKMjAwMC0xMS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2N5Z3dpbi9jeWd3aW4tZGVmLmluOiBTYW1lIGZpeCBhcyBwcmV2aW91cy4KCjIwMDAtMTEtMTAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbjogQWRkCgoJICAgIElOU1RBTExfUFJPR1JBTSA6PSBASU5TVEFMTF9QUk9HUkFNQAoJICAgIElOU1RBTExfU0NSSVBUICA6PSBASU5TVEFMTF9TQ1JJUFRACgoJc28gdGhhdCBpbnN0YWxsYXRpb24gb2YgZnJlZXR5cGUtY29uZmlnIGRvZXMgbm90IGZhaWwuCgoyMDAwLTExLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY3lnd2luL2ZyZWV0eXBlLWNvbmZpZy5pbiwgYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOgoJTW92ZSB0ZXN0IGRvd24gZm9yIGVtcHR5IC0tZXhlYy1wcmVmaXguCglGaXggLS12ZXJzaW9uLgoKCSogYnVpbGRzL2N5Z3dpbi9pbnN0YWxsLm1rLCBidWlsZHMvdW5peC9pbnN0YWxsLm1rOiBVc2UKCSQoSU5TVEFMTF9TQ1JJUFQpIGZvciBpbnN0YWxsYXRpb24gb2YgZnJlZXR5cGUtY29uZmlnLgoKCSogYnVpbGRzL2N5Z3dpbi9pbnN0YWxsLm1rOiBGaXggY2xlYW4gdGFyZ2V0IG5hbWVzLgoKMjAwMC0xMS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT0KCgpMb2NhbCBWYXJpYWJsZXM6CnZlcnNpb24tY29udHJvbDogbmV2ZXIKY29kaW5nOiBsYXRpbi0xCkVuZDoK