MjAwNC0wMy0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSmFtZmlsZSwgdm1zX21ha2UuY29tLCBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3AsCglidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS92Y3Byb2osIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaDoKCUFkZCBMWlcgbW9kdWxlLgoKCSogSmFtZmlsZS5pbjogUmVtb3ZlZC4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IHMvTUlOL0ZUX01JTi8sIHMvTUFYL0ZUX01BWC8sCglzL0FCUy9GVF9BQlMvLiAgVXBkYXRlZCBhbGwgY2FsbGVycy4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZGljdCksIHNyYy9wY2YvcGNmZHJpdnIuYwoJKFBDRl9GYWNlX0luaXQpOiBVc2UgRlRfRVJST1JfQkFTRS4KCjIwMDQtMDMtMDQgIEFsYmVydCBDaGluICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCUFkZCBzdXBwb3J0IGZvciBQQ0YgZm9udHMgY29tcHJlc3NlZCB3aXRoIExaVyAoZXh0ZW5zaW9uIC5wY2YuWiwKCWNyZWF0ZWQgd2l0aCBgY29tcHJlc3MnKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgsIGRldmVsL2Z0b3B0aW9uLmgKCShGVF9DT05GSUdfT1BUSU9OX1VTRV9MWlcpOiBOZXcgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bHp3Lmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9MWldfSCk6IE5ldyBtYWNybyBmb3IKCWZ0bHp3LmguCgoJKiBzcmMvbHp3Lyo6IE5ldyBmaWxlcy4KCgkqIHNyYy9wY2YvcGNmZHJpdnIuYzogSW5jbHVkZSBGVF9MWldfSC4KCShQQ0ZfRmFjZV9Jbml0KTogVHJ5IExaVyBhbHNvLgoKCSogc3JjL2d6aXAvZnRnemlwLmM6IHMvMC9HemlwX0Vycl9Pay8gd2hlcmUgYXBwcm9wcmlhdGUuCglCZWF1dGlmeS4KCjIwMDQtMDMtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmMgKHBzaF9oaW50X3RhYmxlX2luaXQpOiBTaW1wbGlmeSBjb2RlLgoKMjAwNC0wMy0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUFkZCBlbWJlZGRlZCBiaXRtYXAgc3VwcG9ydCB0byBDRkYgZHJpdmVyLgoKCSogc3JjL2NmZi9jZmZvYmpzLmggKENGRl9TaXplUmVjKTogTmV3IHN0cnVjdHVyZS4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2J1aWxkZXJfaW5pdCk6IFVwZGF0ZWQuCgkoY2ZmX3Nsb3RfbG9hZCk6IFVwZGF0ZWQuCglbVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTXTogTG9hZCBzYml0LgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKHNiaXRfc2l6ZV9yZXNldCkKCVtUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFNdOiBOZXcgZnVuY3Rpb24uCgkoY2ZmX3NpemVfZ2V0X2dsb2JhbHNfZnVuY3MsIGNmZl9zaXplX2RvbmUsIGNmZl9zaXplX2luaXQpOiBVcGRhdGVkLgoJKGNmZl9zaXplX3Jlc2V0KTogVXBkYXRlZC4KCVtUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFNdOiBDYWxsIHNiaXRfc2l6ZV9yZXNldC4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCgkoY2ZmX2RyaXZlcl9jbGFzcyk6IFVzZSBDRkZfU2l6ZVJlYy4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDMtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX3NjYWxlX3dpZHRocyk6IERvbid0IHVzZQoJRlRfUm91bmRGaXggYnV0IEZUX1BJWF9ST1VORC4KCShwc2hfYmx1ZXNfc25hcF9zdGVtKTogRG9uJ3QgdXNlIGJsdWVfc2hpZnQgYnV0IGJsdWVfdGhyZXNob2xkLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28uYyAoUFNIX1NUUk9OR19USFJFU0hPTERfTUFYSU1VTSk6IE5ldyBtYWNyby4KCShwc2hfZ2x5cGhfZmluZF9zdHJpbmdfcG9pbnRzKTogVXNlIFBTSF9TVFJPTkdfVEhSRVNIT0xEX01BWElNVU0uIAoJKHBzaF9nbHlwaF9maW5kX2JsdWVfcG9pbnRzKTogTmV3IGZ1bmN0aW9uLiAgTmVlZGVkIGZvciBmb250cyBsaWtlCglwMDUyMDAzbC5wZmIgKFVSVyBQYWxsYWRpbyBMIFJvbWFuKSB3aGljaCBoYXZlIGZsZXggY3VydmVzIGF0IHRoZQoJYmFzZSBsaW5lIHdpdGhpbiBibHVlIHpvbmVzLCBidXQgdGhlIGZsZXggY3VydmVzIGFyZW4ndCBjb3ZlcmVkIGJ5CgloaW50cy4KCShwc19oaW50c19hcHBseSk6IFVzZSBwc2hfZ2x5cGhfZmluZF9ibHVlX3BvaW50cy4KCjIwMDQtMDItMjcgIEdhcnJpY2sgTWVla2VyICA8Z2Fycmlja0BkaWdpdGFsYW5hcmNoeS5jb20+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEZpeCBjb21waWxlciBmbGFncyBmb3IKCWAtLXdpdGgtb2xkLW1hYy1mb250cycuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBzcmMvYmFzZS9mdG1hYy5jOiBzL1RBUkdFVF9BUElfTUFDX0NBUkJPTi8hVEFSR0VUX0FQSV9NQUNfT1M4Ly4KCShGVF9OZXdfRmFjZV9Gcm9tX1Jlc291cmNlKTogTmV3IGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlKTogVXNlIEZUX05ld19GYWNlX0Zyb21fUmVzb3VyY2UuCgkoRlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMpOiBVc2UgRlRfTmV3X0ZhY2VfRnJvbV9SZXNvdXJjZS4KCVtfX01XRVJLU19fXTogRG9uJ3QgaW5jbHVkZSBGU3BfZm9wZW4uaC4KCjIwMDQtMDItMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IEZpeCB2YWx1ZSBvZgoJYGRpbS0+c3Rkdy5jb3VudCcuCglEb24ndCBhc3NpZ24gZGVmYXVsdCB2YWx1ZXMgdG8gYmx1ZSBzY2FsZSBhbmQgYmx1ZSBzaGlmdC4KCjIwMDQtMDItMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDItMjUgIEdhcnJpY2sgTWVla2VyICA8Z2Fycmlja0BkaWdpdGFsYW5hcmNoeS5jb20+CgkgICAgU3RldmUgSGFydHdlbGwgIDxzaHNwYW1zaW5rQGNvbWNhc3QubmV0PgoKCUltcHJvdmUgTWFjT1MgZm9uZCBzdXBwb3J0LiAgUHJvdmlkZSBhIG5ldyBBUEkKCWBGVF9OZXdfRmFjZV9Gcm9tX0ZTU3BlYycgc2ltaWxhciB0byBgRlRfTmV3X0ZhY2UnLgoKCSogc3JjL2Jhc2UvZnRtYWMuYyBbX19NV0VSS1NfX106IEluY2x1ZGUgRlNwX2Zwb3Blbi5oLgoJU1RSRUFNX0ZJTEUgW19fTVdFUktTX19dOiBOZXcgbWFjcm8uCgkoZnRfRlNwX3N0cmVhbV9jbG9zZSwgZnRfRlNwX3N0cmVhbV9pbykgW19fTVdFUktTX19dOiBOZXcgZnVuY3Rpb25zLgoJKGZpbGVfc3BlY19mcm9tX3BhdGgpIFtfX01XRVJLU19fXTogVXBkYXRlZCAjaWYgc3RhdGVtZW50LgoJKGdldF9maWxlX3R5cGUsIG1ha2VfbHdmbl9zcGVjKTogVXNlIGBjb25zdCcgZm9yIGFyZ3VtZW50LgoJKGlzX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogUmVtb3ZlZC4KCShjb3VudF9mYWNlX3NmbnQsIGNvdW50X2ZhY2VzKTogTmV3IGZ1bmN0aW9ucy4KCShwYXJzZV9mb25kKTogRG8gc29tZSByYW5nZSBjaGVja2luZy4KCShyZWFkX2x3Zm4pOiBDaGFuZ2UgdHlwZSBvZiBzZWNvbmQgYXJndW1lbnQuCglObyBsb25nZXIgY2FsbCBGU3BPcGVuUmVzRmlsZS4KCShPcGVuRmlsZUFzUmVzb3VyY2UpOiBOZXcgZnVuY3Rpb24uCgkoRlRfTmV3X0ZhY2VfRnJvbV9MV0ZOKTogVXNlIGBjb25zdCcgZm9yIHNlY29uZCBhcmd1bWVudC4KCVVzZSBPcGVuRmlsZUFzUmVzb3VyY2UuCgkoRlRfTmV3X0ZhY2VfRnJvbV9TdWl0Y2FzZSk6IENoYW5nZSB0eXBlIG9mIHNlY29uZCBhcmd1bWVudC4KCU5vIGxvbmdlciBjYWxsIEZTcE9wZW5SZXNGaWxlLgoJTG9vcCBvdmVyIGFsbCByZXNvdXJjZSBpbmRpY2VzLgoJKEZUX05ld19GYWNlX0Zyb21fZGZvbnQpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOiBSZW1vdmVkLgoJKEZUX0dldEZpbGVfRnJvbV9NYWNfTmFtZSk6IFVzZSBgY29uc3QnIGZvciBmaXJzdCBhcmd1bWVudC4KCShSZXNvdXJjZUZvcmtTaXplKTogUmVtb3ZlZC4KCShGVF9OZXdfRmFjZSk6IFVwZGF0ZWQgdG8gdXNlIG5ldyBmdW5jdGlvbnMuCgkoRlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMpOiBOZXcgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmg6IFVwZGF0ZWQuCgoyMDA0LTAyLTI0ICBNYWxjb2xtIFRheWxvciAgPG10YXlsb3JAY2xlYXIubmV0Lm56PgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCkgPEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FPjoKCUhhbmRsZSBjYXNlIHdoZXJlIG91dGxpbmUtPm51bV92ZWRnZXMgaXMgemVybyB3aGlsZSBjb21wdXRpbmcgaGludGVkCgltZXRyaWNzLgoKMjAwNC0wMi0yNCAgR29yZG9uIENoaWxkcyAgPGdjaGlsZHNAcXVpY2tjdXQuY29tLmF1PgoKCSogc3JjL2NmZi9jZmZjbWFwLmMgKGNmZl9jbWFwX3VuaWNvZGVfaW5pdCk6IFByb3ZpZGUgY29ycmVjdCB2YWx1ZQoJZm9yIGBjb3VudCcuCgoyMDA0LTAyLTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX1ByaXZhdGVSZWMpOiBBZGQKCWBleHBhbnNpb25fZmFjdG9yJy4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iIChwc2hfYmx1ZXNfc2NhbGVfem9uZXMpOiBGaXggY29tcHV0YXRpb24KCW9mIGJsdWVzLT5ub19vdmVyc2hvb3RzIC0tIGBibHVlc19zY2FsZScgaXMgc3RvcmVkIHdpdGggYQoJbWFnbmlmaWNhdGlvbiBvZiAxMDAwLCBhbmQgYHNjYWxlJyByZXR1cm5zIGZyYWN0aW9uYWwgcGl4ZWxzLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChUMV9PcGVuX0ZhY2UpOiBJbml0aWFsaXplIGBibHVlX3NoaWZ0JywKCWBibHVlX2Z1enonLCBgZXhwYW5zaW9uX2ZhY3RvcicsIGFuZCBgYmx1ZV9zY2FsZScgYWNjb3JkaW5nIHRvIHRoZQoJVHlwZSAxIHNwZWNpZmljYXRpb24uCgoJKiBzcmMvdHlwZTEvdDF0b2tlbnMuaDogSGFuZGxlIGBFeHBhbnNpb25GYWN0b3InLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wMi0yNCAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoKCVByb3ZpZGUgZ2VuZXJpYyBhY2Nlc3MgdG8gTWFjT1MgcmVzb3VyY2UgZm9ya3MuCgoJKiBzcmMvYmFzZS9mdHJmb3JrLmMsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oOiBOZXcKCWZpbGVzLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUkZPUktfSC4KCShNYWNfUmVhZF9QT1NUX1Jlc291cmNlLCBNYWNfUmVhZF9zZm50X1Jlc291cmNlKTogUmVtb3ZlIGFyZ3VtZW50cwoJYHJlc291cmNlX2xpc3RvZmZzZXQnIGFuZCBgcmVzb3VyY2VfZGF0YScgYW5kIGFkYXB0IGNvZGUKCWFjY29yZGluZ2x5LiAgVGhlc2UgdmFsdWVzIGFyZSBjYWxjdWxhdGVkIG91dHNpZGUgb2YgdGhlIGZ1bmN0aW9uCglub3cuCglBZGQgbmV3IGFyZ3VtZW50IGBvZmZzZXRzJy4KCShJc01hY1Jlc291cmNlKTogVXNlIGBGVF9SYWNjZXNzX0dldF9IZWFkZXJJbmZvJyBhbmQgCglgRlRfUmFjY2Vzc19HZXRfRGF0YU9mZnNldHMnLgoJKGxvYWRfZmFjZV9pbl9lbWJlZGRlZF9yZm9yayk6IE5ldyBmdW5jdGlvbi4KCShsb2FkX21hY19mYWNlKTogVXNlIGxvYWRfZmFjZV9pbl9lbWJlZGRlZF9yZm9yay4KCShmdF9pbnB1dF9zdHJlYW1fbmV3KTogUmVuYW1lZCB0by4uLgoJKEZUX1N0cmVhbV9OZXcpOiBUaGlzLiAgVXNlIEZUX0JBU0VfREVGLiAgVXBkYXRlZCBhbGwgY2FsbGVycy4KCShmdF9pbnB1dF9zdHJlYW1fZnJlZSk6IFJlbmFtZWQgdG8uLi4KCShGVF9TdHJlYW1fRnJlZSk6IFRoaXMuICBVc2UgRlRfQkFTRV9ERUYuICBVcGRhdGVkIGFsbCBjYWxsZXJzLgoKCSogc3JjL2Jhc2UvZnRiYXNlLmM6IEluY2x1ZGUgZnRyZm9yay5jLgoKCSogc3JjL2Jhc2UvcnVsZXMubWsgKEJBU0VfU1JDKSwgc3JjL2Jhc2UvSmFtZmlsZTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfUkZPUktfSCk6CglOZXcgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogQWRkZWQgYHJmb3JrJyBhcyBhIG5ldwoJdHJhY2UgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaDogRGVjbGFyZSBGVF9TdHJlYW1fTmV3IGFuZAoJRlRfU3RyZWFtX0ZyZWUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLCBkZXZlbC9mdG9wdGlvbi5oCgkoRlRfQ09ORklHX09QVElPTl9HVUVTU0lOR19FTUJFRERFRF9SRk9SSyk6IE5ldyBvcHRpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF9zdHJyY2hyKTogTmV3IG1hY3JvLgoKMjAwNC0wMi0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IEluY2x1ZGUgRlRfRlJFRVRZUEVfSC4KCjIwMDQtMDItMjMgIE1hc2F0YWtlIFlBTUFUTyAgPGpldEBneXZlLm9yZz4KCglQcm92aWRlIGEgc2ltcGxlIEFQSSB0byBjb250cm9sIEZyZWVUeXBlJ3MgdHJhY2luZyBsZXZlbHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCAoRlRfVHJhY2VfR2V0X0NvdW50LAoJRlRfVHJhY2VfR2V0X05hbWUpOiBOZXcgZGVjbGFyYXRpb25zLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jIChGVF9UcmFjZV9HZXRfQ291bnQsIEZUX1RyYWNlX0dldF9OYW1lKTogTmV3CglmdW5jdGlvbnMuCgoyMDA0LTAyLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+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+eV9zY2FsZSByZWFsbHkgcHJlY2lzZS4KCgkoRlRfTG9hZF9HbHlwaCk6IFVwZGF0ZSBjb21wdXRhdGlvbiBvZiBsaW5lYXJIb3JpQWR2YW5jZSBhbmQKCWxpbmVhclZlcnRBZHZhbmNlLgoKCSogc3JjL3RydWUvdHlwZS90dGludGVycC5jIChVcGRhdGVfTWF4KTogVXNlIEZUX1JFQUxMT0MuCgoyMDAzLTExLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2ZpdC8qOiBNb3JlIHVwZGF0ZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogU2V0IHRvIDguCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogU2V0IHRvIDk6NjozLgoJKiBSRUFETUU6IFVwZGF0ZWQuCgoyMDAzLTExLTEzICBKb2huIEEuIEJveWQgSnIuICA8amFib3lkanJAbmV0d2Fsay5jb20+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKGJkZl9pbnRlcnByZXRfc3R5bGUpLCBzcmMvcGNmL3BjZnJlYWQuYwoJKHBjZl9pbnRlcnByZXRfc3R5bGUpOiBSZXBsYWNlIHNwYWNlcyB3aXRoIGRhc2hlcyBpbiBwcm9wZXJ0aWVzCglTRVRXSURUSF9OQU1FIGFuZCBBRERfU1RZTEVfTkFNRSB0byBzaW1wbGlmeSBwYXJzaW5nLgoKMjAwMy0xMS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMy0xMS0xMSAgSm9obiBBLiBCb3lkIEpyLiAgPGphYm95ZGpyQG5ldHdhbGsuY29tPgoKCUhhbmRsZSBTRVRXSURUSF9OQU1FIGFuZCBBRERfU1RZTEVfTkFNRSBwcm9wZXJ0aWVzIGZvciBCREYgYW5kIFBDRgoJZm9udHMuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKGJkZl9pbnRlcnByZXRfc3R5bGUpOiBOZXcgYXV4aWxpYXJ5IGZ1bmN0aW9uLgoJKEJERl9GYWNlX0luaXQpOiBEb24ndCBoYW5kbGUgc3R5bGUgcHJvcGVydGllcyBidXQgY2FsbAoJYmRmX2ludGVycHJldF9zdHlsZS4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfaW50ZXJwcmV0X3N0eWxlKTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbi4KCShwY2ZfbG9hZF9mb250KTogRG9uJ3QgaGFuZGxlIHN0eWxlIHByb3BlcnRpZXMgYnV0IGNhbGwKCXBjZl9pbnRlcnByZXRfc3R5bGUuCgoyMDAzLTExLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuNyByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogU2V0IHRvIDcuCgoJKiBidWlsZHMvdW5peC9mdDJ1bml4Lmg6IEZpeCBjb21tZW50cy4KCgkqIGJ1aWxkcy91bml4L2Z0Y29uZmlnLmluOiBTeW5jaHJvbml6ZWQgd2l0aCBBTlNJIHZlcnNpb24uCglVc2UgYCN1bmRlZicgaW4gdGVtcGxhdGVzIGFzIHJlY29tbWVuZGVkIGluIHRoZSBhdXRvY29uZgoJZG9jdW1lbnRhdGlvbi4KCVNpbmNlIHJlYWwgYCN1bmRlZicgbGluZXMgZG9uJ3Qgc3Vydml2ZSBkdXJpbmcgY29uZmlndXJhdGlvbiwgdXNlCglgL3VuZGVmJyBpbnN0ZWFkOyB0aGUgcG9zdHByb2Nlc3NpbmcgZmFjaWxpdHkgb2YgdGhlCglBQ19DT05GSUdfSEVBREVSUyBhdXRvY29uZiBtYWNybyBjb252ZXJ0cyB0aGVtIHRvIGAjdW5kZWYnLgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoaW5zdGFsbCk6IEluc3RhbGwgVW5peCB2ZXJzaW9uIG9mCglgZnRjb25maWcuaCcuCgoJKiBidWlsZHMvdW5peC91bml4LWNjLmluIChDRkxBR1MpOiBTZXQgRlRfQ09ORklHX0NPTkZJR19IIG1hY3JvCgl0byBpbmNsdWRlIHRoZSBjb3JyZWN0IGBmdGNvbmZpZy5oJyBmaWxlLgoKCSogYnVpbGRzL3VuaXgvZnQtbXVubWFwLm00IChGVF9NVU5NQVBfREVDTCk6IFJlbW92ZWQuCgkoRlRfTVVOTUFQX1BBUkFNKTogVXBkYXRlZCBzeW50YXggdG8gYXV0b2NvbmYgMi41OS4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5tNDogVXBkYXRlZCBzeW50YXggdG8gYXV0b2NvbmYgMi41OS4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogVXNlIEFDX0NPTkZJR19IRUFERVJTIGluc3RlYWQgb2YKCUFDX0NPTkZJR19IRUFERVIgdG8gY3JlYXRlIGZ0Y29uZmlnLmgsIGFuZCB1c2Ugc2Vjb25kIGFyZ3VtZW50Cgl0byByZXBsYWNlIGAvdW5kZWYnIHdpdGggYCN1bmRlZicuCglEb24ndCB1c2UgRlRfTVVOTUFQX0RFQ0wgYnV0IEFDX0NIRUNLX0RFQ0xTIHRvIGNoZWNrIGZvciBtdW5tYXAuCglVc2UgQVNfSEVMUF9TVFJJTkcgaW4gQUNfQVJHX1dJVEguCglVcGRhdGUgc3ludGF4IHRvIGF1dG9jb25mIDIuNTkuCgoJKiBidWlsZHMvdW5peC9sdG1haW4uc2g6IFJlZ2VuZXJhdGVkIHdpdGggYGxpYnRvb2xpemUgLS1mb3JjZQoJLS1jb3B5JyBmcm9tIGxpYnRvb2wgMS41LgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00OiBSZWdlbmVyYXRlZCB3aXRoIGBhY2xvY2FsIC1JIC4nIGZyb20KCWF1dG9tYWtlIDEuNy44LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkIHdpdGggYXV0b2NvbmYgMi41OS4KCSogYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzLCBidWlsZHMvdW5peC9jb25maWcuc3ViOiBVcGRhdGVkIGZyb20KCWBjb25maWcnIENWUyBtb2R1bGUgYXQgc3VidmVyc2lvbnMuZ251Lm9yZwoJKiBidWlsZHMvdW5peC9pbnN0YWxsLXNoLCBidWlsZHMvdW5peC9ta2luc3RhbGxkaXJzOiBVcGRhdGVkIGZyb20KCWB0ZXhpbmZvJyBDVlMgbW9kdWxlIGF0IHN1YnZlcnNpb25zLmdudS5vcmcuCgoJKiBidWlsZHMvdm1zL2Z0Y29uZmlnLmg6IFN5bmNocm9uaXplZCB3aXRoIEFOU0kgdmVyc2lvbi4KCgkqIGRvY3MvQ1VTVE9NSVpFOiBGaXggZG9jdW1lbnRhdGlvbiBlcnJvci4KCSogZG9jcy9DSEFOR0VTLCBkb2NzL1ZFUlNJT04uRExMLCBkb2NzL3JlbGVhc2U6IFVwZGF0ZWQuCgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKHJlZmRvYyk6IFVwZGF0ZWQgLS10aXRsZS4KCjIwMDMtMTEtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS42IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCgkqIGluc3RhbGw6IFJlbW92ZWQuICBPYnNvbGV0ZS4KCjIwMDMtMTEtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9TRk5UX0guCgkoc2ZudF9zZXJ2aWNlX3NmbnRfdGFibGUpOiBOZXcgc2VydmljZS4KCShzZm50X3NlcnZpY2VzKTogVXBkYXRlZC4KCgkqIGRvY3MvbGljZW5zZS50eHQ6IFJld29yZGVkLgoKMjAwMy0xMS0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS8qOiBBZGQgYSBndWFyZCB0byBhbGwgcHVibGljIGhlYWRlciBmaWxlcyB3aGljaAoJbG9hZCBGVF9GUkVFVFlQRV9IIHRvIHJlamVjdCBmcmVldHlwZS5oIGZyb20gRnJlZVR5cGUgMS4KCjIwMDMtMTEtMDIgIFBhdHJpY2sgV2VsY2hlICA8cHJsdzFAbmV3bi5jYW0uYWMudWs+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIubTQsIGJ1aWxkcy91bml4L2Z0LW11bm1hcC5tNDogUHJvdGVjdAoJZmlyc3QgYXJndW1lbnQgb2YgQUNfREVGVU4gd2l0aCBicmFja2V0cyB0byBhdm9pZCBwb3NzaWJsZQoJZXhwYW5zaW9uLgoKMjAwMy0xMS0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNnbHlwaC5oOiBEb24ndCBpbmNsdWRlIHN0ZGRlZi5oLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGaXggY2hlY2sgZm9yIGZ0MmJ1aWxkLmguCgoyMDAzLTExLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IENoZWNrIHRoYXQgZnQyYnVpbGQuaCBoYXMgYmVlbgoJbG9hZGVkIGZpcnN0LgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jIChGVF9HZXRfUFNfRm9udF9JbmZvKTogRml4IGluY29ycmVjdGx5IGFwcGxpZWQKCXBhdGNoLgoKMjAwMy0xMC0zMSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYyAoRlRfR2V0X1BTX0ZvbnRfSW5mbywgRlRfSGFzX1BTX0dseXBoX05hbWVzKToKCUZpeCBwYXJhbWV0ZXIgb3JkZXIgaW4gY2FsbHMgdG8gRlRfRkFDRV9GSU5EX1NFUlZJQ0UuCgoyMDAzLTEwLTMxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oCgkoRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0gpOiBSZW1vdmVkLiAgVW51c2VkLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jICh0NDJfc2VydmljZXMpOiBVcGRhdGVkLgoKMjAwMy0xMC0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9iZGZ0eXBlcy5oOiBSZW1vdmVkLiAgT2Jzb2xldGUuCgkqIHNyYy9iYXNlL2Z0YmRmLmM6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmg6IE1vdmVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmdHlwZXMuaDogVGhpcyBwbGFjZSBzaW5jZSBubyBvdGhlciBtb2R1bGUgbmVlZHMgdG8KCWtub3cgYWJvdXQgdGhvc2UgdHlwZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3Q0MnR5cGVzLmg6IE1vdmVkIHRvLi4uCgkqIHNyYy90eXBlNDIvdDQydHlwZXMuaDogVGhpcyBwbGFjZSBzaW5jZSBubyBvdGhlciBtb2R1bGUgbmVlZHMgdG8KCWtub3cgYWJvdXQgdGhvc2UgdHlwZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2YmRmLmg6IEluY2x1ZGUgRlRfQkRGX0guCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNuYW1lLmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzY21hcC5oOiBUaGlzLgoJVXBkYXRlZCBgRlRfU2VydmljZV9Qc05hbWVzJyAtPiBgRlRfU2VydmljZV9Qc0NNYXBzJyBhbmQKCWBQT1NUU0NSSVBUX05BTUVTJyAtPiBgUE9TVFNDUklQVF9DTUFQUycgZXZlcnl3aGVyZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2luZm8uaDogTmV3IGZpbGUsIHByb3ZpZGluZwoJUG9zdFNjcmlwdCBpbmZvIHNlcnZpY2UuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oIChGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfQ01BUFNfSCwKCUZUX1NFUlZJQ0VfUE9TVFNDUklQVF9JTkZPX0gpOiBOZXcgbWFjcm9zIGZvciBzdnBzY21hcC5oIGFuZAoJc3Zwc2luZm8uaC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9UWVBFNDJfVFlQRVNfSCwKCUZUX0lOVEVSTkFMX0NGRl9UWVBFU19ILCBGVF9JTlRFUk5BTF9CREZfVFlQRVNfSCk6IFJlbW92ZWQuCgoJKiBzcmMvYmFzZS9mdHR5cGUxLmM6IERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfVFlQRTFfVFlQRVNfSCBhbmQKCUZUX0lOVEVSTkFMX1RZUEU0Ml9UWVBFU19IIGJ1dCBGVF9JTlRFUk5BTF9TRVJWSUNFX0ggYW5kCglGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfSU5GT19ILgoJKEZUX0dldF9QU19Gb250X0luZm8sIEZUX0hhc19QU19HbHlwaF9OYW1lcyk6IFVzZSBuZXcKCVBPU1RTQ1JJUFRfSU5GTyBzZXJ2aWNlLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9JTkZPX0guCgkoY2ZmX3BzX2hhc19nbHlwaF9uYW1lcyk6IE5ldyBmdW5jdGlvbi4KCShjZmZfc2VydmljZV9wc19pbmZvKTogTmV3IHNlcnZpY2UuCgkoY2ZmX3NlcnZpY2VzKTogVXBkYXRlZC4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oLCBzcmMvY2ZmL2NmZm9ianMuaCwgc3JjL2NmZi9jZmZwYXJzZS5oOiBEb24ndAoJaW5jbHVkZSBGVF9JTlRFUk5BTF9DRkZfVFlQRVNfSCBidXQgY2ZmdHlwZXMuaCBkaXJlY3RseS4KCgkqIHNyYy9jaWYvY2lkcml2ZXIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfSU5GT19ILgoJKGNpZF9wc19nZXRfZm9udF9pbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGNpZF9zZXJ2aWNlX3BzX2luZm8pOiBOZXcgc2VydmljZS4KCShjaWRfc2VydmljZXMpOiBVcGRhdGVkLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QT1NUU0NSSVBUX0lORk9fSC4KCSh0MV9wc19nZXRfZm9udF9pbmZvLCB0MV9wc19oYXNfZ2x5cGhfbmFtZXMpOiBOZXcgZnVuY3Rpb25zLgoJKHQxX3NlcnZpY2VfcHNfaW5mbyk6IE5ldyBzZXJ2aWNlLgoJKHQxX3NlcnZpY2VzKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfSU5GT19ILgoJKHQ0Ml9wc19nZXRfZm9udF9pbmZvLCB0NDJfcHNfaGFzX2dseXBoX25hbWVzKTogTmV3IGZ1bmN0aW9ucy4KCSh0NDJfc2VydmljZV9wc19pbmZvKTogTmV3IHNlcnZpY2UuCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuaDogRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9UWVBFNDJfVFlQRVNfSAoJYnV0IHQ0MnR5cGVzLmggZGlyZWN0bHkuCgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChwc25hbWVzX2ludGVyZmFjZSwgcHNuYW1lc19zZXJ2aWNlcyk6CglSZW5hbWVkIHRvLi4uCgkocHNjbWFwc19pbnRlcmZhY2UsIHBzY21hcHNfc2VydmljZXMpOiBUaGlzLgoJVXBkYXRlZCBhbGwgdXNlcnMuCgoKCSogc3JjL2d6aXAvaW5mYmxvY2suYyAoaW5mbGF0ZV9ibG9ja3MpOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDMtMTAtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZW5jb2RpbmcpOiBIYW5kbGUgYC9FbmNvZGluZyBbIC4uLiBdJy4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBUZXN0IHdoZXRoZXIgYGVleGVjJwoJaXMgcmVhbC4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX3BhcnNlX2VuY29kaW5nKTogSW1wcm92ZSBib3VuZGFyeQoJY2hlY2tpbmcgd2hpbGUgcGFyc2luZy4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDMtMTAtMjEgIEpvc3NlbGluIE1vdWV0dGUgIDxqb3NzQGRlYmlhbi5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCAoVDFfRm9udFJlYyk6IGBwYWludF90eXBlJwoJYW5kIGBzdHJva2Vfd2lkdGgnIGFyZW4ndCBwb2ludGVycy4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Eb25lKSwgc3JjL3R5cGUxL3Qxb2Jqcy5jCgkoVDFfRmFjZV9Eb25lKTogRG9uJ3QgZnJlZSBgcGFpbnRfdHlwZScgYW5kIGBzdHJva2Vfd2lkdGgnLgoKMjAwMy0xMC0yMCAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChmbnRfY21hcF9jbGFzcyk6IEZpeCBwb3NpdGlvbiBvZiBgY29uc3QnLgoKMjAwMy0xMC0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6IFBhdGNoIGZyb20KCTIwMDMtMDgtMTggaW50cm9kdWNlZCBhIHNldmVyZSBidWcgKEZUX1JlbmRlcl9HbHlwaCB3YXMgY2FsbGVkCgl0d2ljZSB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMsIGNhdXNpbmcgc3RyYW5nZSByZXN1bHRzKS4gIFRoaXMKCWlzIGZpeGVkIG5vdyBieSBjbGVhcmluZyB0aGUgRlRfTE9BRF9SRU5ERVIgYml0IG9mIGBsb2FkX2ZsYWdzJy4KCgkqIHNyYy9iYXNlL2Z0cGZyLmMgKEZUX0dldF9QRlJfTWV0cmljcyk6IEluaXRpYWxpemUgYGVycm9yJy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc190b2J5dGVzKTogSW5pdGlhbGl6ZSBgbicuCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX3BhcnNlX3NmbnRzKTogSW5pdGlhbGl6ZSBgc3RyaW5nX3NpemUnLgoKMjAwMy0xMC0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUNvbXBsZXRlbHkgcmV2aXNlZCBUeXBlIDQyIHBhcnNlci4gIEl0IG5vdyBoYW5kbGVzIGJvdGggZm9udHMKCXByb2R1Y2VkIHdpdGggdHRmdG90NDIgKHRlc3RlZCB2ZXJzaW9uIDAuMy4xKSBhbmQKCVRydWVUeXBlVG9UeXBlNDIucHMgKHRlc3RlZCB2ZXJzaW9uIE1heSAyMDAxOyBpdCBpcyBuZWNlc3NhcnkgdG8KCWZpeCB0aGUgYnJva2VuIGhlYWRlciBjb21tZW50IHRvIGJlIGAlIVBTLVRydWVUeXBlRm9udC4uLicpLgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9HbHlwaFNsb3RfTG9hZCk6IENoYW5nZSBmb3VydGgKCXBhcmFtZXRlciB0byBgRlRfVUludCcuCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5oOiBVcGRhdGVkLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5oIChUNDJfUGFyc2VyUmVjKTogQ2hhbmdlIHR5cGUgb2YgYGluX21lbW9yeScKCXRvIEZUX0Jvb2wuCgkoVDQyX0xvYWRlcik6IENoYW5nZSB0eXBlIG9mIGBudW1fY2hhcnMnIGFuZCBgbnVtX2dseXBocycgdG8KCUZUX1VJbnQuCglBZGQgYHN3YXBfdGFibGUnIGVsZW1lbnQuCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAoVDQyX0tFWVdPUkRfQ09VTlQsIFQxX1RvRml4ZWQsCglUMV9Ub0Nvb3JkQXJyYXksIFQxX1RvVG9rZW5BcnJheSk6IFJlbW92ZWQuCgkoVDFfVG9CeXRlcyk6IE5ldyBtYWNyby4KCSh0NDJfaXNfYWxwaGEsIHQ0Ml9oZXh2YWwpOiBSZW1vdmVkLgoJKHQ0Ml9pc19zcGFjZSk6IEhhbmRsZSBgXDAnLgoJKHQ0Ml9wYXJzZV9lbmNvZGluZyk6IFVwZGF0ZWQgdG8gdXNlIG5ldyBQb3N0U2NyaXB0IHBhcnNlciByb3V0aW5lcwoJZnJvbSBwc2F1eC4KCUhhbmRsZSBgL0VuY29kaW5nIFsgLi4uIF0nIGFsc28uCgkoVDQyX0xvYWRfU3RhdHVzKTogTmV3IGVudW1lcmF0aW9uLgoJKHQ0Ml9wYXJzZV9zZm50cyk6IFVwZGF0ZWQgdG8gdXNlIG5ldyBQb3N0U2NyaXB0IHBhcnNlciByb3V0aW5lcwoJZnJvbSBwc2F1eC4KCSh0NDJfcGFyc2VfY2hhcnN0cmluZ3MpOiBVcGRhdGVkIHRvIHVzZSBuZXcgUG9zdFNjcmlwdCBwYXJzZXIKCXJvdXRpbmVzIGZyb20gcHNhdXguCglIYW5kbGUgYC9DaGFyU3RyaW5ncyA8PCAuLi4gPj4nIGFsc28uCglEb24ndCBleHBlY3QgdGhhdCAvLm5vdGRlZiBpcyB0aGUgZmlyc3QgZWxlbWVudCBpbiBkaWN0aW9uYXJ5LiAgQ29weQoJY29kZSBmcm9tIHR5cGUxIG1vZHVsZSB0byBoYW5kbGUgdGhpcy4KCSh0NDJfcGFyc2VfZGljdCk6IFVwZGF0ZWQgdG8gdXNlIG5ldyBQb3N0U2NyaXB0IHBhcnNlciByb3V0aW5lcwoJZnJvbSBwc2F1eC4KCVJlbW92ZSBjb2RlIGZvciBzeW50aGV0aWMgZm9udHMgKHdoaWNoIGNhbid0IG9jY3VyIGluIFR5cGUgNDIKCWZvbnRzKS4KCSh0NDJfbG9hZGVyX2RvbmUpOiBSZWxlYXNlIGBzd2FwX3RhYmxlJy4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoc2tpcF9zdHJpbmcpOiBJbmNyZWFzZSBgY3VyJyBwcm9wZXJseS4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfY2hhcnN0cmluZ3MpOiBNYWtlIHRlc3QgZm9yIGAubm90ZGVmJwoJZmFzdGVyLgoKMjAwMy0xMC0xNSAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKGJsdWVfY2hhcnMpLCBzcmMvd2luZm9udHMvd2luZm50LmMKCShmbnRfY21hcF9jbGFzc19yZWMsIGZudF9jbWFwX2NsYXNzKSwgc3JjL2JkZi9iZGZsaWIuYyAoZW1wdHksCglfbnVtX2JkZl9wcm9wZXJ0aWVzKSwgc3JjL2d6aXAvaW5mdXRpbC5jIChpbmZsYXRlX21hc2spLAoJc3JjL2d6aXAvaW5mZml4ZWQuaCAoZml4ZWRfYmwsIGZpeGVkX2JkLCBmaXhlZF90bCwgZml4ZWRfdGQpLAoJc3JjL2d6aXAvaW5mdHJlZXMuaCAoaW5mbGF0ZV90cmVlc19maXhlZCksIHNyZi9nemlwL2luZnRyZWVzLmMKCShpbmZsYXRlX3RyZWVzX2ZpeGVkKTogRGVjb3JhdGUgd2l0aCBtb3JlIGBjb25zdCcgdG8gYXZvaWQKCXdyaXRhYmxlIGdsb2JhbCB2YXJpYWJsZXMgd2hpY2ggYXJlIGRpc2FsbG93ZWQgb24gQVJNLgoKMjAwMy0xMC0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCwgcGFyc2VfY2hhcnN0cmluZ3MpOiBSZW1vdmUKCWNvZGUgc3BlY2lhbGx5IGZvciBzeW50aGV0aWMgZm9udHM7IHRoaXMgaXMgaGFuZGxlZCBlbHNld2hlcmUuCgkocGFyc2VfZW5jb2RpbmcpOiBSZW1vdmUgY29kZSBzcGVjaWFsbHkgZm9yIHN5bnRoZXRpYyBmb250czsgdGhpcyBpcwoJaGFuZGxlZCBlbHNld2hlcmUuCglJbXByb3ZlIGJvdW5kYXJ5IGNoZWNraW5nIHdoaWxlIHBhcnNpbmcuCgkocGFyc2VfZGljdCk6IEltcHJvdmUgYm91bmRhcnkgY2hlY2tpbmcgd2hpbGUgcGFyc2luZy4KCVVzZSBmdF9tZW1jbXAgdG8gc2ltcGxpZnkgY29kZS4KCjIwMDMtMTAtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2Vfc3VicnMsIHBhcnNlX2RpY3QpOiBIYW5kbGUgc3ludGhldGljCglmb250cyBwcm9wZXJseS4KCShwYXJzZV9jaGFyc3RyaW5ncyk6IENvcHkgY29ycmVjdCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbnRvCglgbmFtZV90YWJsZScuCgoyMDAzLTEwLTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJSGVhdnkgbW9kaWZpY2F0aW9uIG9mIHRoZSBQUyBwYXJzZXIgdG8gaGFuZGxlIGNvbW1lbnRzIGFuZCBzdHJpbmdzCgljb3JyZWN0bHkuICBUaGlzIGRvZXNuJ3Qgc2xvdyBkb3duIHRoZSBsb2FkaW5nIG9mIFBTIGZvbnRzCglzaWduaWZpY2FudGx5IHNpbmNlIGNoYXJzdHJpbmdzIGFyZW4ndCBhZmZlY3RlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggKGZ0X3hkaWdpdCk6IFJlbmFtZWQgdG8uLi4KCShmdF9pc3hkaWdpdCk6IFRoaXMuICBVcGRhdGVkIGFsbCBjYWxsZXJzLgoJKGZ0X2lzZGlnaXQpOiBOZXcgYWxpYXMgdG8gYGlzZGlnaXQnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChQU19QYXJzZXJfRnVuY3NSZWMpOiBSZW5hbWVkCglgc2tpcF9hbHBoYScgdG8gYHNraXBfUFNfdG9rZW4nLgoJQWRkIHBhcmFtZXRlciB0byBgdG9fYnl0ZXMnIGFuZCBjaGFuZ2Ugc29tZSBhcmd1bWVudCB0eXBlcy4KCgkqIHNyYy9wc2F1eC9wc2F1eG1vZC5jIChwc19wYXJzZXJfZnVuY3MpOiBVcGRhdGVkLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKGZ0X2NoYXJfdGFibGUpOiBOZXcgYXJyYXkgdG8gbWFwIGNoYXJhY3RlcgoJY29kZXMgKEFTQ0lJIGFuZCBFQkNESUMpIG9mIGRpZ2l0cyB0byBudW1iZXJzLgoJKE9QKTogTmV3IGF1eGlsaWFyeSBtYWNybyBob2xkaW5nIGVpdGhlciBgPj0nIG9yIGA8JyBkZXBlbmRpbmcgb24KCXRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcuCgkoc2tpcF9jb21tZW50KTogTmV3IGZ1bmN0aW9uLgoJKHNraXBfc3BhY2VzKTogVXNlIGl0LgoJKHNraXBfYWxwaGEpOiBSZW1vdmVkLgoJKHNraXBfbGl0ZXJhbF9zdHJpbmcsIHNraXBfc3RyaW5nKTogTmV3IGZ1bmN0aW9ucy4KCShwc19wYXJzZXJfc2tpcF9QU190b2tlbik6IE5ldyBmdW5jdGlvbi4gIFRoaXMgaXMgYSBiZXR0ZXIKCXJlcGxhY2VtZW50IG9mLi4uCgkocHNfcGFyc2VyX3NraXBfYWxwaGEpOiBSZW1vdmVkLgoJKHBzX3BhcnNlcl90b190b2tlbiwgcHNfcGFyc2VyX3RvX3Rva2VuX2FycmF5KTogVXBkYXRlZC4KCShUMVJhZGl4KTogUmV3cml0dGVuLCB1c2luZyBgZnRfY2hhcl90YWJsZScuCgkodDFfdG9pbnQpOiBSZW5hbWVkIHRvLi4uCgkocHNfdG9pbnQpOiBUaGlzLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJVXNlIGBmdF9jaGFyX3RhYmxlJy4KCShwc190b2J5dGVzKTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUgZGVsaW1pdGVycyBhbmQgY2hhbmdlIHNvbWUKCWFyZ3VtZW50IHR5cGVzLgoJVXNlIGBmdF9jaGFyX3RhYmxlJy4KCSh0MV90b2ZpeGVkKTogUmVuYW1lZCB0by4uLgoJKHBzX3RvZml4ZWQpOiBUaGlzLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJVXNlIGBmdF9jaGFyX3RhYmxlJy4KCSh0MV90b2Nvb3JkYXJyYXkpOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkocHNfdG9jb29yZGFycmF5KTogVGhpcy4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCSh0MV90b2ZpeGVkYXJyYXkpOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkocHNfdG9maXhlZGFycmF5KTogVGhpcy4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCSh0MV90b2Jvb2wpOiBSZW5hbWVkIHRvLi4uCgkocHNfdG9ib29sKTogVGhpcy4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCShwc19wYXJzZXJfbG9hZF9maWVsZCk6IFVwZGF0ZWQuCgkocHNfcGFyc2VyX2xvYWRfZmllbGRfdGFibGUpOiBVc2UgYFQxX01BWF9UQUJMRV9FTEVNRU5UUycKCWV2ZXJ5d2hlcmUuCgkocHNfcGFyc2VyX3RvX2ludCwgcHNfcGFyc2VyX3RvX2ZpeGVkLCBwc19wYXJzZXJfdG9fY29vcmRfYXJyYXksCglwc19wYXJzZXJfdG9fZml4ZWRfYXJyYXkpOiBTa2lwIHNwYWNlcy4gIFVwZGF0ZWQuCgkocHNfcGFyc2VyX3RvX2J5dGVzKTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUgZGVsaW1pdGVycyBhbmQgY2hhbmdlCglzb21lIGFyZ3VtZW50IHR5cGVzLiAgVXBkYXRlZC4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5oOiBVcGRhdGVkLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9wYXJzZV9kaWN0KTogVXBkYXRlZC4KCSogc3JjL2NpZC9jaWRwYXJzZS5jIChjaWRfcGFyc2VyX25ldyk6IENoZWNrIHdoZXRoZXIgdGhlIGBTdGFydERhdGEnCgl0b2tlbiB3YXMgcmVhbGx5IGZvdW5kLgoJKiBzcmMvY2lkL2NpZHBhcnNlLmggKGNpZF9wYXJzZXJfc2tpcF9hbHBoYSk6IFVwZGF0ZWQgYW5kIHJlbmFtZWQKCXRvLi4uCgkoY2lkX3BhcnNlcl9za2lwX1BTX3Rva2VuKTogVGhpcy4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmggKFQxX1BhcnNlclJlYyk6IFVzZSBgRlRfQm9vbCcgZm9yIGJvb2xlYW4KCWZpZWxkcy4KCShUMV9Ta2lwX0FscGhhKTogUmVwbGFjZWQgd2l0aC4uLgoJKFQxX1NraXBfUFNfVG9rZW4pOiBUaGlzIG5ldyBtYWNyby4KCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoaGV4YV92YWx1ZSk6IFJlbW92ZWQuCgkoVDFfR2V0X1ByaXZhdGVfRGljdCk6IFVzZSBgZnRfaXN4ZGlnaXQnIGFuZAoJYHBzYXV4LT5wc19wYXJzZXJfZnVuY3NfdG9fYnl0ZXMnIGZvciBoYW5kbGluZyBBU0NJSSBoZXhhZGVjaW1hbAoJZW5jb2RpbmcuCglBZnRlciBkZWNyeXB0aW5nLCByZXBsYWNlIHRoZSBmb3VyIHJhbmRvbSBieXRlcyBhdCB0aGUgYmVnaW5uaW5nCgl3aXRoIHdoaXRlc3BhY2UuCgkqIHNyYy90eXBlMS90MWxvYWQuYyAodDFfYWxsb2NhdGVfYmxlbmQpOiBVc2UgcHJvcGVyIGVycm9yIHZhbHVlcy4KCShwYXJzZXJfYmxlbmRfZGVzaWduX3Bvc2l0aW9ucywgcGFyc2VfYmxlbmRfZGVzaWduX21hcCwKCXBhcnNlX3dlaWdodF92ZWN0b3IpOiBVcGRhdGVkLgoJKGlzX3NwYWNlKTogSGFuZGxlIGBcZicgYWxzby4KCShpc19uYW1lX2NoYXIpOiBSZW1vdmVkLgoJKHJlYWRfYmluYXJ5X2RhdGEpOiBVcGRhdGVkLgoJKHBhcnNlX2VuY29kaW5nKTogVXNlIGBmdF9pc2RpZ2l0Jy4KCVVwZGF0ZWQuCgkocGFyc2Vfc3VicnMpOiBVcGRhdGVkLgoJKFRBQkxFX0VYVEVORCk6IE5ldyBtYWNyby4KCShwYXJzZV9jaGFyc3RyaW5ncyk6IFVwZGF0ZWQuCglQcm92aWRlIGEgd29ya2Fyb3VuZCBmb3IgYnVnZ3kgZm9udHMgd2hpY2ggaGF2ZSBtb3JlIGVudHJpZXMgaW4gdGhlCgkvQ2hhclN0cmluZ3MgZGljdGlvbmFyeSB0aGVuIGV4cGVjdGVkOyB0aGUgZnVuY3Rpb24gbm93IGFkZHMgc29tZQoJc2xvdHMgYW5kIHNraXBzIGVudHJpZXMgd2hpY2ggc3RpbGwgZXhjZWVkIHRoZSBuZXcgbGltaXQuCgkocGFyc2VfZGljdCk6IFVwZGF0ZWQuCglUZXJtaW5hdGUgb24gdGhlIHRva2VuIGBjbG9zZWZpbGUnLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jIChUMV9Ta2lwX0FscGhhKTogUmVwbGFjZWQgd2l0aC4uLgoJKFQxX1NraXBfUFNfVG9rZW4pOiBUaGlzIG5ldyBtYWNyby4gIFVwZGF0ZWQgYWxsIGNhbGxlcnMuCgkodDQyX3BhcnNlX2VuY29kaW5nKTogVXNlIGBmdF9pc2RpZ2l0Jy4KCgoJKiBzcmMvYmFzZS9mdG1tLmMgKGZ0X2ZhY2VfZ2V0X21tX3NlcnZpY2UpOiBSZXR1cm4gRlRfRXJyX09LIGlmCglzdWNjZXNzLgoKMjAwMy0xMC0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZHVsZS5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2RhcGkuaDogVGhpcyB0byBhdm9pZCBkdXBsaWNhdGUgZmlsZSBuYW1lcy4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfTU9EVUxFX0gpOiBVcGRhdGVkLgoKMjAwMy0xMC0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PcmllbnRhdGlvbkV4dHJlbXVtUmVjLAoJRlRfT3V0bGluZV9HZXRfT3JpZW50YXRpb24pOiBUcml2aWFsIHR5cG8gZml4ZXMgdG8gbWFrZSBpdCBjb21waWxlLgoKMjAwMy0xMC0wMiAgTWFya3VzIEYuWC5KLiBPYmVyaHVtZXIgIDxtYXJrdXNAb2Jlcmh1bWVyLmNvbT4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRlRfV2luRk5UX0hlYWRlclJlYyk6IGBjb2xvcl90YWJsZV9vZmZzZXQnCgloYXMgZm91ciBieXRlcywgbm90IHR3by4KCUZpeCBhbGwgdXNlcnMuCgkoZm50X2ZvbnRfbG9hZCwgRk5UX0xvYWRfR2x5cGgpOiBBZGQgbW9yZSBmb250IHZhbGlkaXR5IHRlc3RzLgoKMjAwMy0xMC0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9maXQvKjogQWRkaW5nIGZpcnN0IHNvdXJjZSBmaWxlcyBvZiB0aGUgbmV3IG11bHRpLXNjcmlwdAoJYGF1dG8tZml0dGVyJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIChGVF9PcmllbnRhdGlvbik6IE5ldyBlbnVtZXJhdGlvbi4KCShGVF9PdXRsaW5lX0dldF9PcmllbnRhdGlvbik6IE5ldyBkZWNsYXJhdGlvbi4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT3JpZW50YXRpb25FeHRyZW11bVJlYyk6IE5ldyBzdHJ1Y3R1cmUuCgkoZnRfb3JpZW50YXRpb25fZXh0cmVtdW1fY29tcHV0ZSk6IE5ldyBhdXhpbGlhcnkgZnVuY3Rpb24uCgkoRlRfT3V0bGluZV9HZXRfT3JpZW50YXRpb24pOiBOZXcgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgZmlsbAoJb3JpZW50YXRpb24gb2YgYSBnaXZlbiBnbHlwaCBvdXRsaW5lLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfRkFDRV9MT09LVVBfU0VSVklDRSk6IEZpeGVkCgl0cml2aWFsIGJ1ZyB3aGljaCBjb3VsZCBjcmFzaCB0aGUgZm9udCBlbmdpbmUgd2hlbiBhIGNhY2hlZCBzZXJ2aWNlCglwb2ludGVyIHdhcyByZXRyaWV2ZWQuCgoyMDAzLTA5LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3BhcnNlX2RpY3QpOiBTa2lwIHRva2VuIGlmIG5vIGtleXdvcmQgaXMKCWZvdW5kLgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoSVNfVDFfV0hJVEVTUEFDRSwgSVNfVDFfTElORVNQQUNFLAoJSVNfVDFfU1BBQ0UpOiBSZW1vdmVkLgoJKFBGQl9UYWcpOiBSZW1vdmVkLgoJKHJlYWRfcGZiX3RhZyk6IERvbid0IHVzZSBQRkJfVGFnLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jICh0NDJfaXNfc3BhY2UpOiBIYW5kbGUgYFxmJyBhbHNvLgoJKHQ0Ml9wYXJzZV9lbmNvZGluZyk6IEhhbmRsZSBzeW50aGV0aWMgZm9udHMuCgoyMDAzLTA5LTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaDogRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfT0JKRUNUU19IIGJ1dCBGVF9JTlRFUk5BTF9TRVJWSUNFX0guCgkqIHNyYy90cnVldHlwZS90dG9ianMuYzogRG9uJ3QgaW5jbHVkZQoJRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgoyMDAzLTA5LTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkZWQgbmV3IHNlcnZpY2UgdG8gaGFuZGxlIGdseXBoIG5hbWUgZGljdGlvbmFyaWVzLCByZXBsYWNpbmcgdGhlCglvbGQgaW50ZXJuYWwgaGVhZGVyIG5hbWVkIGBwc25hbWVzLmgnIGJ5IGBzZXJ2aWNlcy9zdnBzbmFtZS5oJy4KCU5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIGBzZXJ2aWNlcy9zdnBvc3RubS5oJyB3aGljaCBvbmx5CgloYW5kbGVzIHRoZSByZXRyaWV2YWwgb2YgUG9zdFNjcmlwdCBmb250IG5hbWVzIGZvciBhIGdpdmVuIGZhY2UuCgkoU2hvdWxkIHdlIG1lcmdlIHRoZXNlIHR3byBzZXJ2aWNlcyBpbnRvIGEgc2luZ2xlIGhlYWRlcj8pCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzbmFtZXMuaDogUmVtb3ZlZC4gIE1vc3Qgb2YgaXRzCgljb250ZW50cyBpcyBtb3ZlZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNuYW1lLmg6IE5ldyBmaWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBvc3RubS5oCgkoRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX05BTUUpOiBSZXBsYWNlZCB3aXRoLi4uCgkoRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX0ZPTlRfTkFNRSk6IE5ldyBtYWNyby4KCShQc05hbWUpOiBTZXJ2aWNlIG5hbWVkIGNoYW5nZWQgdG8uLi4KCShQc0ZvbnROYW1lKTogVGhpcy4KCVVwZGF0ZWQgYEZUX1NlcnZpY2VfUHNOYW1lJyAtPiBgRlRfU2VydmljZV9Qc0ZvbnROYW1lJyBhbmQKCWBQT1NUU0NSSVBUX05BTUUnIC0+IGBQT1NUU0NSSVBUX0ZPTlRfTkFNRScgZXZlcnl3aGVyZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaAoJKEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSCk6IFJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaDogSW5jbHVkZQoJRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkoVDFfRGVjb2RlclJlYyk6IFVwZGF0ZWQgdHlwZSBvZiBgcHNuYW1lcycuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oOiBEb24ndCBpbmNsdWRlCglGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0ggYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJSW5jbHVkZSBGVF9JTlRFUk5BTF9PQkpFQ1RTX0guCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDQydHlwZXMuaDogRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ILgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfRmFjZVJlYyk6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oIChGVF9GQUNFX0ZJTkRfU0VSVklDRSk6IENoYW5nZWQKCW9yZGVyIG9mIHBhcmFtZXRlcnMuICBBbGwgY2FsbGVycyB1cGRhdGVkLgoJKEZUX0ZBQ0VfRklORF9HTE9CQUxfU0VSVklDRSk6IE5ldyBtYWNybyB0byBsb29rIHVwIGEgc2VydmljZQoJZ2xvYmFsbHksIGNoZWNraW5nIGFsbCBtb2R1bGVzLgoJKEZUX1NlcnZpY2VDYWNoZVJlYyk6IFVwZGF0ZWQuCgkoRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0gpOiBOZXcgbWFjcm8gZm9yIGFjY2Vzc2luZwoJYHN2cHNuYW1lLmgnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwgc3JjL2Jhc2UvZnRvYmpzLmMKCShmdF9tb2R1bGVfZ2V0X3NlcnZpY2UpOiBOZXcgZnVuY3Rpb24uCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ICglidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkoY2ZmX2dldF9nbHlwaF9uYW1lLCBjZmZfZ2V0X25hbWVfaW5kZXgpOiBVc2UgbmV3IFBPU1RTQ1JJUFRfTkFNRVMKCXNlcnZpY2UuCgkqIHNyYy9jZmYvY2ZmY21hcC5jIChjZmZfY21hcF91bmljb2RlX2luaXQpOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZsb2FkLmg6ICBEb24ndCBpbmNsdWRlCglGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0ggYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKGNmZl9pbmRleF9nZXRfc2lkX3N0cmluZyk6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jOiAgRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0gKCWJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCShjZmZfZmFjZV9pbml0KTogVXNlIG5ldyBQT1NUU0NSSVBUX05BTUVTIHNlcnZpY2UuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5oOiAgRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0gKCWJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jOiAgRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0gKCWJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCShjaWRfZmFjZV9pbml0KTogVXNlIG5ldyBQT1NUU0NSSVBUX05BTUVTIHNlcnZpY2UuCgkqIHNyYy9jaWQvY2lkcml2ZXIuYzogRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0guCgoJKiBzcmMvcHNhdXgvdDFjbWFwLmMgKHQxX2NtYXBfc3RkX2luaXQsIHQxX2NtYXBfdW5pY29kZV9pbml0KTogVXNlCgluZXcgUE9TVFNDUklQVF9OQU1FUyBzZXJ2aWNlLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuaCAodDFfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlLAoJdDFfZGVjb2RlX2luaXQpOiBVc2UgbmV3IFBPU1RTQ1JJUFRfTkFNRVMgc2VydmljZS4KCSogc3JjL3BzYXV4L3QxY21hcC5oLCBzcmMvcHNhdXgvdDFkZWNvZGUuaDogRG9udCcgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ILgoKCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYzogIERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSCBidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkocHNfYnVpbGRfdW5pY29kZV90YWJsZSk6IFJlbmFtZWQgdG8uLi4KCShwc191bmljb2Rlc19pbml0KTogVGhpcy4KCShwc19sb29rdXBfdW5pY29kZSk6IFJlbmFtZWQgdG8uLi4KCShwc191bmljb2Rlc19jaGFyX2luZGV4KTogVGhpcy4KCShwc19uZXh0X3VuaWNvZGUpOiBSZW5hbWVkIHRvLi4uCgkocHNfdW5pY29kZXNfY2hhcl9uZXh0KTogVGhpcy4KCShwc25hbWVzX2ludGVyZmFjZSk6IFVwZGF0ZWQuCgkocHNuYW1lc19zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKHBzbmFtZXNfZ2V0X3NlcnZpY2UpOiBOZXcgZnVuY3Rpb24uCgkocHNuYW1lc19tb2R1bGVfY2xhc3MpOiBVcGRhdGVkLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmM6IERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ICglidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkoc2ZudF9pbml0X2ZhY2UpOiBVc2UgbmV3IFBPU1RTQ1JJUFRfTkFNRVMgc2VydmljZS4KCSogc3JjL3NmbnQvdHRwb3N0LmM6IERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ICglidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkodHRfZmFjZV9nZXRfcHNfbmFtZSk6IFVwZGF0ZWQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6ICBEb24ndCBpbmNsdWRlCglGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0ggYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmM6ICBEb24ndCBpbmNsdWRlCglGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0ggYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKiBzcmMvdHlwZTEvdDFvYmpzLmM6ICBEb24ndCBpbmNsdWRlCglGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0ggYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKFQxX0ZhY2VfSW5pdCk6IFVzZSBuZXcgUE9TVFNDUklQVF9OQU1FUyBzZXJ2aWNlLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jICh0NDJfZ2V0X3BzX25hbWUpOiBSZW5hbWVkIHRvLi4uCgkodDQyX2dldF9wc19mb250X25hbWUpOiBUaGlzLgoJKHQ0Ml9zZXJ2aWNlX3BzX25hbWUpOiBSZW5hbWVkIHRvLi4uCgkodDQyX3NlcnZpY2VfcHNfZm9udF9uYW1lKTogVGhpcy4KCSh0NDJfc2VydmljZXMpOiBVcGRhdGVkLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfSW5pdCk6IFVzZSBuZXcgUE9TVFNDUklQVF9OQU1FUwoJc2VydmljZS4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmg6ICBEb24ndCBpbmNsdWRlCglGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0ggYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoKCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2V0X0dseXBoKTogRG9uJ3QgYWNjZXNzIGBzbG90JyBiZWZvcmUKCXRlc3RpbmcgaXRzIHZhbGlkaXR5LiAgUmVwb3J0ZWQgYnkgSGVucnkgTWFkZG9ja3MKCTxtYWRkb2Nrc0BtZXRzZXJ2aWNlLmNvbT4uCgoyMDAzLTA5LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oIChGVF9GQUNFX0ZJTkRfU0VSVklDRSk6CglGaXggY29tcGlsYXRpb24gd2FybmluZyAocy9wcHRyL1BwdHIvKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfUEZSX0gsCglGVF9JTlRFUk5BTF9GTlRfVFlQRVNfSCk6IFJlbW92ZWQuCgoyMDAzLTA5LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTWlncmF0aW5nIHRoZSBQRlIgYW5kIFdJTkZOVCBkcml2ZXJzIHRvIHRoZSBuZXcgc2VydmljZS1iYXNlZAoJaW50ZXJuYWwgQVBJLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oOiBSZW1vdmVkLiAgTW9zdCBvZiBpdHMgZGF0YQoJYXJlIG1vdmVkIHRvIHdpbmZudC5oIGFuZC4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2d2luZm50Lmg6IE5ldyBmaWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wZnIuaDogUmVtb3ZlZC4gIE1vc3Qgb2YgaXRzIGRhdGEgYXJlCgltb3ZlZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cGZyLmg6IE5ldyBmaWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfRkFDRV9GSU5EX1NFUlZJQ0UsCglGVF9GQUNFX0xPT0tVUF9TRVJWSUNFKTogU2ltcGxpZnkgZml4IG9mIDIwMDMtMDktMTYgYnkgcmVtb3ZpbmcKCXBvaW50ZXIgdHlwZSBhcmd1bWVudC4KCVVwZGF0ZWQgYWxsIGNhbGxlcnMuCglVcGRhdGUgbWFjcm8gbmFtZXMgb2Ygc2VydmljZXMgaGVhZGVyIGZpbGVzLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OYW1lX0luZGV4KTogU2ltcGxpZmllZCBjb2RlLgoKCSogc3JjL2Jhc2UvZnRwZnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1BGUl9IIGluc3RlYWQgb2YKCUZUX0lOVEVSTkFMX1BGUl9ILgoJKGZ0X3Bmcl9jaGVjaywgRlRfR2V0X1BGUl9NZXRyaWNzLCBGVF9HZXRfUEZSX0tlcm5pbmcsCglGVF9HZXRfUEZSX0FkdmFuY2UpOiBVc2Ugc2VydmljZXMgcHJvdmlkZWQgaW4gYFBGUl9NRVRSSUNTJy4KCgkqIHNyYy9iYXNlL2Z0d2luZm50LmM6IEluY2x1ZGUgRlRfU0VSVklDRV9XSU5GTlRfSCBpbnN0ZWFkIG9mCglGVF9JTlRFUk5BTF9GTlRfVFlQRVNfSC4KCShGVF9HZXRfV2luRk5UX0hlYWRlcik6IFVzZSBzZXJ2aWNlIHByb3ZpZGVkIGluIGBXSU5GTlQnLgoKCSogc3JjL3Bmci9wZnJkcml2ci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfUEZSX0ggYW5kCglGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9IIGluc3RlYWQgb2YgRlRfSU5URVJOQUxfUEZSX0guCgkocGZyX3NlcnZpY2VfYmRmKTogVXBkYXRlZC4KCShwZnJfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShwZnJfZ2V0X3NlcnZpY2UpOiBOZXcgZnVuY3Rpb24uCgkocGZyX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmM6IEluY2x1ZGUgRlRfU0VSVklDRV9XSU5GTlRfSCBhbmQKCUZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0ggaW5zdGVhZCBvZiBGVF9JTlRFUk5BTF9GTlRfVFlQRVNfSC4KCSh3aW5mbnRfZ2V0X2hlYWRlciwgd2luZm50X2dldF9zZXJ2aWNlKTogTmV3IGZ1bmN0aW9ucy4KCSh3aW5mbnRfc2VydmljZV9yZWMpOiBOZXcgc3RydWN0dXJlIHByb3ZpZGluZyBXSU5GTlQgc2VydmljZXMuCgkod2luZm50X3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkod2luZm50X2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgkqIHNyYy93aW5mb250cy93aW5mbnQuaDogQWRkIG1vc3Qgb2YgdGhlIHJlbW92ZWQgZm50dHlwZXMuaCBkYXRhLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoc2ZudF9zZXJ2aWNlX3BzX25hbWUpOiBGaXggdHlwby4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9zZXJ2aWNlX3BzX25hbWUpOiBGaXggdHlwby4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvY2lkL2NpZG9ianMuYywgc3JjL3Bmci9wZnJzYml0LmMsCglzcmMvcHNhdXgvcHNvYmpzLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMsCglzcmMvdHlwZTEvdDFvYmpzLmMsIHNyYy90eXBlNDIvdDQyb2Jqcy5jOiBSZW1vdmluZyB2YXJpb3VzIGNvbXBpbGVyCgl3YXJuaW5ncy4KCjIwMDMtMDktMTkgIERhdmlkIEJldmFuICA8ZGJldmFuQGVtdGV4LmNvbT4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKHBmYl90YWdfZmllbGRzKTogUmVtb3ZlZC4KCShyZWFkX3BmYl90YWcpOiBGaXggY29kZSBzbyB0aGF0IGl0IGRvZXNuJ3QgZmFpbCBvbiBlbmQtb2YtZmlsZQoJaW5kaWNhdG9yICgweDgwMDMpLgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAzLTA5LTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oIChGVF9GQUNFX0ZJTkRfU0VSVklDRSwKCUZUX0ZBQ0VfTE9PS1VQX1NFUlZJQ0UpOiBBZGQgcGFyYW1ldGVyIHRvIHBhc3MgcG9pbnRlciB0eXBlLgoJVWdseSwgSSBrbm93LCBidXQgdGhpcyBpcyBuZWVkZWQgZm9yIGNvbXBpbGF0aW9uIHdpdGggQysrIC0tCgltYXliZSBzb21lb25lIGtub3dzIGEgYmV0dGVyIHNvbHV0aW9uPwoJVXBkYXRlZCBhbGwgY2FsbGVycy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9HZXRfTmFtZV9JbmRleCwgRlRfR2V0X0dseXBoX05hbWUpOiBSZW1vdmUKCUMrKyBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9iYXNlL2Z0YmRmLmMgKEZUX0dldF9CREZfQ2hhcnNldF9JRCwgRlRfR2V0X0JERl9Qcm9wZXJ0eSk6CglGaXggb3JkZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byBGVF9GQUNFX0ZJTkRfU0VSVklDRS4KCjIwMDMtMDktMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBdm9pZCBoZWFkZXIgZmlsZXMgd2l0aCBpZGVudGljYWwgbmFtZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL2JkZi5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZiZGYuaDogVGhpcy4KCUFkZCBjb3B5cmlnaHQgbm90aWNlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL2dseWZkaWN0Lmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmdsZGljdC5oOiBUaGlzLgoJQWRkIGNvcHlyaWdodCBub3RpY2UuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvbXVsdG1hc3QuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2bW0uaDogVGhpcy4KCUFkZCBjb3B5cmlnaHQgbm90aWNlLgoJQWRkIEZUX0JFR0lOX0hFQURFUiBhbmQgRlRfRU5EX0hFQURFUi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zZm50Lmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnNmbnQuaDogVGhpcy4KCUFkZCBjb3B5cmlnaHQgbm90aWNlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3Bvc3RuYW1lLmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBvc3RubS5oOiBUaGlzLgoJQWRkIGNvcHlyaWdodCBub3RpY2UuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMveGY4Nm5hbWUuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2eGY4Nm5tLmg6IFRoaXMuCglBZGQgY29weXJpZ2h0IG5vdGljZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2Lmg6IEFkZCBGVF9CRUdJTl9IRUFERVIgYW5kCglGVF9FTkRfSEVBREVSLgoJQWRkIGNvcHlyaWdodCBub3RpY2UuCglVcGRhdGUgbWFjcm8gbmFtZXMgb2Ygc2VydmljZXMgaGVhZGVyIGZpbGVzLgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChTRVJWSUNFU19ESVIpOiBOZXcgdmFyaWFibGUuCgkoQkFTRV9IKTogQWRkIHNlcnZpY2VzIGhlYWRlciBmaWxlcy4KCjIwMDMtMDktMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy90b3BsZXZlbC5tayAoZGlzdGNsZWFuKTogUmVtb3ZlIGBidWlsZHMvdW5peC9mcmVldHlwZTIucGMnLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jOiBEb24ndCBsb2FkIGhlYWRlcnMgdHdpY2UuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oIChGVF9TRVJWSUNFX1NGTlRfSCk6IE5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9TRk5UX0guCgoJKiBzcmMvY2ZmL2NmZmNtYXAuYzogSW5jbHVkZSBgY2ZmZXJycy5oJy4KCSogc3JjL3Bmci9wZnJkcml2ci5jOiBJbmNsdWRlIGBwZnJlcnJvci5oJy4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogSW5jbHVkZSBgc2ZlcnJvcnMuaCcuCgkqIHNyYy9wc2F1eC9wc29ianMuaDogQWRkIGRlY2xhcmF0aW9uIGZvciBgcHNfcGFyc2VyX3RvX2J5dGVzJy4KCjIwMDMtMDktMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglJbnRyb2R1Y2luZyB0aGUgY29uY2VwdCBvZiBgbW9kdWxlIHNlcnZpY2VzJy4gIFRoaXMgaXMgdGhlIGZpcnN0CglzdGVwIHRvd2FyZHMgYSBtYXNzaXZlIHNpbXBsaWZpY2F0aW9uIG9mIHRoZSBlbmdpbmUncyBpbnRlcm5hbHMsIGluCglvcmRlciB0byBnZXQgcmlkIG9mIHZhcmlvdXMgbnVtYmVycyBvZiBoYWNrcy4KCglOb3RlIHRoYXQgdGhlc2UgY2hhbmdlcyB3aWxsIGJyZWFrIHNvdXJjZSAmIGJpbmFyeSBjb21wYXRpYmlsaXR5IGZvcgoJYXV0aG9ycyBvZiBleHRlcm5hbCBmb250IGRyaXZlcnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIChGVF9CRUdJTl9TVE1OVCwgRlRfRU5EX1NUTU5ULAoJRlRfRFVNTVlfU1RNTlQpOiBOZXcgbWFjcm9zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaDogTmV3IGZpbGUsIGNvbnRhaW5pbmcgdGhlIG5ldwoJc3RydWN0dXJlcyBhbmQgbWFjcm9zIHRvIHByb3ZpZGUgYHNlcnZpY2VzJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfRVhURU5TSU9OX0gsCglGVF9JTlRFUk5BTF9FWFRFTkRfSCwgRlRfSU5URVJOQUxfSEFTSF9ILCBGVF9JTlRFUk5BTF9PQkpFQ1RfSCk6CglSZW1vdmVkLCBvYnNvbGV0ZS4KCShGVF9JTlRFUk5BTF9TRVJWSUNFX0gpOiBOZXcgbWFjcm8gZm9yIGBmdHNlcnYuaCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL2JkZi5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9nbHlmZGljdC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9wb3N0bmFtZS5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy94Zjg2bmFtZS5oOiBOZXcgZmlsZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW0uaCAoRlRfR2V0X01NX0Z1bmMsIEZUX1NldF9NTV9EZXNpZ25fRnVuYywKCUZUX1NldF9NTV9CbGVuZF9GdW5jKTogRnVuY3Rpb24gcG9pbnRlcnMgbW92ZWQgKGluIG1vZGlmaWVkIGZvcm0pCgl0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL211bHRtYXN0Lmg6IE5ldyBmaWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmggKFNGTlRfSW50ZXJmYWNlKTogYGdldF9pbnRlcmZhY2UnCglpcyBub3cgb2YgdHlwZSBgRlRfTW9kdWxlX1JlcXVlc3RlcicuCgkoU0ZOVF9HZXRfSW50ZXJmYWNlX0Z1bmMsIFNGTlRfTG9hZF9UYWJsZV9GdW5jKTogRnVuY3Rpb24gcG9pbnRlcnMKCW1vdmVkIChpbiBtb2RpZmllZCBmb3JtKSB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpZXMvc2ZudC5oOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCAoRlRfR2V0X1NmbnRfVGFibGVfRnVuYyk6IEZ1bmN0aW9uCglwb2ludGVyIG1vdmVkIChpbiBtb2RpZmllZCBmb3JtKSB0byBgc2VydmljZXMvc2ZudC5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2R1bGUuaCAoRlRfTW9kdWxlX0ludGVyZmFjZSk6IE1ha2UgaXQgYQoJYSB0eXBlZGVmIHRvIGBGVF9Qb2ludGVyJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9GYWNlUmVjKTogQWRkCglgcG9zdHNjcmlwdF9uYW1lJy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfRmFjZV9JbnRlcm5hbFJlYyk6IFJlbW92ZQoJYHBvc3RzY3JpcHRfbmFtZScuCglBZGQgYHNlcnZpY2VzJyBlbGVtZW50LgoJKEZUX0xpYnJhcnlSZWMpOiBSZW1vdmUgYG1ldGFfY2xhc3MnLgoKCSogc3JjL2Jhc2UvZnRiZGYuYzogSW5jbHVkZSBGVF9TRVJWSUNFX0JERl9ILgoJKHRlc3RfZm9udF90eXBlKTogUmVtb3ZlZC4KCShGVF9HZXRfQkRGX0NoYXJzZXRfSUQsIEZUX0dldF9CREZfUHJvcGVydHkpOiBVc2Ugc2VydmljZXMKCXByb3ZpZGVkIGluIGBGVF9TRVJWSUNFX0lEX0JERicuCgoJKiBzcmMvYmFzZS9mdG1tLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9NVUxUSVBMRV9NQVNURVJTX0guCgkoZnRfZmFjZV9nZXRfbW1fc2VydmljZSk6IE5ldyBhdXhpbGlhcnkgZnVuY3Rpb24gdG8gZ2V0IHNlcnZpY2VzCglmcm9tIGBGVF9TRVJWSUNFX0lEX01VTFRJX01BU1RFUlMnLgoJKEZUX0dldF9NdWx0aV9NYXN0ZXIsIEZUX1NldF9NTV9EZXNpZ25fQ29vcmRpbmF0ZXMsCglGVF9TZXRfTU1fQmxlbmRfQ29vcmRpbmF0ZXMpOiBVc2UgYGZ0X2ZhY2VfZ2V0X21tX3NlcnZpY2UnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVfSCBhbmQKCUZUX1NFUlZJQ0VfR0xZUEhfRElDVF9ILgoJKGZ0X3NlcnZpY2VfbGlzdF9sb29rdXApOiBOZXcgZnVuY3Rpb24gdG8gZ2V0IGEgc3BlY2lmaWMgc2VydmljZS4KCShkZXN0cm95X2ZhY2UpOiBVcGRhdGVkLgoJKE1hY19SZWFkX1BPU1RfUmVzb3VyY2UpOiBTaW1wbGlmeSBzb21lIGNvZGUuCgkoSXNNYWNSZXNvdXJjZSk6IEZpeCB3YXJuaW5ncy4KCShGVF9HZXRfTmFtZV9JbmRleCwgRlRfR2V0X0dseXBoX05hbWUpOiBVc2Ugc2VydmljZXMgcHJvdmlkZWQgaW4KCWBGVF9TRVJWSUNFX0lEX0dMWVBIX0RJQ1QnLgoJKEZUX0dldF9Qb3N0c2NyaXB0X05hbWUpOiBVc2Ugc2VydmljZSBwcm92aWRlZCBpbgoJYEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9OQU1FJy4KCShGVF9HZXRfU2ZudF9UYWJsZSwgRlRfTG9hZF9TZm50X1RhYmxlKTogVXNlIHNlcnZpY2VzIHByb3ZpZGVkIGluCglgRlRfU0VSVklDRV9JRF9TRk5UX1RBQkxFJy4KCgkqIHNyYy9iYXNlL2Z0eGY4Ni5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0guCgkoRlRfR2V0X1gxMV9Gb250X0Zvcm1hdCk6IFVzZSBzZXJ2aWNlIHByb3ZpZGVkIGluCglgRlRfU0VSVklDRV9JRF9YRjg2X05BTUUnLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfQkRGX0ggYW5kCglGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9ILgoJKGJkZl9nZXRfY2hhcnNldF9pZCk6IE5ldyBmdW5jdGlvbi4KCShiZGZfc2VydmljZV9iZGYpOiBOZXcgc3RydWN0dXJlIHByb3ZpZGluZyBCREYgc2VydmljZXMuCgkoYmRmX3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkoYmRmX2RyaXZlcl9yZXF1ZXN0ZXIpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0ggYW5kCglGVF9TRVJWSUNFX0dMWVBIX0RJQ1RfSC4KCShjZmZfc2VydmljZV9nbHlwaF9kaWN0KTogTmV3IHN0cnVjdHVyZSBwcm92aWRpbmcgQ0ZGIHNlcnZpY2VzLgoJKGNmZl9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKGNmZl9nZXRfaW50ZXJmYWNlKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgkqIHNyYy9jaWQvY2lkcml2ZXIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRV9IIGFuZAoJRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSC4KCShjaWRfc2VydmljZV9wc19uYW1lKTogTmV3IHN0cnVjdHVyZSBwcm92aWRpbmcgQ0lEIHNlcnZpY2VzLgoJKGNpZF9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKGNpZF9nZXRfaW50ZXJmYWNlKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgkqIHNyYy9wY2YvcGNmZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX0JERl9IIGFuZAoJRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSC4KCShwY2Zfc2VydmljZV9iZGYpOiBOZXcgc3RydWN0dXJlIHByb3ZpZGluZyBQQ0Ygc2VydmljZXMuCgkocGNmX3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkocGNmX2RyaXZlcl9yZXF1ZXN0ZXIpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX0dMWVBIX0RJQ1RfSCBhbmQKCUZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FX0guCgkoZ2V0X3NmbnRfZ2x5cGhfbmFtZSk6IFJlbmFtZWQgdG8uLi4KCShzZm50X2dldF9nbHlwaF9uYW1lKTogVGhpcy4KCShnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBSZW5hbWVkIHRvLi4uCgkoc2ZudF9nZXRfcHNfbmFtZSk6IFRoaXMuCglVcGRhdGVkLgoJKHNmbnRfc2VydmljZV9nbHlwaF9kaWN0LCBzZm50X3NlcnZpY2VfcHNfbmFtZSk6IE5ldyBzdHJ1Y3R1cmVzCglwcm92aWRpbmcgc2VydmljZXMuCgkoc2ZudF9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKHNmbnRfZ2V0X2ludGVyZmFjZSk6IFVzZSBgZnRfc2VydmljZV9saXN0X2xvb2t1cCcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9ILgoJKHR0X3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkodHRfZ2V0X2ludGVyZmFjZSk6IFVzZSBgZnRfc2VydmljZV9saXN0X2xvb2t1cCcuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX01VTFRJUExFX01BU1RFUlNfSCwKCUZUX1NFUlZJQ0VfR0xZUEhfRElDVF9ILCBGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9ILCBhbmQKCUZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FX0guCgkodDFfc2VydmljZV9nbHlwaF9kaWN0LCB0MV9zZXJ2aWNlX3BzX25hbWUsCgl0MV9zZXJ2aWNlX211bHRpX21hc3RlcnMpOiBOZXcgc3RydWN0dXJlcyBwcm92aWRpbmcgVHlwZSAxIHNlcnZpY2VzLgoJKHQxX3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkoR2V0X0ludGVyZmFjZSk6IFVzZSBgZnRfc2VydmljZV9saXN0X2xvb2t1cCcuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSCwKCUZUX1NFUlZJQ0VfR0xZUEhfRElDVF9ILCBhbmQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVfSC4KCSh0NDJfc2VydmljZV9nbHlwaF9kaWN0LCB0NDJfc2VydmljZV9wc19uYW1lKTogTmV3IHN0cnVjdXJlcwoJcHJvdmlkaW5nIFR5cGUgNDIgc2VydmljZXMuCgkodDQyX3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkoVDQyX0dldF9JbnRlcmZhY2UpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCgkqIFJFQURNRSwgZG9jcy9DSEFOR0VTOiBVcGRhdGluZyB2ZXJzaW9uIG51bWJlcnMgZm9yIDIuMS42LCBhbmQKCXJlbW92aW5nIG9ic29sZXRlIHdhcm5pbmdzIGluIHRoZSBkb2N1bWVudGF0aW9uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogU2V0IHRvIDYuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogU2V0IHRvIDk6NTozLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNvcmUuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRleGNlcHQuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRoYXNoLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2JqZWN0Lmg6IFJlbW92ZWQuICBPYnNvbGV0ZS4KCjIwMDMtMDktMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhpbmcgUEZSIGtlcm5pbmcgc3VwcG9ydC4gIFRoZSB0YWJsZXMgd2l0aGluIHRoZSBmb250IGZpbGUgY29udGFpbgoJKGNoYXJjb2RlLGNoYXJjb2RlKSBrZXJuaW5nIHBhaXJzLCB3ZSBuZWVkIHRvIGNvbnZlcnQgdGhlbSB0bwoJKGdpbmRleCxnaW5kZXgpLgoKCSogc3JjL2Jhc2UvZnRwZnIuYyAoZnRfcGZyX2NoZWNrKTogRml4IHNlcmlvdXMgdHlwby4KCSogc3JjL3Bmci9wcmZsb2FkLmM6IFJlbW92ZSBkZWFkIGNvZGUuCgkocGZyX2dldF9naW5kZXgsIHBmcl9jb21wYXJlX2tlcm5fcGFpcnMsIHBmcl9zb3J0X2tlcm5pbmdfcGFpcnMpOgoJTmV3IGZ1bmN0aW9ucy4KCShwZnJfcGh5X2ZvbnRfZG9uZSk6IEZyZWUgYGtlcm5fcGFpcnMnLgoJKHBmcl9waHlfZm9udF9sb2FkKTogQ2FsbCBgcGZyX3NvcnRfa2VybmluZ19wYWlycycuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9nZXRfa2VybmluZyk6IEZpeCBrZXJuaW5nIGV4dHJhY3Rpb24uCgkqIHNyYy9wZnIvcGZydHlwZXMuaCAoUEZSX0tFUk5fUEFJUl9JTkRFWCk6IE5ldyBtYWNyby4KCShQRlJfS2VyblBhaXJSZWMpOiBNYWtlIGBrZXJuaW5nJyBhbiBGVF9JbnQuCgkoUEZSX1BoeUZvbnRSZWMpOiBOZXcgZWxlbWVudCBga2Vybl9wYWlycycuCgkoUEZSX0tlcm5GbGFncyk6IFZhbHVlcyBvZiBQRlJfS0VSTl8yQllURV9DSEFSIGFuZAoJUEZSX0tFUk5fMkJZVEVfQURKIHdlcmUgZXJyb25lb3VzbHkgcmV2ZXJzZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3B0aW9uLmg6IENvbW1lbnRpbmcgb3V0IHRoZSBtYWNybwoJVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUi4KCjIwMDMtMDktMDIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS41IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDMtMDgtMzEgIE1hbmlzaCBTaW5naCAgPHlvc2hAZ2ltcC5vcmc+CgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3JlYWRzdHJlYW0pOiBEb24ndCB1c2UgRlRfTUVNX0NPUFkgYnV0CglGVF9NRU1fTU9WRS4KCjIwMDMtMDgtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRU5DT0RJTkdfU0pJUywgRlRfRU5DT0RJTkdfR0IyMzEyLAoJRlRfRU5DT0RJTkdfQklHNSwgRlRfRU5DT0RJTkdfV0FOU1VORywgRlRfRU5DT0RJTkdfSk9IQUIpOiBOZXcKCWVudW1lcmF0aW9ucyBvZiBGVF9FbmNvZGluZy4gIFRoZSBGVF9FTkNPRElOR19NU18qIHZhcmlhbnRzIGV4Y2VwdAoJRlRfRU5DT0RJTkdfTVNfU1lNQk9MIGFyZSBub3cgZGVwcmVjYXRlZC4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoJKiBkb2NzL0NIQU5HRVM6IERvY3VtZW50IGl0LgoKMjAwMy0wOC0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KTogQWNjZXB0IGxvd2VyY2FzZSBjaGFyYWN0ZXJzCglmb3Igc3BhY2luZy4KCjIwMDMtMDgtMjcgIE1pa2UgRkFCSUFOICA8bWZhYmlhbkBzdXNlLmRlPgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpLCBzcmMvYmRmL2JkZmRyaXZyLmMKCShCREZfRmFjZV9Jbml0KTogQWNjZXB0IGxvd2VyY2FzZSBjaGFyYWN0ZXJzIGZvciBzbGFudCBhbmQgd2VpZ2h0LgoKMjAwMy0wOC0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogRGlzYWJsaW5nIFRydWVUeXBlIGJ5dGVjb2RlCglpbnRlcnByZXRlciB1bnRpbCB0aGUgVU5QQVRFTlRFRF9ISU5USU5HIHdvcmtzIGFzIGFkdmVydGlzZWQuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKTogVXNlIGB8JyBmb3IKCXNldHRpbmcgYGxvYWRfZmxhZ3MnLgoKCSogSmFtZmlsZTogQWRkaW5nIHRoZSBgcmVmZG9jJyB0YXJnZXQgdG8gdGhlIEphbWZpbGUgaW4gb3JkZXIgdG8KCWJ1aWxkIHRoZSBBUEkgUmVmZXJlbmNlIGluIGBkb2NzL3JlZmVyZW5jZScgYXV0b21hdGljYWxseS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCAoUFNfRm9udEluZm9SZWMpLCBzcmMvY2lkL2NpZHRva2VuLmgsCglzcmMvdHlwZTEvdDF0b2tlbnMuaCwgc3JjL3R5cGU0Mi90NDJwYXJzZS5jOiBSZXNldHRpbmcgdGhlIHR5cGVzIG9mCglgaXRhbGljX2FuZ2xlJywgYHVuZGVybGluZV9wb3NpdGlvbicsIGFuZCBgdW5kZXJsaW5lX3RoaWNrbmVzcycgdG8KCXRoZWlyIHByZXZpb3VzIHZhbHVlcyAoaS5lLiwgbG9uZywgc2hvcnQsIGFuZCB1c2hvcnQpIGluIG9yZGVyIHRvCglhdm9pZCBicmVha2luZyBiaW5hcnkgY29tcGF0aWJpbGl0eS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR1bnBhdC5oOiBGaXhpbmcgZG9jdW1lbnRhdGlvbiBjb21tZW50LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCwgZGV2ZWwvZnRvcHRpb24uaAoJKFRUX0NPTkZJR19PUFRJT05fT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HKTogUmVwbGFjZWQKCXdpdGguLi4KCShUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORyk6IFRoaXMuICBVcGRhdGVkIGFsbCB1c2Vycy4KCShUVF9DT05GSUdfT1BUSU9OX0ZPUkNFX1VOUEFURU5URURfSElOVElORyk6IFJlbW92ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9ERUJVR19IT09LX1RZUEUxKTogUmVtb3ZlZC4KCShGVF9ERUJVR19IT09LX1VOUEFURU5URURfSElOVElORyk6IE5ldyBtYWNyby4gIFVzZSB0aGlzIHdpdGgKCWBGVF9TZXRfRGVidWdfSG9vaycgdG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgcmVtb3ZlZAoJVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKHR0X2ZhY2VfaW5pdCk6IFVzZQoJYEZUX0RFQlVHX0hPT0tfVU5QQVRFTlRFRF9ISU5USU5HJy4KCjIwMDMtMDgtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpLCBzcmMvY2ZmL2NmZmdsb2FkLmMKCShjZmZfc2xvdF9sb2FkKSwgc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfc2xvdF9sb2FkX2dseXBoKTogRml4CglwcmV2aW91cyBjaGFuZ2UuCgoyMDAzLTA4LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKSwgc3JjL2NmZi9jZmZnbG9hZC5jCgkoY2ZmX3Nsb3RfbG9hZCksIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX3Nsb3RfbG9hZF9nbHlwaCk6IEFwcGx5Cglmb250IG1hdHJpeCB0byBhZHZhbmNlIHdpZHRoIGFsc28uCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDMtMDctMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogU2V0IHRvIDk6NDozLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgkqIGRvY3MvQ0hBTkdFUywgZG9jcy9WRVJTSU9OLkRMTDogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfR2x5cGhTbG90KTogQ2hhbmdlIDIwMDMtMDYtMTYKCWFsc28gYnJlYWtzIGJpbmFyeSBjb21wYXRpYmlsaXR5LiAgUmVpbnRyb2R1Y2UgYW4gdW5zaWduZWQgaW50ZWdlcgoJYXQgdGhlIG9sZCBwb3NpdGlvbiBvZiBgZmxhZ3MnIGNhbGxlZCBgcmVzZXJ2ZWQnLgoKMjAwMy0wNy0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1ha2UgQVBJIHJlZmVyZW5jZSB2YWxpZCBIVE1MIDQuMDEgdHJhbnNpdGlvbmFsLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyL3RvaHRtbC5weSAoaHRtbF9oZWFkZXJfMSk6IEFkZCBkb2N0eXBlCglhbmQgY2hhcnNldC4KCShodG1sX2hlYWRlcl8yKTogRml4IHN0eWxlIGVsZW1lbnRzIGFuZCBhZGQgc29tZSBtb3JlLgoJRml4IHN5bnRheC4KCShibG9ja19oZWFkZXIsIGJsb2NrX2Zvb3RlciwgZGVzY3JpcHRpb25faGVhZGVyLCBkZXNjcmlwdGlvbl9mb290ZXIsCgltYXJrZXJfaGVhZGVyLCBtYXJrZXJfZm9vdGVyLCBzb3VyY2VfaGVhZGVyLCBzb3VyY2VfZm9vdGVyLAoJY2hhcHRlcl9oZWFkZXIpOiBEb24ndCB1c2UgPGNlbnRlcj4uLi48L2NlbnRlcj4gYnV0IGBhbGlnbj1jZW50ZXInCgl0YWJsZSBhdHRyaWJ1dGUuCgkoY2hhcHRlcl9pbnRlciwgY2hhcHRlcl9mb290ZXIpOiBBZGQgPGxpPiBhbmQgdXNlIHNwZWNpYWwgPHVsPgoJY2xhc3MuCglVc2UgZG91YmxlIHF1b3RlcyBhcm91bmQgdGFibGUgd2lkdGhzIGdpdmVuIGluIHBlcmNlbnQuCgkoa2V5d29yZF9wcmVmaXgsIGtleXdvcmRfc3VmZml4KTogRG9uJ3QgY2hhbmdlIGZvbnQgY29sb3VyIGRpcmVjdGx5CglidXQgdXNlIGEgbmV3IDxzcGFuPiBjbGFzcy4KCShzZWN0aW9uX3N5bm9wc2lzX2hlYWRlciwgc2VjdGlvbl9zeW5vcHNpc19mb290ZXIpOiBEb24ndCBjaGFuZ2UKCWNvbG91ci4KCShjb2RlX2hlYWRlciwgY29kZV9mb290ZXIpOiBEb24ndCBjaGFuZ2UgZm9udCBjb2xvdXIgZGlyZWN0bHkgYnV0Cgl1c2UgYSBzcGVjaWFsIDxwcmU+IGNsYXNzLgoJKHByaW50X2h0bWxfZmllbGQpOiA8dHI+IGdldHMgdGhlIGB2YWxpZ24nIGF0dHJpYnV0ZSwgbm90IDx0YWJsZT4uCgkocHJpbnRfaHRtbF9maWVsZF9saXN0KTogRGl0dG8uCgkoaW5kZXhfZXhpdCk6IERvbid0IHVzZSA8Y2VudGVyPi4uLjwvY2VudGVyPiBidXQgYGFsaWduPWNlbnRlcicKCXRhYmxlIGF0dHJpYnV0ZS4KCShzZWN0aW9uX2VudGVyKTogRGl0dG8uCgkodG9jX2V4aXQpOiBEb24ndCBlbWl0IDwvdGFibGU+LgoJKGJsb2NrX2VudGVyKTogVXNlIDxoND48YT4sIG5vdCA8YT48aDQ+LgoJKF9faW5pdF9fKTogRml4IHRhZyBvcmRlciBpbiBzZWxmLmh0bWxfZm9vdGVyLgoKMjAwMy0wNy0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVRoaXMgY2hhbmdlIHJlaW1wbGVtZW50cyBmaXggZnJvbSAyMDAzLTA1LTMwIHdpdGhvdXQgYnJlYWtpbmcKCWJpbmFyeSBjb21wYXRpYmlsaXR5LgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oIChQU19Gb250SW5mb1JlYyk6IGBpdGFsaWNfYW5nbGUnLAoJYGlzX2ZpeGVkX3BpdGNoJywgYHVuZGVybGluZV9wb3NpdGlvbicsIGB1bmRlcmxpbmVfdGhpY2tuZXNzJyBhcmUKCXJldmVydGVkIHRvIGJlIG5vcm1hbCB2YWx1ZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0ZpZWxkVHlwZSk6IFJlbW92ZQoJYFQxX0ZJRUxEX1RZUEVfQk9PTF9QJywgYFQxX0ZJRUxEX1RZUEVfSU5URUdFUl9QJywKCWBUMV9GSUVMRF9UWVBFX0ZJWEVEX1AnLCBgVDFfRklFTERfVFlQRV9GSVhFRF8xMDAwX1AnLgoJKFQxX0ZJRUxEX1RZUEVfQk9PTF9QLCBUMV9GSUVMRF9OVU1fUCwgVDFfRklFTERfRklYRURfUCwKCVQxX0ZJRUxEX0ZJWEVEXzEwMDBfUCk6IFJlbW92ZWQuCgkoVDFfRklFTERfVFlQRV9CT09MKTogUmVuYW1lZCB0by4uLgoJKFQxX0ZJRUxEX0JPT0wpOiBOZXcgbWFjcm8uICBVcGRhdGVkIGFsbCBjYWxsZXJzLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jOiBgaXRhbGljX2FuZ2xlJywgYGlzX2ZpeGVkX3BpdGNoJywKCWB1bmRlcmxpbmVfcG9zaXRpb24nLCBgdW5kZXJsaW5lX3RoaWNrbmVzcycsIGBwYWludF90eXBlJywKCWBzdHJva2Vfd2lkdGgnIGFyZSByZXZlcnRlZCB0byBiZSBub3JtYWwgdmFsdWVzLgoJKFQ0Ml9LRVlXT1JEX0NPVU5UKTogTmV3IG1hY3JvLgoJKHQ0Ml9wYXJzZV9kaWN0KTogTmV3IGFycmF5IGBrZXl3b3JkX2ZsYWdzJyB0byBtYXJrIHRoYXQgYSB2YWx1ZSBoYXMKCWFscmVhZHkgYmVlbiBhc3NpZ25lZCB0byBhIGRpY3Rpb25hcnkgZW50cnkuCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Jbml0LCBUNDJfRmFjZV9Eb25lKTogVXBkYXRlZC4KCgkqIHNyYy9jaWQvY2lkdG9rZW4uaDogYGl0YWxpY19hbmdsZScsIGBpc19maXhlZF9waXRjaCcsCglgdW5kZXJsaW5lX3Bvc2l0aW9uJywgYHVuZGVybGluZV90aGlja25lc3MnIGFyZSByZXZlcnRlZCB0byBiZQoJbm9ybWFsIHZhbHVlcy4KCSogc3JjL2NpZC9jaWRvYmpzLmMgKGNpZF9mYWNlX2RvbmUsIGNpZF9mYWNlX2luaXQpOiBVcGRhdGVkLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc19wYXJzZXJfbG9hZF9maWVsZCk6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTEvdDF0b2tlbnMuaDogYGl0YWxpY19hbmdsZScsIGBpc19maXhlZF9waXRjaCcsCglgdW5kZXJsaW5lX3Bvc2l0aW9uJywgYHVuZGVybGluZV90aGlja25lc3MnLCBgcGFpbnRfdHlwZScsCglgc3Ryb2tlX3dpZHRoJyBhcmUgcmV2ZXJ0ZWQgdG8gYmUgbm9ybWFsIHZhbHVlcy4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0RvbmUsIFQxX0ZhY2VfSW5pdCk6IFVwZGF0ZWQuCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoVDFfRklFTERfQ09VTlQpOiBOZXcgbWFjcm8uCgkocGFyc2VfZGljdCk6IEFkZCBwYXJhbWV0ZXIgZm9yIGtleXdvcmQgZmxhZ3MuCglSZWNvcmQgb25seSBmaXJzdCBpbnN0YW5jZSBvZiBhIGZpZWxkLgoJKFQxX09wZW5fRmFjZSk6IE5ldyBhcnJheSBga2V5d29yZF9mbGFncycuCgoyMDAzLTA3LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogU2V0IHRvIDUuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogU2V0IHRvIDEwOjA6My4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBVcGRhdGVkLgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKHJlZmRvYyk6IEZpeCAtLXRpdGxlLgoKCSogZG9jcy9DSEFOR0VTLCBkb2NzL1ZFUlNJT04uRExMLCBSRUFETUU6IFVwZGF0ZWQuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvc291cmNlcy5weSAocmVfY3Jvc3NyZWYpOiBGaXggcmVndWxhcgoJZXhwcmVzc2lvbiB0byBoYW5kbGUgdHJhaWxpbmcgcHVuY3R1YXRpb24gY2hhcmFjdGVycy4KCSogc3JjL3Rvb2xzL2RvY21ha2VyL3RvaHRtbC5weSAobWFrZV9odG1sX3dvcmQpOiBVcGRhdGVkLgoKCSogZG9jcy9yZWxlYXNlOiBOZXcgZmlsZS4KCjIwMDMtMDctMjMgIFlBTUFOTy1VQ0hJIEhpZGV0b3NoaSAgPG1lckBkaW4ub3IuanA+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTX1BhcnNlcl9GdW5jc1JlYyk6IE5ldwoJbWVtYmVyIGZ1bmN0aW9uIGB0b19ieXRlcycuCgoJKiBzcmMvcHNhdXgvcHNhdXhtb2QuYyAocHNfcGFyc2VyX2Z1bmNzKTogTmV3IG1lbWJlcgoJYHBzX3BhcnNlcl90b19ieXRlcycuCgkocHNhdXhfbW9kdWxlX2NsYXNzKTogSW5jcmVhc2UgdmVyc2lvbiB0byAweDIwMDAwTC4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoSVNfVDFfTElORVNQQUNFKTogQWRkIFxmLgoJKElTX1QxX05VTExTUEFDRSk6IE5ldyBtYWNyby4KCShJU19UMV9TUEFDRSk6IEFkZCBpdC4KCShza2lwX3NwYWNlcywgc2tpcF9hbHBoYSk6IE5ldyBmdW5jdGlvbnMuCgkocHNfcGFyc2VyX3NraXBfc3BhY2VzLCBwc19wYXJzZXJfc2tpcF9hbHBoYSk6IFVzZSB0aGVtLgoJKHBzX3RvYnl0ZXMsIHBzX3BhcnNlcl90b19ieXRlcyk6IE5ldyBmdW5jdGlvbnMuCgoyMDAzLTA3LTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKERPQ19ESVIpOiBOZXcgdmFyaWFibGUuCgkocmVmZG9jKTogVXNlICpfRElSIHZhcmlhYmxlcy4KCShkaXN0Y2xlYW4pOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBmaWxlcy4KCgkqIGJ1aWxkcy9kZXRlY3QubWsgKHN0ZF9zZXR1cCwgZG9zX3NldHVwKTogTWVudGlvbiBgbWFrZSByZWZkb2MnLgoKCSogY29uZmlndXJlOiBTZXQgRE9DX0RJUiB2YXJpYWJsZS4KCjIwMDMtMDctMDcgIFBhdHJpayBI5GdnbHVuZCAgPHBhdHJpay5oYWdnbHVuZEBicmVkYmFuZC5uZXQ+CgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKHJlZmRvYyk6IE5ldyB0YXJnZXQgdG8gYnVpbGQgdGhlCglkb2N1bWVudGF0aW9uLgoJKC5QSE9OWSk6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBvZiBGVF9DaGFyTWFwLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UsaDogRml4IGRvY3VtZW50YXRpb24gb2YgRlRfT1VUTElORV9GTEFHUy4KCSogaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oOiBEb2N1bWVudCBGVF9TZm50X1RhZy4KCjIwMDMtMDctMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCksIHNyYy9wY2YvcGNmcmVhZC5jCgkocGNmX2xvYWRfZm9udCk6IEZpeCBjb21wdXRhdGlvbiBvZiBoZWlnaHQgaWYgUElYRUxfU0laRSBwcm9wZXJ0eSBpcwoJbWlzc2luZy4KCjIwMDMtMDctMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2NvbXBhcmUpOiBPbmx5IGFkZCBgc2l6ZScgaWYKCXRoZXJlIGlzIG5vIGVycm9yLiAgUmVwb3J0ZWQgYnkgS251dCBTdC4gT3NtdW5kc2VuCgk8YmlyZC1mcmVldHlwZUBhbmR1aW4ubmV0Pi4KCjIwMDMtMDYtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBIG5ldyB0cnkgdG8gc3luY2hyb25pemUgYml0bWFwIGZvbnQgYWNjZXNzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9CaXRtYXBfU2l6ZSk6IGBoZWlnaHQnIGlzIG5vdwoJZGVmaW5lZCB0byByZXR1cm4gdGhlIGJhc2VsaW5lLXRvLWJhc2VsaW5lIGRpc3RhbmNlLiAgVGhpcyB3YXMKCWFscmVhZHkgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBCREYgYW5kIFBDRiBkcml2ZXJzLgoKCVRoZSBgd2lkdGgnIGZpZWxkIG5vdyBnaXZlcyB0aGUgYXZlcmFnZSB3aWR0aC4gIEkgd2Fzbid0IGFibGUgdG8KCWZpbmQgc29tZXRoaW5nIGJldHRlci4gIEl0IHNob3VsZCBiZSB0YWtlbiBhcyBpbmZvcm1hdGl2ZSBvbmx5LgoKCU5ldyBmaWVsZHMgYHNpemUnLCBgeF9wcGVtJywgYW5kIGB5X3BwZW0nLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBVcGRhdGVkIHRvIHByb3Blcmx5IGZpbGwKCUZUX0JpdG1hcF9TaXplLgoJRG8gcHJvcGVyIHJvdW5kaW5nIGFuZCBjb252ZXJzaW9uIGZyb20gNzIuMjcgdG8gNzIgcG9pbnRzLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KTogVXBkYXRlZCB0byBwcm9wZXJseSBmaWxsCglGVF9CaXRtYXBfU2l6ZS4KCURvIHByb3BlciByb3VuZGluZyBhbmQgY29udmVyc2lvbiBmcm9tIDcyLjI3IHRvIDcyIHBvaW50cy4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChzZm50X2xvYWRfZmFjZSk6IFVwZGF0ZWQgdG8gcHJvcGVybHkgZmlsbAoJRlRfQml0bWFwX1NpemUuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9GYWNlX0luaXQpOiBVcGRhdGVkIHRvIHByb3Blcmx5IGZpbGwKCUZUX0JpdG1hcF9TaXplLgoKMjAwMy0wNi0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVJlZGVzaWduaW5nIHRoZSBGTlQgZHJpdmVyIHRvIHJldHVybiBtdWx0aXBsZSBmYWNlcywgbm90IG11bHRpcGxlCglzdHJpa2VzLiAgQXQgbGVhc3Qgb25lIGZvbnQgKGFwcDg1MC5mb24gZnJvbSBXaW5NRSkgY29udGFpbnMKCWRpZmZlcmVudCBGTlQgY2hhcm1hcHMgZm9yIGl0cyBzdWJmb250cy4gIENvbnNlcXVlbnRseSwgdGhlIHByZXZpb3VzCglkZXNpZ24gb2YgaGF2aW5nIG11bHRpcGxlIGJpdG1hcCBzdHJpa2VzIGluIGEgc2luZ2xlIGZvbnQgZmFjZSBmYWlscwoJc2luY2Ugd2UgaGF2ZSBvbmx5IG9uZSBjaGFybWFwIHBlciBmYWNlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oIChGTlRfU2l6ZV9SZWMpOiBSZW1vdmVkLgoJKEZOVF9GYWNlUmVjKTogUmVtb3ZlIGBudW1fZm9udHMnIGZpZWxkIGFuZCByZXBsYWNlIGBmb250cycgd2l0aAoJYGZvbnQnLgoKCSogc3JjL2Jhc2UvZnR3aW5mbnQuYyAoRlRfR2V0X1dpbkZOVF9IZWFkZXIpOiBVcGRhdGVkLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChmbnRfZm9udF9sb2FkKTogRG9uJ3Qgc2V0IHBpeGVsX3dpZHRoIGVxdWFsCgl0byBwaXhlbF9oZWlnaHQuCgkoZm50X2ZhY2VfZG9uZV9mb250cyk6IFJlbW92ZWQuCgkoZm50X2ZhY2VfZ2V0X2RsbF9mb250cyk6IFJlbmFtZWQgdG8uLi4KCShmbnRfZmFjZV9nZXRfZGxsX2ZvbnQpOiBUaGlzLiAgQWRkIHNlY29uZCBmdW5jdGlvbiBhcmd1bWVudCB0bwoJc2VsZWN0IGZhY2UgaW5kZXguCglVcGRhdGVkIHRvIGxvYWQganVzdCBvbmUgc3ViZm9udC4KCShmbnRfZm9udF9kb25lLCBGTlRfRmFjZV9Eb25lKTogVXBkYXRlZC4KCShGTlRfRmFjZV9Jbml0KTogSGFuZGxlIGBmYWNlX2luZGV4Jy4KCVVwZGF0ZWQuCgkoRk5UX1NpemVfU2V0X1BpeGVscyk6IFNpbXBsaWZpZWQ7IHNpbWlsYXIgdG8gQkRGIGFuZCBQQ0YsIHRoZQoJYml0bWFwIHdpZHRoIGlzIG5vdyBpZ25vcmVkLgoJKEZOVF9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCUZpeCBnbHlwaCBpbmRleCBjb21wdXRhdGlvbi4KCSh3aW5mbnRfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCjIwMDMtMDYtMjUgIE93ZW4gVGF5bG9yICA8b3RheWxvckByZWRoYXQuY29tPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9oZG14KTogRG9uJ3QgYXNzaWduCgludW1fcmVjb3JkcyB1bnRpbCB3ZSBhY3R1YWxseSBkZWNpZGUgdG8gbG9hZCB0aGUgdGFibGUsCglvdGhlcndpc2UsIHdlJ2xsIHNlZ2ZhdWx0IGluIHR0X2ZhY2VfZnJlZV9oZG14LgoKMjAwMy0wNi0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X2dseXBoX25hbWUpOiBQcm90ZWN0IGFnYWluc3QgemVybwoJZ2x5cGggbmFtZSBwb2ludGVyLiAgUmVwb3J0ZWQgYnkgTWlrZXkgQW5iYXJ5IDxtYW5iYXJ5QHZpenJ0LmNvbT4uCgoyMDAzLTA2LTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdG9vbHMvZ2xuYW1lcy5weTogVXBkYXRlZCB0byBBR0wgMi4wLgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oOiBSZWdlbmVyYXRlZC4KCjIwMDMtMDYtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjZ2x5cGguaCwgaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oLAoJc3JjL2Jhc2UvZnRjYWxjLmMsIHNyYy9iYXNlL2Z0dHJpZ29uLmMsIHNyYy9jZmYvY2ZmZ2xvYWQuYywKCXNyYy9vdGxheW91dC9vdGxnc3ViLmMsIHNyYy9wc2hpbnRlci9wc2hyZWMuYywKCXNyYy9wc25hbWVzL3BzbW9kdWxlLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLCBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYzoKCURlY29yYXRlIGNvbnN0YW50cyB3aXRoIGBVJyBhbmQgYEwnIGlmIGFwcHJvcHJpYXRlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oOiBVcGRhdGVkIHRvIGluY2x1ZGUgcmVjZW50IG1vZHVsZQoJYWRkaXRpb25zLgoKCSogc3JjL3BzaGludGVyL3BzaG50ZXJyLmggKEZUX0VSUl9CQVNFKTogRGVmaW5lIGFzCglgRlRfTW9kX0Vycl9QU2hpbnRlcicuCgkqIHNyYy90eXBlNDIvdDQyZXJyb3IuaCAoRlRfRVJSX0JBU0UpOiBEZWZpbmUgYXMKCWBGVF9Nb2RfRXJyX1R5cGU0MicuCgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmggKFBTX0hJTlRTX01BR0lDKTogUmVtb3ZlZC4gIE5vdCB1c2VkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaCBbX19NV0VSS1NfX106IERlZmluZSBGVF9MT05HNjQKCWFuZCBGVF9JTlQ2NC4KCjIwMDMtMDYtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0xvYWRfR2x5cGgpOiBVc2UgZmlyc3RfY2hhciBpbgoJY29tcHV0YXRpb24gb2YgZ2x5cGhfaW5kZXguCgkoRk5UX1NpemVfU2V0X1BpeGVscyk6IFRvIGZpbmQgYSBzdHJpa2UsIGZpcnN0IGNoZWNrIHBpeGVsX2hlaWdodAoJb25seSwgdGhlbiB0cnkgdG8gZmluZCBhIGJldHRlciBoaXQgYnkgY29tcGFyaW5nIHBpeGVsX3dpZHRoIGFsc28uCglXaXRob3V0IHRoaXMgZml4IGl0IGlzbid0IHBvc3NpYmxlIHRvIGFjY2VzcyBhbGwgc3RyaWtlcy4KCUFsc28gY29tcHV0ZSBtZXRyaWNzLm1heF9hZHZhbmNlIHRvIGJlIGluIHN5bmMgd2l0aCBvdGhlciBiaXRtYXAKCWRyaXZlcnMuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0NoYXJfU2l6ZSk6IFJlbW92ZSByZWR1bmRhbnQgY29kZS4KCShGVF9TZXRfUGl4ZWxfU2l6ZSk6IEFzc2lnbiB2YWx1ZSB0byBgbWV0cmljcycgYWZ0ZXIgdmFsaWRhdGlvbiBvZgoJYXJndW1lbnRzLgoKMjAwMy0wNi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVN5bmNocm9uaXplIGNvbXB1dGF0aW9uIG9mIGhlaWdodCBhbmQgd2lkdGggZm9yIGJpdG1hcCBzdHJpa2VzLiAgVGhlCglgd2lkdGgnIGZpZWxkIGluIHRoZSBGVF9CaXRtYXBfU2l6ZSBzdHJ1Y3R1cmUgaXMgbm93IG9ubHkgdXNlZnVsIHRvCgllbnVtZXJhdGUgZGlmZmVyZW50IHN0cmlrZXMuICBUaGUgYG1heF9hZHZhbmNlJyBmaWVsZCBvZiB0aGUKCUZUX1NpemVfTWV0cmljcyBzdHJ1Y3R1cmUgc2hvdWxkIGJlIHVzZWQgdG8gZ2V0IHRoZSAobWF4aW11bSkgd2lkdGgKCW9mIGEgc3RyaWtlLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KTogRG9uJ3QgdXNlIEFWRVJBR0VfV0lEVEggZm9yCgljb21wdXRpbmcgYGF2YWlsYWJsZV9zaXplcy0+d2lkdGgnIGJ1dCBtYWtlIGl0IGFsd2F5cyBlcXVhbCB0bwoJYGF2YWlsYWJsZV9zaXplcy0+aGVpZ2h0Jy4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogRG9uJ3QgdXNlIFJFU09MVVRJT05fWCBmb3IKCWNvbXB1dGluZyBgYXZhaWxhYmxlX3NpemVzLT53aWR0aCcgYnV0IG1ha2UgaXQgYWx3YXlzIGVxdWFsIHRvCglgYXZhaWxhYmxlX3NpemVzLT5oZWlnaHQnLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9QaXhlbF9TaXplcyk6IFBhc3Mgb25seSBzaW5nbGUKCWFyZ3VtZW50IHRvIGZ1bmN0aW9uLgoKCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNfdW5pY29kZV92YWx1ZSk6IEhhbmRsZSBgLicgYWZ0ZXIKCWB1bmlYWFhYJyBhbmQgYHVYWFhYW1hbWF1dJy4KCjIwMDMtMDYtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYzogcy9GVF9FcnJfL0JERl9FcnIvLgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYywgc3JjL2NhY2hlL2Z0Y3NiaXRzLmMsIHNyYy9jYWNoZS9mdGxydS5jOgoJcy9GVF9FcnJfL0ZUQ19FcnJfLy4KCSogc3JjL2NmZi9jZmZjbWFwLmM6IHMvRlRfRXJyXy9DRkZfRXJyXy8uCgkqIHNyYy9wY2YvcGNmZHJpdnIuYzogcy9GVF9FcnJfL1BDRl9FcnJfLy4KCSogc3JjL3BzYXV4L3QxY21hcC5jOiBJbmNsdWRlIHBzYXV4ZXJyLmguCglzL0ZUX0Vycl8vUFNhdXhfRXJyXy8uCgkqIHNyYy9wc2hpbnRlci9wc2hudGVyci5oOiBOZXcgZmlsZS4KCSogc3JjL3BzaGludGVyL3J1bGVzLm1rOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnby5jLCBzcmMvcHNoaW50ZXIvcHNocmVjLmM6IEluY2x1ZGUgcHNobnRlcnIuaC4KCXMvRlRfRXJyXy9QU0hfRXJyXy8uCgkqIHNyYy9wZnIvcGZyZHJpdnIuYywgc3JjL3Bmci9wZnJvYmpzLmMsIHNyYy9wZnIvcGZyc2JpdC5jOgoJcy9GVF9FcnJfL1BGUl9FcnJfLy4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYywgc3JjL3NmbnQvc2ZvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYywKCXNyYy9zZm50L3R0bG9hZC5jOiBzL0ZUX0Vycl8vU0ZOVF9FcnJfLy4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYzogcy9GVF9FcnJfL1RUX0Vycl8vLgoJKiBzcmMvZ3ppcC9mdGd6aXAuYzogTG9hZCBGVF9NT0RVTEVfRVJST1JTX0ggYW5kIGRlZmluZQoJRlRfRVJSX1BSRUZJWCBhbmQgRlRfRVJSX0JBU0UuCglzL0ZUX0Vycl8vR3ppcF9FcnJfLy4KCjIwMDMtMDYtMTkgIERpcmNrIEJsYXNrZXkgIDxsaXN0dGFyZ2V0QGRhbmJhbGEuY29tPgoKCSogc3JjL2NmZi9jZmZsb2FkIChjZmZfZW5jb2RpbmdfbG9hZCk6IGBubGVmdCcgbXVzdCBiZSBGVF9VSW50LAoJb3RoZXJ3aXNlIGFkZGluZyAxIG1pZ2h0IHdyYXAgdGhlIHJlc3VsdC4KCjIwMDMtMDYtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKHBzX3VuaWNvZGVfdmFsdWUpOiBBZGQgc3VwcG9ydCB0bwoJcmVjb2duaXplIGB1WFhYWFtYW1hdXScgZ2x5cGggbmFtZXMuCglEb24ndCBoYW5kbGUgZ2x5cGggbmFtZXMgc3RhcnRpbmcgd2l0aCBgdW5pJyB3aGljaCBoYXZlIG1vcmUgdGhhbgoJZm91ciBkaWdpdHMuCgoyMDAzLTA2LTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX09wZW5fRmxhZ3MpOiBSZXBsYWNlZCB3aXRoCgkjZGVmaW5lcyBmb3IgdGhlIGNvbnN0YW50cy4KCShGVF9PcGVuX0FyZ3MpOiBDaGFuZ2UgdHlwZSBvZiBgZmxhZ3MnIHRvIEZUX1VJbnQuCgkoRlRfR2x5cGhTbG90KTogTW92ZSBgZmxhZ3MnIHRvIEZUX1Nsb3RfSW50ZXJuYWwuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCAoRlRfT3V0bGluZV9GbGFncywgRlRfUmFzdGVyX0ZsYWcpOgoJUmVwbGFjZWQgd2l0aCAjZGVmaW5lcyBmb3IgdGhlIGNvbnN0YW50cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX1Nsb3RfSW50ZXJuYWwpOiBOZXcKCWZpZWxkIGBmbGFncycgKGZyb20gRlRfR2x5cGhTbG90KS4KCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIHNvdXJjZSBmaWxlcy4KCShGVF9HTFlQSF9PV05fQklUTUFQKTogTmV3IG1hY3JvIChmcm9tIGZ0Z2xvYWRyLmgpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oIChGVF9HTFlQSF9PV05fQklUTUFQKTogTW92ZWQKCXRvIGZ0b2Jqcy5oLgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBVc2UgZHVtbXkKCUZUX0dseXBoU2xvdF9JbnRlcm5hbCBvYmplY3QuCgoyMDAzLTA2LTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY29tcGlsZXIvZ2NjLm1rLCBidWlsZHMvY29tcGlsZXIvZ2NjLWRldi5tayAoQ0ZMQUdTKToKCUFkZCAtZm5vLXN0cmljdC1hbGlhc2luZyB0byBnZXQgcmlkIG9mIHppbGxpb24gd2FybmluZ3MgZnJvbSBnY2MKCXZlcnNpb24gMy4zLgoKMjAwMy0wNi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGdseXBoLmggKGZ0X2dseXBoX2Jib3hfdW5zY2FsZWQsCglmdF9nbHlwaF9iYm94X3N1YnBpeGVscywgZnRfZ2x5cGhfYmJveF9ncmlkZml0LAoJZnRfZ2x5cGhfYmJveF90cnVuY2F0ZSwgZnRfZ2x5cGhfYmJveF9waXhlbHMpOiBSZXBsYWNlZCB3aXRoCglGVF9HTFlQSF9CQk9YX1VOU0NBTEVELCBGVF9HTFlQSF9CQk9YX1NVQlBJWEVMUywKCUZUX0dMWVBIX0JCSVhfR1JJREZJVCwgRlRfR0xZUEhfQkJPWF9UUlVOQ0FURSwgRlRfR0xZUEhfQkJPWF9QSVhFTFMuCglUaGUgbG93ZXJjYXNlIHZhcmlhbnRzIGFyZSBub3cgKGRlcHJlY2F0ZWQgYWxpYXNlcykgdG8gdGhlIHVwcGVyY2FzZQoJdmVyc2lvbnMuCglVcGRhdGVkIGFsbCBvdGhlciBmaWxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2R1bGUuaCAoZnRfbW9kdWxlX2ZvbnRfZHJpdmVyLAoJZnRfbW9kdWxlX3JlbmRlcmVyLCBmdF9tb2R1bGVfaGludGVyLCBmdF9tb2R1bGVfc3R5bGVyLAoJZnRfbW9kdWxlX2RyaXZlcl9zY2FsYWJsZSwgZnRfbW9kdWxlX2RyaXZlcl9ub19vdXRsaW5lcywKCWZ0X21vZHVsZV9kcml2ZXJfaGFzX2hpbnRlcik6IFJlcGxhY2VkIHdpdGggRlRfTU9EVUxFX0ZPTlRfRFJJVkVSLAoJRlRfTU9EVUxFX1JFTkRFUkVSLCBGVF9NT0RVTEVfSElOVEVSLCBGVF9NT0RVTEVfU1RZTEVSLAoJRlRfTU9EVUxFX0RSSVZFUl9TQ0FMQUJMRSwgRlRfTU9EVUxFX0RSSVZFUl9OT19PVVRMSU5FUywKCUZUX01PRFVMRV9EUklWRVJfSEFTX0hJTlRFUi4KCVRoZSBsb3dlcmNhc2UgdmFyaWFudHMgYXJlIG5vdyAoZGVwcmVjYXRlZCBhbGlhc2VzKSB0byB0aGUgdXBwZXJjYXNlCgl2ZXJzaW9ucy4KCVVwZGF0ZWQgYWxsIG90aGVyIGZpbGVzLgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9HZXRfQ0JveCk6IEhhbmRsZSBiYm94X21vZGUgYmV0dGVyCglhcyBlbnVtZXJhdGlvbi4KCgkqIHNyYy9wY2YvcGNmZHJpdnIuYyAocGNmX2RyaXZlcl9jbGFzcyksIHNyYy93aW5mb250cy93aW5mbnQuYwoJKHdpbmZudF9kcml2ZXJfY2xhc3MpLCBzcmMvYmRmL2JkZmRyaXZyLmMgKGJkZl9kcml2ZXJfY2xhc3MpOiBBZGQKCXRoZSBGVF9NT0RVTEVfRFJJVkVSX05PX09VVExJTkVTIGZsYWcuCgoyMDAzLTA2LTEzICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9zbG90X2xvYWQpOiBBcHBseSBmb250IG1hdHJpeC4KCjIwMDMtMDYtMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9kb3MvZGV0ZWN0Lm1rOiBUZXN0IG5vdCBvbmx5IGZvciBgRG9zJyBidXQgZm9yIGBET1MnIGFsc28uCgoJKiBidWlsZHMvZG9zL2Rvcy1lbXgubWssIGJ1aWxkcy9jb21waWxlci9lbXgubWs6IE5ldyBmaWxlcyBmb3IKCUVNWCBnY2MgY29tcGlsZXIuCgkqIGJ1aWxkcy9kb3MvZGV0ZWN0Lm1rOiBBZGQgdGFyZ2V0IGBlbXgnLgoKCSogYnVpbGRzL2NvbXBpbGVyL3dhdGNvbS5tayAoTElOS19MSUJSQVJZKTogR05VIE1ha2UgZm9yIERPUyBkb2Vzbid0CglsaWtlIGEgdHJhaWxpbmcgc2VtaWNvbG9uOyBhZGQgYSBkdW1teSBjb21tYW5kLgoKCSogc3JjL2NpZC9jaWRsb2FkLmM6IFJlbW92ZSBwYXJzZV9mb250X2Jib3ggY29kZSAoYWxyZWFkeSBlbmNsb3NlZAoJd2l0aCAjaWYgMCAuLi4gI2VuZGlmKS4KCgkqIHNyYy90eXBlMS90MXRva2Vucy5oOiBIYW5kbGUgL0ZvbnROYW1lLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbmFtZSk6IFJlbW92ZWQuCglSZW1vdmUgcGFyc2VfZm9udF9iYm94IGNvZGUgKGFscmVhZHkgZW5jbG9zZWQgd2l0aCAjaWYgMCAuLi4KCSNlbmRpZikuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9mb250X25hbWUpOiBSZW1vdmVkLgoJUmVtb3ZlIHQ0Ml9wYXJzZV9mb250X2Jib3ggY29kZSAoYWxyZWFkeSBlbmNsb3NlZCB3aXRoICNpZiAwIC4uLgoJI2VuZGlmKS4KCSh0NDJfa2V5d29yZHMpOiBIYW5kbGUgL0ZvbnROYW1lIHdpdGggVDFfRklFTERfS0VZLgoKMjAwMy0wNi0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9GaWVsZFR5cGUpOiBBZGQKCVQxX0ZJRUxEX1RZUEVfS0VZLgoJKFQxX0ZJRUxEX0tFWSk6IE5ldyBtYWNyby4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc19wYXJzZXJfbG9hZF9maWVsZCk6IEhhbmRsZQoJVDFfRklFTERfVFlQRV9LRVkuCgoJKiBzcmMvY2lkL2NpZHRva2VuLmg6IFVzZSBUMV9GSUVMRF9LRVkgZm9yIC9DSURGb250TmFtZS4KCjIwMDMtMDYtMTEgIEFsZXhhbmRlciBNYWxtYmVyZyAgPGFsZXhhbmRlckBtYWxtYmVyZy5vcmc+CgoJKiBzcmMvY2FjaGUvZnRscnUuYyAoRlRfTHJ1TGlzdF9SZW1vdmVfU2VsZWN0aW9uKTogRGVjcmVhc2UKCW51bWJlciBvZiBub2Rlcy4KCShGVF9McnVMaXN0X0xvb2t1cCk6IEZpeCBhc3NlcnRpb24gZm9yIG91dC1vZi1tZW1vcnkgY2FzZS4KCjIwMDMtMDYtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfZGVjcnlwdCk6IFJlbW92ZWQuCgkoY2lkX3JlYWRfc3VicnMpOiBVc2UgdDFfZGVjcnlwdCBmcm9tIHBzYXV4IG1vZHVsZS4KCSogc3JjL2NpZC9jaWRsb2FkLmg6IFVwZGF0ZWQuCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpOiBVc2UgdDFfZGVjcnlwdCBmcm9tIHBzYXV4Cgltb2R1bGUuCgoyMDAzLTA2LTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZG9ianMuYzogQXBwbHkgY2hhbmdlIDIwMDMtMDUtMzEgZnJvbSA8Um9uLkRldkBnbXguZGU+LgoJQ29tcHV0ZSBzdHlsZSBmbGFncy4KCUZpeCBjb21wdXRhdGlvbiBvZiByb290LT5oZWlnaHQuCgkqIHNyYy9jaWQvY2lkdG9rZW4uaDogSGFuZGxlIEZvbnRCQm94LgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX2xvYWRfa2V5d29yZCk6IEhhbmRsZQoJVDFfRklFTERfTE9DQVRJT05fQkJPWC4KCShwYXJzZV9mb250X2Jib3gpOiBDb21tZW50ZWQgb3V0LgoJKGNpZF9maWVsZF9yZWNvcmQpOiBDb21tZW50IG91dCBlbGVtZW50IGZvciBwYXJzaW5nIEZvbnRCQm94LgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jICh0NDJfcGFyc2VfZm9udF9iYm94KTogQ29tbWVudGVkIG91dC4KCSh0NDJfa2V5d29yZHMpOiBIYW5kbGUgRm9udEJCb3ggd2l0aCBUMV9GSUVMRF9CQk9YLCBub3Qgd2l0aAoJVDFfRklFTERfQ0FMTEJBQ0suCgkodDQyX3BhcnNlX2ZvbnRfYmJveCk6IENvbW1lbnRlZCBvdXQuCgkodDQyX2xvYWRfa2V5d29yZCk6IEhhbmRsZSBUMV9GSUVMRF9MT0NBVElPTl9CQk9YLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfSW5pdCk6IEFwcGx5IGNoYW5nZSAyMDAzLTA1LTMxCglmcm9tIDxSb24uRGV2QGdteC5kZT4uCgoyMDAzLTA2LTA5ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChTZXRTdXBlclJvdW5kKSA8MHgzMD46IEZvbGxvdyBBcHBsZSdzCglUcnVlVHlwZSBzcGVjaWZpY2F0aW9uLgoJKEluc19NRFJQLCBJbnNfTUlSUCk6IEZpeCBzaW5nbGUgd2lkdGggY3V0LWluIHRlc3QuCgoyMDAzLTA2LTA5ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL2d6aXAvZnRnemlwLmM6IChpbmZsYXRlX21hc2spOiBSZXBsYWNlZCB3aXRoLi4uCgkoTk9fSU5GTEFURV9NQVNLKTogVGhpcy4KCSogc3JjL2d6aXAvaW5mdXRpbC5oOiBEZWNsYXJlIGBpbmZsYXRlX21hc2snIGNvbmRpdGlvbmFsbHkgYnkKCU5PX0lORkxBVEVfTUFTSy4KCjIwMDMtMDYtMDkgIEFsZXhpcyBTLiBMLiBDYXJ2YWxobyAgPGFsZXhpc0BjZWNtLnVzcC5icj4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jIChmdF9nemlwX2ZpbGVfZmlsbF9vdXRwdXQpOiBIYW5kbGUgWl9TVFJFQU1fRU5ECgljb3JyZWN0bHkuCgoyMDAzLTA2LTA5ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfbmV3KTogQ2hhbmdlIGNhbGN1bGF0aW9uIG9mCglkaW0tPnN0ZHcuY291bnQgdG8gYXZvaWQgY29tcGlsZXIgcHJvYmxlbS4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfU2ltcGxlX0dseXBoKTogTW92ZSB0aGUgYmxvY2sKCXZhcmlhYmxlcyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbiB0byBhdm9pZCBjb21waWxlcgoJcHJvYmxlbXMuCglBZGQgY2FzdHMgbmVjZXNzYXJ5IGZvciAxNmJpdCBjb21waWxlcnMuCgoyMDAzLTA2LTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGZyL3J1bGVzLm1rIChQRlJfRFJWX1NSQyk6IEFkZCBwZnJzYml0LmMuCgkoUEZSX0RSVl9IKTogQWRkIHBmcnR5cGVzLmguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBzL19fTVdLU19fL19fTVdFUktTX18vLgoKMjAwMy0wNi0wOCAgS2FybCBTY2h1bHR6ICA8a3NjaHVsdHpAcnNpbmMuY29tPgoKCSogc3JjL3Bmci9wZnJzYml0LmMgKHBmcl9iaXR3cml0ZXJfaW5pdCk6IENoYW5nZSB0eXBlIG9mIHRoaXJkCglhcmd1bWVudCB0byBGVF9Cb29sLgoJKHBmcl9sb29rdXBfYml0bWFwX2RhdGEpOiBDaGFuZ2UgdHlwZSBvZiB0aGlyZCBhbmQgZm91cnRoIGFyZ3VtZW50Cgl0byBGVF9VSW50LiAgVXBkYXRlZCBjYWxsZXIuCgkocGZyX2xvYWRfYml0bWFwX2JpdHMpOiBDaGFuZ2UgdHlwZSBvZiBmb3VydGggYXJndW1lbnQgdG8gRlRfQm9vbC4KCjIwMDMtMDYtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglDb21wbGV0ZWx5IHJldmlzZWQgRnJlZVR5cGUncyBtYWtlIG1hbmFnZW1lbnQuCgoJLiBJbiBhbGwgbWFrZWZpbGVzIGAvJyBpcyB1c2VkIGFzIHRoZSBwYXRoIHNlcGFyYXRvci4gIFRoZQoJICBjb252ZXJzaW9uIHRvIHRoZSByZWFsIHBhdGggc2VwYXJhdG9ycyBpcyBkb25lIGFzIGxhdGUgYXMKCSAgcG9zc2libGUgdXNpbmcgJChzdWJzdCAuLi4pLgoKCS4gJChIT1NUU0VQKSBubyBsb25nZXIgZXhpc3RzLiAgTm93LCAkKFNFUCkgZ2l2ZXMgdGhlIHBhdGggc2VwYXJhdG9yCgkgIGZvciB0aGUgb3BlcmF0aW5nIHN5c3RlbSwgYW5kIHRoZSBuZXcgJChDT01QSUxFUl9TRVApIHRoZSBwYXRoCgkgIHNlcGFyYXRvciBmb3IgdGhlIGNvbXBpbGVyIHRvb2xzLgoKCS4gJChCVUlMRCkgaGFzIGJlZW4gcmVuYW1lZCB0byAkKEJVSUxEX0RJUikuICBJbiBnZW5lcmFsLCBhbGwKCSAgZGlyZWN0b3J5IHZhcmlhYmxlcyBlbmQgd2l0aCBgX0RJUicuICBUaGUgdmFyaWFudHMgZW5kaW5nIGluIGBfJwoJICAobGlrZSBgQkFTRV8nIGhhdmUgYmVlbiByZW1vdmVkKS4KCglUaGUgZm9sbG93aW5nIENoYW5nZUxvZyBlbnRyaWVzIG9ubHkgZGVzY3JpYmUgY2hhbmdlcyB3aGljaCBhcmUKCW5vdCByZWxhdGVkIHRvIHRoZSByZWRlc2lnbi4KCgkqIGJ1aWxkcy9iZW9zL2Jlb3MtZGVmLm1rIChCVUlMRF9ESVIpOiBGaXggdHlwby4KCSogYnVpbGRzL2NvbXBpbGVyL3dhdGNvbS5tayAoTElOS19MSUJSQVJZKTogRml4IGxpbmtlciBjYWxsIHRvIGF2b2lkCglvdmVybG9uZyBhcmd1bWVudHMgYXMgc3VnZ2VzdGVkIGJ5IEouIEFsaSBIYXJsb3cKCTxhbGlAYXZyYy5jaXR5LmFjLnVrPi4KCSogYnVpbGRzL2Rvcy9kb3Mtd2F0Lm1rOiBOZXcgZmlsZS4KCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChGUkVFVFlQRV9IKTogSW5jbHVkZSBoZWFkZXIgZmlsZXMgZnJvbSB0aGUKCWBkZXZlbCcgc3ViZGlyZWN0b3J5LgoKCSogYnVpbGRzL29zMi9vczItZGV2Lm1rLCBidWlsZHMvdW5peC91bml4ZGRlZi5taywKCWJ1aWxkcy91bml4L3VuaXhkZGVmLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjY2QubWssCglidWlsZHMvd2luMzIvdzMyLWRldi5tayAoQlVJTERfRElSKTogRml4IHBhdGguCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMsIGJ1aWxkcy91bmljL2NvbmZpZ3VyZTogVXBkYXRlZC4KCSogYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4gKERJU1RDTEVBTik6IEFkZCBgZnJlZXR5cGUyLnBjJy4KCjIwMDMtMDYtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKEZUX05ld19GYWNlX0Zyb21fU0ZOVCk6IHMvcmxlbi9zZm50X3NpemUvIHRvCgltYWtlIGl0IGNvbXBpbGUuCgoJKiBkZXZlbC9mdG9wdGlvbi5oOiBVcGRhdGVkLgoKMjAwMy0wNi0wNyAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCwgc3JjL3RydWV0eXBlL3R0Z2xvYWQuaDoKCXMvaW5kZXgvaWR4LyB0byBmaXggY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2ZhY2VfYnVpbGRfY21hcHMpOiBVc2UgbW9yZSBgdm9sYXRpbGUnIHRvCglmaXggY29tcGlsZXIgd2FybmluZy4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jIChCVUlMREZJWEVEKTogUmVtb3ZlZC4KCSogc3JjL2d6aXAvaW5mdHJlZXMuYyAoaW5mbGF0ZV90cmVlc19maXhlZCkgWyFCVUlMREZJWEVEXTogVXNlCglGVF9VTlVTRUQgdG8gcmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAzLTA2LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlci5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2UuaDogVGhpcy4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlci5jOiBSZW5hbWVkIHRvLi4uCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlLmM6IFRoaXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9TVFJPS0VSX0gpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZGVzY3JpcC5tbXMsIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rOgoJVXBkYXRlZC4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmM6IFJlbmFtZWQgdG8uLi4KCSogc3JjL3BjZi9wY2Zkcml2ci5jOiBUaGlzLgoJKiBzcmMvcGNmL3BjZmRyaXZlci5oOiBSZW5hbWVkIHRvLi4uCgkqIHNyYy9wY2YvcGNmZHJpdnIuaDogVGhpcy4KCgkqIHNyYy9wY2YvSmFtZmlsZSwgc3JjL3BjZi9ydWxlcy5tazogVXBkYXRlZC4KCjIwMDMtMDYtMDUgIFdlbmxpbiBJbnN0aXR1dGUgKFRvbSBCaXNob3ApICA8d2VubGluQHdlbmxpbi5jb20+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIChmaWxlX3NwZWNfZnJvbV9wYXRoKSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXToKCUFkZCBgI2lmICFkZWZpbmVkKF9fTVdFUktTX18pJy4KCjIwMDMtMDYtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRmllbGRUeXBlKTogQWRkCglUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDAgYW5kIFQxX0ZJRUxEX1RZUEVfRklYRURfMTAwMF9QLgoJKFQxX0ZJRUxEX0ZJWEVEXzEwMDAsIFQxX0ZJRUxEX0ZJWEVEXzEwMDBfUCk6IE5ldyBtYWNyb3MuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocHNfcGFyc2VyX2xvYWRfZmllbGQpOiBIYW5kbGUKCVQxX0ZJRUxEX1RZUEVfRklYRURfMTAwMCBhbmQgVDFfRklFTERfVFlQRV9GSVhFRF8xMDAwX1AuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9raW5kX2ZpeGVkX3Rob3VzYW5kKTogTmV3IGVudW1lcmF0aW9uLgoJKENGRl9GSUVMRF9GSVhFRF8xMDAwKTogTmV3IG1hY3JvLgoJKGNmZl9wYXJzZXJfcnVuKTogSGFuZGxlIGNmZl9raW5kX2ZpeGVkX3Rob3VzYW5kLgoJKiBzcmMvY2ZmL2NmZnRva2VuLmg6IFVzZSBDRkZfRklFTERfRklYRURfMTAwMCBmb3IgYmx1ZV9zY2FsZS4KCSogc3JjL2NmZi9jZmZsb2FkIChjZmZfc3ViZm9udF9sb2FkKTogRml4IGRlZmF1bHQgdmFsdWVzIG9mCglleHBhbnNpb25fZmFjdG9yIGFuZCBibHVlX3NjYWxlLgoKCSogc3JjL2NpZi9jaWR0b2tlbi5oLCBzcmMvdHlwZTEvdDF0b2tlbnMuaDogVXNlIFQxX0ZJRUxEX0ZJWEVEXzEwMDAKCWZvciBibHVlX3NjYWxlLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfbmV3KTogRml4IGRlZmF1bHQgdmFsdWUgb2YKCWJsdWVfc2NhbGUuCgoyMDAzLTA2LTA0ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCwgc3JjL2NpZC9jaWRnbG9hZC5jLAoJc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvcHNhdXgvdDFkZWNvZGUuYywgc3JjL3BzYXV4L3Bzb2Jqcy5oLAoJc3JjL3BzaGludGVyL3BzaHJlYy5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnby5jLAoJc3JjL3BzbmFtZXMvcHNtb2R1bGUuYywgc3JjL3Jhc3Rlci9mdHJhc3Rlci5jLCBzcmMvc2ZudC9zZm9ianMuYywKCXNyYy9zbW9vdGgvZnRncmF5cy5jLCBzcmMvc21vb3RoL2Z0c21vb3RoLmMsIHNyYy90cnVldHlwZS90dG9ianMuYywKCXNyYy90cnVldHlwZS90dGRyaXZlci5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHlwZTEvdDFhZm0uYywKCXNyYy90eXBlMS90MWdsb2FkLmMsIHNyYy90eXBlMS90MWdsb2FkLmgsIHNyYy90eXBlMS90MWxvYWQuYywKCXNyYy90eXBlMS90MW9ianMuYywgc3JjL3R5cGU0Mi90NDJwYXJzZS5jLCBzcmMvdHlwZTQyL3Q0MnBhcnNlLmg6CglNYW55IGNhc3RzIGFuZCBzbGlnaHQgYXJndW1lbnQgdHlwZSBjaGFuZ2VzIHRvIG1ha2UgaXQgd29yayB3aXRoCglhIDE2Yml0IGNvbXBpbGVyLgoKMjAwMy0wNi0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogRGVmaW5pbmcKCVRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HIGJ5IGRlZmF1bHQgaXMgYSBiYWQgaWRlYQoJc2luY2Ugc29tZSBmb250cyAoZS5nLiBBcmlhbCkgcHJvZHVjZSB3b3JzZSByZXN1bHRzIHRoYW4gd2l0aG91dAoJaGludGluZy4gIFJldmVydGVkLgoKMjAwMy0wNi0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSXTogQ2FsbAoJRlRfR2x5cGhMb2FkZXJfQ2hlY2tQb2ludHMgYmVmb3JlIGFkZGluZyBwaGFudG9tIHBvaW50cy4gIFRoaXMgZml4ZXMKCWEgc2VnZmF1bHQgYnVnIHdpdGggZm9udHMgKGUuZy4gaHRzdDMudHRmKSB3aGljaCBoYXZlIG5lc3RlZAoJc3ViZ2x5cGhzIG1vcmUgdGhhbiBvbmUgbGV2ZWwgZGVlcC4gIFJlcG9ydGVkIGJ5IEFudGhvbnkgRm9rLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogRGVmaW5lCglUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSLAoJVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElORywgYW5kCglUVF9DT05GSUdfT1BUSU9OX0ZPUkNFX1VOUEFURU5URURfSElOVElORyB0byBtYWtlIGl0IHRoZSBuZXcKCWRlZmF1bHQuCgoyMDAzLTA2LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogUmVtb3ZlZC4gIEp1c3QgYQoJd3JhcHBlciBmb3IgYWhfaGludF9lZGdlcy4KCShhaF9oaW50X2VkZ2VzKTogUmVuYW1lZCB0by4uLgoJKGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogVGhpcy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfSGludF9GbGFncyk6IFJlbW92ZWQuICBVbnVzZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9GYWNlX0ludGVybmFsUmVjKSwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRGVjb2RlclJlYyksCglzcmMvY2ZmL2NmZmdsb2FkLmggKENGRl9CdWlsZGVyKTogUmVtb3ZlIGBoaW50X2ZsYWdzJyBmaWVsZC4KCVVudXNlZC4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2J1aWxkZXJfaW5pdCk6IFVwZGF0ZWQuCgkoY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpIDxjZmZfb3BfZW5kY2hhcj46IENhbGwgaGludGVyLT5hcHBseQoJd2l0aCBkZWNvZGVyLT5oaW50X21vZGUgaW5zdGVhZCBvZiBidWlsZGVyLT5oaW50X2ZsYWdzLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAodDFfZGVjb2Rlcl9pbml0KTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlci5jIChmdF9zdHJva2VfYm9yZGVyX2V4cG9ydCk6IHMvaW5kZXgvaWR4Ly4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChzZm50X2xvYWRfZmFjZSk6IENvbW1lbnRlZCBvdXQgY29kZSB3aGljaAoJaW5jcmVhc2VkIHJvb3QtPmhlaWdodCBieSAxNSUgaWYgdGhlIGxpbmUgZ2FwIHdhcyB6ZXJvLiAgVGhlcmUgZXhpc3QKCWZvbnRzIChjb250YWluaW5nIGUuZy4gZm9ybSBkcmF3aW5nIGNoYXJhY3RlcnMpIHdoaWNoIGludGVudGlvbmFsbHkKCWhhdmUgYSB6ZXJvIGxpbmUgZ2FwIHZhbHVlLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKEZyZWVfUHJvamVjdCwgQ1VSX0Z1bmNfZnJlZVByb2opOgoJUmVtb3ZlZC4gIFVudXNlZC4KCVVwZGF0ZWQgYWxsIGNhbGxlcnMuCgoyMDAzLTA2LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IFVzZSBzeW1ib2xpYyBuYW1lcyBmb3IKCUFkb2JlIHNwZWNpZmljIGVuY29kaW5nIElEcyAodGhlcmUgd2FzIGEgd3JvbmcgRUlEIHZhbHVlIGZvciBjdXN0b20KCWVuY29kaW5nKS4KCgkqIHNyYy9jZmYvY2ZmY21hcC5oIChDRkZfQ01hcFN0ZFJlYyk6IFJlbW92ZSBgY291bnQnLgoJKiBzcmMvY2ZmL2NmZmNtYXAuYyAoY2ZmX2NtYXBfZW5jb2RpbmdfaW5pdCwKCWNmZl9jbWFwX2VuY29kaW5nX2RvbmUpOiBVcGRhdGVkLgoJKGNmZl9jbWFwX2VuY29kaW5nX2NoYXJfaW5kZXgsIGNmZl9jbWFwX2VuY29kaW5nX2NoYXJfbmV4dCk6IFVzZQoJMjU2IGFzIGxpbWl0IGZvciBjaGFyYWN0ZXIgY29kZS4KCjIwMDMtMDYtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0xvYWRfR2x5cGgpOiBSZXZlcnQgY2hhbmdlIGZyb20KCTIwMDMtMDMtMjAuCgoyMDAzLTA1LTMxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmggKEZUX1ZlY3Rvcl9Ob3JtYWxpemUpOiBSZW1vdmVkLgoKMjAwMy0wNS0zMSAgICA8Um9uLkRldkBnbXguZGU+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IEltcHJvdmUgYWxnb3JpdGhtIGZvciBndWVzc2luZwoJdGhlIGZvbnQgc3R5bGUgYnkgaWdub3Jpbmcgc3BhY2VzIGFuZCBoeXBoZW5zLgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmluOiBGaXggYFZlcnNpb24nIGZpZWxkLgoKMjAwMy0wNS0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUF2b2lkIG92ZXJ3cml0aW5nIG9mIG51bWVyaWMgZm9udCBkaWN0aW9uYXJ5IGVudHJpZXMgZm9yIHN5bnRoZXRpYwoJZm9udHMuICBBZGRpdGlvbmFsbHksIHNvbWUgZW50cmllcyB3ZXJlIGhhbmRsZWQgYXMgYGludGVnZXInIGluc3RlYWQKCW9mIGBudW1iZXInLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9GaWVsZFR5cGUpOiBBZGQKCVQxX0ZJRUxEX1RZUEVfQk9PTF9QLCBUMV9GSUVMRF9UWVBFX0lOVEVHRVJfUCwgYW5kCglUMV9GSUVMRF9UWVBFX0ZJWEVEX1AuCgkoVDFfRklFTERfQk9PTF9QLCBUMV9GSUVMRF9OVU1fUCwgVDFfRklFTERfRklYRURfUCk6IE5ldyBtYWNyb3MuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocHNfcGFyc2VyX2xvYWRfZmllbGQpOiBIYW5kbGUgbmV3IGZpZWxkIHR5cGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oIChDRkZfRm9udFJlY0RpY3QpLAoJc3JjL2NmZi9jZmZ0b2tlbi5oOiBDaGFuZ2UgdHlwZSBvZiB1bmRlcmxpbmVfcG9zaXRpb24gYW5kCgl1bmRlcmxpbmVfdGhpY2tuZXNzIHRvIEZUX0ZpeGVkLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX3N1YmZvbnRfbG9hZCk6IEZpeCBkZWZhdWx0IHZhbHVlcyBvZgoJdW5kZXJsaW5lX3Bvc2l0aW9uIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzLgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IFNldCB1bmRlcmxpbmVfcG9zaXRpb24KCWFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzIGluIGByb290Jy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChUMV9Gb250KTogQ2hhbmdlIHBvaW50X3R5cGUKCWFuZCBzdHJva2Vfd2lkdGggdG8gcG9pbnRlcnMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCAoUFNfRm9udEluZm8pOiBDaGFuZ2UgaXRhbGljX2FuZ2xlLAoJaXNfZml4ZWRfcGl0Y2gsIHVuZGVybGluZV9wb3NpdGlvbiwgYW5kIHVuZGVybGluZV90aGlja25lc3MgdG8KCXBvaW50ZXJzLgoJKiBzcmMvdHlwZTEvdDF0b2tlbnMuaDogQ2hhbmdlIGl0YWxpY19hbmdsZSwgaXNfZml4ZWRfcGl0Y2gsCgl1bmRlcmxpbmVfcG9zaXRpb24sIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzIHRvIHBvaW50ZXJzLiAgQ2hhbmdlCgl0aGUgdHlwZSBvZiB0aGUgbGF0dGVyIHR3byB0byBgZml4ZWQnLgoJQ2hhbmdlIHR5cGUgb2Ygc3Ryb2tlX3dpZHRoIHRvIGBmaXhlZCcgYW5kIG1ha2UgaXQgYSBwb2ludGVyLgoJQ2hhbmdlIHBhaW50X3R5cGUgdG8gcG9pbnRlci4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0RvbmUpOiBVcGRhdGVkLgoJKFQxX0ZhY2VfSW5pdCk6IFVwZGF0ZWQuCglGaXggYXNzaWdubWVudCBvZiB1bmRlcmxpbmVfcG9zaXRpb24gYW5kIHVuZGVybGluZV90aGlja25lc3MuCgoJKiBzcmMvY2lkL2NpZHRva2VuLmg6IENoYW5nZSBpdGFsaWNfYW5nbGUsIGlzX2ZpeGVkX3BpdGNoLAoJdW5kZXJsaW5lX3Bvc2l0aW9uLCBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcyB0byBwb2ludGVycy4gIENoYW5nZQoJdGhlIHR5cGUgb2YgdGhlIGxhdHRlciB0d28gdG8gYGZpeGVkJy4KCUNoYW5nZSB0eXBlIG9mIHN0cm9rZV93aWR0aCB0byBgZml4ZWQnLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoY2lkX2ZhY2VfZG9uZSk6IFVwZGF0ZWQuCgkoY2lkX2ZhY2VfaW5pdCk6IFVwZGF0ZWQuCglGaXggYXNzaWdubWVudCBvZiB1bmRlcmxpbmVfcG9zaXRpb24gYW5kIHVuZGVybGluZV90aGlja25lc3MuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmM6IENoYW5nZSBpdGFsaWNfYW5nbGUsIGlzX2ZpeGVkX3BpdGNoLAoJdW5kZXJsaW5lX3Bvc2l0aW9uLCBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcyB0byBwb2ludGVycy4gIENoYW5nZSB0aGUKCXR5cGUgb2YgdGhlIGxhdHRlciB0d28gdG8gYGZpeGVkJy4KCUNoYW5nZSB0eXBlIG9mIHN0cm9rZV93aWR0aCB0byBgZml4ZWQnIGFuZCBtYWtlIGl0IGEgcG9pbnRlci4KCUNoYW5nZSBwYWludF90eXBlIHRvIHBvaW50ZXIuCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Jbml0KTogVXBkYXRlZC4KCUZpeCBhc3NpZ25tZW50IG9mIHVuZGVybGluZV9wb3NpdGlvbiBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcy4KCShUNDJfRmFjZV9Eb25lKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2VfZnJvbV9idWZmZXIpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYywgc3JjL3BzaGludGVyL3BzaGdsb2IuaAoJKHBzaF9nbG9iYWxzX3NldF9zY2FsZSk6IE1ha2UgaXQgYSBsb2NhbCBmdW5jdGlvbi4KCgkqIHRlc3QvZ3ZpZXcuYzogRml4IHJlbmFtaW5nIHBzMy0+cHMgdHlwby4KCUZvcm1hdHRpbmcuCgoyMDAzLTA1LTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuW2NoXSwgc3JjL3BzaGludGVyL3BzaGFsZ28yLltjaF06IFJlbW92ZWQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmg6IFJlbW92ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuW2NoXTogUmVuYW1lZCB0by4uLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnby5bY2hdOiBOZXcgZmlsZXMuCglzL1BTSDMvUFNILy4KCXMvcHNoMy9wc2gvLgoJcy9wczMvcHMvLgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jLCBzcmMvcHNoaW50ZXIvcHNoaW50ZXIuYzogVXBkYXRlZC4KCSogc3JjL3BzaGludGVyL3J1bGVzLm1rLCBzcmMvcHNoaW50ZXIvSmFtZmlsZTogVXBkYXRlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLltjaF0gKHBzaF9kaW1lbnNpb25fc25hcF93aWR0aCk6IENvbW1lbnRlZAoJb3V0LgoKCSogdGVzdHMvZ3ZpZXcuYzogUmVtb3ZlIGNvZGUgZm9yIHBzaGFsZ28xIGFuZCBwc2hhbGdvMi4KCVVwZGF0ZWQuCgoyMDAzLTA1LTI4ICBNYXJ0aW4gWmluc2VyICA8emluc2VyQGRlY3VzLmRlPgoKCSogdm1zX21ha2UuY29tOiBSZXdvcmtlZCBzdXBwb3J0IGZvciBzaGFyZWFibGUgaW1hZ2VzIG9uIFZNUy4gIFRoZQoJZmlyc3QgdmVyc2lvbiB3YXMga2luZCBvZiBhIGhhY2s7IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoZQoJcHJvY2VkdXJlIHRvIGV4dHJhY3QgdGhlIHJlcXVpcmVkIHN5bWJvbHMgaXMgbXVjaCBjbGVhbmVyLgoKCVJld29ya2VkIGNyZWF0aW9uIG9mIE1NUyBmaWxlcywgYXZvaWRpbmcgYSBudW1iZXIgb2YgdGVtcG9yYXJ5IGZpbGVzCgl3aGljaCB3ZXJlIGNyZWF0ZWQgaW4gdGhlIHByZXZpb3VzIHZlcnNpb24uCgoJRnVydGhlciB3b3JrIG9uIGNyZWF0aW5nIGRlc2NyaXAubW1zIGZpbGVzIG9uIHRoZSBmbHkuCgoJKiBidWlsZHMvdm1zL2Rlc2NyaXAubW1zLCBzcmMvYXV0b2hpbnQvZGVzY3JpcC5tbXMsCglzcmMvdHlwZTEvZGVzY3JpcC5tbXM6IFJlbW92ZWQuCgoyMDAzLTA1LTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19nbHlwaF9jb21wdXRlX2V4dHJlbWEpOiBTa2lwCgljb250b3VycyB3aXRoIG9ubHkgYSBzaW5nbGUgcG9pbnQgdG8gYXZvaWQgc2VnZmF1bHQuCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEFjdGl2YXRlIGNvZGUgZm9yCgloYW5kbGluZyBgb3JpZ2luJy4KCjIwMDMtMDUtMjQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX09QVElPTl9OT19TVFJPTkdfSU5URVJQT0xBVElPTik6CglSZW1vdmVkIHNpbmNlIHVudXNlZC4KCjIwMDMtMDUtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggKGZ0X3N0cmNhdCk6IE5ldyB3cmFwcGVyIG1hY3JvCglmb3Igc3RyY2F0LgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAoY3JlYXRlX2x3Zm5fbmFtZSk6IHMvaXN1cHBlci9mdF9pc3VwcGVyLy4KCShwYXJzZV9mb250KTogcy9tZW1jcHkvZnRfbWVtY3B5Ly4KCShpc19kZm9udCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06IHMvbWVtY21wL2Z0X21lbWNtcC8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChsb2FkX21hY19mYWNlKSBbRlRfTUFDSU5UT1NIXToKCXMvc3RybGVuL2Z0X3N0cmxlbi8uCglzL3N0cmNhdC9mdF9zdHJjYXQvLgoJcy9zdHJjcHkvZnRfc3RyY3B5Ly4KCSogc3JjL2d6aXAvenV0aWwuaDogcy9tZW1zZXQvZnRfbWVtc2V0Ly4KCXMvbWVtY21wL2Z0X21lbWNtcC8uCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpLCBzcmMvcGNmL3BjZmRyaXZlci5jCgkoUENGX0ZhY2VfSW5pdCk6IFRlc3QgZm9yIGNoYXJzZXQgcmVnaXN0cnkgY2FzZS1pbnNlbnNpdGl2ZWx5LgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKGZ0X2d6aXBfZmlsX2lvKTogUmV2ZXJ0IGNoYW5nZSBmcm9tIHllc3RlcmRheTsKCWl0IGhhcyBhbHJlYWR5IGJlZW4gZml4ZWQgZGlmZmVyZW50bHkuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoRE9fU0ZWVEwpOiBBZGQgbWlzc2luZyBicmFjZXMgYXJvdW5kCglpZi1jbGF1c2UuCgoyMDAzLTA1LTIxICBNYXJ0aW4gWmluc2VyICA8emluc2VyQGRlY3VzLmRlPgoKCSogdDFsb2FkLmMgKHBhcnNlX2JsZW5kX2F4aXNfdHlwZXMpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCgkqIGRlc2NyaXAubW1zOiBSZW1vdmVkLiAgTm93IGNyZWF0ZWQgYnkuLi4KCgkqIHZtc19tYWtlLmNvbTogTmV3IGZpbGUuCgoyMDAzLTA1LTIxICBXZWlxaSBHYW8gIDx3ZWlxaWdhb0BuZXR3b3JrdXNhLm5ldD4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jIChmdF9nemlwX2ZpbGVfaW8pOiBBdm9pZCB6ZXJvIHZhbHVlIG9mIGBkZWx0YScKCXRvIHByZXZlbnQgaW5maW5pdGUgbG9vcC4KCjIwMDMtMDUtMjEgIExhcnMgQ2xhdXNlbiAgPGxyY2xhdXNlQGNzLnVpdWMuZWR1PgoKCSogZG9jcy9WRVJTSU9OLkRMTDogUHJvdmlkZSBiZXR0ZXIgYXV0b2NvbmYgc25pcHBldCB0byBjaGVjawoJRnJlZVR5cGUgdmVyc2lvbi4KCjIwMDMtMDUtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpOiBGcmVlIGBpbnRlcm5hbCcgbm90CglgZmFjZS0+aW50ZXJuYWwnIGluIGNhc2Ugb2YgZXJyb3IgdG8gYXZvaWQgcG9zc2libGUgc2VnZmF1bHQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHMzX2hpbnRzX2FwcGx5KTogQ2hlY2sgd2hldGhlciB3ZQoJYWN0dWFsbHkgaGF2ZSBhbiBvdXRsaW5lLgoKMjAwMy0wNS0yMCAgRGF2aWQgQ2hlc3RlciAgPGRhdmlkY2hlc3RlckBxbXgubmV0PgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzM19oaW50c19hcHBseSk6IFRyeSB0byBvcHRpbWl6ZQoJeV9zY2FsZSBzbyB0aGF0IHRoZSB0b3Agb2Ygbm9uLWNhcGl0YWwgbGV0dGVycyBpcyBhbGlnbmVkIG9uIGEgcGl4ZWwKCWJvdW5kYXJ5IHdoZW5ldmVyIHBvc3NpYmxlLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50X2VkZ2VzKTogTWFrZSBzdXJlIHRoYXQgbG93ZXJjYXNlCgltJ3MgbWFpbnRhaW4gdGhlaXIgc3ltbWV0cnkuCgoyMDAzLTA1LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKTogT29wcyEgIERhdmlkJ3MKCXBhdGNoIGZyb20geWVzdGVyZGF5IGhhcyBiZWVuIHJlc29sdmVkIGFscmVhZHkgaW4gYSBkaWZmZXJlbnQKCXdheS4gIFJldmVydGVkLgoKMjAwMy0wNS0xOSAgRGF2aWQgQ2hlc3RlciAgPGRhdmlkY2hlc3RlckBxbXgubmV0PgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6IERvbid0IHNjYWxlCgl5X3NjYWxlIGxvY2FsbHkgYnV0IGZhY2UtPnNpemUtPm1ldHJpY3MueV9zY2FsZS4KCjIwMDMtMDUtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9uZXh0KTogU2VsZWN0IHByb3BlciBzdGFydAoJdmFsdWUgZm9yIGBoaScgdG8gYXZvaWQgaW5maW5pdGUgbG9vcC4KCjIwMDMtMDUtMTggIFlvbmcgU3VuICA8c3VueW9uZ0BuanN0YXIuY29tPgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChJbnNlcnRfWV9UdXJuKTogRml4IG92ZXJmbG93IHRlc3QuCgoyMDAzLTA1LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIFtGVF9DT05GSUdfT1BUSU9OX01BQ19GT05UU106CglOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBVc2UgaXQgdG8gY29udHJvbCBtYWMgZm9udCBzdXBwb3J0IG9uIG5vbi1tYWMKCXBsYXRmb3Jtcy4KCjIwMDMtMDUtMTcgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCUltcGxlbWVudCBwYXJ0aWFsIHN1cHBvcnQgb2YgTWFjIGZvbnRzIG9uIG5vbi1NYWMgcGxhdGZvcm1zLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG1lbW9yeV9zdHJlYW1fY2xvc2UsIG5ld19tZW1vcnlfc3RyZWFtLAoJb3Blbl9mYWNlX2Zyb21fYnVmZmVyLCBNYWNfUmVhZF9QT1NUX1Jlc291cmNlLAoJTWFjX1JlYWRfc2ZudF9SZXNvdXJjZSwgSXNNYWNSZXNvdXJjZSwgSXNNYWNCaW5hcnksIGxvYWRfbWFjX2ZhY2UpCglbIUZUX01BQ0lOVE9TSF06IE5ldyBmdW5jdGlvbnMuCgkoRlRfT3Blbl9GYWNlKSBbIUZUX01BQ0lOVE9TSF06IFVzZSBsb2FkX21hY19mYWNlLgoKMjAwMy0wNS0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBTY2FsZSBsaW5lYXIgYWR2YW5jZSB3aWR0aCBvbmx5CglpZiBGVF9GQUNFX0ZMQUdfU0NBTEFCTEUgaXMgc2V0IChvdGhlcndpc2Ugd2UgaGF2ZSBhIGRpdmlzaW9uIGJ5Cgl6ZXJvIHNpbmNlIEZOVCBhbmQgZnJpZW5kcyBkb24ndCBkZWZpbmUgYGZhY2UtPnVuaXRzX3Blcl9FTScpLgoKMjAwMy0wNS0xNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfVmVjdG9yX1JvdGF0ZSk6IEF2b2lkIHJvdW5kaW5nIGVycm9ycwoJZm9yIHNtYWxsIHZhbHVlcy4KCjIwMDMtMDUtMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX1BvaW50UmVjKTogUmVtb3ZlIHVudXNlZCBgaW5fYW5nbGUnCglhbmQgYG91dF9hbmdsZScgZmllbGRzLgoKMjAwMy0wNS0xNCAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIChGVF9OZXdfRmFjZV9Gcm9tX1NGTlQpOiBIYW5kbGUgQ0ZGIGZpbGVzIGFsc28uCgoyMDAzLTA1LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEZpeCB0eXBvIGluIGNvbW1lbnQKCShGVF9IQVNfRklYRURfU0laRVMpLgoKMjAwMy0wNS0xMCAgRGFuIFdpbGxpYW1zICA8ZGFuQGJpZ3cub3JnPgoKCSogYnVpbGRzL3VuaXgvYWNsb2NhbC5tNDogQ29tbWVudCBvdXQgZGVmaW5pdGlvbiBvZgoJYGFsbG93X3VuZGVmaW5lZF9mbGFnJyBmb3IgRGFyd2luIDEuMy4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBBZGQgb3B0aW9uIC0td2l0aC1vbGQtbWFjLWZvbnRzLgoJKiBidWlsZHMvdW5peC9sdG1haW4uc2g6IEZpeCB2ZXJzaW9uIG51bWJlcmluZyBmb3IgRGFyd2luIDEuMy4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IEZpeCBjb25kaXRpb25zIGZvciBkZWZpbmluZwoJYEZUX01BQ0lOVE9TSCcuCgkqIHNyYy9iYXNlL2Z0YmFzZS5jOiBJbmNsdWRlIGBmdG1hYy5jJyBjb25kaXRpb25hbGx5LgoJKiBzcmMvYmFzZS9mdG1hYy5jOiBIYW5kbGUgX19HTlVDX18uCgoyMDAzLTA1LTA3ICBZQU1BTk8tVUNISSBIaWRldG9zaGkgIDxtZXJAZGluLm9yLmpwPgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGlzX2FscGhhKTogUmVtb3ZlZC4KCShjaWRfcGFyc2VfZGljdCk6IFVzZSBgY2lkX3BhcnNlcl9za2lwX2FscGhhJyBpbnN0ZWFkIG9mIGBpc19hbHBoYScuCgoyMDAzLTA1LTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhvcHRpbS5jLCBzcmMvYXV0b2hpbnQvYWhvcHRpbS5oOiBPYnNvbGV0ZSwgcmVtb3ZlZC4KCjIwMDMtMDUtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX3NldHVwX3V2KTogRXhjaGFuZ2UgYGZvcicgbG9vcCBhbmQKCWBzd2l0Y2gnIHN0YXRlbWVudCB0byBtYWtlIGl0IHJ1biBmYXN0ZXIuCgkoYWhfb3V0bGluZV9jb21wdXRlX3NlZ21lbnRzKTogUmVzZXQgYHNlZ21lbnQtPnNjb3JlJyBhbmQKCWBzZWdtZW50LT5saW5rJy4KCShhaF9vdXRsaW5lX2xpbmtfc2VnbWVudHMpOiBQcm92aWRlIGFsdGVybmF0aXZlIGNvZGUgd2hpY2ggZG9lcwoJdGhlIHNhbWUgYnV0IHJ1bnMgbXVjaCBmYXN0ZXIuCglIYW5kbGUgbWFqb3IgZGlyZWN0aW9uIGFsc28uCgkoYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKTogU2NhbGUgYGVkZ2VfZGlzdGFuY2VfdGhyZXNob2xkJyBkb3duCglhZnRlciByb3VuZGluZyBpbnN0ZWFkIG9mIHNjYWxpbmcgY29tcGFyaXNvbiB2YWx1ZSBpbiBsb29wLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfYWxpZ25fc3RvbmdfcG9pbnRzKTogUHJvdmlkZQoJYWx0ZXJuYXRpdmUgY29kZSB3aGljaCBydW5zIGZhc3Rlci4KCUhhbmRsZSBgYmVmb3JlLT5zY2FsZSA9PSAwJy4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX1NlZ21lbnRSZWMpOiBNb3ZlIHNvbWUgZmllbGRzIGRvd24uCgkoQUhfRWRnZVJlYyk6IE1vdmUgc29tZSBmaWVsZHMgaW4gc3RydWN0dXJlLgoJTmV3IGZpZWxkIGBzY2FsZScuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X2NoYXJfbmV4dCk6IFVzZSBiaW5hcnkgc2VhcmNoLgoKMjAwMy0wNS0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2Fob3B0aW0uYyAoTE9HKTogUmVuYW1lZCB0by4uLgoJKEFIX09QVElNX0xPRyk6IFRoaXMuCgkoQUhfRHVtcF9TcHJpbmdzKTogRml4IGxvZyBtZXNzYWdlIGZvcm1hdC4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludF9lZGdlc18zKTogUmVuYW1lZCB0by4uLgoJKGFoX2hpbnRfZWRnZXMpOiBUaGlzLgoKMjAwMi0wNS0wMiAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfU2V0X1BpeGVsX1NpemUpOiBJbml0aWFsaXplIGBtYXhfYWR2YW5jZScuCgoyMDAzLTA1LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF90ZXN0X2V4dHJlbWEpOiBSZW5hbWVkIHRvLi4uCgkoYWhfdGVzdF9leHRyZW11bSk6IFRoaXMuCgoyMDAzLTA0LTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEdlbmVyYXRlIGBmcmVldHlwZS5wYycgZnJvbQoJYGZyZWV0eXBlLmluJy4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoaW5zdGFsbCwgdW5pbnN0YWxsKTogSGFuZGxlIGBmcmVldHlwZS5wYycuCgoyMDAzLTA0LTI4ICBHdXN0YXZvIEouIEEuIE0uIENhcm5laXJvICA8Z2pjQGluZXNjcG9ydG8ucHQ+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIuaW46IE5ldyBmaWxlLiAgQ29udGFpbnMgYnVpbGRpbmcgaW5mb3JtYXRpb24KCWZvciB0aGUgYHBrZy1jb25maWcnIHBhY2thZ2UuCgoyMDAzLTA0LTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IEZpeCBib3VuZGFyeSBjaGVjayBmb3IKCWBnbHlwaF9pbmRleCcuCgoyMDAzLTA0LTI1OiAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCUFkZGVkIHRoZSBvcHRpb25hbCB1bnBhdGVudGVkIGhpbnRpbmcgc3lzdGVtIGZvciBUcnVlVHlwZS4gIEl0CglhbGxvd3MgdHlwZWZhY2VzIHdoaWNoIG5lZWQgaGludGluZyB0byBwcm9kdWNlIGNvcnJlY3QgZ2x5cGggZm9ybXMKCShlLmcuLCBDaGluZXNlIHR5cGVmYWNlcyBmcm9tIER5bmFsYWIpIHRvIHdvcmsgYWNjZXB0YWJseSB3aXRob3V0CglpbmZyaW5naW5nIEFwcGxlIHBhdGVudHMuICBUaGlzIHN5c3RlbSBpcyBjb21waWxlZCBvbmx5IGlmCglUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HIGlzIGRlZmluZWQgaW4KCWZ0b3B0aW9uLmguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dW5wYXQuaDogTmV3IGZpbGUuICBEZWZpbmVzCglGVF9QQVJBTV9UQUdfVU5QQVRFTlRFRF9ISU5USU5HLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfVFJVRVRZUEVfVU5QQVRFTlRFRF9IKTogTmV3CgltYWNybyB0byB1c2Ugd2hlbiBpbmNsdWRpbmcgdHR1bnBhdC5oLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAoJKFRUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkcsCglUVF9DT05GSUdfT1BUSU9OX0ZPUkNFX1VOUEFURU5URURfSElOVElORyk6IE5ldyBjb25maWd1cmF0aW9uIG1hY3JvcwoJKG5vdCBkZWZpbmVkLCBidXQgaW4gY29tbWVudHMpIGZvciB0aGUgdW5wYXRlbnRlZCBoaW50aW5nIHN5c3RlbS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9GYWNlUmVjKQoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBOZXcgZWxlbWVudCBgRlRfQm9vbAoJdW5wYXRlbnRlZF9oaW50aW5nJy4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChOT19BUFBMRV9QQVRFTlQsIEFQUExFX1RIUkVTSE9MRCk6CglSZW1vdmVkLgoJKEdVRVNTX1ZFQ1RPUik6IE5ldyBtYWNyby4KCShUVF9SdW5fQ29udGV4dCkgW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOgoJU2V0IGBib3RoX3hfYXhpcycuCgkodHRfZGVmYXVsdF9ncmFwaGljc19zdGF0ZSkKCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogVXBkYXRlZC4KCShDdXJyZW50X1JhdGlvKSBbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106CglIYW5kbGUgYHVucGF0ZW50ZWRfaGludGluZycuCgkoRGlyZWN0X01vdmUpIFtOT19BUFBMRV9QQVRFTlRdOiBSZW1vdmVkLgoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBJbnNlcnQgYXNzZXJ0aW9uLgoJKFByb2plY3QsIEZyZWVQcm9qZWN0KQoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBJbnNlcnQgYXNzZXJ0aW9uLgoJKENvbXB1dGVfRnVuY3MpIFtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXToKCUltcGxlbWVudCB1bnBhdGVudGVkIGhpbnRpbmcuCgkoRE9fU1BWVENBLCBET19TRlZUQ0EsIERPX1NQVlRMLCBET19TRlZUTCwgRE9fU1BWRlMsIERPX1NGVkZTLAoJSW5zX1NEUFZUTCk6IENhbGwgYEdVRVNTX1ZFQ1RPUicuCgkoRE9fR1BWLCBET19HRlYpIFtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXToKCUhhbmRsZSBgdW5wYXRlbnRlZF9oaW50aW5nJy4KCShDb21wdXRlX1BvaW50X0Rpc3BsYWNlbWVudCkgW05PX0FQUExFX1BBVEVOVF06IFJlbW92ZWQuCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IEltcGxlbWVudCB1bnBhdGVudGVkCgloaW50aW5nLgoJKE1vdmVfWnAyX1BvaW50LCBJbnNfU0hQSVgsIEluc19ERUxUQVAsIEluc19ERUxUQUMpCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IEltcGxlbWVudCB1bnBhdGVudGVkCgloaW50aW5nLgoJKFRUX1J1bklucyk6IFVwZGF0ZWQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMKCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogSW5jbHVkZQoJRlRfVFJVRVRZUEVfVU5QQVRFTlRFRF9ILgoJKHR0X2ZhY2VfaW5pdCkgW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkcsCglUVF9DT05GSUdfT1BUSU9OX0ZPUkNFX1VOUEFURU5URURfSElOVElOR106IENoZWNrCglGVF9QQVJBTV9UQUdfVU5QQVRFTlRFRF9ISU5USU5HLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5oIChUVF9HcmFwaGljc1N0YXRlKQoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBBZGQgYGJvdGhfeF9heGlzJy4KCjIwMDMtMDQtMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKGhhc2hfYnVja2V0LCBoYXNoX2xvb2t1cCk6IFVzZSBgY29uc3QnIGZvciBmaXJzdAoJYXJndW1lbnQuCgkoYmRmX2dldF9mb250X3Byb3BlcnR5KTogVXNlIGBjb25zdCcgZm9yIHRoaXJkIGFyZ3VtZW50LgoJVXBkYXRlZCBhbGwgY2FsbGVycy4KCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KTogU2V0IHBpeGVsIHdpZHRoIGFuZCBoZWlnaHQKCXNpbWlsYXIgdG8gdGhlIFBDRiBkcml2ZXIuCgkqIHNyYy9iZGYvYmRmLmggKF9oYXNobm9kZSk6IFVzZSBgY29uc3QnIGZvciBga2V5Jy4KCVVwZGF0ZWQuCgoJKiBzcmMvZ3ppcC9mdGd6aXAuYzogQysrIGRvZXNuJ3QgbGlrZSB0aGF0IHRoZSBhcnJheSBgaW5mbGF0ZV9tYXNrJwoJaXMgZGVjbGFyZWQgdHdpY2UuICBJdCBpcyBwZXJoYXBzIGJldHRlciB0byBtb2RpZnkgdGhlIHpsaWIgc291cmNlCglmaWxlcyBkaXJlY3RseSBpbnN0ZWFkIG9mIHRoaXMgaGFjay4KCSh6Y2FsbG9jLCB6ZnJlZSwgZnRfZ3ppcF9zdHJlYW1fY2xvc2UsIGZ0X2d6aXBfc3RyZWFtX2lvKTogQWRkIGNhc3RzCgl0byBtYWtlIGJ1aWxkIHdpdGggZysrIHN1Y2Nlc3NmdWwuCgoyMDAzLTA0LTI0ICBNYW5pc2ggU2luZ2ggIDx5b3NoQGdpbXAub3JnPgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKGNpZF9mYWNlX2luaXQpLCBzcmMvdHlwZTEvdDFvYmpzLmMKCShUMV9GYWNlX0luaXQpLCBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfSW5pdCk6IFNwbGl0IG9uIGAtJwoJYWxzbyBmb3Igc2VhcmNoaW5nIHRoZSBzdHlsZSBuYW1lLgoKMjAwMy0wNC0yNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBGaXhlZCB0aGUgY29tcHV0YXRpb24gb2YKCWZhY2UtPm51bV9nbHlwaHMuICBXZSBtdXN0IGluY3JlYXNlIHRoZSB2YWx1ZSBieSAxIHRvIHJlc3BlY3QgdGhlCgljb252ZW50aW9uIHRoYXQgZ2x5cGggaW5kZXggMCBhbHdheXMgY29ycmVzcG9uZHMgdG8gdGhlIGBtaXNzaW5nCglnbHlwaCcuCgoyMDAzLTA0LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC91bml4LWNjLmluIChDRkxBR1MpOiBBZGQgQENQUEZMQUdTQC4KCjIwMDMtMDQtMjQgIERpZXRlciBCYXJvbiAgPGRpbGxvQG5ldGJzZC5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW4gKGNmbGFncyk6IEVtaXQgRnJlZVR5cGUgMidzIGluY2x1ZGUKCWZpbGVzIGZpcnN0LiAgT3RoZXJ3aXNlIHRoZXJlIGFyZSBjb25mbGljdHMgd2l0aCBGcmVlVHlwZSAxCglpbnN0YWxsZWQgc2ltdWx0YW5lb3VzbHkuCgoyMDAzLTA0LTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJRml4aW5nIGJ1Z3MgcmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgoKCSogc3JjL2Jhc2UvZnRzdHJva2VyLmMgKEZUX1N0cm9rZXJfUGFyc2VPdXRsaW5lKTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGUgYGluX3BhdGgnLgoKCSogc3JjL2Jhc2UvZnRvYmpzIChmdF9nbHlwaHNsb3Rfc2V0X2JpdG1hcCk6IENoYW5nZSB0eXBlIG9mCglzZWNvbmQgYXJndW1lbnQgdG8gYEZUX0J5dGUqJy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogVXBkYXRlZC4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcmVhZHN0cmVhbSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHJlcycuCgkoX2JkZl9wYXJzZV9nbHlwaHMpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBuZXh0Jy4KCU1hcmsgYGNhbGxfZGF0YScgYXMgdW51c2VkLgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydUxpc3RfTG9va3VwKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYHBsYXN0Jy4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2Zfc2Vla190b190YWJsZV90eXBlKTogU2xpZ2h0IHJlY29kaW5nIHRvCglhY3R1YWxseSB1c2UgYGVycm9yJy4KCShwY2ZfbG9hZF9mb250KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgYXZndycuCgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfZ2V0X2tlcm5pbmcpOiBDaGFuZ2UgcmV0dXJuIHR5cGUKCXRvIGB2b2lkJy4KCU1hcmsgYGVycm9yJyBhcyB1bnVzZWQuCgkqIHNyYy9wZnIvcGZyb2Jqcy5oOiBVcGRhdGVkLgoJKiBzcmMvcGZyL3BmcmRyaXZyLmMgKHBmcl9nZXRfa2VybmluZyk6IFVwZGF0ZWQuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoc2ZudF9kaXJfY2hlY2spOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgZm9ybWF0X3RhZycuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA2X3ZhbGlkYXRlLCB0dF9jbWFwMTBfdmFsaWRhdGUpOiBSZW1vdmUKCXVudXNlZCB2YXJpYWJsZSBgc3RhcnQnLgoJKHR0X2NtYXAxMF9jaGFyX25leHQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGByZXN1bHQnCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfZmFjZV9nZXRfbmFtZSk6IE1hcmsgYGVycm9yJyBhcyB1bnVzZWQuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBNYXJrIGBlcnJvcicgYXMKCXVudXNlZC4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYHBzaGludGVyJy4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpOiBVc2UgYGdseXBoX2RhdGFfbG9hZGVkJwoJb25seSBmb3IgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTC4KCjIwMDMtMDQtMjMgIEFraXRvIEhpcmFpICA8YWtpdG9Aa2RlLmdyLmpwPgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF92YWxpZGF0ZSk6IFByb3ZpZGUgYSB3ZWFrIHZhcmlhbnQKCW9mIHRoZSBnbHlwaCBJRCBib3VuZGluZyBjaGVjayBpZiBGVF9WQUxJREFURV9USUdIVCBpcyBub3QgYWN0aXZlLgoJV2l0aG91dCB0aGlzIGNoYW5nZSwgbWFueSBDSksgZm9udHMgZnJvbSBEeW5hbGFiIGFyZSByZWplY3RlZC4KCjIwMDMtMDQtMjMgIEpvZSBNYXJjdXMgQ2xhcmtlICA8bWFyY3VzQEZyZWVCU0Qub3JnPgoKCSogc3JjL2Jhc2UvZnRiZGYuYyAoRlRfR2V0X0JERl9Qcm9wZXJ0eSk6IENoZWNrIGZvciB2YWxpZAoJYGdldF9pbnRlcmZhY2UnLgoKMjAwMy0wNC0yMyAgUGF1bCBNaWxsZXIgIDxwYXVsbUBwcm9mb3VuZGVmZmVjdHMuY29tPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAocGFyc2VfZm9uZCk6IEZpeCBoYW5kbGluZyBvZiBzdHlsZSBuYW1lcy4KCjIwMDMtMDQtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfZXh0cmFfaXRlbV9sb2FkX2ZvbnRfaWQpOiBVc2UgRlRfUHRyRGlzdAoJaW5zdGVhZCBvZiBGVF9VaW50IGZvciBgbGVuJy4KCjIwMDMtMDQtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jICh6Y2FsbG9jKSBbIUZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUJdOgoJQ29udmVydCBLJlIgZm9ybWF0IHRvIG1vZGVybiBDIHVzYWdlLgoJKEZUX1N0cmVhbV9PcGVuR3ppcCk6IFVzZSBsb25nIGNvbnN0YW50LgoKMjAwMy0wNC0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19jYWNoZV9sb29rdXApOiBSZW1vdmUgc2hhZG93IGRlY2xhcmF0aW9uCglvZiBgbWFuYWdlcicuCgoyMDAzLTA0LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2MvSU5TVEFMTC5VTlg6IENsZWFuZWQgdXAuCgoyMDAzLTA0LTA5ICBUb3JyZXkgTHlvbnMgIDx0b3JyZXlAbXJjbGEuY29tPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAob3Blbl9mYWNlX2Zyb21fYnVmZmVyKTogUmVtb3ZlZCBhIGRvdWJsZS1mcmVlCglidWcgdGhhdCBoYWQgbmFzdHkgY29uc2VxdWVuY2VzIHdoZW4gdHJ5aW5nIHRvIG9wZW4gYW4gYGludmFsaWQnCglmb250IG9uIGEgTWFjLgoKMjAwMy0wNC0wOSAgTWlrZSBGYWJpYW4gIDxtZmFiaWFuQHN1c2UuZGU+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmggKEJERl9lbmNvZGluZ19lbCksIHNyYy9wY2YvcGNmLmgKCShQQ0ZfRW5jb2RpbmdSZWMpOiBDaGFuZ2VkIEZUX1Nob3J0IHRvIEZUX1VTaG9ydCBpbiBvcmRlciB0byBiZSBhYmxlCgl0byBhY2Nlc3MgbW9yZSB0aGFuIDMyNzY4IGdseXBocyBpbiBmb250cy4KCjIwMDMtMDQtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS40IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDMtMDQtMDMgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKFQxX09wZW5fRmFjZSk6IEZpeGVkIHRoZSBjb2RlIHRvIG1ha2UgaXQKCWhhbmRsZSBzcGVjaWFsIGNhc2VzIHdoZXJlIGEgZm9udCBvbmx5IGNvbnRhaW5zIGEgYC5ub3RkZWYnIGdseXBoCgkoaGFwcGVucyBpbiBQREYtZW1iZWRkZWQgZm9udHMpLiAgT3RoZXJ3aXNlLCBGVF9QYW5pYyB3YXMgY2FsbGVkLgoKMjAwMy0wMy0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FOiBVZHBhdGVkLgoKCSogUkVBRE1FLlVOWDogUmVtb3ZlZCAobm93IHJlcGxhY2VkIGJ5IGRvY3MvSU5TVEFMTC5VTlgpLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmM6IFRoZSBoaW50ZXIgbm93IHBlcmZvcm1zIGFzIGluIDIuMS4zIGFuZAoJd2lsbCBpZ25vcmUgc3RlbSBxdWFudGl6YXRpb24gb25seSB3aGVuIEZUX0xPQURfVEFSR0VUX1NNT09USCBpcwoJdXNlZC4KCShwc2gzX2RpbWVuc2lvbl9xdWFudGl6ZV9sZW4pOiBFbmFibGVkLgoJKHBzaDNfaGludF9hbGlnbik6IEVuYWJsZSBjb21tZW50ZWQgY29kZS4KCShwc2gzX2hpbnRfYWxpZ25fbGlnaHQpOiBDb21tZW50ZWQgb3V0LgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9DaGFyX1NpemUpOiBDaGFuZ2VkIHRoZSBkZWZhdWx0Cgljb21wdXRhdGlvbnMgdG8gaW5jbHVkZSByb3VuZGluZyBpbiBhbGwgY2FzZXM7IHRoaXMgaXMgcmVxdWlyZWQgdG8KCXByb3ZpZGUgYWNjdXJhdGUga2VybmluZyBkYXRhIHdoZW4gbmF0aXZlIFRydWVUeXBlIGhpbnRpbmcgaXMKCWVuYWJsZWQuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKGlzX25hbWVfY2hhcik6IFRoZSBUeXBlIDEgbG9hZGVyIG5vdyBhY2NlcHRzCgltb3JlIGdlbmVyYWwgbmFtZXMgYWNjb3JkaW5nIHRvIHRoZSBQb3N0U2NyaXB0IHNwZWNpZmljYXRpb24gKHRoZQoJcHJldmlvdXMgb25lIHdhcyB0b28gcmVzdHJpY3RpdmUpLgoJKHBhcnNlX2ZvbnRfbmFtZSwgcGFyc2VfZW5jb2RpbmcsIHBhcnNlX2NoYXJzdHJpbmdzLCBwYXJzZV9kaWN0KToKCVVzZSBgaXNfbmFtZV9jaGFyJy4KCShwYXJzZV9zdWJycyk6IEhhbmRsZSBlbXB0eSBhcnJheXMuCgoyMDAzLTAzLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJU2VyaW91cyByZXdyaXRpbmcgb2YgdGhlIGRvY3VtZW50YXRpb24uCgoJKiBkb2NzL0JVR1MsIGRvY3MvQlVJTEQ6IFJlbW92ZWQuCgkqIGRvY3MvREVCVUcuVFhUOiBSZW5hbWVkIHRvLi4uCgkqIGRvY3MvREVCVUc6IFRoaXMuCgkqIGRvY3MvQ1VTVE9NSVpFLCBkb2NzL1RSVUVUWVBFLCBkb2NzL1VQR1JBREUuVU5YOiBOZXcgZmlsZXMuCgkqIGRvY3MvSU5TVEFMTC5BTlksIGRvY3MvSU5TVEFMTC5VTlgsIGRvY3MvSU5TVEFMTC5HTlUgTmV3IGZpbGVzLAoJY29udGFpbmluZyBwbGF0Zm9ybSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBwcmV2aW91c2x5IGluIElOU1RBTEwuCgkqIGRvY3MvcmVhZG1lLnZtczogUmVuYW1lZCB0by4uLgoJKiBkb2NzL0lOU1RBTEwuVk1TOiBUaGlzLgoKCSogZG9jcy8qOiBVcGRhdGVkLgoKCUludHJvZHVjZWQgdGhyZWUgbmV3IGZ1bmN0aW9ucyB0byBkZWFsIHdpdGggZ2x5cGggYml0bWFwcyB3aXRoaW4KCUZUX0dseXBoU2xvdCBvYmplY3RzOgoKCSAgZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwCgkgIGZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAKCSAgZnRfZ2x5cGhzbG90X3NldF9iaXRtYXAKCglUaGVzZSBmdW5jdGlvbnMgYXJlIG11Y2ggbW9yZSBjb252ZW5pZW50IHRvIHVzZSB0aGFuIG1hbmFnaW5nIHRoZQoJRlRfR0xZUEhfT1dOX0JJVE1BUCBmbGFnIG1hbnVhbGx5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwLAoJZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcCwgZnRfZ2x5cGhzbG90X3NldF9iaXRtYXApOiBOZXcgZnVuY3Rpb25zLgoJKiBzcmMvYmFzZS9mdG9ianMuYzogSW1wbGVtZW50IHRoZW0uCgkoZnRfZ2x5cGhzbG90X2RvbmUpOiBVc2UgZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfR2x5cGhfTG9hZCksIHNyYy9wY2YvcGNmZHJpdmVyLmMKCShQQ0ZfR2x5cGhfTG9hZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG1lbW9yeScuCglVc2UgYGZ0X2dseXBoc2xvdF8qJyBmdW5jdGlvbnMuCglEb24ndCBzZXQgYEZUX0dMWVBIX09XTl9CSVRNQVAnLgoKCSogc3JjL3Bmci9wZnJzYml0LmMgKHBmcl9zbG90X2xvYWRfYml0bWFwKTogVXNlCglgZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcCcuCgoJKiBzcmMvc2ZudC90dHNiaXQuYyAoTG9hZF9TQml0X0ltYWdlKTogQ2hhbmdlIDV0aCBhcmd1bWVudCB0byB0eXBlCglgRlRfR2x5cGhTbG90Jy4KCUFkZGluZyBhcmd1bWVudCBgZGVwdGgnIHRvIGhhbmRsZSByZWN1cnNpdmUgY2FsbHMuCglVc2UgYGZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAnLgoJKHR0X2ZhY2VfbG9hZF9zYml0X2ltYWdlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbWVtb3J5Jy4KCURvbid0IGhhbmRsZSBgRlRfR0xZUEhfT1dOX0JJVE1BUCcuCglVcGRhdGUgY2FsbCB0byBMb2FkX1NCaXRfSW1hZ2UuCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoZnRfZ2x5cGhzbG90X2NsZWFyKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9nbHlwaHNsb3RfY2xlYXIpOiBUaGlzLiAgVXBkYXRlZCBjYWxsZXIuCglDYWxsIGBmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAnLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfTG9hZF9HbHlwaCk6IFVzZQoJYGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwJy4KCURvbid0IGhhbmRsZSBgRlRfR0xZUEhfT1dOX0JJVE1BUCcuCgoJKiBzcmMvY2FjaGUvZnRscnUuYyAoRlRfTHJ1TGlzdF9Mb29rdXApOiBGaXhlZCBhbiBpbnZhbGlkIGFzc2VydGlvbgoJY2hlY2suCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2xvYWQpOiBBZGQgdHdvIHNjYWxpbmcKCWFyZ3VtZW50cy4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguaDogVXBkYXRlZC4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCk6IFVwZGF0ZWQuCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChhaF9oaW50ZXJfY29tcHV0ZV93aWR0aHMpOiBVcGRhdGVkLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19mYW1pbHlfZG9uZSk6IEZpeGVkIHNtYWxsIGJ1ZyB0aGF0IGNvdWxkCgljcmFzaCB0aGUgY2FjaGUgaW4gcmFyZSBjaXJjdW1zdGFuY2VzIChtb3N0bHkgd2l0aCBicm9rZW4gZm9udHMpLgoKMjAwMy0wMy0xNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogRml4ZWQgYSBzbWFsbCByb3VuZGluZwoJYnVnLiAgQWN0dWFsbHksIGl0IHNlZW1zIHRoYXQgcHJldmlvdXMgdmVyc2lvbnMgb2YgRnJlZVR5cGUgZGlkbid0CglwZXJmb3JtIFRydWVUeXBlIHJvdW5kaW5nIGV4YWN0bHkgYXMgYXBwcm9wcmlhdGUuCgoyMDAzLTAzLTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBGaXhpbmcgdGhlIHNtYWxsCglUcnVlVHlwZSBuYXRpdmUgcmVuZGVyaW5nIGdsaXRjaGVzOyB0aGV5IGNhbWUgZnJvbSBhIHNtYWxsIHJvdW5kaW5nCgllcnJvci4KCjIwMDMtMDMtMTMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGNvbnRyb2wgbWVtb3J5IGRlYnVnZ2luZyB3aXRoCglGcmVlVHlwZS4gIFNlZSB0aGUgZGVzY3JpcHRpb24gb2YgYEZUMl9ERUJVR19NRU1PUlknLAoJYEZUMl9BTExPQ19UT1RBTF9NQVgnIGFuZCBgRlQyX0FMTE9DX0NPVU5UX01BWCcgaW4gREVCVUcuVFhULgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoRlRfTWVtVGFibGVSZWMpOiBBZGQgYGFsbG9jX2NvdW50JywKCWBib3VuZF90b3RhbCcsIGBhbGxvY190b3RhbF9tYXgnLCBgYm91bmRfY291bnQnLCBgYWxsb2NfY291bnRfbWF4Jy4KCShmdF9tZW1fZGVidWdfYWxsb2MpOiBIYW5kbGUgbmV3IHZhcmlhYmxlcy4KCShmdF9tZW1fZGVidWdfaW5pdCk6IHMvRlRfREVCVUdfTUVNT1JZL0ZUMl9ERUJVR19NRU1PUlkvLgoJSGFuZGxlIG5ldyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCgkqIGRvY3MvREVCVUcuVFhUOiBVcGRhdGVkLgoKCUZpeGVkIHRoZSBjYWNoZSBzdWItc3lzdGVtIHRvIGNvcnJlY3RseSBkZWFsIHdpdGggb3V0LW9mLW1lbW9yeQoJY29uZGl0aW9ucy4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9kZXN0cm95KTogQ29tbWVudCBvdXQgZ2VuZXJpYwoJY2hlY2suCgkoZnRjX2NhY2hlX2xvb2t1cCk6IEltcGxlbWVudCBsb29wLgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jOiBEZWZpbmUgRlRfQ09NUE9ORU5ULgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9sb2FkKTogSGFuZGxlCglGVF9FcnJfT3V0X09mX01lbW9yeS4KCSogc3JjL2NhY2hlL2Z0bHJ1LmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfREVCVUdfSC4KCShGVF9McnVMaXN0X0xvb2t1cCk6IEltcGxlbWVudCBsb29wLgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2RvbmUpOiBGaXggbWVtb3J5IGxlYWsuCgkocGZyX2ZhY2VfaW5pdCk6IEZpeGluZyBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocmVhbGxvY2F0ZV90MV90YWJsZSk6IEZpeGVkIGEgYnVnIChtZW1vcnkKCWxlYWspIHRoYXQgb25seSBoYXBwZW5lZCB3aGVuIGEgdHJ5IHRvIHJlc2l6ZSBhbiBhcnJheSB3b3VsZCBlbmQgaW4KCWFuIG91dC1vZi1tZW1vcnkgY29uZGl0aW9uLgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfY29udmVydF9nbHlwaCk6IFJlbW92ZWQgY29tcGlsZXIKCXdhcm5pbmdzIC8gdm9sYXRpbGUgYnVnLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jICh0dF9nbHlwaHpvbmVfZG9uZSk6IFJlbW92ZWQgc2VnbWVudGF0aW9uCglmYXVsdCB0aGF0IGhhcHBlbmVkIGluIHRpZ2h0IG1lbW9yeSBlbnZpcm9ubWVudHMuCgoyMDAzLTAyLTI4ICBQaXhlbCAgPHBpeGVsQG1hbmRyYWtlc29mdC5jb20+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9maWxlX2RvbmUpOiBGaXhlZCBtZW1vcnkgbGVhazogVGhlIFpMaWIKCXN0cmVhbSB3YXMgbm90IHByb3Blcmx5IGZpbmFsaXplZC4KCjIwMDMtMDItMjUgIEFudGhvbnkgRm9rICA8YW50aG9ueUB0aGl6bGludXguY29tPgoKCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYzogSW5jbHVkZSBGVF9UUlVFVFlQRV9JRFNfSC4KCShmdGNfY21hcF9mYW1pbHlfaW5pdCk6IFRoZSBjbWFwIGNhY2hlIG5vdwoJc3VwcG9ydHMgVUNTLTQgY2hhcm1hcHMgd2hlbiBhdmFpbGFibGUgaW4gQXNpYW4gZm9udHMuCgoJKiBzcmMvc2ZudC90dGxvYWQuYywgc3JjL2Jhc2UvZnRvYmpzLmM6IENoYW5nZWQgYGFzaWFuJyB0byBgQXNpYW4nCglpbiBjb21tZW50cy4KCjIwMDMtMDItMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jIChmdF9nemlwX2ZpbGVfZmlsbF9vdXRwdXQpOiBGaXhlZCBhIGJ1ZyB0aGF0CgljYXVzZWQgRnJlZVR5cGUgdG8gbG9vcCBlbmRsZXNzbHkgd2hlbiB0cnlpbmcgdG8gcmVhZCBjZXJ0YWluCgljb21wcmVzc2VkIGd6aXAgZmlsZXMuICBUaGUgZm9sbG93aW5nIHRlc3QgcmV2ZWFscyB0aGUgYnVnOgoKCSAgdG91Y2ggMDEyMzQ1Njc4OSA7IGd6aXAgMDEyMzQ1Njc4OSA7IGZ0ZHVtcCAwMTIzNDU2Nzg5Lmd6CgoJU2V2ZXJhbCBmaXhlcyB0byB0aGUgUEZSIGZvbnQgZHJpdmVyOgoKCS0gVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGVtYmVkZGVkIGJpdG1hcHMgd2FzIG5vdCBjb3JyZWN0bHkgc2V0IGluCgkgIHRoZSByb290IEZUX0ZhY2VSZWMgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIGZhY2UuCgoJLSBUaGUgZ2x5cGggbG9hZGVyIGFsd2F5cyB0cmllZCB0byBsb2FkIHRoZSBvdXRsaW5lcyB3aGVuCgkgIEZUX0xPQURfU0JJVFNfT05MWSB3YXMgc3BlY2lmaWVkLgoKCS0gVGhlIHRhYmxlIGxvYWRlZCBub3cgc2NhbnMgZm9yICp1bmRvY3VtZW50ZWQqIGVsZW1lbnRzIG9mIGEKCSAgcGh5c2ljYWwgZm9udCdzIGF1eGlsaWFyeSBkYXRhIHJlY29yZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvCgkgIHJldHJpZXZlIHRoZSBgcmVhbCcgZmFtaWx5IGFuZCBzdHlsZSBuYW1lcy4KCglOT1RFIFRIQVQgVEhFU0UgQ0hBTkdFUyBUSEUgRkFNSUxZIE5BTUUgT0YgTUFOWSBQRlIgRk9OVFMhCgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX2F1eF9uYW1lX2xvYWQpOiBOZXcgZnVuY3Rpb24uCgkocGZyX3BoeV9mb250X2RvbmUpOiBGcmVlIGBmYW1pbHlfbmFtZScgYW5kIGBzdHlsZV9uYW1lJyBhbHNvLgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkocGZyX3BoeV9mb250X2xvYWQpOiBFeHRyYWN0IHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBhdXhpbGlhcnkKCWJ5dGVzLgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2RvbmUpOiBTZXQgcG9pbnRlcnMgdG8gTlVMTC4KCShwZnJfZmFjZV9pbml0KTogUHJvdmlkZSBmYWxsYmFjayB2YWx1ZXMgZm9yIGBmYW1pbHlfbmFtZScgYW5kCglgc3R5bGVfbmFtZScuCglIYW5kbGUgc3RyaWtlcy4KCShwZnJfc2xvdF9sb2FkKTogSGFuZGxlIEZUX0xPQURfU0JJVFNfT05MWS4KCSogc3JjL3Bmci9wZnJ0eXBlcy5oIChQRlJfUGh5Rm9udFJlYyk6IEFkZCBmaWVsZHMgYGFzY2VudCcsCglgZGVzY2VudCcsIGBsZWFkaW5nJywgYGZhbWlseV9uYW1lJywgYW5kIGBzdHlsZV9uYW1lJy4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcyk6IEZpeGVkIGEgcm91bmRpbmcgYnVnCgl3aGVuIGNvbXB1dGluZyB0aGUgc2NhbGUgZmFjdG9ycyBmb3IgYSBnaXZlbiBjaGFyYWN0ZXIgc2l6ZSBpbgoJcG9pbnRzIHdpdGggcmVzb2x1dGlvbi4KCgkqIGRldmVsL2Z0MmJ1aWxkLmgsIGRldmVsL2Z0b3B0aW9uLmg6IE5ldyBmaWxlcyAoaW4gYSBuZXcgZGlyZWN0b3J5KQoJd2hpY2ggYXJlIHNwZWNpYWwgZGV2ZWxvcG1lbnQgdmVyc2lvbnMgb2YgaW5jbHVkZS9mdDJidWlsZC5oIGFuZAoJaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCwgcmVzcGVjdGl2ZWx5LgoKMjAwMy0wMi0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGluZyB0aGUgc2xpZ2h0IGRpc3RvcnRpb24gcHJvYmxlbSB0aGF0IG9jY3VycmVkIGR1ZSB0byB0aGUgbGF0ZXN0CglhdXRvLWhpbnRlciBjaGFuZ2VzLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGZ0X3JlY29tcHV0ZV9zY2FsZWRfbWV0cmljcyk6IEZpeCByb3VuZGluZy4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcyk6IE5ldyB2YXJpYWJsZSBgbWV0cmljczInLgoJWyFUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSXTogUmVtb3ZlZC4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuaCAoVFRfU2l6ZVJlYyk6IE5ldyBmaWVsZCBgbWV0cmljcycuCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoUmVzZXRfT3V0bGluZV9TaXplKTogRml4IGluaXRpYWxpemF0aW9uIG9mCglgbWV0cmljcycuCglbRlRfQ09ORklHX0NIRVNURVJfQVNDRU5ERVJdOiBDb2RlIHJlbW92ZWQuCgkoUmVzZXRfU0JpdF9TaXplKTogRml4IGluaXRpYWxpemF0aW9uIG9mIGBtZXRyaWNzJy4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChUVF9Mb2FkX0NvbnRleHQpOiBGaXggaW5pdGlhbGl6YXRpb24gb2YKCWBleGVjLT5tZXRyaWNzJy4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBEaXNhYmxlZCB0aGUgYWR2YW5jZSB3aWR0aAoJYGNvcnJlY3Rpb24nIHdoaWNoIHNlZW1lZCB0byBwcm92aWRlIG1vcmUgdHJvdWJsZSB0aGFuIGJlbmVmaXRzLgoKMjAwMy0wMi0xMyAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCUNoYW5nZWQgdGhlIGluY3JlbWVudGFsIGxvYWRpbmcgaW50ZXJmYWNlIGluIGEgd2F5IHRoYXQgbWFrZXMgaXQKCXNpbXBsZXIgYW5kIGFsbG93cyBnbHlwaCBtZXRyaWNzIHRvIGJlIGNoYW5nZWQgKGUuZy4sIGJ5IGFkZGluZyBhCgljb25zdGFudCwgYXMgcmVxdWlyZWQgYnkgQ0ZGIGZvbnRzKSByYXRoZXIgdGhhbiBqdXN0IG92ZXJyaWRkZW4uCglUaGlzIHdhcyByZXF1aXJlZCB0byBtYWtlIHRoZSBHaG9zdFNjcmlwdC10by1GcmVlVHlwZSBicmlkZ2Ugd29yay4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX3Nsb3RfbG9hZCkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJQWxsb3cgbWV0cmljcyB0byBiZSBvdmVycmlkZGVuLgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglEaXR0by4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFNpbXBsaWZ5LgoJKGNvbXB1dGVfZ2x5cGhfbWV0cmljcykgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBDb2RlIGJsb2NrCgltb3ZlZCBkb3duLgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfUGFyc2VfR2x5cGhfQW5kX0dldF9DaGFyX1N0cmluZykKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbmNyZW0uaDogVXBkYXRlZC4KCjIwMDMtMDEtMzEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvQ0hBTkdFUywgZG9jcy9WRVJTSU9OLkRMTCwgZG9jcy9UT0RPOiBVcGRhdGluZyBkb2N1bWVudGF0aW9uCglmb3IgdGhlIDIuMS40IHJlbGVhc2UuCgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3AsCglidWlsZHMvd2luMzIvdmlzdWFsYy9pbmRleC5odG1sOiBVcGRhdGluZyB0aGUgcHJvamVjdCBmaWxlIGZvcgoJMi4xLjQuCgoJKiBzcmMvZ3ppcC9hZGxlcjMyLmMsIHNyYy9nemlwL2Z0Z3ppcC5jLCBzcmMvZ3ppcC9pbmZibG9jay5jLAoJc3JjL2d6aXAvaW5mY29kZXMuYywgc3JjL2d6aXAvaW5mbGF0ZS5jLCBzcmMvZ3ppcC9pbmZ0cmVlcy5jLAoJc3JjL2d6aXAvaW5mdXRpbC5jOiBSZW1vdmVkIG9sZC1zdHlsZSAoSyZSKWZ1bmN0aW9uIGRlZmluaXRpb25zLgoJVGhpcyBhdm9pZHMgd2FybmluZ3Mgd2l0aCBWaXN1YWwgQysrIGF0IGl0cyBtb3N0IHBlZGFudGljIG1vZGUuCgoJKiBzcmMvcGZyL3BmcnNiaXQuYzogUmVtb3ZlZCBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmMgKGZ0Y19jbWFwX2ZhbWlseV9pbml0KTogQ2hhbmdlZCBhbiBGVF9FUlJPUgoJaW50byBhbiBGVF9UUkFDRTEgc2luY2UgaXQgY2F1c2VkIGBmdHZpZXcnIGFuZCBvdGhlcnMgdG8gZHVtcCB0b28KCW11Y2gganVuayB3aGVuIHRyeWluZyB0byBkaXNwbGF5IGEgd2F0ZXJmYWxsIHdpdGggYSBmb250IHdpdGhvdXQgYQoJVW5pY29kZSBjaGFybWFwIChlLmcuICBTWU1CT0wuVFRGKS4KCglJbXBsZW1lbnRlZCBGVF9DT05GSUdfQ0hFU1RFUl9CTFVFX1NDQUxFLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBsYXN0CglwYXRjaCBmcm9tIERhdmlkIENoZXN0ZXIsIGJ1dCB3aXRoIGEgbXVjaCBzaW1wbGVyIChhbmQgc2FuZXIpCglpbXBsZW1lbnRhdGlvbi4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpCglbRlRfQ09ORklHX0NIRVNURVJfQkxVRV9TQ0FMRV06IFRyeSB0byBvcHRpbWl6ZSB0aGUgeV9zY2FsZSBzbyB0aGF0Cgl0aGUgdG9wIG9mIG5vbi1jYXBpdGFsIGxldHRlcnMgaXMgYWxpZ25lZCBvbiBhIHBpeGVsIGJvdW5kYXJ5Cgl3aGVuZXZlciBwb3NzaWJsZS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfQ2hhcl9TaXplKQoJW0ZUX0NPTkZJR19DSEVTVEVSX0JMVUVfU0NBTEVdOiBSb3VuZCBkaWZmZXJlbnRseS4KCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKQoJW1RUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVJdOiBEbyBzb21lIHJvdW5kaW5nIG9ubHkKCWlmIHRoaXMgbWFjcm8gaXMgZGVmaW5lZC4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoUmVzZXRfT3V0bGluZV9TaXplKQoJW0ZUX0NPTkZJR19DSEVTVEVSX0FTQ0VOREVSXTogUm91bmQgZGlmZmVyZW50bHkuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYzogSW1wcm92ZWQgdGhlIFBvc3RzY3JpcHQgaGludGVyLiAgR2V0dGluZwoJcmlkIG9mIHN0ZW0gc25hcHBpbmcgc2VlbXMgdG8gd29yayB3ZWxsIGhlcmUgKHRob3VnaCB0aGUgc3RlbXMgYXJlCglzdGlsbCBzbGlnaHRseSBtb3ZlZCB0byBpbmNyZWFzZSBjb250cmFzdCkuCgkocHNoM19kaW1lbnNpb25fcXVhbnRpemVfbGVuKTogQ29tbWVudGVkIG91dC4KCShwc2gzX2hpbnRfYWxpZ25fbGlnaHQpOiBOZXcgZnVuY3Rpb24uCgkocHNoM19oaW50X2FsaWduKTogQ29tbWVudCBvdXQgc29tZSBjb2RlLgoKCVRISVMgSU1QUk9WRVMgQU5USS1BTElBU0VEIFJFTkRFUklORywgQlVUIE1PTk9DSFJPTUUgQU5EIExDRCBNT0RFUwoJU1RJTEwgU1VDSy4KCjIwMDMtMDEtMjIgIERhdmlkIENoZXN0ZXIgIDxkYXZpZGNoZXN0ZXJAcW14Lm5ldD4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfY29tcHV0ZV9zdGVtX3dpZHRoKTogU21hbGwgZml4IHRvIHRoZQoJc3RlbSB3aWR0aCBvcHRpbWl6YXRpb24uCgoyMDAzLTAxLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkaW5nIGEgbmV3IEFQSSBgRlRfR2V0X0JERl9Qcm9wZXJ0eScgdG8gcmV0cmlldmUgdGhlIEJERgoJcHJvcGVydGllcyBvZiBhIGdpdmVuIFBDRiBvciBCREYgZm9udC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRiZGYuaCAoRlRfUHJvcGVydHlUeXBlKTogTmV3IGVudW1lcmF0aW9uLgoJKEJERl9Qcm9wZXJ0eSwgQkRGX1Byb3BlcnR5UmVjKTogTmV3IHN0cnVjdHVyZS4KCUZUX0dldF9CREZfUHJvcGVydHkpOiBOZXcgZnVuY3Rpb24uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYmRmdHlwZXMuaDogSW5jbHVkZSBGVF9CREZfSC4KCShCREZfR2V0UHJvcGVydHlGdW5jKTogTmV3IGZ1bmN0aW9uIHBvaW50ZXIuCgoJKiBzcmMvYmFzZS9mdGJkZi5jICh0ZXN0X2ZvbnRfdHlwZSk6IE5ldyBoZWxwZXIgZnVuY3Rpb24uCgkoRlRfR2V0X0JERl9DaGFyc2V0X0lEKTogVXNlIGB0ZXN0X2ZvbnRfdHlwZScuCgkoRlRfR2V0X0JERl9Qcm9wZXJ0eSk6IE5ldyBmdW5jdGlvbi4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYzogSW5jbHVkZSBGVF9CREZfSC4KCShiZGZfZ2V0X2JkZl9wcm9wZXJ0eSwgYmRmX2RyaXZlcl9yZXF1ZXN0ZXIpOiBOZXcgZnVuY3Rpb25zLgoJKGJkZl9kcml2ZXJfY2xhc3MpOiBVc2UgYGJkZl9kcml2ZXJfcmVxdWVzdGVyJy4KCgkqIHNyYy9wY2YvcGNmZHJpdnIuYzogSW5jbHVkZSBGVF9CREZfSC4KCShwY2ZfZ2V0X2JkZl9wcm9wZXJ0eSwgcGRjX2RyaXZlcl9yZXF1ZXN0ZXIpOiBOZXcgZnVuY3Rpb25zCgkocGNmX2RyaXZlcl9jbGFzcyk6IFVzZSBgcGNmX2RyaXZlcl9yZXF1ZXN0ZXInLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmM6IEluY2x1ZGUgYHBjZnJlYWQuaCcuCgkocGNmX2ZpbmRfcHJvcGVydHkpOiBEZWNvcmF0ZSBpdCB3aXRoIEZUX0xPQ0FMX0RFRi4KCSogc3JjL3BjZi9wY2ZyZWFkLmg6IE5ldyBmaWxlLCBwcm92aWRpbmcgYHBjZl9maW5kX3Byb3BlcnR5Jy4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChzZm50X2Rpcl9jaGVjayk6IFJlbGF4ZWQgdGhlIGBoZWFkJyB0YWJsZSBzaXplCgl2ZXJpZmljYXRpb24gdG8gYWNjZXB0IGEgZmV3IGJyb2tlbiBmb250cyB3aG8gcGFkIHRoZSBzaXplCglpbmNvcnJlY3RseSAodGhlIHRhYmxlIHNob3VsZCBiZSBwYWRkZWQsIGJ1dCBpdHMgYHNpemUnIGZpZWxkCglzaG91bGRuJ3QgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uKS4KCjIwMDMtMDEtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2x0bWFpbi5zaDogUmVnZW5lcmF0ZWQgd2l0aCBgbGlidG9vbGl6ZSAtLWZvcmNlCgktLWNvcHknIGZyb20gbGlidG9vbCAxLjQuMy4KCSogYnVpbGRzL3VuaXgvYWNsb2NhbC5tNDogUmVnZW5lcmF0ZWQgd2l0aCBgYWNsb2NhbCAtSSAuJyBmcm9tCglhdXRvbWFrZSAxLjcuMS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZCB3aXRoIGF1dG9jb25mIDIuNTQuCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCBmcm9tCglgY29uZmlnJyBDVlMgbW9kdWxlIGF0IHN1YnZlcnNpb25zLmdudS5vcmcuCgkqIGJ1aWxkcy91bml4L2luc3RhbGwtc2gsIGJ1aWxkcy91bml4L21raW5zdGFsbGRpcnM6IFVwZGF0ZWQgZnJvbQoJYGF1dG9tYWtlJyBDVlMgbW9kdWxlIGF0IHN1YnZlcnNpb25zLmdudS5vcmcuCgoyMDAzLTAxLTE1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEZpeGVkIGRvY3VtZW50YXRpb24gZm9yCglGVF9TaXplX01ldHJpY3MuCgoyMDAzLTAxLTE1ICBKYW1lcyBTdSAgPHN1emhlQHR1cmJvbGludXguY29tLmNuPgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKGZ0X2d6aXBfY2hlY2tfaGVhZGVyKTogQnVnZml4OiBjb3VsZG4ndCByZWFkCgljZXJ0YWluIGd6aXAtZWQgZm9udCBmaWxlcyAodHlwbzogYCYmJyAtPiBgJicpLgoKMjAwMy0wMS0xNSAgSHV3IEQgTSBEYXZpZXMgIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCglBZGRlZCBhIFdpbmRvd3MgLkZOVCBzcGVjaWZpYyBBUEkgKG1vc3RseSBmb3IgV2luZSkuICBBbHNvIGZpeGVkIGEKCW5hc3R5IGJ1ZyBpbiB0aGUgaGVhZGVyIGxvYWRlciB3aGljaCB3b3VsZCBjYXVzZSBpbnZhbGlkIG1lbW9yeQoJb3ZlcndyaXRlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1dJTkZPTlRTX0gpOiBOZXcgbWFjcm8KCWZvciBmdHdpbmZudC5oLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmg6IEluY2x1ZGUgRlRfV0lORk9OVFNfSC4KCShGTlRfRm9udFJlYyk6IFVwZGF0ZWQuCglNb3ZlIFdpbmRvd3MgRk5UIGRlZmluaXRpb24gdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHdpbmZudC5oOiBUaGlzIG5ldyBmaWxlLgoJKEZUX1dpbkZOVF9IZWFkZXJSZWMpOiBSZW5hbWUgYHJlc2VydmVkMicgdG8gYHJlc2VydmVkMScuCgkqIHNyYy9iYXNlL2Z0d2luZm50LmM6IE5ldyBmaWxlLCBwcm92aWRpbmcgYEZUX0dldF9XaW5GTlRfSGVhZGVyJy4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jICh3aW5mbnRfaGVhZGVyX2ZpZWxkcyk6IFVwZGF0ZWQuCglSZW5hbWUgYHJlc2VydmVkMicgdG8gYHJlc2VydmVkMScuCgkoZm50X2ZvbnRfbG9hZCk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9kZXNjcmlwLm1tcywgc3JjL2Jhc2UvcnVsZXMubWs6CglVcGRhdGVkLgoKMjAwMy0wMS0xNCAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGdseXBoLmgsIHNyYy9iYXNlL2Z0Z2x5cGguYzogQWRkZWQgYGNvbnN0JyB0bwoJdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIEZUX01hdHJpeF9NdWx0aXBseSwgd2hpY2ggaXNuJ3QKCWNoYW5nZWQgLS0gdGhpcyBhZGRzIGRvY3VtZW50YXRpb24gYW5kIGNvbnZlbmllbmNlLgoKMjAwMy0wMS0xMyAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9tZXRyaWNzKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBUcnVlVHlwZSB0eXBlZmFjZXMgd2l0aG91dAoJaG9yaXpvbnRhbCBtZXRyaWNzICh3aXRob3V0IHRoZSBgaG10eCcgdGFibGUpIGFyZSBub3cgdG9sZXJhdGVkIGlmCglhbiBpbmNyZW1lbnRhbCBpbnRlcmZhY2UgaGFzIGJlZW4gc3BlY2lmaWVkIHRoYXQgaGFzIGEKCWdldF9nbHlwaF9tZXRyaWNzIGZ1bmN0aW9uLCBpbXBseWluZyB0aGF0IG1ldHJpY3Mgd2lsbCBiZSBzdXBwbGllZAoJZnJvbSBvdXRzaWRlLiAgVGhpcyBoYXBwZW5zIGZvciBjZXJ0YWluIFR5cGUgNDIgZm9udHMgcGFzc2VkIGZyb20KCUdob3N0U2NyaXB0LgoKMjAwMy0wMS0xMSAgRGF2aWQgQ2hlc3RlciAgPGRhdmlkY2hlc3RlckBxbXgubmV0PgoKCVBhdGNoZXMgdG8gdGhlIGF1dG8taGludGVyIGluIG9yZGVyIHRvIHNsaWdodGx5IGltcHJvdmUgdGhlIG91dHB1dC4KCU5vdGUgdGhhdCBldmVyeXRoaW5nIGlzIGNvbnRyb2xsZWQgdGhyb3VnaCB0aGUgbmV3CglGVF9DT05GSUdfT1BUSU9OX0NIRVNURVJfSElOVFMgZGVmaW5lZCBpbiBgZnRvcHRpb24uaCcuICBUaGVyZSBhcmUKCWFsc28gaW5kaXZpZHVhbCBGVF9DT05GSUdfQ0hFU1RFUl9YWFggbWFjcm9zIHRvIGNvbnRyb2wgaW5kaXZpZHVhbAoJYGZlYXR1cmVzJy4KCglOb3RlIHRoYXQgYWxsIGltcHJvdmVtZW50cyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgY2FuIGJlCgl0d2Vha2VkIGZvciBvcHRpbWl6YXRpb24gYW5kIHRlc3RpbmcgcHVycG9zZXMuICBUaGUgY29uZmlndXJhdGlvbgoJbWFjcm9zIHdpbGwgbW9zdCBsaWtlbHkgZGlzYXBwZWFyIGluIHRoZSBzaG9ydCBmdXR1cmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCgkoRlRfQ09ORklHX09QVElPTl9DSEVTVEVSX0hJTlRTKTogTmV3IG1hY3JvLgoJKEZUX0NPTkZJR19DSEVTVEVSX3tTTUFMTF9GLEFTQ0VOREVSLFNFUklGLFNURU0sQkxVRV9TQ0FMRX0pCglbRlRfQ09ORklHX09QVElPTl9DSEVTVEVSX0hJTlRTXTogTmV3IG1hY3JvcyB0byBjb250cm9sIGluZGl2aWR1YWwKCWZlYXR1cmVzLgoKCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKGJsdWVfY2hhcnMpIFtGVF9DT05GSUdfQ0hFU1RFUl9TTUFMTF9GXToKCUFkZCBibHVlIHpvbmUgZm9yIGBmaWprZGJoJy4KCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmggKEFIX0lTX1RPUF9CTFVFKQoJW0ZUX0NPTkZJR19DSEVTVEVSX1NNQUxMX0ZdOiBVc2UgYEFIX0JMVUVfU01BTExfRl9UT1AnLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2NvbXB1dGVfZWRnZXMpCglbRlRfQ09ORklHX0NIRVNURVJfU0VSSUZdOiBVc2UgYEFIX0VER0VfU0VSSUYnLgoJKGFoX291dGxpbmVfY29tcHV0ZV9ibHVlX2VkZ2VzKSBbRlRfQ09ORklHX0NIRVNURVJfU01BTExfRl06CglJbmNyZWFzZSB0aHJlc2hvbGQgZm9yIGBiZXN0X2Rpc3QnLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2NvbXB1dGVfc3RlbV93aWR0aCkKCVtGVF9DT05GSUdfQ0hFU1RFUl9TRVJJRl06IFByb3ZpZGUgbmV3IHZlcnNpb24gZm9yIGltcHJvdmVkIHNlcmlmCgloYW5kbGluZy4KCShhaF9hbGlnbl9saW5rZWRfZWRnZSkgW0ZUX0NPTkZJR19DSEVTVEVSX1NFUklGXTogVXNlIHNwZWNpYWwKCXZlcnNpb24gb2YgYGFoX2NvbXB1dGVfc3RlbV93aWR0aCcuCgkoYWhfaGludF9lZGdlc18zKSBbRlRfQ09ORklHX0NIRVNURVJfU1RFTV06IEEgbmV3IGFsZ29yaXRobSBmb3Igc3RlbQoJYWxpZ25tZW50IHdoZW4gc3RlbSB3aWR0aHMgYXJlIGxlc3MgdGhhbiAxLjUgcGl4ZWxzIHdpZGUgY2VudGVycyB0aGUKCXN0ZW0gc2xpZ2h0bHkgb2ZmLWNlbnRlciBvZiB0aGUgY2VudGVyIG9mIGEgcGl4ZWwgKHRoaXMgaW5jcmVhc2VzCglzaGFycG5lc3MgYW5kIGNvbnNpc3RlbmN5KS4KCVtGVF9DT05GSUdfQ0hFU1RFUl9TRVJJRl06IFVzZSBzcGVjaWFsIHZlcnNpb24gb2YKCWBhaF9jb21wdXRlX3N0ZW1fd2lkdGgnLgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIFtGVF9DT05GSUdfQ0hFU1RFUl9TTUFMTF9GXTogQWRkCglgQUhfQkxVRV9TTUFMTF9GX1RPUCcuCgoyMDAzLTAxLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmggKFdpbkZOVF9IZWFkZXJSZWMpOiBJbmNyZWFzZQoJc2l6ZSBvZiBgcmVzZXJ2ZWQyJyB0byBhdm9pZCBtZW1vcnkgb3ZlcndyaXRlcy4KCjIwMDMtMDEtMDggIEh1dyBEYXdpZXMgIDxodXdAY29kZXdlYXZlcnMuY29tPgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jICh3aW5mbnRfaGVhZGVyX2ZpZWxkcyk6IFJlYWQgMTYgYnl0ZXMgaW50bwoJYHJlc2VydmVkMicsIG5vdCBgcmVzZXJ2ZWQnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGZpbmRfdW5pY29kZV9jaGFybWFwKTogRml4ZWQgdGhlIGVycm9yIGNvZGUKCXJldHVybmVkIHdoZW4gdGhlIGZvbnQgZG9lc24ndCBjb250YWluIGEgVW5pY29kZSBjaGFybWFwLiAgVGhpcwoJYWxsb3dzIEZUMiB0byBsb2FkIGBzeW1ib2wudHRmJyBhbmQgYSBmZXcgb3RoZXJzIGNvcnJlY3RseSBzaW5jZSB0aGUKCWxhc3QgcmVsZWFzZS4KCShvcGVuX2ZhY2UpOiBGaXggcmV0dXJuIHZhbHVlLgoKMjAwMy0wMS0wOCAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJSW1wbGVtZW50ZWQgdGhlIEZUX1JFTkRFUl9NT0RFX0xJR0hUIGhpbnRpbmcgbW9kZSBpbiB0aGUgYXV0byBhbmQKCXBvc3RzY3JpcHQgaGludGVycy4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0hpbnRlclJlYyk6IEFkZCBgZG9fc3RlbV9hZGp1c3QnLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2NvbXB1dGVfc3RlbV93aWR0aCk6IEhhbmRsZQoJaGludGVyLT5kb19zdGVtX2FkanVzdC4KCShhaF9oaW50ZXJfbG9hZF9nbHlwaCk6IFNldCBoaW50ZXItPmRvX3N0ZW1fYWRqdXN0LgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmggKFBTSDNfR2x5cGhSZWMpOiBBZGQgYGRvX3N0ZW1fYWRqdXN0Jy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfaGludF9hbGlnbik6IFVzZSBgZG9fc3RlbV9hZGp1c3QnLgoJKHBzM19oaW50c19hcHBseSk6IEhhbmRsZSBGVF9SRU5ERVJfTU9ERV9MSUdIVC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfUmVuZGVyX01vZGUpOiBBZGQKCUZUX1JFTkRFUl9NT0RFX0xJR0hULgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYzogRml4aW5nIHRoZSBUcnVlVHlwZSBsb2FkZXIgdG8gaGFuZGxlCglpbnZhbGlkIGNvbXBvc2l0ZXMgY29ycmVjdGx5IGJ5IGxpbWl0aW5nIHRoZSByZWN1cnNpb24gZGVwdGguCgkoVFRfTUFYX0NPTVBPU0lURV9SRUNVUlNFKTogTmV3IG1hY3JvLgoJKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBBZGQgYXJndW1lbnQgYHJlY3Vyc2VfY291bnQnLgoJTG9hZCBhIGNvbXBvc2l0ZSBvbmx5IGlmIHRoZSBudW1iZXJzIG9mIGNvbnRvdXJzIGlzIC0xLCBlbWl0IGVycm9yCglvdGhlcndpc2UuCgkoVFRfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCgoyMDAzLTAxLTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBKYW1ydWxlcywgSmFtZmlsZSwgSmFtZmlsZS5pbiwgc3JjLyovSmFtZmlsZTogU21hbGwgY2hhbmdlcyB0bwoJc3VwcG9ydCB0aGUgY29tcGlsYXRpb24gb2YgRnJlZVR5cGUgMiBhcyBwYXJ0IG9mIGxhcmdlciBwcm9qZWN0cwoJd2l0aCB0aGVpciBvd24gY29uZmlndXJhdGlvbiBvcHRpb25zIChvbmx5IHdpdGggSmFtKS4KCjIwMDMtMDEtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlci5jOiBQcm9iYWJseSB0aGUgbGFzdCBidWctZml4ZXMgdG8gdGhlIHN0cm9rZXI7Cgl0aGUgQVBJIGlzIGxpa2VseSB0byBjaGFuZ2UsIGhvd2V2ZXIuCgkoZnRfc3Ryb2tlX2JvcmRlcl9jbG9zZSk6IERvbid0IHJlY29yZCBlbXB0eSBwYXRocy4KCShmdF9zdHJva2VfYm9yZGVyX2dldF9jb3VudHMpOiBJbmNyZWFzZSBgbnVtX3BvaW50cycgYWxzbyBpbiBmb3IgbG9vcC4KCShmdF9zdHJva2VfYm9yZGVyX2V4cG9ydCk6IERvbid0IGluY3JlYXNlIGB3cml0ZScgdHdpY2UgaW4gZm9yIGxvb3BzLgoJKGZ0X3N0cm9rZXJfb3V0c2lkZSk6IEhhbmRsZSBgcGhpJyB0b2dldGhlciB3aXRoIGB0aGV0YScuCgkoRlRfU3Ryb2tlcl9QYXJzZU91dGxpbmUpOiBOZXcgZnVuY3Rpb24uCgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9BbmdsZV9EaWZmKTogRml4aW5nIGZ1bmN0aW9uOiBJdCByZXR1cm5lZAoJaW52YWxpZCB2YWx1ZXMgZm9yIGxhcmdlIG5lZ2F0aXZlIGFuZ2xlIGRpZmZlcmVuY2VzIChyZXN1bHRpbmcgaW4KCWluY29ycmVjdCBzdHJva2VyIGNvbXB1dGF0aW9ucywgYW1vbmcgb3RoZXIgdGhpbmdzKS4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9oYXNoX3VubGluayk6IFJlbW92aW5nIGluY29ycmVjdAoJYXNzZXJ0aW9uLCBhbmQgY2hhbmdpbmcgY29kZSB0byBhdm9pZCBoYXNoIHRhYmxlIHNpemUgY29udHJhY3Rpb24uCgoJKiBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5taywgc3JjL2Jhc2UvZGVzY3JpcC5tbXM6IEFkZGluZwoJYGZ0c3Ryb2tlcicgdG8gZGVmYXVsdCBidWlsZCwgYXMgb3B0aW9uYWwgY29tcG9uZW50LgoKMjAwMi0xMi0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2d6aXAvYWRsZXIzMi5jLCBzcmMvZ3ppcC9pbmZibG9jay5jLCBzcmMvZ3ppcC9pbmZsYXRlLmMsCglzcmMvZ3ppcC9pbmZ0cmVlcy5jLCBzcmMvZ3ppcC96Y29uZi5oLCBzcmMvZ3ppcC96bGliLmgsCglzcmMvZ3ppcC96dXRpbC5oOiBVcGRhdGVzIHRvIGFsbG93IGNvbXBpbGF0aW9uIHdpdGhvdXQgY29tcGlsZXIKCXdhcm5pbmdzIHdpdGggTENDLVdpbjMyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IFNldCB0byA0LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IEluY3JlYXNlZCB0byA5OjM6My4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogZG9jcy9WRVJTSU9OLkRMTDogVXBkYXRlZC4KCjIwMDItMTItMjMgIEFudGhvbnkgRm9rICA8YW50aG9ueUB0aGl6bGludXguY29tPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjLCBidWlsZHMvdW5peC91bml4LWNjLmluIChMSU5LX0xJQlJBUlkpLAoJYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4gKFNZU1RFTV9aTElCKTogU21hbGwgZml4IHRvIGNvbmZpZ3VyZQoJc3ViLXN5c3RlbSBvbiBVbml4IHRvIGFsbG93IG90aGVyIHByb2dyYW1zIHRvIGNvcnJlY3RseSBsaW5rIHdpdGgKCXpsaWIgd2hlbiBuZWVkZWQuCgoyMDAyLTEyLTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCAoU0ZOVF9Mb2FkX1RhYmxlX0Z1bmMpOiBOZXcKCWZ1bmN0aW9uIHBvaW50ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKEZUX0xvYWRfU2ZudF9UYWJsZSk6IE5ldyBmdW5jdGlvbi4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEltcGxlbWVudCBpdC4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKHNmbnRfZ2V0X2ludGVyZmFjZSk6IEhhbmRsZSBgbG9hZF9zZm50JwoJbW9kdWxlIHJlcXVlc3QuCgoyMDAyLTEyLTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoZmluZF91bmljb2RlX2NoYXJtYXApOiBBZGRlZCBzb21lIGNvbW1lbnRzIHRvCgliZXR0ZXIgZXhwbGFpbiB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlLgoJKG9wZW5fZmFjZSk6IEluY2x1ZGVkIEdyYWhhbSBBc2hlcidzIGZpeCB0byBwcmV2ZW50IGZhY2VzIHdpdGhvdXQKCVVuaWNvZGUgY2hhcm1hcHMgZnJvbSBsb2FkaW5nLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBJbmNsdWRlZCBHZW9yZ2UgV2lsbGlhbXMncyBmaXggdG8gc3VwcG9ydAoJdmVyc2lvbiAyIGZvbnRzIGNvcnJlY3RseS4KCSh3aW5mbnRfaGVhZGVyX2ZpZWxkcyk6IFVwZGF0ZWQuCgkoZm50X2ZvbnRfbG9hZCk6IEhhbmRsZSB2ZXJzaW9uIDIgZm9udHMuCgkoRk5UX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoKMjAwMi0xMi0xNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9WRVJTSU9OLkRMTDogVXBkYXRpbmcgZG9jdW1lbnQgdG8gYmV0dGVyIGV4cGxhaW4gdGhlCglkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0aHJlZSB2ZXJzaW9uIG51bWJlcnMgYmVpbmcgdXNlZCBvbiBVbml4LCBhcwoJd2VsbCBhcyBwcm92aWRpbmcgYW4gYXV0b2NvbmYgZnJhZ21lbnQgcHJvdmlkZWQgYnkgTGFycyBDbGF1c2VuLgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX2NvbmljKTogRml4ZWQgc21hbGwgYnVnIHRoYXQKCXByZXZlbnRlZCBiZXppZXIgYXJjcyB3aXRoIG5lZ2F0aXZlIHZlcnRpY2FsIGNvb3JkaW5hdGVzIHRvIGJlCglyZW5kZXJlZCBhcHByb3ByaWF0ZWx5LgoKMjAwMi0xMi0wMiAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBNb2RpZmllZCB0aGUgbG9naWMgdG8gZ2V0IFVuaWNvZGUgY2hhcm1hcHMuCglOb3cgaXQgbG9hZHMgVUNTLTQgY2hhcm1hcHMgd2hlbiB0aGVyZSBpcyBvbmUuCgkoZmluZF91bmljb2RlX2NoYXJtYXApOiBOZXcgZnVuY3Rpb24uCgkob3Blbl9mYWNlKTogUmVmZXIgdG8gdGhlIGFib3ZlIG9uZS4KCShGVF9TZWxlY3RfQ2hhcm1hcCk6IElkZW0uCgoyMDAyLTExLTI5ICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGd6aXAuaDogQ29ycmVjdCB0aGUgbmFtZSBvZiB0aGUgY29udHJvbGxpbmcKCW1hY3JvICh3YXMgX19GVFhGODZfSF9fIC4uLikuCgoyMDAyLTExLTI3ICBWaW5jZW50IENhcm9uICA8di5jYXJvbkB6ZXJvZGV1eC5uZXQ+CgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbiwgYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluLAoJYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjLCBzcmMvZ3ppcC9ydWxlcy5taywgc3JjL2d6aXAvZnRnemlwLmMKCVtGVF9DT05GSUdfT1BUSU9OX1NZU1RFTV9aTElCXTogQWRkaW5nIHN1cHBvcnQgZm9yIHN5c3RlbSB6bGliCglpbnN0YWxsYXRpb25zIGlmIGF2YWlsYWJsZSBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIChVbml4IG9ubHkpLgoKMjAwMi0xMS0yMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9jaGFyc2V0X2xvYWQsIGNmZl9lbmNvZGluZ19sb2FkKTogTW9kaWZpZWQKCWNoYXJzZXQgbG9hZGVyIHRvIGFjY2VwdCBwcmUtZGVmaW5lZCBjaGFyc2V0cywgZXZlbiB3aGVuIHRoZSBmb250Cgljb250YWlucyBmZXdlciBnbHlwaHMuICBBbHNvIGVuZm9yY2VkIG1vcmUgY2hlY2tzIHRvIGVuc3VyZSB0aGF0IHdlCgluZXZlciBvdmVyZmxvdyB0aGUgY2hhcmFjdGVyIGNvZGVzIGFycmF5IGluIHRoZSBlbmNvZGluZy4KCjIwMDItMTEtMjIgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IFVwZGF0ZWQgdG8gbGF0ZXN0IE9wZW5UeXBlCglzcGVjaWZpY2F0aW9uLgoKMjAwMi0xMS0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjMgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0xMS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXQuYyAoZnRjX3NiaXRfbm9kZV9sb2FkKTogRml4ZWQgYSBzbWFsbCBidWcgdGhhdAoJY2F1c2VkIHByb2JsZW1zIHdpdGggZW1iZWRkZWQgYml0bWFwcy4KCgkqIHNyYy9vdGxheW91dC9vdGxheW91dC5oLCBzcmMvb3RseWFvdXQvb3RsY29uZi5oLAoJc3JjL290bGF5b3V0L290bGdzdWIuYywgc3JjL290bGF5b3V0L290bGdzdWIuaCwKCXNyYy9vdGxheW91dC9vdGxwYXJzZS5jLCBzcmMvb3RsYXlvdXQvb3RscGFyc2UuaCwKCXNyYy9vdGxheW91dC9vdGx1dGlscy5oOiBVcGRhdGluZyB0aGUgT3BlblR5cGUgTGF5b3V0IGNvZGUsIGFkZGluZwoJc3VwcG9ydCBmb3QgdGhlIGZpcnN0IEdTVUIgbG9va3Vwcy4gIE5vdGhpbmcgdGhhdCByZWFsbHkgY29tcGlsZXMKCWZvciBub3cgdGhvdWdoLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9hbGlnbl9zZXJpZl9lZGdlKTogRGlzYWJsZWQgc2VyaWYgc3RlbQoJd2lkdGggcXVhbnRpemF0aW9uLiAgSXQgcHJvZHVjZXMgc2xpZ2h0bHkgYmV0dGVyIHNoYXBlcyB0aG91Z2ggdGhpcwoJaXMgbm90IGRpc3Rpbmd1aXNoYWJsZSB3aXRoIG1hbnkgZm9udHMuCglSZW1vdmUgb3RoZXIgZGVhZCBjb2RlLgoKCSogc3JjL0phbWZpbGUsIHNyYy8qL0phbWZpbGU6IFNpbXBsaWZpZWQuCglVc2UgJChGVDJfU1JDX0RJUikuCgoyMDAyLTExLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0xPQURfVEFSR0VUX0xJR0hUKTogTmV3IG1hY3JvLgoJKEZUX0xPQURfVEFSR0VULCBGVF9MT0FEX1RBUkdFVF9NT0RFKTogVXNlIGAmIDE1JyBpbnN0ZWFkIG9mIGAmIDcnLgoKMjAwMi0xMS0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCwgc3JjL2d6aXAvZnRnemlwLmM6IEFkZGVkCglzdXBwb3J0IGZvciB0aGUgRlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQiBvcHRpb24sIHVzZWQgdG8gc3BlY2lmeQoJdGhlIHVzZSBvZiBzeXN0ZW0td2lkZSB6bGliLgoKCU5vdGUgdGhhdCB0aGlzIG1hY3JvLCBhcyB3ZWxsIGFzCglGVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSLCBpcyBub3QgI3VuZGVmLWVkIGFueW1vcmUuCglUaGlzIGFsbG93cyB0aGUgYnVpbGQgc3lzdGVtIHRvIGRlZmluZSB0aGVtIGRlcGVuZGluZyBvbiB0aGUKCWNvbmZpZ3VyYXRpb24gKHR5cGljYWxseSBieSBhZGRpbmcgLUQgZmxhZ3MgYXQgY29tcGlsZSB0aW1lKS4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfZmFjZV9idWlsZF9jbWFwcyk6IFJlbW92ZWQgY29tcGlsZXIKCXdhcm5pbmdzIGluIG9wdGltaXplZCBtb2RlIHJlbGF0aXZlIHRvIHRoZSBgdm9sYXRpbGUnIGxvY2FsCgl2YXJpYWJsZXMuICBUaGlzIHdhcyBub3QgYSBjb21waWxlciBidWcgYWZ0ZXIgYWxsLCBidXQgdGhlIGZhY3QgdGhhdAoJYSBwb2ludGVyIHRvIGEgdm9sYXRpbGUgdmFyaWFibGUgaXMgbm90IHRoZSBzYW1lIGFzIGEgdm9sYXRpbGUKCXBvaW50ZXIgdG8gYSB2YXJpYWJsZSA6LSkKCglUaGUgZml4IHdhcyB0byBjaGFuZ2UKCSAgYHZvbGF0aWxlIEZUX0J5dGUqIHAnCglpbnRvCgkgIGBGVF9CeXRlKiB2b2xhdGlsZSBwJy4KCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfcGh5X2ZvbnRfbG9hZCksIHNyYy9wZnIvcGZyZHJpdnIuYwoJKHBmcl9nZXRfbWV0cmljcyksIHNyYy9nemlwL2luZnRyZWVzLmM6IFJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MgaW4KCW9wdGltaXplZCBtb2Rlcy4KCgkqIHNyYy9nemlwLyouW2hjXTogTW9kaWZpZWQgb3VyIHpsaWIgY29weSBpbiBvcmRlciB0byBwcmV2ZW50CglleHBvcnRpbmcgYW55IHpsaWIgZnVuY3Rpb24gbmFtZXMgb3V0c2lkZSBvZiB0aGUgY29tcG9uZW50LiAgVGhpcwoJcHJldmVudHMgbGlua2luZyBwcm9ibGVtcyBvbiBzb21lIHBsYXRmb3Jtcywgd2hlbiBhcHBsaWNhdGlvbnMgd2FudAoJdG8gbGluayBGcmVlVHlwZSBfYW5kXyB6bGliIHRvZ2V0aGVyLgoKMjAwMi0xMS0wNSAgSnVsaXVzeiAgPGpjaEBwcHMuanVzc2lldS5mcj4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocHNfdGFibGVfYWRkKTogTW9kaWZpZWQgaW5jcmVtZW50IGxvb3AgaW4KCW9yZGVyIHRvIGltcGxlbWVudCBleHBvbmVudGlhbCBiZWhhdmlvdXIuCgoyMDAyLTExLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkZWQgUEZSLXNwZWNpZmljIHB1YmxpYyBBUEkuICBGaXhlZCB0aGUga2VybmluZyByZXRyaWV2ZWwgcm91dGluZQoJKGl0IHJldHVybmVkIGludmFsaWQgdmFsdWVzIHdoZW4gdGhlIG91dGxpbmUgYW5kIG1ldHJpY3MgcmVzb2x1dGlvbgoJZGlmZmVyKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRwZnIuaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wZnIuaDogTmV3CglmaWxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfUEZSX0gpOiBOZXcKCW1hY3JvIGZvciBwZnIuaC4KCgkqIHNyYy9iYXNlL2Z0cGZyLmM6IE5ldyBmaWxlLgoJKiBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9kZXNjcmlwLm1tczogVXBkYXRlZC4KCgkqIHNyYy9wZnIvcGZyZHJpdnIuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QRlJfSC4KCShwZnJfZ2V0X2tlcm5pbmcsIHBmcl9nZXRfYWR2YW5jZSwgcGZyX2dldF9tZXRyaWNzKTogTmV3IGZ1bmN0aW9ucy4KCShwZnJfc2VydmljZV9yZWMpOiBOZXcgZm9ybWF0IGludGVyZmFjZS4KCShwZnJfZHJpdmVyX2NsYXNzKTogVXNlIGBwZnJfc2VydmljZV9yZWMnLgoJUmVwbGFjZSBgcGZyX2ZhY2VfZ2V0X2tlcm5pbmcnIHdpdGggYHBmcl9nZXRfa2VybmluZycuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jOiBSZW1vdmUgZGVhZCBjb2RlLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGZ0X2dseXBoc2xvdF9jbGVhcik6IFNtYWxsIGludGVybmFsIGZpeCB0bwoJYmV0dGVyIHN1cHBvcnQgYml0bWFwLWJhc2VkIGZvbnQgZm9ybWF0cy4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYyAoRlRfR2x5cGhTbG90X0VtYm9sZGVuKTogRml4IGhhbmRsaW5nIG9mCglgc2NhbGUnLgoJRml4IGFyZ3VtZW50cyB0byBgRlRfVmVjdG9yX0Zyb21fUG9sYXInLgoKMjAwMi0xMC0zMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZCBzdXBwb3J0IGZvciBhdXRvbWF0aWMgaGFuZGxpbmcgb2YgZ3ppcC1jb21wcmVzc2VkIFBDRiBmaWxlcy4KCgkqIHNyYy9nemlwLyo6IE5ldyBmaWxlcywgdGFrZW4gZnJvbSB0aGUgemxpYiBwYWNrYWdlIChleGNlcHQKCWZ0Z3ppcC5jKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRnemlwLmgsIHNyYy9nemlwL2Z0Z3ppcC5jOiBOZXcgZmlsZXMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0daSVBfSCk6IE5ldyBtYWNybyBmb3IKCWBmdGd6aXAuaCcuCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jOiBJbmNsdWRlIEZUX0daSVBfSCBhbmQgRlRfRVJST1JTX0guCgkoUENGX0ZhY2VfSW5pdCk6IElmIG5vcm1hbCBvcGVuIGZhaWxzLCB0cnkgdG8gb3BlbiBnemlwIHN0cmVhbS4KCShQQ0ZfRmFjZV9Eb25lKTogQ2xvc2UgZ3ppcCBzdHJlYW0uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BjZnR5cGVzLmggKFBDRl9QdWJsaWNfRmFjZVJlYyksCglzcmMvcGNmL3BjZi5oIChQQ0ZfRmFjZVJlYyk6IEFkZCBgZ3ppcF9zdHJlYW0nIGFuZCBgZ3ppcF9zb3VyY2UnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfQ09ORklHX09QVElPTl9VU0VfWkxJQik6CglOZXcgbWFjcm8uCgkoVDFfQ09ORklHX09QVElPTl9ESVNBQkxFX0hJTlRFUiwgRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFMKCUZUX0NPTkZJR19PUFRJT05fTk9fQ09OVkVOSUVOQ0VfRlVOQ1MsCglGVF9DT05GSUdfT1BUSU9OX0FMVEVSTkFURV9HTFlQSF9GT1JNQVRTKTogUmVtb3ZlZC4KCgkoRlRfRVhQT1JULCBGVF9FWFBPUlRfREVGLCBGVF9ERUJVR19MRVZFTF9FUlJPUiwKCUZUX0RFQlVHX0xFVkVMX1RSQUNFLCBGVF9ERUJVR19NRU1PUlkpOiBDb21tZW50IG91dCBkZWZpbml0aW9ucyBzbwoJdGhhdCBwbGF0Zm9ybSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgY2FuIG92ZXJyaWRlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oOiBJbmNsdWRlIEZUX1NZU1RFTV9ILgoKMjAwMi0xMC0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogRnJlZVR5cGUgMi4xLjNyYzMgcmVsZWFzZWQuCgoyMDAyLTEwLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCAoRlRfUE9JTlRFUl9UT19VTE9ORyk6IE5ldyBtYWNyby4KCShGVENfRkFDRV9JRF9IQVNIKTogUmV3cml0dGVuLCB1c2luZyBGVF9QT0lOVEVSX1RPX1VMT05HLgoKMjAwMi0xMC0yMiAgR2l1c2VwcGUgR2hpYvIgIDxnaGlib0BtYW5kcmFrZXNvZnQuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9FbmNvZGluZyk6IEZpeCBlbnRyeSBmb3IgbGF0aW4tMi4KCjIwMDItMTAtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfT3Blbl9GYWNlKTogVXNlIGBjb25zdCcgZm9yIGBhcmdzJwoJKHN1Z2dlc3RlZCBieSBHcmFoYW0pLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfT3Blbl9GYWNlKTogVXBkYXRlZC4KCShmdF9pbnB1dF9zdHJlYW1fbmV3KTogRGl0dG8uCgoyMDAyLTEwLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkaW5nIHN1cHBvcnQgZm9yIGVtYmVkZGVkIGJpdG1hcHMgdG8gdGhlIFBGUiBkcml2ZXIsIGFuZCByZXdyaXRpbmcKCWl0cyBrZXJuaW5nIGxvYWRlci9oYW5kbGVyIHRvIHVzZSBhbGwga2VybmluZyBwYWlycyBpbiBhIHBoeXNpY2FsCglmb250IChhbmQgbm90IGp1c3QgdGhlIGZpcnN0IGl0ZW0pLgoKCSogc3JjL3Bmci9wZnIuYzogSW5jbHVkZSBgcGZyc2JpdC5jJy4KCSogc3JjL3Bmci9wZnJnbG9hZC5jOiBJbmNsdWRlIGBwZnJzYml0LmgnLgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX2V4dHJhX2l0ZW1fbG9hZF9rZXJuaW5nX3BhaXJzKTogUmV3cml0dGVuLgoJKHBmcl9waHlfZm9udF9kb25lLCBwZnJfcGh5X2ZvbnRfbG9hZCk6IFVwZGF0ZWQuCgkqIHNyYy9wZnIvcGZyb2Jrcy5jOiBJbmNsdWRlIGBwZnJzYml0LmgnLgoJKHBmcl9mYWNlX2luaXQpOiBIYW5kbGUga2VybmluZyBhbmQgZW1iZWRkZWQgYml0bWFwcy4KCShwZnJfc2xvdF9sb2FkKTogTG9hZCBlbWJlZGRlZCBiaXRtYXBzLgoJKFBGUl9LRVJOX0lOREVYKTogUmVtb3ZlZC4KCShwZnJfZmFjZV9nZXRfa2VybmluZyk6IFJld3JpdHRlbi4KCSogc3JjL3Bmci9wZnJzYml0LmMsIHNyYy9wZnIvcGZyc2JpdC5oOiBOZXcgZmlsZXMuCgkqIHNyYy9wZnIvcGZydHlwZXMuaCAoUEZSX0tlcm5JdGVtUmVjKTogTmV3IHN0cnVjdHVyZS4KCShQRlJfS0VSTl9JTkRFWCk6IE5ldyBtYWNyby4KCShQRlJfUGh5Rm9udFJlYyk6IEFkZCBpdGVtcyBmb3Iga2VybmluZyBhbmQgZW1iZWRkZWQgYml0bWFwcy4KCSogc3JjL3Bmci9KYW1maWxlIChfc291cmNlcykgW0ZUMl9NVUxUSV06IEFkZCBgcGZyc2JpdCcuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IERvbid0IGxvYWQgYml0bWFwIGZvbnRzIGlmCglGVF9MT0FEX05PX1JFQ1VSU0UgaXMgc2V0LgoJTG9hZCBlbWJlZGRlZCBiaXRtYXBzIG9ubHkgaWYgRlRfTE9BRF9OT19CSVRNQVAgaXNuJ3Qgc2V0LgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyL2NvbnRlbnQucHksIHNyYy90b29scy9kb2NtYWtlci9zb3VyY2VzLnB5LAoJc3JjL3Rvb2xzL2RvY21ha2VyL3RvaHRtbC5weTogRml4aW5nIGEgZmV3IG5hc3R5IGJ1Z3MuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X3ZhbGlkYXRlKTogVGhlIHZhbGlkYXRvciBmb3IgZm9ybWF0IDQKCXN1Yi10YWJsZXMgaXMgbm93IGNhcGFibGUgb2YgZGVhbGluZyB3aXRoIGludmFsaWQgYGxlbmd0aCcgZmllbGRzIGF0Cgl0aGUgc3RhcnQgb2YgdGhlIHN1Yi10YWJsZS4gIFRoaXMgYWxsb3dzIGZvbnRzIGxpa2UgYG1nX19fX19fLnR0ZicKCShpLmUuICBNYXJyaWFnZSkgdG8gcmV0dXJuIGFjY3VyYXRlIGNoYXJtYXBzLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMi0xMC0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKFNVQlBJWEVMUyk6IEFkZCBjYXN0IHRvIGBUUG9zJy4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCShUUlVOQyk6IEFkZCBjYXN0IHRvIGBUQ29vcmQnLgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoJKFRSYXN0ZXIpOiBVc2UgYFRQb3MnIGZvciBtaW5fZXgsIG1heF9leCwgbWluX2V5LCBtYXhfZXksIGFuZAoJbGFzdF9leS4KCVVwZGF0ZSBhbGwgY2FzdHMuCgkoZ3JheV9yZW5kZXJfbGluZSk6IEZpeCBjYXN0cyBmb3IgYHAnIGFuZCBgZmlyc3QnLgoKMjAwMi0xMC0wMiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKGJkZl9sb2FkX2ZvbnQpOiBBbGxvY2F0ZSB0aGUgX2JkZl9wYXJzZV90CglzdHJ1Y3R1cmUgd2l0aCBGVF9BTExPQyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzdGFjay4KCjIwMDItMDktMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAobnVtX3NiaXRfc3RyaWtlcywKCW51bV9zYml0X3NjYWxlcyk6IFVzZSBgRlRfVUxvbmcnLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoc2ZudF9sb2FkX2ZhY2UpOiBVcGRhdGVkIGFjY29yZGluZ2x5LgoJKiBzcmMvc2ZudC90dHNiaXQuYyAodHRfZmFjZV9zZXRfc2JpdF9zdHJpa2UpOiBEaXR0by4KCShmaW5kX3NiaXRfaW1hZ2UpOiBSZW1vdmUgY2FzdC4KCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogRml4IGNhc3QuCgoyMDAyLTA5LTI3ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9uYW1lcyk6IFVzZSBjYXN0LgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoY29kZV90b19uZXh0Mik6IFVzZSBsb25nIGNvbnN0YW50LgoJKGNvZGVfdG9faW5kZXg0KTogVXNlIGNhc3QuCgkoY29kZV90b19pbmRleDhfMTIpOiBGaXggY2FzdC4KCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX25leHQsIHR0X2NtYXA4X2NoYXJfaW5kZXgsCgl0dF9jbWFwMTJfY2hhcl9pbmRleCk6IFVzZSBjYXN0IGZvciBgcmVzdWx0Jy4KCSh0dF9mYWNlX2J1aWxkX2NtYXBzKTogVXNlIGNhc3QuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9uYW1lX2VudHJ5X2FzY2lpX2Zyb21fdWNzNCk6IFVzZSBjYXN0IGZvcgoJYGNvZGUnLgoJKHNmbnRfbG9hZF9mYWNlKTogVXNlIEZUX0ludDMyIGZvciBgZmxhZ3MnLgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX3NjYW5saW5lLCBncmF5X3JlbmRlcl9saW5lLAoJZ3JheV9jb21wdXRlX2Nib3gsIGdyYXlfY29udmVydF9nbHlwaCwgZ3JheV9yYXN0ZXJfcmVzZXQpOiBBZGQgY2FzdHMKCXRvIGBUQ29vcmQnIGFuZCBgaW50Jy4KCU1vcmUgMTZiaXQgZml4ZXMuCglzL0ZUX1Bvcy9UUG9zLy4KCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWMpOiBBZGQgY2FzdHMuCgoyMDAyLTA5LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dHBvc3QuYyAobG9hZF9wb3N0X25hbWVzLCB0dF9mYWNlX2ZyZWVfcHNfbmFtZXMsCgl0dF9mYWNlX2dldF9wc19uYW1lKTogUmVwbGFjZSBzd2l0Y2ggc3RhdGVtZW50IHdpdGggaWYgY2xhdXNlcyB0bwoJbWFrZSBpdCBtb3JlIHBvcnRhYmxlLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBEaXR0by4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2R1bGUuaCAoRlRfTW9kdWxlX0NsYXNzKTogVXNlIGBGVF9Mb25nJyBmb3IKCWBtb2R1bGVfc2l6ZScuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRyZW5kZXIuaCAoRlRfR2x5cGhfQ2xhc3NfKTogVXNlIGBGVF9Mb25nJyBmb3IKCWBnbHlwaF9zaXplJy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9SZW5kZXJfR2x5cGgpOiBDaGFuZ2Ugc2Vjb25kIHBhcmFtZXRlciB0bwoJYEZUX1JlbmRlcl9Nb2RlJy4KCShGVF9SZW5kZXJfR2x5cGhfSW50ZXJuYWwpOiBDaGFuZ2UgdGhpcmQgcGFyYW1ldGVyIHRvCglgRlRfUmVuZGVyX01vZGUnLgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IENoYW5nZSBzZWNvbmQgcGFyYW1ldGVyCgl0byBgRlRfUmVuZGVyX01vZGUnLgoKCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogQ2hhbmdlIHRoaXJkIHBhcmFtZXRlcgoJdG8gYEZUX1JlbmRlcl9Nb2RlJy4KCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyLCBmdF9zbW9vdGhfcmVuZGVyX2xjZCwKCWZ0X3Ntb290aF9yZW5kZXJfbGNkX3YpOiBEaXR0by4KCShmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWMpOiBDaGFuZ2UgdGhpcmQgYW5kIGZpZnRoIHBhcmFtZXRlciB0bwoJYEZUX1JlbmRlcl9Nb2RlJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvZnRnbHlwaC5oOiBVcGRhdGVkLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChMb2FkX0dseXBoKSwgc3JjL3BjZi9wY2Zkcml2ZXIuYwoJKFBDRl9HbHlwaF9Mb2FkKSwgc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9zbG90X2xvYWQpLAoJc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfTG9hZF9HbHlwaCksIHNyYy90NDIvdDQyb2Jqcy5jCgkoVDQyX0dseXBoU2xvdF9Mb2FkKSwgc3JjL2JkZi9iZGZkcml2ci5jIChCREZfR2x5cGhfTG9hZCk6IENoYW5nZQoJZm91cnRoIHBhcmFtZXRlciB0byBgRlRfSW50MzInLgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpOiBBZGQgdHdvIG1pc3NpbmcgcGFyYW1ldGVycwoJYW5kIGRlY2xhcmUgdGhlbSBhcyB1bnVzZWQuCgoJKiBzcmMvY2lkL2NpZHBhcnNlLmggKENJRF9QYXJzZXIpOiBVc2UgRlRfTG9uZyBmb3IgYHBvc3RzY3JpcHRfbGVuJy4KCgkqIHNyYy9wc25hbWVzL3BzbmFtZXMuaCAoUFNfVW5pY29kZV9WYWx1ZV9GdW5jKTogQ2hhbmdlIHJldHVybgoJdmFsdWUgdG8gRlRfVUludDMyLgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChwc191bmljb2RlX3ZhbHVlLCBwc19idWlsZF91bmljb2RlX3RhYmxlKToKCVVwZGF0ZWQgYWNjb3JkaW5nbHkuCgoyMDAyLTA5LTI2ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChHZXRfS2VybmluZyk6IFVzZSBGVF9Mb25nIGZvciBgbWlkZGxlJy4KCShjZmZfZ2V0X2dseXBoX25hbWUpOiBVc2UgY2FzdCBmb3IgcmVzdWx0IG9mIGZ0X3N0cmxlbi4KCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfcmVhbCk6IFVzZXIgY2FzdCBmb3IgYXNzaWduaW5nCglgZXhwJy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9pbmRleF9nZXRfcG9pbnRlcnMpOiBVc2UgRlRfVUxvbmcgZm9yCglzb21lIGxvY2FsIHZhcmlhYmxlcy4KCShjZmZfY2hhcnNldF9sb2FkLCBjZmZfZW5jb2RpbmdfbG9hZCk6IFVzZSBjYXN0cyB0byBGVF9VSW50IGZvciBzb21lCglzd2l0Y2ggc3RhdGVtZW50cy4KCShjZmZfZm9udF9sb2FkKTogVXNlIGNhc3QgaW4gY2FsbCB0byBDRkZfTG9hZF9GRF9TZWxlY3QuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfc2l6ZV9pbml0KTogVXNlIG1vcmUgY2FzdHMuCgkoY2ZmX2ZhY2VfaW5pdCk6IFVzZSBGVF9JbnQzMiBmb3IgYGZsYWdzJy4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfb3BlcmF0b3Jfc2VhYyk6IFVzZSBjYXN0IGZvciBhc3NpZ25pbmcKCWBhZHgnIGFuZCBgYWR5Jy4KCShjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncyk6IFVzZSBGVF9VTG9uZyBmb3IgdGhpcmQgcGFyYW1ldGVyLgoJVXNlIG1vcmUgY2FzdHMuCgkqIHNyYy9jZmYvY2ZmY21hcC5jIChjZmZfY21hcF91bmljb2RlX2luaXQpOiBVc2UgY2FzdCBmb3IgYGNvdW50Jy4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfcmVhZF9zdWJycyk6IFVzZSBGVF9VTG9uZyBmb3IgYGxlbicuCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpOiBBZGQgbWlzc2luZyBjYXN0IGZvcgoJYGNpZF9nZXRfb2Zmc2V0Jy4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jICh0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKSA8MTg+OiBVc2UKCWNhc3QgZm9yIGBudW1fcG9pbnRzJy4KCSh0MV9kZWNvZGVyX2luaXQpOiBVc2UgY2FzdCBmb3IgYXNzaWduaW5nIGBkZWNvZGVyLT5udW1fZ2x5cGhzJy4KCgkqIHNyYy9iYXNlL2Z0ZGVidWcuYyAoZnRfZGVidWdfaW5pdCk6IFVzZSBGVF9JbnQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCAoRlRfU2xvdF9Mb2FkRnVuYyk6IFVzZQoJYEZUX0ludDMyJyBmb3IgZm91cnRoIHBhcmFtZXRlci4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSk6IFVzZSBjYXN0IGZvciBjYWxsaW5nCgljbGF6ei0+aW5pdF9mYWNlLgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChTZXRfSGlnaF9QcmVjaXNpb24pOiBVc2UgYDEnIGluc3RlYWQgb2YKCWAxTCcuCgkoRmluYWxpemVfUHJvZmlsZV9UYWJsZSwgTGluZV9VcCwgZnRfYmxhY2tfaW5pdCk6IFVzZSBjYXN0cy4KCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogRGl0dG8uCgoJKiBzcmMvc2ZudC9zZm50X2Rpcl9jaGVjazogQ29tcGFyZSBgbWFnaWMnIHdpdGggdW5zaWduZWQgbG9uZwoJY29uc3RhbnQuCgoyMDAyLTA5LTI2ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IFVwZGF0ZWQuCgoyMDAyLTA5LTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9ISU5UX01FVFJJQ1MpOiBEaXNhYmxpbmcgbWV0cmljcwoJaGludGluZyBpbiB0aGUgYXV0by1oaW50ZXIuICBUaGlzIHByb2R1Y2VzIG11Y2ggYmV0dGVyIGFudGktYWxpYXNlZAoJdGV4dC4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgdGhlIGNoYW5nZXMgZG9jdW1lbnRhdGlvbi4KCjIwMDItMDktMjUgIEFudGhvbnkgRm9rICA8YW50aG9ueUB0aGl6bGludXguY29tPgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF92YWxpZGF0ZSwgdHRfY21hcDRfY2hhcl9pbmRleCwKCXR0X2NtYXA0X2NoYXJfbmV4dCk6IEFkZGVkIHN1cHBvcnQgZm9yIG9wZW5zX19fLnR0ZiAoaXQgY29udGFpbnMgYQoJY2hhcm1hcCB0aGF0IHVzZXMgb2Zmc2V0PTB4RkZGRlUgaW5zdGVhZCBvZiAweDAwMDAgdG8gaW5kaWNhdGUgYQoJbWlzc2luZyBnbHlwaCkuCgoyMDAyLTA5LTIxICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKExvYWRfR2x5cGgpOiBGb3VydGggcGFyYW1ldGVyIG11c3QgYmUKCUZUX0ludDMyLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5oIChUVF9Mb2FkX0dseXBoKToKCURpdHRvLgoKMjAwMi0wOS0xOSAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCglNb3JlIDE2Yml0IGZpeGVzLgoKCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKHNvcnRfdmFsdWVzKTogVXNlIEZUX1BvcyBmb3IgYHN3YXAnLgoJKGFoX2hpbnRlcl9jb21wdXRlX3dpZHRocyk6IFVzZSBGVF9Qb3MgZm9yIGBkaXN0Jy4KCVVzZSBBSF9NQVhfV0lEVEhTLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX3NjYWxlX2JsdWVfZWRnZXMpOiBVc2UgRlRfUG9zCglmb3IgYGRlbHRhJy4KCShhaF9vdXRsaW5lX2NvbXB1dGVfZWRnZXMpOiBSZXBsYWNlIHNvbWUgaW50cyB3aXRoIEZUX0ludCBhbmQKCUZUX1Bvcy4KCShhaF90ZXN0X2V4dHJlbWEpOiBDbGVhbiB1cCBjb2RlLgoJKGFoX2dldF9vcmllbnRhdGlvbik6IFVzZSA0IEZUX0ludCB2YXJpYWJsZXMgaW5zdGVhZCBvZiBGVF9CQm94IHRvCglob2xkIGluZGljZXMuCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX1NlZ21lbnRSZWMpOiBDaGFuZ2UgdHlwZSBvZiBgc2NvcmUnCgl0byBGVF9Qb3MuCgoyMDAyLTA5LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsIGJ1aWxkcy91bml4L2NvbmZpZy5zdWI6IFVwZGF0ZWQgdG8KCXJlY2VudCB2ZXJzaW9ucy4KCjIwMDItMDktMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9MaWJyYXJ5X1ZlcnNpb24pOiBCdWdmaXguCgoJKiBGcmVlVHlwZSAyLjEuM3JjMiAocmVsZWFzZSBjYW5kaWRhdGUgMikgaXMgcmVsZWFzZWQhCgoyMDAyLTA5LTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oLAoJaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZXIuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHN5c2lvLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzbWVtLmgsIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogVXBkYXRpbmcKCXRoZSBpbi1zb3VyY2UgZG9jdW1lbnRhdGlvbi4KCgkqIHNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHk6IFVwZGF0aW5nIHRoZSBIVE1MIGZvcm1hdHRlciBpbiB0aGUKCURvY01ha2VyIHRvb2wuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHk6IFJlbW92ZWQuCgoyMDAyLTA5LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTW9yZSAxNmJpdCBmaXhlcy4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocmVhbGxvY2F0ZV90MV90YWJsZSk6IFVzZSBGVF9Mb25nIGZvcgoJc2Vjb25kIHBhcmFtZXRlci4KCjIwMDItMDktMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkxNmJpdCBmaXhlcyBmcm9tIFdvbGZnYW5nIERvbXL2c2UuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5oIChUMV9QYXJzZXJSZWMpOiBDaGFuZ2UgdHlwZSBvZiBgYmFzZV9sZW4nCglhbmQgYHByaXZhdGVfbGVuJyB0byBGVF9Mb25nLgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9HZXRfUHJpdmF0ZV9EaWN0KTogUmVtb3ZlIGNhc3QgZm9yCglgcHJpdmF0ZV9sZW4nLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmM6IFVzZSBGVF9JbnQgY2FzdCBmb3IgbW9zdCBjYWxscyBvZiBUMV9Ub0ludC4KCVVzZSBGVF9QdHJEaXN0IHdoZXJlIGFwcHJvcHJpYXRlLgoJKHBhcnNlX2VuY29kaW5nKTogVXNlIEZUX0xvbmcgZm9yIGBjb3VudCcgYW5kIGBuJy4KCShyZWFkX2JpbmFyeV9kYXRhKTogVXNlIEZUX0xvbmcqIGZvciBzZWNvbmQgcGFyYW1ldGVyLgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoYWZtX2F0b2luZGV4KTogVXNlIEZUX1B0ckRpc3QuCgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9sb2FkKTogUmVtb3ZlIHVudXNlZCBsYWJlbC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfaGludF9hbGlnbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgoyMDAyLTA5LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWFraW5nIGZ0Z3JheXMuYyBjb21waWxlIHN0YW5kLWFsb25lIGFnYWluLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IEluY2x1ZGUgZnQyYnVpbGQuaCBvbmx5IGlmIF9TVEFOREFMT05FXwoJaXNuJ3QgZGVmaW5lZC4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgW19TVEFOREFMT05FX106IERlZmluZSBmdF9tZW1zZXQsCglGVF9CRUdJTl9IRUFERVIsIEZUX0VORF9IRUFERVIuCgkoRlRfTUVNX1pFUk8pOiBEZWZpbmUuCgkoVFJhc3RlcikgW0dSQVlTX1VTRV9HQU1NQV06IFVzZSBgdW5zaWduZWQgY2hhcicgaW5zdGVhZCBvZiBGVF9CeXRlLgoJKGdyYXlfcmVuZGVyX3NwYW4sIGdyYXlfaW5pdF9nYW1tYSk6IERvbid0IHVzZSBgRlRfVUludCcuCglEb24ndCBjYXN0IHdpdGggYEZUX0J5dGUnLgoJKGdyYXlzX2luaXRfZ2FtbWEpOiBEb24ndCB1c2UgYEZUX1VJbnQnLgoKMjAwMi0wOS0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRpbml0LmMgKEZUX0FkZF9EZWZhdWx0X01vZHVsZXMpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UuCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9GYWNlX0RvbmUpOiBJbXByb3ZlIHRyYWNpbmcgbWVzc2FnZS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfTUFYX01PRFVMRVMpOiBJbmNyZWFzZWQKCXRvIDMyLgoKMjAwMi0wOS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBTZXQgdG8gOToyOjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGRvY3MvVkVSU0lPTi5ETEw6IFVwZGF0ZWQuCgoyMDAyLTA5LTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9nbHlwaF9maW5kX3N0cm9uZ19wb2ludHMpLAoJc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzKTogQWRkaW5nIGZpeAoJdG8gcHJldmVudCBzZWcgZmF1bHQgd2hlbiBoaW50cyBhcmUgcHJvdmlkZWQgaW4gYW4gZW1wdHkgZ2x5cGguCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuaSAoR0VOX0NBQ0hFX0xPT0tVUCkgW0ZUX0RFQlVHX0xFVkVMX0VSUk9SXToKCVJlbW92ZWQgY29uZGl0aW9uYWwgY29kZS4gIFRoaXMgZml4ZXMgYSBidWcgdGhhdCBwcmV2ZW50ZWQKCWNvbXBpbGF0aW9uIGluIGRlYnVnIG1vZGUgb2YgdGVtcGxhdGUgaW5zdGFudGlhdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBSZW1vdmVkIGluY29ycmVjdCBgemZ0XycgZGVmaW5pdGlvbnMKCWFuZCB1cGRhdGVkIGNvbnN0YW50cyBkb2N1bWVudGF0aW9uIGNvbW1lbnRzLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VyX3J1bik6IEZpeGVkIHRoZSBDRkYgdGFibGUgbG9hZGVyLgoJSXQgZGlkbid0IGFjY2VwdCBlbXB0eSBhcnJheXMsIGFuZCB0aGlzIHByZXZlbnRlZCB0aGUgbG9hZGluZyBvZgoJY2VydGFpbiBmb250cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRmFjZVJlYyk6IFVwZGF0aW5nIGRvY3VtZW50YXRpb24KCWNvbW1lbnQuICBUaGUgYGRlc2NlbmRlcicgdmFsdWUgaXMgYWx3YXlzICpuZWdhdGl2ZSosIG5vdCBwb3NpdGl2ZS4KCjIwMDItMDktMDkgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dseXBoX0xvYWQpOiBGaXhpbmcgaW5jb3JyZWN0IGNvbXB1dGF0aW9uCglvZiBiaXRtYXAgbWV0cmljcy4KCjIwMDItMDktMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglWYXJpb3VzIHVwZGF0ZXMgdG8gY29ycmVjdGx5IHN1cHBvcnQgc3ViLXBpeGVsIHJlbmRlcmluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IEFkZCB0d28gcmVuZGVyZXJzIGZvciBMQ0QuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXJfbGNkLAoJZnRfc21vb3RoX3JlbmRlcl9sY2Rfdik6IFNldCBGVF9QSVhFTF9NT0RFX0xDRCBhbmQKCUZUX1BJWEVMX01PREVfTENEX1YsIHJlc3BlY3RpdmVseS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjaW1hZ2UuaCAoRlRDX0ltYWdlVHlwZVJlYyk6IE5ldwoJc3RydWN0dXJlLgoJVXBkYXRlZCBhbGwgdXNlcnMuCgkoRlRDX0ltYWdlRGVzYyk6IFJlbW92ZWQuCgkoRlRDX0ltYWdlQ2FjaGVfTG9va3VwKTogU2Vjb25kIHBhcmFtZXRlciBpcyBub3cgb2YgdHlwZQoJYEZUQ19JbWFnZVR5cGUnLgoJVXBkYXRlZCBhbGwgdXNlcnMuCgkoRlRDX0lNQUdFX0RFU0NfQ09NUEFSRSk6IFVwZGF0ZWQgYW5kIHJlbmFtZWQgdG8uLi4KCShGVENfSU1BR0VfVFlQRV9DT01QQVJFKTogVGhpcy4KCShGVENfSU1BR0VfREVTQ19IQVNIKTogVXBkYXRlZCBhbmQgcmVuYW1lZCB0by4uLgoJKEZUQ19JTUFHRV9UWVBFX0hBU0gpOiBUaGlzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNzYml0cy5oIChGVENfU0JpdFJlYyk6IEZpZWxkIGBudW1fZ3JheXMnCglyZXBsYWNlZCB3aXRoIGBtYXhfZ3JheXMnLgoJYHBpdGNoJyBpcyBub3cgRlRfU2hvcnQuCgkoRlRDX1NCaXRDYWNoZV9Mb29rdXApOiBTZWNvbmQgcGFyYW1ldGVyIGlzIG5vdyBvZiB0eXBlCglgRlRDX0ltYWdlVHlwZScuCglVcGRhdGVkIGFsbCB1c2Vycy4KCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChGVENfSW1hZ2VRdWVyeVJlYywgRlRDX0ltYWdlRmFtaWx5UmVjKToKCVVwZGF0ZWQuCgkoZnRjX2ltYWdlX25vZGVfaW5pdCk6IFVwZGF0ZWQuCglNb3ZlZCBjb2RlIHRvIGNvbnZlcnQgdHlwZSBmbGFncyB0byBsb2FkIGZsYWdzIHRvLi4uCgkoRlRDX0ltYWdlX0NhY2hlX0xvb2t1cCk6IFRoaXMgZnVuY3Rpb24uCgkoZnRjX2ltYWdlX2ZhbWlseV9pbml0KTogVXBkYXRlZC4KCgkqIHNyYy9jYWNoZS9mdGNzYml0LmMgKEZUQ19TQml0UXVlcnlSZWMsIEZUQ19TQml0RmFtaWx5UmVjKToKCVVwZGF0ZWQuCgkoZnRjX3NiaXRfbm9kZV9sb2FkKTogVXBkYXRlZC4KCU1vdmVkIGNvZGUgdG8gY29udmVydCB0eXBlIGZsYWdzIHRvIGxvYWQgZmxhZ3MgdG8uLi4KCShGVENfU0JpdENhY2hlX0xvb2t1cCk6IFRoaXMgZnVuY3Rpb24uCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXJSZWMpOiBSZXBsYWNlIGBub18qX2hpbnRzJyB3aXRoCglgZG9fKl9zbmFwcGluZycuCglVcGRhdGUgYWxsIHVzZXJzICh3aXRoIG5lZ2F0aW9uKS4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9jb21wdXRlX3N0ZW1fd2lkdGgpOiBGaXggdGhyZXNob2xkIGZvcgoJYGRpc3QnIGZvciBgZGVsdGEnIDwgNDAuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaCAoUFNIM19HbHlwaFJlYyk6IFJlcGxhY2UgYG5vXypfaGludHMnIHdpdGgKCWBkb18qX3NuYXBwaW5nJy4KCVVwZGF0ZSBhbGwgdXNlcnMgKHdpdGggbmVnYXRpb24pLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19kaW1lbnNpb25fcXVhbnRpemVfbGVuKTogTmV3CglmdW5jdGlvbi4KCShwc2gzX2hpbnRfYWxpZ24pOiBVc2UgaXQuCglJbXByb3ZlIGhpbnRpbmcgY29kZS4KCVtTVFJPTkdFUl06IFJlbW92ZWQuCgkoU1RST05HRVIpOiBSZW1vdmVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9TZXRfSGludF9GbGFncywgRlRfSElOVF8qKToKCVJlbW92ZWQuCgoyMDAyLTA5LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX1NpemVfSW5pdCk6IFJlbmFtZWQgdG8uLi4KCShjaWRfc2l6ZV9pbml0KTogVGhpcy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChUMV9CdWlsZGVyX0FkZF9Qb2ludDEpOiBSZW5hbWVkIHRvLi4uCgkodDFfYnVpbGRlcl9hZGRfcG9pbnQxKTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfaGludF9hbGlnbik6IEZpeCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfQ29tcHV0ZV9NYXhfQWR2YW5jZSk6IERpdHRvLgoKMjAwMi0wOS0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBDb3JyZWN0ZWQgdGhlIGRlZmluaXRpb24gb2YKCWZ0X2VuY29kaW5nX3N5bWJvbCB0byBiZSBGVF9FTkNPRElOR19NU19TWU1CT0wgKGluc3RlYWQgb2YKCXRoZSBlcnJvbmVvdXMgRlRfRU5DT0RJTkdfU1lNQk9MKS4KCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluIChkYXRhZGlyKTogSW5pdGlhbGl6ZSBpdCAodGhhbmtzIHRvCglBbnRob255IEZvaykuCgoyMDAyLTA4LTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJU2xpZ2h0IG1vZGlmaWNhdGlvbiB0byB0aGUgUG9zdHNjcmlwdCBoaW50ZXIgdG8gc2xpZ2h0bHkgaW5jcmVhc2UKCXRoZSBjb250cmFzdCBvZiBzbW9vdGggaGludGluZy4gIFRoaXMgaXMgdmVyeSBzaW1pbGFyIHRvIHdoYXQgdGhlCglhdXRvLWhpbnRlciBkb2VzIHdoZW4gaXQgY29tZXMgdG8gc3RlbSB3aWR0aCBjb21wdXRhdGlvbnMuICBIb3dldmVyLAoJaXQgcHJvZHVjZXMgYmV0dGVyIHJlc3VsdHMgd2l0aCB3ZWxsLWhpbnRlZCBmb250cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRGVjb2Rlcl9GdW5jc1JlYyk6IEFkZCBoaW50Cgltb2RlIHRvIGBpbml0JyBtZW1iZXIgZnVuY3Rpb24uCgkoVDFfRGVjb2RlclJlYyk6IEFkZCBoaW50IG1vZGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cyAoVDFfSGludHNfQXBwbHlGdW5jLAoJVDJfSGludHNfQXBwbHlGdW5jKTogUGFzcyBgaGludF9tb2RlJywgbm90IGBoaW50X2ZsYWdzJy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKHQxX2RlY29kZXJfaW5pdCk6IEFkZCBoaW50IG1vZGUgYXJndW1lbnQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwczFfaGludHNfYXBwbHkpOiBQYXNzIGhpbnQgbW9kZSwgbm90CgloaW50IGZsYWdzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHMyX2hpbnRzX2FwcGx5KTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwczNfaGludHNfYXBwbHkpOiBEaXR0by4KCShTVFJPTkdFUik6IE5ldyBtYWNyby4KCShwc2gzX2hpbnRfYWxpZ24sIHBzaDNfaGludF90YWJsZV9hbGlnbl9oaW50cyk6IFBhc3MgYGdseXBoJyBpbnN0ZWFkCglvZiBgaGludF9mbGFncycuCglJbXBsZW1lbnQgYW5ub3VuY2VkIGNoYW5nZXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oIChQU0gzX0dseXBoUmVjKTogQWRkIGZsYWdzIHRvIGNvbnRyb2wKCXZlcnRpY2FsIGFuZCBob3Jpem9udGFsIGhpbnRzIGFuZCBzbmFwcGluZy4KCgkqIFJFQURNRSwgZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBmb3IgdGhlIDIuMS4zIHJlbGVhc2UuCgoyMDAyLTA4LTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBNYXNzaXZlIHJlLWZvcm1hdHRpbmcgY2hhbmdlcyB0byBtYW55LCBtYW55IHNvdXJjZSBmaWxlcy4gIEkgZG9uJ3QKCXdhbnQgdG8gbGlzdCB0aGVtIGFsbCBoZXJlLiAgVGhlIG9wZXJhdGlvbnMgcGVyZm9ybWVkIHdlcmUgYWxsCglsb2dpY2FsIHRyYW5zZm9ybWF0aW9ucyBvZiB0aGUgc291cmNlczoKCgktIHRyeWluZyB0byBjb252ZXJ0IGFsbCBlbnVtcyBhbmQgY29uc3RhbnRzIHRvIENBUElUQUxJWkVEX1NUWUxFLAoJICAjd2l0aCBkZWZpbmUgZGVmaW5pdGlvbnMgbGlrZQoKCSAgICAjZGVmaW5lIG15X29sZF9jb25zdGFudHMgICBNWV9ORVdfQ09OU1RBTlQKCgktIGJpZywgYmlnIHVwZGF0ZSBvZiB0aGUgZG9jdW1lbnRhdGlvbiBjb21tZW50cwoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBzcmMvYmFzZS9mdG9ianMuYywKCXNyYy9zbW9vdGgvZnRzbW9vdGguYywgaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IEFkZGluZyBzdXBwb3J0Cglmb3IgTENELW9wdGltaXplZCByZW5kZXJpbmcgdGhvdWdoIHRoZSBuZXcgY29uc3RhbnRzL2VudW1zOgoKCSAgRlRfUkVOREVSX01PREVfTENELCBGVF9SRU5ERVJfTU9ERV9MQ0RfVgoJICBGVF9QSVhFTF9NT0RFX0xDRCwgIEZUX1BJWEVMX01PREVfTENEX1YKCglUaGlzIGlzIHN0aWxsIHdvcmsgaW4gcHJvZ3Jlc3MsIGRvbid0IGV4cGVjdCBldmVyeXRoaW5nIHRvIHdvcmsKCWNvcnJlY3RseSB0aG91Z2ggbW9zdCBvZiB0aGUgZmVhdHVyZXMgaGF2ZSBiZWVuIGltcGxlbWVudGVkLgoKCSogQWRkaW5nIG5ldyBGVF9MT0FEX1hYWCBmbGFncywgdXNlZCB0byBzcGVjaWZ5IGJvdGggaGludGluZyBhbmQKCXJlbmRlcmluZyB0YXJnZXRzOgoKCSAgRlRfTE9BRF9UQVJHRVRfTk9STUFMIDo6IGFudGktYWxpYXNlZCBoaW50aW5nICYgcmVuZGVyaW5nCgkgIEZUX0xPQURfVEFSR0VUX01PTk8gICA6OiBtb25vY2hyb21lIGJpdG1hcHMKCSAgRlRfTE9BRF9UQVJHRVRfTENEICAgIDo6IGhvcml6b250YWwgUkdCL0JHUiBkZWNpbWF0ZWQKCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRpbmcgJiByZW5kZXJpbmcKCSAgRlRfTE9BRF9UQVJHRVRfTENEX1YgIDo6IHZlcnRpY2FsIFJHQi9CR1IgZGVjaW1hdGVkCgkgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50aW5nICYgcmVuZGVyaW5nCgoJTm90ZSB0aGF0IEZUX0xPQURfVEFSR0VUX05PUk1BTCBpcyAwLCB3aGljaCBtZWFucyB0aGF0IHRoZSBkZWZhdWx0CgliZWhhdmlvdXIgb2YgdGhlIGZvbnQgZW5naW5lIGlzIF91bmNoYW5nZWRfLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmgKCShGVF9PdXRsaW5lX3tNb3ZlLExpbmUsQ29uaWMsQ3ViaWN9VG9fRnVuYyk6IFJlbmFtZWQgdG8uLi4KCShGVF9PdXRsaW5lX3tNb3ZlLExpbmUsQ29uaWMsQ3ViaWN9VG9GdW5jKTogVGhpcy4KCShGVF9SYXN0ZXJfU3Bhbl9GdW5jKTogUmVuYW1lZCB0byAuLi4KCShGVF9TcGFuRnVuYyk6IFRoaXMuCgkoRlRfUmFzdGVyX3tOZXcsRG9uZSxSZXNldCxTZXRfTW9kZSxSZW5kZXJ9X0Z1bmMpOiBSZW5hbWVkIHRvIC4uLgoJKEZUX1Jhc3Rlcl97TmV3LERvbmUsUmVzZXQsU2V0TW9kZSxSZW5kZXJ9RnVuY306IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRyZW5kZXIuaAoJKEZUX0dseXBoX3tJbml0LERvbmUsVHJhbnNmb3JtLEJCb3gsQ29weSxQcmVwYXJlfV9GdW5jKTogUmVuYW1lZAoJdG8gLi4uCgkoRlRfR2x5cGhfe0luaXQsRG9uZSxUcmFuc2Zvcm0sR2V0QkJveCxDb3B5LFByZXBhcmV9RnVuYyk6IFRoaXMuCgkoRlRSZW5kZXJlcl97cmVuZGVyLHRyYW5zZm9ybSxnZXRDQm94LHNldE1vZGV9KTogUmVuYW1lZCB0byAuLi4KCShGVF9SZW5kZXJlcl97UmVuZGVyRnVuYyxUcmFuc2Zvcm1GdW5jLEdldENCb3hGdW5jLFNldGVNb2RlRnVuY30pOgoJVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfUG9pbnQsIEFIX1NlZ21lbnQsIEFIX0VkZ2UsIEFIX0dsb2JhbHMsCglBSF9GYWNlX0dsb2JhbHMsIEFIX091dGxpbmUsIEFIX0hpbnRlcik6IFRoZXNlIHR5cGVkZWZzIGFyZSBub3cKCXBvaW50ZXJzIHRvIHRoZSBjb3JyZXNwb25kaW5nIGAqUmVjJyBzdHJ1Y3R1cmVzLiAgQWxsIHNvdXJjZSBmaWxlcwoJaGF2ZSBiZWVuIHVwZGF0ZWQgYWNjb3JkaW5nbHkuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9kZWNvZGVyX2luaXQpOiBBZGQgaGludCBtb2RlIGFzIHBhcmFtZXRlci4KCSogc3JjL2NmZi9jZmZnbG9hZC5oIChDRkZfRGVjb2Rlcik6IEFkZCBgaGludF9tb2RlJyBlbGVtZW50LgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChDSURfQ29tcHV0ZV9NYXhfQWR2YW5jZSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfZmFjZV9jb21wdXRlX21heF9hZHZhbmNlKTogVGhpcy4KCShDSURfTG9hZF9HbHlwaCk6IFJlbmFtZWQgdG8uLi4KCShjaWRfc2xvdF9sb2FkX2dseXBoKTogVGhpcy4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKENJRF9PcGVuX0ZhY2UpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX2ZhY2Vfb3Blbik6IFRoaXMuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfR2x5cGhTbG90X3tEb25lLEluaXR9KTogUmVuYW1lZCB0by4uLgoJKGNpZF9zbG90X3tkb25lLGluaXR9KTogVGhpcy4KCShDSURfU2l6ZV97R2V0X0dsb2JhbHNfRnVuY3MsRG9uZSxSZXNldCk6IFJlbmFtZWQgdG8uLi4KCShjaWRfc2l6ZV97Z2V0X2dsb2JhbHNfZnVuY3MsZG9uZSxyZXNldCk6IFRoaXMuCgkoQ0lEX0ZhY2Vfe0RvbmUsSW5pdH0pOiBSZW5hbWVkIHRvLi4uCgkoY2lkX2ZhY2Vfe2RvbmUsaW5pdH0pOiBUaGlzLgoJKENJRF9Ecml2ZXJfe0RvbmUsSW5pdH06IFJlbmFtZWQgdG8uLi4KCShjaWRfZHJpdmVyX3tkb25lLGluaXR9OiBUaGlzLgoJKiBzcmMvY2lkL2NpZHBhcnNlLmMgKENJRF97TmV3LERvbmV9X1BhcnNlcik6IFJlbmFtZWQgdG8uLi4KCShjaWRfcGFyc2VyX3tuZXcsZG9uZX0pOiBUaGlzLgoJKiBzcmMvY2lkL2NpZHBhcnNlLmggKENJRF9Ta2lwX3tTcGFjZXMsQWxwaGF9KTogUmVuYW1lZCB0by4uLgoJKGNpZF9wYXJzZXJfc2tpcF97c3BhY2VzLGFscGhhfSk6IFRoaXMuCgkoQ0lEX1Rve0ludCxGaXhlZCxDb29yZEFycmF5LEZpeGVkQXJyYXksVG9rZW4sVG9rZW5BcnJheX0pOiBSZW5hbWVkCgl0by4uLgoJKGNpZF9wYXJzZXJfdG9fe2ludCxmaXhlZCxjb29yZF9hcnJheSxmaXhlZF9hcnJheSx0b2tlbix0b2tlbl9hcnJheX0pOgoJVGhpcy4KCShDSURfTG9hZF97RmllbGQsRmllbGRfVGFibGUpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3BhcnNlcl9sb2FkX3tmaWVsZCxmaWVsZF90YWJsZX0pOiBUaGlzLgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKENJRF9HZXRfSW50ZXJmYWNlKTogUmVuYW1lZCB0by4uLgoJKGNpZF9nZXRfaW50ZXJmYWNlKTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19UYWJsZV8qKTogUmVuYW1lZCB0by4uLgoJKHBzX3RhYmxlXyopOiBUaGlzLgoJKFQxX0J1aWxkZXJfKik6IFJlbmFtZWQgdG8uLi4KCSh0MV9idWlsZGVyXyopOiBUaGlzLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl8qKTogUmVuYW1lZCB0by4uLgoJKHQxX2RlY29kZXJfKik6IFRoaXMuCgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChQU18qKTogUmVuYW1lZCB0by4uLgoJKHBzXyopOiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBzcmMvc2ZudC9zZmRyaXZlciAoU0ZOVF9HZXRfSW50ZXJmYWNlKTogUmVuYW1lZCB0by4uLgoJKHNmbnRfZ2V0X2ludGVyZmFjZSk6IFRoaXMuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UXyopOiBSZW5hbWVkIHRvLi4uCgkoc2ZudF8qKTogVGhpcy4KCSogc3JjL3NmbnQvdHRjbWFwLmMgKFRUX0NoYXJNYXBfe0xvYWQsRnJlZX0pOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV97bG9hZCxmcmVlfV9jaGFybWFwKTogVGhpcy4KCSogc3JjL3NmbnQvdHRjbWFwMC5jIChUVF9CdWlsZF9DTWFwcyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlX2J1aWxkX2NtYXBzKTogVGhpcy4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUXyopOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV8qKTogVGhpcy4KCSogc3JjL3NmbnQvdHRwb3N0LmMgKFRUX1Bvc3RfRGVmYXVsdF9OYW1lcyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9wb3N0X2RlZmF1bHRfbmFtZXMpOiBUaGlzLgoJKExvYWRfKik6IFJlbmFtZWQgdG8uLi4KCShsb2FkXyopOiBUaGlzLgoJKFRUXyopOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV8qKTogVGhpcy4KCSogc3JjL3NmbnQvdHRzYml0LmMgKFRUXyopOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV8qKTogVGhpcy4KCSh7RmluZCxMb2FkLENyb3B9XyopOiBSZW5hbWVkIHRvLi4uCgkoe2ZpbmQsbG9hZCxjcm9wfV8qKTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyKTogUmVuYW1lZCB0by4uLgoJKGZ0X3Ntb290aF9yZW5kZXJfZ2VuZXJpYyk6IFRoaXMuCglNYWtlIGZ1bmN0aW9uIG1vcmUgZ2VuZXJpYyBieSBhZGRpbmcgdmVydGljYWwgYW5kIGhvcml6b250YWwgc2NhbGluZwoJZmFjdG9ycy4KCShmdF9zbW9vdGhfcmVuZGVyLCBmdF9zbW9vdGhfcmVuZGVyX2xjZCwgZnRfc21vb3RoX3JlbmRlcl9sY2Rfdik6CglOZXcgZnVuY3Rpb25zLgoKCShmdF9zbW9vdGhfbG9jZF9yZW5kZXJlcl9jbGFzcywgZnRfc21vb3RoX2xjZHZfcmVuZGVyZXJfY2xhc3MpOiBOZXcKCWNsYXNzZXMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX3tEb25lLE5ld31fR2x5cGhab25lKTogUmVuYW1lZCB0by4uLgoJKHR0X2dseXBoem9uZV97ZG9uZSxuZXd9KTogVGhpcy4KCShUVF97RmFjZSxTaXplLERyaXZlcn1fKik6IFJlbmFtZWQgdG8uLi4KCSh0dF97ZmFjZSxzaXplLGRyaXZlcn1fKik6IFRoaXMuCgkqIHNyYy90cnVldHlwZS90dHBsb2FkLmMgKFRUX0xvYWRfTG9jYXRpb25zKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfbG9hZF9sb2NhKTogVGhpcy4KCShUVF9Mb2FkX1Byb2dyYW1zKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfbG9hZF9mcGdtKTogVGhpcy4KCShUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgoyMDAyLTA4LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL1ZFUlNJT04uRExMOiBOZXcgZmlsZS4KCjIwMDItMDgtMjMgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX29wZXJhdG9yX3NlYWMpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEluY3JlbWVudGFsIGZvbnRzIChhY3R1YWxseSBub3QKCWluY3JlbWVudGFsIGluIHRoZSBjYXNlIG9mIENGRiBidXQganVzdCB1c2luZyBjYWxsYmFja3MgdG8gZ2V0IGdseXBoCglyZWNpcGVzKSBwYXNzIHRoZSBjaGFyYWN0ZXIgY29kZSwgbm90IHRoZSBnbHlwaCBpbmRleCwgdG8gdGhlCglnZXRfZ2x5cGhfZGF0YSBmdW5jdGlvbjsgdGhleSBoYXZlIG5vIHZhbGlkIGNoYXJzZXQgdGFibGUuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2ZvbnRfbG9hZCk6IFJlbW92ZWQgc3BlY2lhbCBjYXNlcyBmb3IKCUZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwsIHdoaWNoIGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5OyBDRkYKCWZvbnRzIHByb3ZpZGVkIHZpYSB0aGUgaW5jcmVtZW50YWwgaW50ZXJmYWNlIG5vdyBoYXZlIHRvIGNvbmZvcm0KCW1vcmUgY2xvc2VseSB0byB0aGUgQ0ZGIGZvbnQgZm9ybWF0LgoKCSogc3JjL2NmZi9jZmZsb2FkLmggKGNmZl9mb250X2xvYWQpOiBSZW1vdmVkIGFyZ3VtZW50IG5vdyB1bm5lZWRlZC4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogQ2hhbmdlZCBjYWxsIHRvIGNmZl9mb250X2xvYWQKCXRvIGNvbmZvcm0gd2l0aCBuZXcgc2lnbmF0dXJlLgoKMjAwMi0wOC0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmplY3QuYywgc3JjL2Jhc2UvZnRzeW50aC5jLCBzcmMvYmFzZS9mdHN0cm9rZXIuYywKCXNyYy9iZGYvYmRmZHJpdnIuYzogUmVtb3ZlZCBjb21waWxlciB3YXJuaW5ncy4KCjIwMDItMDgtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2dseXBoX2NvbXB1dGVfaW5mbGVjdGlvbnMsCglwc2gzX2dseXBoX2NvbXB1dGVfZXh0cmVtYSwgcHNoM19oaW50X3RhYmxlX2ZpbmRfc3Ryb25nX3BvaW50KTogRml4Cgljb21waWxlciB3YXJuaW5ncyBhbmQgcmVzb2x2ZSBzaGFkb3dpbmcgb2YgbG9jYWwgdmFyaWFibGVzLgoKMjAwMi0wOC0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVRoZSBhdXRvbWF0aWMgYW5kIFBvc3RzY3JpcHQgaGludGVyIG5vdyBhdXRvbWF0aWNhbGx5IGRldGVjdAoJaW5mbGVjdGlvbiBwb2ludHMgaW4gZ2x5cGggb3V0bGluZXMgYW5kIHRyZWF0cyB0aGVtIHNwZWNpYWxseS4gIFRoaXMKCWlzIHZlcnkgdXNlZnVsIHRvIHByZXZlbnQgbmFzdHkgZWZmZWN0IGxpa2UgdGhlIGRpc2FwcGVhcmluZwoJZGlhZ29uYWxzIG9mIGBTJyBhbmQgYHMnIGluIG1hbnksIG1hbnkgZm9udHMuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChhaF9mbGFnX2luZmxlY3Rpb24pOiBOZXcgbWFjcm8uCgkqIHNyYy9hdXRvaGludC9haGFuZ2xlcy5jIChhaF9hbmdsZV9kaWZmKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvYXV0b2hpbnQvYWhhbmdsZXMuaDogVXBkYXRlZC4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9jb21wdXRlX2luZmxlY3Rpb25zKTogTmV3CglmdW5jdGlvbi4KCShhaF9vdXRsaW5lX2RldGVjdF9mZWF0dXJlcyk6IFVzZSBpdC4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfYWxpZ25fc3Ryb25nX3BvaW50cykKCVshQUhfT1BUSU9OX05PX1dFQUtfSU5URVJQT0xBVElPTl06IEhhbmRsZSBpbmZsZWN0aW9uLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyL2RvY21ha2VyLnB5LCBzcmMvdG9vbHMvZG9jbWFrZXIvdXRpbHMucHksCglzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5OiBVcGRhdGluZyB0aGUgRG9jTWFrZXIgdG9vbC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQ2hhbmdpbmcgdGhlIHR5cGUgb2YgdGhlIGBsb2FkX2ZsYWdzJwoJcGFyYW1ldGVyIGZyb20gYEZUX0ludCcgdG8gYEZUX0ludDMyJywgdGhpcyBpbiBvcmRlciB0byBzdXBwb3J0IG1vcmUKCW9wdGlvbnMuICBUaGlzIHNob3VsZCBvbmx5IGJyZWFrIGJpbmFyeSBhbmQvb3Igc291cmNlIGNvbXBhdGliaWxpdHkKCW9uIDE2LWJpdCBwbGF0Zm9ybXMgKEF0YXJpPykuCgkoRlRfTE9BRF9OT19BVVRPSElOVCk6IE5ldyBtYWNyby4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCUhhbmRsZSBGVF9MT0FEX05PX0FVVE9ISU5ULgoJKEZUX0xvYWRfQ2hhcik6IFVwZGF0ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYywgc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0b2JqZWN0LmMsCglzcmMvYXV0b2hpbnQvYWhnbHlwaC5jLCBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEZpeGluZyB0eXBvcwoJYW5kIHJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMi0wOC0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfR2V0X01ldHJpY3MpOiBBZGQgZ3VhcmQgZm9yIGsgPSAwLgoKMjAwMi0wOC0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLAoJc3JjL3BzaGludGVyL3BzaGdsb2IuYywgc3JjL3BzaGludGVyL3BzaHJlYy5jLAoJc3JjL2F1dG9oaW50L2FobW9kdWxlLmMgW0RFQlVHX0hJTlRFUl06IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzCgkob25seSB1c2VkIGluIGRldmVsb3BtZW50IGJ1aWxkcyBhbnl3YXkpLgoKCUltcHJvdmUgc3VwcG9ydCBvZiBsb2NhbCBleHRyZW1hIGFuZCBzdGVtIGVkZ2UgcG9pbnRzLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmggKFBTSDNfSGludF9UYWJsZVJlYyk6IFVzZSBQU0gzX1pvbmVSZWMKCWZvciBgem9uZXMnLgoJKFBTSDNfRElSX1VQLCBQU0gzX0RJUl9ET1dOKTogRXhjaGFuZ2UgdmFsdWVzLgoJKFBTSDNfRElSX0hPUklaT05UQUwsIFBTSDNfRElSX1ZFUlRJQ0FMKTogTmV3IG1hY3Jvcy4KCShQU0gzX0RJUl9DT01QQVJFLCBQU0gzX0RJUl9JU19IT1JJWk9OVEFMLCBQU0gzX0lTX1ZFUlRJQ0FMKTogTmV3CgltYWNyb3MuCgkoUFNIM19QT0lOVF9JTkZMRVgpOiBOZXcgZW51bS4KCShwc2gzX3BvaW50X3tpcyxzZXR9X3tvZmYsaW5mbGV4fSk6IE5ldyBtYWNyb3MuCgkoUFNIM19QT0lOVF97RVhUUkVNVU0sUE9TSVRJVkUsTkVHQVRJVkUsRURHRV9NSU4sRURHRV9NQVgpOiBOZXcKCWVudW0gdmFsdWVzLgoJKHBzaDNfcG9pbnRfe2lzLHNldH1fe2V4dHJlbXVtLHBvc2l0aXZlLG5lZ2F0aXZlLGVkZ2VfbWluLGVkZ2VfbWF4fSk6CglOZXcgbWFjcm9zLgoJKFBTSDNfUG9pbnRSZWMpOiBOZXcgbWVtYmVycyBgZmxhZ3MyJyBhbmQgYG9yZ192Jy4KCShQU0gzX1BPSU5UX0VRVUFMX0FSRywgUFNIM19QT0lOVF9BTkdMRSk6IE5ldyBtYWNyb3MuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyBbREVCVUdfSElOVEVSXTogUmVtb3ZpbmcgY29tcGlsZXIKCXdhcm5pbmdzLgoJKENPTVBVVEVfSU5GTEVYUyk6IE5ldyBtYWNyby4KCShwc2gzX2hpbnRfYWxpZ24pOiBTaW1wbGlmeSBzb21lIGJhc2ljIGFyaXRobWV0aWMgY29tcHV0YXRpb25zLgoJKHBzaDNfcG9pbnRfaXNfZXh0cmVtdW0pOiBSZW1vdmVkLgoJKHBzaDNfZ2x5cGhfY29tcHV0ZV9pbmZsZWN0aW9ucykgW0NPTVBVVEVfSU5GTEVYU106IE5ldyBmdW5jdGlvbi4KCShwc2gzX2dseXBoX2luaXQpIFtDT01QVVRFX0lORkxFWFNdOiBVc2UgaXQuCgkocHNoM19nbHlwaF9jb21wdXRlX2V4dHJlbWEpOiBOZXcgZnVuY3Rpb24uCgkoUFNIM19TVFJPTkdfVEhSRVNIT0xEKTogSW5jcmVhc2VkIHRvIDMwLgoJKHBzaDNfaGludF90YWJsZV9maW5kX3N0cm9uZ19wb2ludCk6IEltcHJvdmVkLgoJKHBzaDNfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzLAoJcHNoM19nbHlwaF9pbnRlcnBvbGF0ZV9zdHJvbmdfcG9pbnRzKTogVXBkYXRlZC4KCShwc2gzX2hpbnRzX2FwcGx5KTogVXNlIHBzaDNfZ2x5cGhfY29tcHV0ZV9leHRyZW1hLgoKCSogdGVzdC9ndmlldy5jIChkcmF3X3BzM19oaW50LCBwczNfZHJhd19jb250cm9sX3BvaW50cyk6IE5ldwoJZnVuY3Rpb25zLgoJT3RoZXIgc21hbGwgdXBkYXRlcy4KCgkqIEphbWZpbGU6IFNtYWxsIHVwZGF0ZXMuCgoyMDAyLTA4LTE4ICBBcmthZGl1c3ogTWlza2lld2ljeiAgPG1pc2lla0BwbGQuT1JHLlBMPgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoaW5zdGFsbCwgdW5pbnN0YWxsKTogQWRkICQoREVTVERJUikgdG8KCW1ha2UgbGlmZSBlYXNpZXIgZm9yIHBhY2thZ2UgbWFpbnRhaW5lcnMuCgoyMDAyLTA4LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfR2x5cGhfTG9hZCk6IEZpeCBjb21wdXRhdGlvbiBvZgoJaG9yaUJlYXJpbmdYLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9HbHlwaExvYWQpOiBGaXggY29tcHV0YXRpb24gb2YKCWhvcmlCZWFyaW5nWS4KCjIwMDItMDgtMTYgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCUFkZCBzdXBwb3J0IGZvciBBcHBsZSBjb21wb3NpdGUgZ2x5cGhzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAoJKFRUX0NPTkZJR19PUFRJT05fQ09NUE9ORU5UX09GRlNFVF9TQ0FMRUQpOiBOZXcgbWFjcm8uCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChPVkVSTEFQX0NPTVBPVU5ELCBTQ0FMRURfQ09NUE9ORU5UX09GRlNFVCwKCVVOU0NBTEVEX0NPTVBPTkVOVF9PRkZTRVQpOiBOZXcgbWFjcm9zIGZvciBhZGRpdGlvbmFsIE9wZW5UeXBlCglnbHlwaCBsb2FkaW5nIGZsYWdzLgoJKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBJbXBsZW1lbnQgaXQuCgoyMDAyLTA4LTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9mcmVlX2dseXBoX2RhdGEpLAoJc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9mb250X2xvYWQpOiBVc2UgRlRfVU5VU0VELgoKMjAwMi0wOC0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBJbml0aWFsaXplIGBlcnJvcicuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMi0wOC0xNSAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCUltcGxlbWVudGVkIHRoZSBpbmNyZW1lbnRhbCBmb250IGxvYWRpbmcgc3lzdGVtIGZvciB0aGUgQ0ZGIGRyaXZlci4KCVRlc3RlZCB1c2luZyB0aGUgR2hvc3RTY3JpcHQtdG8tRnJlZVR5cGUgYnJpZGdlICh1bmRlciBkZXZlbG9wbWVudCkuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9nZXRfZ2x5cGhfZGF0YSwgY2ZmX2ZyZWVfZ2x5cGhfZGF0YSk6IE5ldwoJZnVuY3Rpb25zLgoJKGNmZl9vcGVyYXRvcl9zZWFjLCBjZmZfY29tcHV0ZV9tYXhfYWR2YW5jZSwgY2ZmX3Nsb3RfbG9hZCk6IFVzZQoJdGhlbS4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9mb250X2xvYWQpOiBBZGQgYGZhY2UnIHBhcmFtZXRlci4KCUxvYWQgY2hhcnNldCBhbmQgZW5jb2Rpbmcgb25seSBpZiB0aGVyZSBhcmUgZ2x5cGhzLgoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBJbmNyZW1lbnRhbCBmb250cyBkb24ndCBuZWVkCgljaGFyYWN0ZXIgcmVjaXBlcy4KCSogc3JjL2NmZi9jZmZsb2FkLmgsIHNyYy9jZmYvY2Zmb2Jqcy5jOiBVcGRhdGVkLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQ29ycmVjdGVkIHRoZSBpbmNyZW1lbnRhbCBmb250Cglsb2FkaW5nIGltcGxlbWVudGF0aW9uIHRvIHVzZSB0aGUgbmV3IHN5c3RlbSBpbnRyb2R1Y2VkIG9uCgkyMDAyLTA4LTAxLgoKMjAwMi0wOC0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZjbWFwLmM6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMsIHNyYy9jYWNoZS9mdGNjYWNoZS5pLAoJc3JjL3Bmci9wZnJsb2FkLmMsIHNyYy9wZnIvcGZyZ2xvYWQuYzogcy9pbmRleC9pZHgvLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYzogcy9zZWxlY3QvZmRzZWxlY3QvLgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmM6IHMvd2FpdC93YWl0aW5nLy4KCjIwMDItMDgtMDEgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoVDFfT3Blbl9GYWNlKTogVG9sZXJhdGUgYSBmYWNlIHdpdGggbm8KCWNoYXJzdHJpbmdzIGlmIHRoZXJlIGlzIGFuIGluY3JlbWVudGFsIGxvYWRpbmcgaW50ZXJmYWNlLiAgVHlwZSAxCglmYWNlcyBzdXBwbGllZCBieSBQb3N0U2NyaXB0IGludGVycHJldGVycyBsaWtlIEdob3N0U2NyaXB0IHdpbGwKCXR5cGljYWxseSBub3QgcHJvdmlkZSBhbnkgY2hhcnN0cmluZ3MgYXQgbG9hZCB0aW1lLCBzbyB0aGlzIGlzCgllc3NlbnRpYWwgaWYgdGhleSBhcmUgdG8gd29yay4KCjIwMDItMDgtMDEgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglNb2RpZmllZCBpbmNyZW1lbnRhbCBsb2FkaW5nIGludGVyZmFjZSB0byBiZSBjbG9zZXIgdG8gRGF2aWQncwoJcHJlZmVyZW5jZXMuICBUaGUgaGVhZGVyIGZyZWV0eXBlLmggaXMgbm90IG5vdyBhZmZlY3RlZCwgdGhlCglpbnRlcmZhY2UgaXMgc3BlY2lmaWVkIHZpYSBhbiBGVF9QYXJhbWV0ZXIsIHRoZSBwb2ludGVyIHRvIHRoZQoJaW50ZXJmYWNlIGlzIGhpZGRlbiBpbiBhbiBpbnRlcm5hbCBwYXJ0IG9mIHRoZSBmYWNlIHJlY29yZCwgYW5kIGFsbAoJdGhlIGRlZmluaXRpb25zIGFyZSBpbiBmdGluY3JlbS5oLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCVJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJSW5jbHVkZSBGVF9JTkNSRU1FTlRBTF9ILgoJKEZUX0ZhY2VfSW50ZXJuYWxSZWMpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkCglgaW5jcmVtZW50YWxfaW50ZXJmYWNlJy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UsIEZUX09wZW5fRmFjZSkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglVcGRhdGVkLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCUZyZWUgbG9hZGVkIGdseXBoIGRhdGEgcHJvcGVybHkuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzLCBUVF9Mb2FkX0dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0ZhY2VfSW5pdCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX1BhcnNlX0dseXBoX0FuZF9HZXRfQ2hhcl9TdHJpbmcpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgkoVDFfUGFyc2VfR2x5cGgpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCUZyZWUgbG9hZGVkIGdseXBoIGRhdGEgcHJvcGVybHkuCgkoVDFfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEZyZWUgbG9hZGVkIGdseXBoIGRhdGEgcHJvcGVybHkuCgoyMDAyLTA3LTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW5jcmVtLmg6IEFkZGluZyBuZXcgZXhwZXJpbWVudGFsIGhlYWRlciBmaWxlCgl0byBkZW1vbnN0cmF0ZSBhIGBjbGVhbmVyJyBBUEkgdG8gc3VwcG9ydCBpbmNyZW1lbnRhbCBmb250IGxvYWRpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9JTkNSRU1FTlRBTF9IKTogTmV3IG1hY3JvLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLyo6IEFkZGluZyBuZXcgKG1vcmUgYWR2YW5jZWQpIHZlcnNpb24gb2YKCXRoZSBEb2NNYWtlciB0b29sLCB1c2luZyBQeXRob24ncyBzb3BoaXN0aWNhdGVkIHJlZ2V4cHMuCgoyMDAyLTA3LTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJcy9mdF9tZW1zZXQvRlRfTUVNX1NFVC8uCglzL0ZUX01FTV9TRVQvRlRfTUVNX1pFUk8vIHdoZXJlIGFwcHJvcHJpYXRlLgoKMjAwMi0wNy0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogTWFrZSBpdCB3b3JrIHdpdGggVFRDcy4KCjIwMDItMDctMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IHMvbWVtc2V0L2Z0X21lbXNldC8uCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRfZWRnZXNfMyk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2VuY29kaW5nX2xvYWQpOiBSZW1vdmUgYG1lbW9yeScgdmFyaWFibGUuCgkqIHNyYy9jZmYvY2ZmY21hcC5jIChjZmZfY21hcF9lbmNvZGluZ19pbml0KTogUmVtb3ZlIGBwc25hbWVzJwoJdmFyaWFibGUuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZW1vdmUgc3RhdGVtZW50Cgl3aXRob3V0IGVmZmVjdC4KCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyIChHZXRfQ2hhcl9JbmRleCwgR2V0X05leHRfQ2hhcik6IFJlbW92ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19oaW50X3RhYmxlX3JlY29yZCwKCXBzaDNfaGludF90YWJsZV9pbml0LCBwc2gzX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IEZpeCBlcnJvcgoJbWVzc2FnZS4KCjIwMDItMDctMjQgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYzogRml4IGZvciBidWcgcmVwb3J0ZWQgYnkgU3ZlbiBOZXVtYW5uCglbc3ZlbkBnaW1wLm9yZ10gb24gdGhlIEZyZWVUeXBlIGRldmVsb3BtZW50IGZvcnVtOiBgSWYKCUZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgaXMgdW5kZWZpbmVkICh0aGlzIGlzIHRoZSBkZWZhdWx0KSwgdGhlCglUcnVlVHlwZSBsb2FkZXIgY3Jhc2hlcyBpbiBsaW5lIDg1MiBvZiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIHdoZW4KCWl0IHRyaWVzIHRvIGFjY2VzcyBmYWNlLT5nbHlwaF9sb2NhdGlvbnMuJwoKMjAwMi0wNy0xOCAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCUFkZGVkIHR5cGVzIGFuZCBzdHJ1Y3R1cmVzIHRvIHN1cHBvcnQgaW5jcmVtZW50YWwgdHlwZWZhY2UgbG9hZGluZy4KCVRoZSBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2Ugc3RydWN0dXJlLCBkZWZpbmVkIGluIGZyZWV0eXBlLmgsIGlzCglkZXNpZ25lZCB0byBiZSBwYXNzZWQgdG8gRlRfT3Blbl9GYWNlIHRvIHByb3ZpZGUgY2FsbGJhY2sgZnVuY3Rpb25zCgl0byBvYnRhaW4gZ2x5cGggcmVjaXBlcyBhbmQgbWV0cmljcywgZm9yIGZvbnRzIGxpa2UgdGhvc2UgcGFzc2VkCglmcm9tIFBvc3RTY3JpcHQgdGhhdCBkbyBub3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBhbGwsIG9yIGFueSwgZ2x5cGgKCWluZm9ybWF0aW9uLCB3aGVuIGZpcnN0IG9wZW5lZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwpOgoJTmV3IGNvbmZpZ3VyYXRpb24gbWFjcm8gdG8gZW5hYmxlIGluY3JlbWVudGFsIGZhY2UgbG9hZGluZy4gIEJ5CglkZWZhdWx0IGl0IGlzIG5vdCBkZWZpbmVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9CYXNpY19HbHlwaF9NZXRyaWNzLAoJRlRfR2V0X0dseXBoX0RhdGFfRnVuYywgRlRfR2V0X0dseXBoX01ldHJpY3NfRnVuYywKCUZUX0luY3JlbWVudGFsX0ludGVyZmFjZV9GdW5jcywgRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBOZXcuCgkoRlRfT3Blbl9BcmdzLCBGVF9GYWNlUmVjKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IE5ldyBmaWVsZAoJYGluY3JlbWVudGFsX2ludGVyZmFjZScuCgkoRlRfT3Blbl9GbGFncykgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBOZXcgZW51bQoJYGZ0X29wZW5faW5jcmVtZW50YWwnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmg6IEluY2x1ZGUgRlRfQ09ORklHX0NPTkZJR19ILgoJKEZUX0RhdGEpOiBOZXcgc3RydWN0dXJlIHRvIHJlcHJlc2VudCBiaW5hcnkgZGF0YS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCUFkZCBwYXJhbWV0ZXIgZm9yIGluY3JlbWVudGFsIGxvYWRpbmcuCgkoRlRfT3Blbl9GYWNlKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVzZSBpbmNyZW1lbnRhbAoJaW50ZXJmYWNlLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkZWQgdGhlIGluY3JlbWVudGFsIGxvYWRpbmcgc3lzdGVtCglmb3IgdGhlIFRydWVUeXBlIGRyaXZlci4KCShjb21wdXRlX2dseXBoX21ldHJpY3MpOiBSZXR1cm4gRlRfRXJyb3IuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IENoZWNrIGZvciBvdmVycmlkaW5nIG1ldHJpY3MuCgkoVFRfTG9hZF9HbHlwaCkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBEb24ndCBsb29rIGZvcgoJdGhlIGdseXBoIHRhYmxlIHdoaWxlIGhhbmRsaW5nIGFuIGluY3JlbWVudGFsIGZvbnQuCglHZXQgZ2x5cGggb2Zmc2V0LgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9GYWNlX0luaXQpCglbRlRfQ09ORklHX09QVElPTl9JTkNPUkVNRU5UQUxdOiBBZGRlZCB0aGUgaW5jcmVtZW50YWwgbG9hZGluZwoJc3lzdGVtIGZvciB0aGUgVHJ1ZVR5cGUgZHJpdmVyLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkZWQgdGhlIGluY3JlbWVudGFsIGxvYWRpbmcgc3lzdGVtCglmb3IgdGhlIENJRCBkcml2ZXIuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCUNoYW5nZXMgdG8gc3VwcG9ydCBpbmNyZW1lbnRhbCBUeXBlIDQyIGZvbnRzOiBBc3N1bWUgYSBmb250IGhhcwoJZ2x5cGhzIGlmIGl0IGhhcyBhbiBpbmNyZW1lbnRhbCBpbnRlcmZhY2Ugb2JqZWN0LgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfUGFyc2VfR2x5cGgpOiBSZW5hbWVkIHRvLi4uCgkoVDFfUGFyc2VfR2x5cGhfQW5kX0dldF9DaGFyX1N0cmluZyk6IFRoaXMuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEFkZGVkIHN1cHBvcnQgZm9yIGluY3JlbWVudGFsbHkKCWxvYWRlZCBUeXBlIDEgZmFjZXMuCgkoVDFfUGFyc2VfR2x5cGgpOiBOZXcgZnVuY3Rpb24uCgkoVDFfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCgoyMDAyLTA3LTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQ2xlYW5pbmcgdXAgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gY29kZTsgbGluZWFyIGhhc2hpbmcgaXMgbm93IHRoZQoJZGVmYXVsdC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY2FjaGUuaCwgc3JjL2NhY2hlL2Z0Y2NhY2hlLmksCglzcmMvY2FjaGUvZnRjY2FjaGUuYyBbIUZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBSZW1vdmVkLgoJKEZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkc6IFJlbW92ZWQgYWxzby4KCglGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQUyBpcyBub3cgdGhlIGRlZmF1bHQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmggKEZUX0RyaXZlcl9DbGFzc1JlYyk6IFJlbW92ZQoJYGdldF9jaGFyX2luZGV4JyBhbmQgYGdldF9uZXh0X2NoYXInLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oLCBzcmMvYmFzZS9mdG9ianMuYywKCXNyYy9iZGYvYmRmZHJpdnIuYywgc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9wY2YvcGNmZHJpdnIuYywKCXNyYy9wZnIvcGZyZHJpdnIuYywgc3JjL3NmbnQvc2ZvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYywKCXNyYy9zZm50L3R0Y21hcDAuaCwgc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlNDIvdDQyb2Jqcy5jLCBzcmMvd2luZm9udHMvd2luZm50LmMKCVshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOiBSZW1vdmVkLiAgVGhlIG5ldyBjbWFwIGNvZGUgaXMgbm93Cgl0aGUgZGVmYXVsdC4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfQ01hcF9DaGFySW5kZXgsIFQ0Ml9DTWFwX0NoYXJOZXh0KToKCVJlbW92ZWQuCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5oOiBVcGRhdGVkLgoKCSogc3JjL2NpZC9jaWRyaXZlci5jIChDaWRfR2V0X0NoYXJfSW5kZXgsIENpZF9HZXRfTmV4dF9DaGFyKToKCVJlbW92ZWQuCgkodDFfY2lkX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jICh0dF9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAoR2V0X0NoYXJfSW5kZXgsIEdldF9OZXh0X0NoYXIpOiBSZW1vdmVkCgkodDFfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jICh0NDJfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpOiBTZWxlY3QgVW5pY29kZSBjbWFwIGJ5IGRlZmF1bHQuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9TRk5UX0hlYWRlcik6IEZpeGVkIGEgcmVjZW50IGJ1ZyB0aGF0CglwcmV2ZW50ZWQgT3BlblR5cGUgZm9udHMgdG8gYmUgcmVjb2duaXplZCBieSBGcmVlVHlwZS4KCjIwMDItMDctMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglDaGFuZ2luZyB0aGUgU0ZOVCBsb2FkZXIgdG8gY2hlY2sgZm9yIFNGTlQtYmFzZWQgZm9udCBmaWxlcwoJZGlmZmVyZW50bHkuICBXZSBub3cgaWdub3JlIHRoZSByYW5nZSBgaGVscGVyJyBmaWVsZHMgYW5kIGNoZWNrIHRoZQoJYGhlYWQnIHRhYmxlJ3MgbWFnaWMgbnVtYmVyIGluc3RlYWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoU0ZOVF9IZWFkZXJSZWMpOiBBZGQgYG9mZnNldCcKCWZpZWxkLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogTmV3IGZ1bmN0aW9uLgoJKFRUX0xvYWRfU0ZOVF9IZWFkZXJSZWMpOiBSZW5hbWVkIHRvLi4uCgkoVFRfTG9hZF9TRk5UX0hlYWRlcik6IFRoaXMuCglJbXBsZW1lbnQgbmV3IGZ1bmN0aW9uYWxpdHkuCgkqIHNyYy9zZm50L3R0bG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChzZm50X2ludGVyZmFjZSk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG9iamVjdC5jLCBzcmMvYmFzZS9mdGhhc2guYzogVXBkYXRlZCBvYmplY3Qgc3ViLXN5c3RlbQoJYW5kIGR5bmFtaWMgaGFzaCB0YWJsZSBpbXBsZW1lbnRhdGlvbiAoc3RpbGwgZXhwZXJpbWVudGFsLCBkb24ndAoJdXNlKS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGhhc2guaDogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfTGlicmFyeVJlYyk6IE5ldyBtZW1iZXIKCWBtZXRhX2NsYXNzJy4KCglGaXhpbmcgYSBidWcgaW4gdGhlIFR5cGUgMSBsb2FkZXIgdGhhdCBwcmV2ZW50ZWQgdmFsaWQgZm9udCBib3VuZGluZwoJYm94ZXMgdG8gYmUgbG9hZGVkIGZyb20gbXVsdGlwbGUgbWFzdGVyIGZvbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oIChQU19CbGVuZFJlYyk6IEFkZCBgYmJveGVzJyBmaWVsZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRmllbGRUeXBlKTogQWRkCglgVDFfRklFTERfVFlQRV9CQk9YJy4KCShUMV9GaWVsZExvY2F0aW9uKTogQWRkIGBUMV9GSUVMRF9MT0NBVElPTl9CQk9YJy4KCShUMV9GSUVMRF9CQk9YKTogTmV3IG1hY3JvLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19QYXJzZXJfTG9hZEZpZWxkKTogSGFuZGxlIFQxX0ZJRUxEX1RZUEVfQkJPWC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jICh0MV9hbGxvY2F0ZV9ibGVuZCk6IENyZWF0ZSBibGVuZC0+YmJveGVzLgoJKFQxX0RvbmVfQmxlbmQpOiBGcmVlIGJsZW5kLT5iYm94ZXMuCgkodDFfbG9hZF9rZXl3b3JkKTogSGFuZGxlIFQxX0ZJRUxEX0xPQ0FUSU9OX0JCT1guCgkocGFyc2VfZm9udF9iYm94KTogQ29tbWVudGVkIG91dC4KCSh0MV9rZXl3b3Jkcyk6IENvbW1lbnQgb3V0IGBwYXJzZV9mb250X2Jib3gnLgoJKiBzcmMvdHlwZTEvdDF0b2tlbnMuaDogRGVmaW5lIGBGb250QkJveCcgZmllbGQuCgoyMDAyLTA3LTEwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogU21hbGwgZml4IHRvIHNlbGVjdCB0aGUgVW5pY29kZSBjaGFybWFwIGJ5CglkZWZhdWx0IHdoZW4gbmVlZGVkLgoJU21hbGwgZml4IHRvIGFsbG93IE9wZW5UeXBlIGZvbnRzIHRvIHN1cHBvcnQgQWRvYmUgY2hhcm1hcHMgd2hlbgoJbmVlZGVkLgoKCSogc3JjL2NmZi9jZmZjbWFwLmMsIHNyYy9jZmYvY2ZmY21hcC5oOiBOZXcgZmlsZXMgdG8gc3VwcG9ydAoJY2hhcm1hcHMgZm9yIENGRiBmb250cy4KCgkqIHNyYy9jZmYvY2ZmLmMsIHNyYy9jZmYvSmFtZmlsZSwgc3JjL2NmZi9ydWxlcy5tazogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaCAoQ0ZGX0VuY29kaW5nUmVjKTogVXNlCglmaXhlZC1sZW5ndGggYXJyYXlzIGZvciBgc2lkcycgYW5kIGBjb2RlcycuICBBZGQgYGNvdW50JyBtZW1iZXIuCgkoQ0ZGX0ZvbnRSZWMpOiBBZGQgYHBzbmFtZXMnIG1lbWJlci4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2ZmbG9hZC5oLAoJc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9jZmYvY2Zmb2Jqcy5oLCBzcmMvY2ZmL2NmZnBhcnNlLmMsCglzcmMvY2ZmcGFyc2UuaCwgc3JjL2NmZi9jZmZnbG9hZC5jLCBzcmMvY2ZmL2NmZmdsb2FkLmg6IEFkZGluZwoJc3VwcG9ydCBmb3IgQ0ZGIGNoYXJtYXBzLCByZWZvcm1hdHRpbmcgdGhlIHNvdXJjZXMsIGFuZCByZW1vdmluZwoJc29tZSBidWdzIGluIHRoZSBFbmNvZGluZyBhbmQgQ2hhcnNldCBsb2FkZXJzLgoJTWFueSBmb250cyByZW5hbWVkIHRvIHVzZSBsb3dlcmNhc2Ugb25seToKCgkgIENGRl9CdWlsZGVyX0luaXQgLT4gY2ZmX2J1aWxkZXJfaW5pdAoJICBDRkZfQnVpbGRlcl9Eb25lIC0+IGNmZl9idWlsZGVyX2RvbmUKCSAgQ0ZGX0luaXRfRGVjb2RlciAtPiBjZmZfZGVjb2Rlcl9pbml0CgkgIENGRl9QYXJzZV9DaGFyU3RyaW5ncyAtPiBjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncwoJICBDRkZfTG9hZF9HbHlwaCAtPiBjZmZfc2xvdF9sb2FkCgkgIENGRl9Jbml0X0RlY29kZXIgLT4gY2ZmX2RlY29kZXJfaW5pdAoJICBDRkZfUHJlcGFyZV9EZWNvZGVyIC0+IGNmZl9kZWNvZGVyX3ByZXBhcmUKCSAgQ0ZGX0dldF9TdGFuZGFyZF9FbmNvZGluZyAtPiBjZmZfZ2V0X3N0YW5kYXJkX2VuY29kaW5nCgkgIENGRl9BY2Nlc3NfRWxlbWVudCAtPiBjZmZfaW5kZXhfYWNjZXNzX2VsZW1lbnQKCSAgQ0ZGX0ZvcmdldF9FbGVtZW50IC0+IGNmZl9pbmRleF9mb3JnZXRfZWxlbWVudAoJICBDRkZfR2V0X05hbWUgLT4gY2ZmX2luZGV4X2dldF9uYW1lCgkgIENGRl9HZXRfU3RyaW5nIC0+IGNmZl9pbmRleF9nZXRfc2lkX3N0cmluZwoJICBDRkZfR2V0X0ZEIC0+IGNmZl9mZF9zZWxlY3RfZ2V0CgkgIENGRl9Eb25lX0NoYXJzZXQgLT4gY2ZmX2NoYXJzZXRfZG9uZQoJICBDRkZfTG9hZF9DaGFyc2V0IC0+IGNmZl9jaGFyc2V0X2xvYWQKCSAgQ0ZGX0RvbmVfRW5jb2RpbmcgLT4gY2ZmX2VuY29kaW5nX2RvbmUKCSAgQ0ZGX0xvYWRfRW5jb2RpbmcgLT4gY2ZmX2VuY29kaW5nX2xvYWQKCSAgQ0ZGX0RvbmVfU3ViRm9udCAtPiBjZmZfc3ViZm9udF9kb25lCgkgIENGRl9Mb2FkX0ZvbnQgLT4gY2ZmX2ZvbnRfbG9hZAoJICBDRkZfRG9uZV9Gb250IC0+IGNmZl9mb250X2RvbmUKCSAgQ0ZGX1NpemVfR2V0X0dsb2JhbF9GdW5jcyAtPiBjZmZfc2l6ZV9nZXRfZ2xvYmFsX2Z1bmNzCgkgIENGRl9TaXplX0RvbmUgLT4gY2ZmX3NpemVfZG9uZQoJICBDRkZfU2l6ZV9Jbml0IC0+IGNmZl9zaXplX2luaXQKCSAgQ0ZGX1NpemVfUmVzZXQgLT4gY2ZmX3NpemVfcmVzZXQKCSAgQ0ZGX0dseXBoU2xvdF9Eb25lIC0+IGNmZl9zbG90X2RvbmUKCSAgQ0ZGX0dseXBoU2xvdF9Jbml0IC0+IGNmZl9zbG90X2luaXQKCSAgQ0ZGX1N0ckNvcHkgLT4gY2ZmX3N0cmNweQoJICBDRkZfRmFjZV9Jbml0IC0+IGNmZl9mYWNlX2luaXQKCSAgQ0ZGX0ZhY2VfRG9uZSAtPiBjZmZfZmFjZV9kb25lCgkgIENGRl9Ecml2ZXJfSW5pdCAtPiBjZmZfZHJpdmVyX2luaXQKCSAgQ0ZGX0RyaXZlcl9Eb25lIC0+IGNmZl9kcml2ZXJfZG9uZQoJICBDRkZfUGFyc2VyX0luaXQgLT4gY2ZmX3BhcnNlcl9pbml0CgkgIENGRl9QYXJzZXJfUnVuIC0+IGNmZl9wYXJzZXJfcnVuCgoJICBhZGRfcG9pbnQgLT4gY2ZmX2J1aWxkZXJfYWRkX3BvaW50CgkgIGFkZF9wb2ludDEgLT4gY2ZmX2J1aWxkZXJfYWRkX3BvaW50MQoJICBhZGRfY29udG91ciAtPiBjZmZfYnVpbGRlcl9hZGRfY29udG91cgoJICBjbG9zZV9jb250b3VyIC0+IGNmZl9idWlsZGVyX2Nsb3NlX2NvbnRvdXIKCSAgY2ZmX2V4cGxpY2l0X2luZGV4IC0+IGNmZl9pbmRleF9nZXRfcG9pbnRlcnMKCjIwMDItMDctMDkgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfbmV3KTogRml4ZWQgYSBidWcgdGhhdAoJcHJldmVudGVkIHRoZSBoaW50ZXIgZnJvbSB1c2luZyBjb3JyZWN0IHN0YW5kYXJkIHdpZHRoIGFuZCBoZWlnaHQKCXZhbHVlcywgcmVzdWx0aW5nIGluIGhpbnRpbmcgYnVncyB3aXRoIGNlcnRhaW4gZm9udHMgKGUuZy4gVXRvcGlhKS4KCjIwMDItMDctMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogQWRkZWQgY29kZSB0byByZXR1cm4KCXN1Y2Nlc3NmdWxseSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIGJpdG1hcCBnbHlwaCAodGhlCglwcmV2aW91cyBjb2RlIHNpbXBseSByZXR1cm5lZCB3aXRoIGFuIGVycm9yKS4KCgkqIGRvY3MvREVCVUcuVFhUOiBBZGRpbmcgZGVidWdnaW5nIHN1cHBvcnQgZG9jdW1lbnRhdGlvbi4KCgkqIHNyYy9iYXNlL2Z0ZGVidWcuYyAoZnRfZGVidWdfaW5pdCksIGJ1aWxkcy93aW4zMi9mdGRlYnVnLmMKCShmdF9kZWJ1Z19pbml0KSwgYnVpbGRzL2FtaWdhL3NyYy9mdGRlYnVnLmMgKGZ0X2RlYnVnX2luaXQpOiBDaGFuZ2VkCgl0aGUgc3ludGF4IG9mIHRoZSBGVDJfREVCVUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdXNlZCB0byBjb250cm9sCglkZWJ1Z2dpbmcgb3V0cHV0IChpLmUuIGxvZ2dpbmcgYW5kIGVycm9yIG1lc3NhZ2VzKS4gIEl0IG11c3Qgbm93Cglsb29rIGxpa2U6CgoJICBhbnk6NiBtZW1vcnk6NCBpbzozICAgb3IKCSAgYW55OjYsbWVtb3J5OjQsaW86MyAgIG9yCgkgIGFueTo2O21lbW9yeTo0O2lvOjMKCjIwMDItMDctMDcgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NuYXBfc3RlbSk6IEFkZGluZyBzdXBwb3J0IGZvcgoJYmx1ZSBmdXp6LgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfQmx1ZXNSZWMpOiBBZGQgYGJsdWVfZnV6eicgZmllbGQuCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoVDFfT3Blbl9GYWNlKTogSW5pdGlhbGl6ZSBgYmx1ZV9mdXp6Jy4KCglBZGRpbmcgc3VwcG9ydCBmb3IgaGludGVyLXNwZWNpZmljIGJpdCBmbGFncywgYW5kIHRoZSBuZXcKCUZUX1NldF9IaW50X0ZsYWdzIGhpZ2gtbGV2ZWwgQVBJLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9TZXRfSGludF9GbGFncyk6IE5ldyBmdW5jdGlvbi4KCShGVF9ISU5UX05PX0lOVEVHRVJfU1RFTSwgRlRfSElOVF9OT19IU1RFTV9BTElHTiwKCUZUX0hJTlRfTk9fVlNURU1fQUxJR04pOiBOZXcgbWFjcm9zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfRmFjZV9JbnRlcm5hbFJlYyk6IEFkZAoJYGhpbnRfZmxhZ3MnIG1lbWJlci4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfSGludF9GbGFncyk6IE5ldyBmdW5jdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRGVjb2RlclJlYyk6IEFkZCBgaGludF9mbGFncycKCW1lbWJlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oIChUMV9IaW50c19BcHBseUZ1bmMsCglUMl9IaW50c19BcHBseUZ1bmMpOiBBZGQgcGFyYW1ldGVyIHRvIHBhc3MgaGludCBmbGFncy4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzLAoJVDFfRGVjb2Rlcl9Jbml0KTogVXNlIGRlY29kZXItPmhpbnRfZmxhZ3MuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaCAoQ0ZGX0J1aWxkZXIpOiBBZGQgYGhpbnRfZmxhZ3MnIGZpZWxkLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9CdWlsZGVyX0luaXQpOiBTZXQgYnVpbGRlci0+aGludF9mbGFncy4KCShDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHMxX2hpbnRzX2FwcGx5KTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUKCWhpbnQgZmxhZ3MgKHVudXNlZCkuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5oOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHMyX2hpbnRzX2FwcGx5KTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUKCWhpbnQgZmxhZ3MgKHVudXNlZCkuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5oOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHMzX2hpbnRzX2FwcGx5KTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUKCWhpbnQgZmxhZ3MuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oOiBVcGRhdGVkLgoKMjAwMi0wNy0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9zbG90X2xvYWQpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0IHJldHVybmVkCglpbmNvcnJlY3QgYWR2YW5jZXMgd2hlbiB0aGUgb3V0bGluZSByZXNvbHV0aW9uIHdhcyBkaWZmZXJlbnQgZnJvbQoJdGhlIG1ldHJpY3MgcmVzb2x1dGlvbi4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jOiBzL0ZUX01FTV9TRVQvRlRfWkVSTy8gd2hlcmUgYXBwcm9wcmlhdGUuCgkoYWhfb3V0bGluZV9saW5rX3NlZ21lbnRzKTogU2xpZ2h0IGltcHJvdmVtZW50cyB0byB0aGUgc2VyaWYKCWRldGVjdGlvbiBjb2RlLiAgTW9yZSB3b3JrIGlzIG5lZWRlZCB0aG91Z2guCgoyMDAyLTA3LTAzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJU21hbGwgaW1wcm92ZW1lbnRzIHRvIHRoZSBhdXRvbWF0aWMgaGludGVyLiAgVW5ldmVuIHN0ZW0td2lkdGhzIGhhdmUKCW5vdyBkaXNhcHBlYXJlZCBhbmQgZXZlcnl0aGluZyBsb29rcyBtdWNoIGJldHRlciwgZXZlbiBpZiB0aGVyZSBhcmUKCXN0aWxsIGlzc3VlcyB3aXRoIHNlcmlmZWQgZm9udHMuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9HbG9iYWxzKTogQWRkZWQgYHN0ZHMnIGFycmF5LgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKE9QVElNX1NURU1fU05BUCk6IE5ldyAjZGVmaW5lLgoJKGFoX3NuYXBfd2lkdGgpOiBDb21tZW50ZWQgb3V0LgoJKGFoX2FsaWduX2xpbmtlZF9lZGdlKTogUmVuYW1lZCB0by4uLgoJKGFoX2NvbXB1dGVfc3RlbV93aWR0aCk6IFRoaXMuCglEb24ndCBhbGxvdyB1bmV2ZW4gc3RlbS13aWR0aHMuCgkoYWhfYWxpZ25fbGlua2VkX2VkZ2UpOiBOZXcgZnVuY3Rpb24uCgkoYWhfYWxpZ25fc2VyaWZlZF9lZGdlKTogRG9uJ3Qgc3RyZW5ndGhlbiBzZXJpZnMuCgkoYWhfaGludF9lZGdlc18zLCBhaF9oaW50ZXJfc2NhbGVfZ2xvYmFscyk6IFVwZGF0ZWQuCgoyMDAyLTA3LTAzICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCglBZGRpbmcgbmV3IGFsZ29yaXRobSBiYXNlZCBvbiBPd2VuIFRheWxvcidzIHJlY2VudCB3b3JrLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oOiBOZXcgZmlsZXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmg6IFVwZGF0ZWQuCglVc2UgcHNoYWxnbzMgYnkgZGVmYXVsdC4KCSogc3JjL3BzaGludGVyL3BzaGludGVyLmM6IEluY2x1ZGUgcHNoYWxnbzMuYy4KCgkqIHNyYy9wc2hpbnRlci9KYW1maWxlLCBzcmMvcHNoaW50ZXIvcnVsZXMubWs6IFVwZGF0ZWQuCgoyMDAyLTA3LTAxICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cyk6IEZpeCBhIGJ1ZwoJd2hlcmUsIGlmIGEgZ2x5cGggaGFzIG1vcmUgdGhhbiBoaW50IG1hc2ssIHRoZSBzZWNvbmQgbWFzayBnZXRzCglhcHBsaWVkIHRvIHBvaW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gY292ZXJlZCBieSB0aGUgZmlyc3QgbWFzay4KCjIwMDItMDctMDEgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDhfY2hhcl9uZXh0LCB0dF9jbWFwMTJfY2hhcl9uZXh0KToKCUZpeGluZyB0aGUgY21hcCA4IGFuZCAxMiBwYXJzaW5nIHJvdXRpbmVzLgoKMjAwMi0wNy0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRzeW50aC5jOiBJbmNsdWRlIEZUX1RSSUdPTk9NRVRSWV9ILgoJKEZUX091dGxpbmVfRW1ib2xkZW4pOiBSZW5hbWVkIHRvLi4uCgkoRlRfR2x5cGhTbG90X0VtYm9sZGVuKTogVGhpcy4KCVVwZGF0ZWQgdG8gbmV3IHRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zLgoJKEZUX091dGxpbmVfT2JsaXF1ZSk6IFJlbmFtZWQgdG8uLi4KCShGVF9HbHlwaFNsb3RfT2JsaXF1ZSk6IFRoaXMuCgkoZnRfbm9ybSk6IFJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzeW50aC5oOiBVcGRhdGVkLgoKMjAwMi0wNi0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9iamVjdC5oOiBVcGRhdGluZyB0aGUgb2JqZWN0CglzdWItc3lzdGVtIGRlZmluaXRpb25zIChzdGlsbCBleHBlcmltZW50YWwpLgoKCSogc3JjL2Jhc2UvZnRoYXNoLmMgKGZ0X2hhc2hfcmVtb3ZlKTogRml4aW5nIGEgc21hbGwgcmVhbGxvY2F0aW9uCglidWcuCgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9WZWN0b3JfRnJvbV9Qb2xhciwgRlRfQW5nbGVfRGlmZik6IE5ldwoJZnVuY3Rpb25zLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmg6IFVwZGF0ZWQuCgoKCUFkZGluZyBwYXRoIHN0cm9rZXIgY29tcG9uZW50ICh3b3JrIGluIHByb2dyZXNzKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2VyLmgsIHNyYy9iYXNlL2Z0c3Ryb2tlci5jOiBOZXcgZmlsZXMuCgkqIHNyYy9iYXNlL0phbWZpbGU6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9TVFJPS0VSX0gpOiBOZXcgbWFjcm8uCgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9Db21wb3NpdGVfR2x5cGgpLAoJc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9WZWN0b3JfVHJhbnNmb3JtKTogRml4ZWQgV2VybmVyJ3MgbGF0ZXN0IGZpeC4KCUZUX1ZlY3Rvcl9UcmFuc2Zvcm0gd2Fzbid0IGJ1Z2d5LCB0aGUgVHJ1ZVR5cGUgY29tcG9zaXRlIGxvYWRlciB3YXMuCgoyMDAyLTA2LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogU2V0IHRvIDMuCgoyMDAyLTA2LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTA2LTIxICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3Q0MnR5cGVzLmggKFQ0Ml9Gb250KTogUmVtb3ZlZCBzaW5jZQoJaXQgaXMgYWxyZWFkeSBpbiB0NDJvYmpzLmguCgkoVDQyX0ZhY2UpOiBVc2UgVDFfRm9udFJlYy4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYyAoRlRfR2V0X1BTX0ZvbnRfSW5mbyk6IFVwZGF0ZWQuCgkoRlRfSGFzX1BTX0dseXBoX05hbWVzKTogQ2hlY2sgZm9yIHR5cGU0MiBkcml2ZXIgbmFtZSBhbHNvLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuaDogSW5jbHVkZSBGVF9JTlRFUk5BTF9UWVBFNDJfVFlQRVNfSC4KCShUNDJfRmFjZSk6IFJlbW92ZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBpbiB0NDJ0eXBlcy5oLgoKMjAwMi0wNi0yMSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wZnJnbG9hZC5jIChwZnJfZ2x5cGhfbG9hZF9jb21wb3VuZCk6IEZpeCBsb2FkaW5nIG9mIGNvbXBvc2l0ZQoJZ2x5cGhzLgoKMjAwMi0wNi0yMSAgU3ZlbiBOZXVtYW5uICA8c3ZlbkBjb252ZXJnZW5jZS5kZT4KCgkqIHNyYy9wcmYvcGZydHlwZXMuaCAoUEZSX0tlcm5QYWlyKTogTmV3IHN0cnVjdHVyZS4KCShQRlJfUGh5Rm9udCk6IFVzZSBpdC4KCShQRlJfS2VybkZsYWdzKTogTmV3IGVudW1lcmF0aW9uLgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX2V4dHJhX2l0ZW1fbG9hZF9rZXJuaW5nX3BhaXJzKTogTmV3CglmdW5jdGlvbi4KCShwZnJfcGh5X2ZvbnRfZXh0cmFfaXRlbXMpOiBVc2UgaXQuCgkocGZyX3BoeV9mb250X2RvbmUpOiBVcGRhdGVkLgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCk6IFNldCBrZXJuaW5nIGZsYWcgY29uZGl0aW9uYWxseS4KCShwZnJfZmFjZV9nZXRfa2VybmluZyk6IE5ldyBmdW5jdGlvbi4KCSogc3JjL3Bmci9wZnJvYmpzLmg6IFVwZGF0ZWQuCgkqIHNyYy9wZnIvcGZyZHJpdnIuYyAocGZyX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoyMDAyLTA2LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUzogUHJlcGFyaW5nIHRoZSAyLjEuMiByZWxlYXNlLgoKMjAwMi0wNi0xOSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9UWVBFNDJfVFlQRVNfSC4KCSh0MV9mYWNlX2NoZWNrX2Nhc3QpOiBSZW1vdmVkLgoJKEZUX0dldF9QU19Gb250X0luZm8pOiBNYWtlIGl0IHdvcmsgd2l0aCBDSUQgYW5kIFR5cGUgNDIgZHJpdmVycwoJYWxzby4KCjIwMDItMDYtMTkgIFNlYmFzdGllbiBCQVJSRSAgPGh0dHA6Ly9iYXJyZS5ub20uZnIvY29udGFjdC5odG1sI2VtYWlsPgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jICh0NDJfcGFyc2Vfc2ZudHMpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDYtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfVmVjdG9yX1RyYW5zZm9ybSk6IEZpeCBzZXJpb3VzIHR5cG8KCSh4eSA8LT4geXgpLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogUmVwbGFjZSBgfCcgd2l0aAoJYHx8JyB0byBtYWtlIGNvZGUgZWFzaWVyIHRvIHJlYWQuCgoyMDAyLTA2LTE4ICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4uCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAodDQyX2NoZWNrX3NpemVfY2hhbmdlKTogUmVtb3ZlZC4KCShUNDJfU2l6ZV9TZXRDaGFycywgVDQyX1NpemVfU2V0UGl4ZWxzKTogVXNlIEZUX0FjdGl2YXRlX1NpemUKCWluc3RlYWQuCgkoVDQyX0dseXBoU2xvdF9Mb2FkKTogUmVtb3ZlIGNhbGwgdG8gdDQyX2NoZWNrX3NpemVfY2hhbmdlLgoKMjAwMi0wNi0xOCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wc2F1eC90MWNtYXAuYyAodDFfY21hcF9jdXN0b21fY2hhcl9pbmRleCwKCXQxX2NtYXBfY3VzdG9tX2NoYXJfbmV4dCk6IEZpeCBpbmRleCBjb21wdXRhdGlvbiAtLSBpbmRpY2VzIHN0YXJ0Cgl3aXRoIDAgYW5kIG5vdCB3aXRoIGNtYXAtPmZpcnN0LgoKCVByb3ZpZGUgZGVmYXVsdCBjaGFybWFwcy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCksIHNyYy9wY2YvcGNmZHJpdmVyLmMKCShQQ0ZfRmFjZV9Jbml0KSwgc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpLAoJc3JjL3R5cGUxL3Qxb2JqcyAoVDFfRmFjZV9Jbml0KSwgc3JjL3dpbmZvbnRzL3dpbmZudC5jCgkoRk5UX0ZhY2VfSW5pdCk6IEltcGxlbWVudCBpdC4KCjIwMDItMDYtMTcgIFN2ZW4gTmV1bWFubiAgPHN2ZW5AZ2ltcC5vcmc+CgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCk6IEZpeCB0eXBvLgoKMjAwMi0wNi0xNiAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCVVwZGF0ZWQgV2luMzIvVkMrKyBwcm9qZWN0cyB0byBpbmNsdWRlIHRoZSBuZXcgUEZSIGRyaXZlci4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDYtMTYgIEFudGhvbnkgRm9rICA8Zm9rQGRlYmlhbi5vcmc+CgoJSW5zdGFsbCBmcmVldHlwZTIubTQuCgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChpbnN0YWxsLCB1bmluc3RhbGwpOiBIYW5kbGUgaXQuCgoyMDAyLTA2LTE2ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCVNhbWUgZml4IGZvciBQRlIgZHJpdmVyLgoKCSogc3JjL3Bmci9wZnJjbWFwLmMgKHBmcl9jbWFwX2NoYXJfaW5kZXgsIHBmcl9jbWFwX2NoYXJfbmV4dCk6CglJbmNyZWFzZSByZXR1cm4gdmFsdWUgYnkgMS4KCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9zbG90X2xvYWQpOiBEZWNyZWFzZSBpbmRleCBieSAxLgoKMjAwMi0wNi0xNSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCglGaXggZ2x5cGggaW5kaWNlcyB0byBtYWtlIGluZGV4IHplcm8gYWx3YXlzIHRoZSB1bmRlZmluZWQgZ2x5cGguCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKGJkZl9jbWFwX2luaXQpOiBEb24ndCBkZWNyZWFzZQoJY21hcC0+bnVtX2VuY29kaW5ncy4KCShiZGZfY21hcF9jaGFyX2luZGV4LCBiZGZfY21hcF9jaGFyX25leHQsIEJERl9HZXRfQ2hhcl9JbmRleCk6CglJbmNyZWFzZSByZXN1bHQgYnkgMSBmb3Igbm9ybWFsIGNhc2VzLgoJKEJERl9HbHlwaF9Mb2FkKTogRGVjcmVhc2UgaW5kZXggYnkgMS4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKHBjZl9jbWFwX2NoYXJfaW5kZXgsIHBjZl9jbWFwX2NoYXJfbmV4dCwKCVBDRl9DaGFyX0dldF9JbmRleCk6IEluY3JlYXNlIHJlc3VsdCBieSAxIGZvciBub3JtYWwgY2FzZXMuCgkoUENGX0dseXBoX0xvYWQpOiBEZWNyZWFzZSBpbmRleCBieSAxLgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2dldF9lbmNvZGluZ3MpOiBEb24ndCBkZWNyZWFzZSBqIGZvcgoJYWxsb2NhdGluZyBgZW5jb2RpbmcnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgsIEZUX0dldF9HbHlwaF9OYW1lKTogRml4Cglib3VuZGluZyB0ZXN0cy4KCjIwMDItMDYtMTQgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJQWRkIG5ldyBjbWFwIHN1cHBvcnQgdG8gQkRGIGRyaXZlci4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0NNYXBSZWMpIFtGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106CglOZXcgc3RydWN0dXJlLgoJKGJkZl9jbWFwX2luaXQsIGJkZl9jbWFwX2RvbmUsIGJkZl9jbWFwX2NoYXJfaW5kZXgsCgliZGZfY21hcF9jaGFyX25leHQpIFtGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106IE5ldyBmdW5jdGlvbnMuCgkoQkRGX0dldF9DaGFyX0luZGV4KSBbIUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXTogVXNlIG9ubHkKCWNvbmRpdGlvbmFsbHkuCgkoQkRGX0ZhY2VfSW5pdCk6IEhhbmRsZSBgQVZFUkFHRV9XSURUSCcgYW5kIGBQT0lOVF9TSVpFJyBrZXl3b3Jkcy4KCUltcGxlbWVudCBuZXcgY21hcCBoYW5kbGluZy4KCShiZGZfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCjIwMDItMDYtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIE1ha2VmaWxlLCBjb25maWd1cmUsICovKi5taywgYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4sCglkb2NzL0NIQU5HRVMsIGRvY3MvSU5TVEFMTDogcy9UT1AvVE9QX0RJUi8uCgoyMDAyLTA2LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmxpYi5jOiBzL0ZUX1Nob3J0L3Nob3J0LyBmb3IgY29uc2lzdGVuY3kuCgoyMDAyLTA2LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jOiBBZGRlZCBhIG1pc3NpbmcgI2VuZGlmLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy9iZGYvYmRmbGliLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCVJlbW92ZWQgdGhlIGJ1ZyBpbiBUeXBlIDQyIGRyaXZlciB0aGF0IHByZXZlbnRlZCB1bi1oaW50ZWQgb3V0bGluZXMKCXRvIGJlIGxvYWRlZC4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Jbml0KTogQ2FsbCBGVF9Eb25lX1NpemUuCgkoVDQyX1NpemVfSW5pdCk6IENhbGwgRlRfQWN0aXZhdGVfU2l6ZS4KCSh0NDJfY2hlY2tfc2l6ZV9jaGFuZ2UpOiBOZXcgZnVuY3Rpb24uCgkoVDQyX1NpemVfU2V0Q2hhcnMsIFQ0Ml9TaXplX1NldFBpeGVscyk6IFVzZSBpdC4KCShmdF9nbHlwaHNsb3RfY2xlYXIpOiBSZXBsYWNlIEZUX01FTV9TRVQgd2l0aCBGVF9aRVJPLgoJKFQ0Ml9HbHlwaFNsb3RfTG9hZCk6IFVzZSB0NDJfY2hlY2tfc2l6ZV9jaGFuZ2UuCglJbml0aWFsaXplIG1vcmUgZmllbGRzIG9mIGBnbHlwaCcuCgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IFVwZGF0ZWQuCgoyMDAyLTA2LTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTA2LTA4ICBKdWxpdXN6IENocm9ib2N6ZWsgIDxqY2hAcHBzLmp1c3NpZXUuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jLAoJc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYywgc3JjL3Ntb290aC9mdGdyYXlzLmM6IERvbid0Cgl1c2UgYHNldGptcCcsIGBsb25nam1wJywgYW5kIGBqbXBfYnVmJyBidXQgYGZ0X3NldGptcCcsIGBmdF9sb25nam1wJywKCWFuZCBgZnRfam1wX2J1ZicuCglSZW1vdmVkIGRpcmVjdCByZWZlcmVuY2VzIHRvIDxzdGRpby5oPiBhbmQgPHNldGptcC5oPiB3aGVuCglhcHByb3ByaWF0ZSwgdG8gZXZlbnR1YWxseSByZXBsYWNlIHRoZW0gd2l0aCBhCglGVF9DT05GSUdfU1RBTkRBUkRfTElCUkFSWV9ILiAgVXNlZnVsIGZvciB0aGUgWEZyZWU4NiBGb250IFNlcnZlcgoJYmFja2VuZCBiYXNlZCBvbiBGVDIuCgoJKiBzcmMvYmFzZS9mdHR5cGUxLmMgKEZUX0hhc19QU19HbHlwaF9OYW1lcyk6IEZpeCByZXR1cm4gdmFsdWUuCgoyMDAyLTA2LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChwY2ZfY21hcF9jaGFyX25leHQpOiBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZAoJdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBpbnZhbGlkIHZhbHVlcy4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5pOiBSZW1vdmluZyBhIHR5cG8gdGhhdCBwcmV2ZW50ZWQKCXRoZSBzb3VyY2UncyBjb21waWxhdGlvbi4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9oYXNoX3VubGluayk6IEZpeGVkIGEKCWJ1ZyB0aGF0IGNhdXNlZCBuYXN0eSBtZW1vcnkgb3ZlcndyaXRlcy4gIFRoZSBoYXNoIHRhYmxlJ3MKCWJ1Y2tldHMgYXJyYXkgd2Fzbid0IGNvcnJlY3RseSByZXNpemVkIHdoZW4gc2hyaW5rZWQuCgoyMDAyLTA2LTA4ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhL3NtYWtlZmlsZSwgYnVpbGRzL2FtaWdhL21ha2VmaWxlOiBVcGRhdGVkLgoKMjAwMi0wNi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2hhc2hfdW5saW5rLCBmdGNfbm9kZV9oYXNoX2xpbmspCglbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IEZpeCByZXR1cm5lZCBlcnJvciBjb2RlLgoJRml4IGRlYnVnZ2luZyBtZXNzYWdlcy4KCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmkgKEdFTl9DQUNIRV9MT09LVVApOiBNb3ZlIGRlY2xhcmF0aW9uIG9mCglgZmFtaWx5JyBhbmQgYGhhc2gnIHVwIHRvIG1ha2UgaXQgY29tcGlsYWJsZSB3aXRoIGcrKy4KCgkqIHNyYy90eXBlNDIvdDQyZXJyb3IuaDogTmV3IGZpbGUuCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYywgc3JjL3R5cGU0Mi90NDJvYmpzLmMsCglzcmMvdHlwZTQyL3Q0MnBhcnNlLmM6IFVzZSB0NDIgZXJyb3IgY29kZXMuCgkqIHNyYy90eXBlNDIvcnVsZXMubWs6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG5hbWVzLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfU1RSRUFNX0guCgoyMDAyLTA2LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jOiBHRU5fQ0FDSEVfRkFNSUxZX0NPTVBBUkUsCglHRU5fQ0FDSEVfTk9ERV9DT01QQVJFLCBHRU5fQ0FDSEVfTE9PS1VQKSBbRlRDX0NBQ0hFX1VTRV9JTkxJTkVdOgoJTmV3IG1hY3Jvcy4KCShmdGNfY21hcF9jYWNoZV9sb29rdXApIFshRlRDX0NBQ0hFX1VTRV9JTkxJTkVdOiBUeXBlZGVmIHRvCglmdGNfY2FjaGVfbG9va3VwLgoJKEZUQ19DTWFwQ2FjaGVfTG9va3VwKTogVXBkYXRlZC4KCglBZGRpbmcgdmFyaW91cyBleHBlcmltZW50YWwgb3B0aW1pemF0aW9ucyB0byB0aGUgY2FjaGUgbWFuYWdlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY2FjaGUuaCAoRlRDX0NBQ0hFX1VTRV9JTkxJTkUsCglGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HKTogTmV3IG9wdGlvbnMuCgkoRlRDX0NhY2hlUmVjKSBbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IE5ldyBlbGVtZW50cyBgcCcsCglgbWFzaycsIGFuZCBgc2xhY2snLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKEZUQ19IQVNIX01BWF9MT0FELCBGVENfSEFTSF9NSU5fTE9BRCwKCUZUQ19IQVNIX1NVQl9MT0FEKSBbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElORywKCUZUQ19IQVNIX0lOSVRJQUxfU0laRV06IE5ldyBtYWNyb3MuCgkoZnRjX25vZGVfbXJ1X2xpbmssIGZ0Y19ub2RlX21ydV91cCk6IE9wdGltaXplZC4KCShmdGNfbm9kZV9oYXNoX3VubGluaywgZnRjX25vZGVfaGFzaF9saW5rKQoJW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBOZXcgdmFyaWFudHMuCgkoRlRDX1BSSU1FU19NSU4sIEZUQ19QUklNRVNfTUFYLCBmdGNfcHJpbWVzLCBmdGNfcHJpbWVfY2xvc2VzdCwKCUZUQ19DQUNIRV9SRVNJWkVfVEVTVCwgZnRjX2NhY2hlX3Jlc2l6ZSkKCVshRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IERlZmluZSBpdCBjb25kaXRpb25hbGx5LgoJKGZ0Y19jYWNoZV9pbml0LCBmdGNfY2FjaGVfY2xlYXIpIFtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXToKCVVwZGF0ZWQuCgkoZnRjX2NhY2hlX2xvb2t1cCkgW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBJbXBsZW1lbnQgaXQuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuaTogTmV3IGZpbGUuCgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoR0VOX0NBQ0hFX0ZBTUlMWV9DT01QQVJFLAoJR0VOX0NBQ0hFX05PREVfQ09NUEFSRSwgR0VOX0NBQ0hFX0xPT0tVUCkgW0ZUQ19DQUNIRV9VU0VfSU5MSU5FXToKCU5ldyBtYWNyb3MuCgkoZnRjX3NiaXRfY2FjaGVfbG9va3VwKSBbIUZUQ19DQUNIRV9VU0VfSU5MSU5FXTogVHlwZWRlZiB0bwoJZnRjX2NhY2hlX2xvb2t1cC4KCShGVENfU0JpdENhY2hlX0xvb2t1cCk6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmM6IFJlbW92aW5nIGR1cGxpY2F0ZSBmdW5jdGlvbi4KCjIwMDItMDYtMDcgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9SZW5kZXJfR2x5cGhfSW50ZXJuYWwpOiBDaGFuZ2VkIGRlZmluaXRpb24KCWZyb20gRlRfRVhQT1JUX0RFRiB0byBGVF9CQVNFX0RFRi4KCjIwMDItMDYtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhlZCB0aGUgYnVnIHRoYXQgcHJldmVudGVkIHRoZSBjb3JyZWN0IGRpc3BsYXkgb2YgZm9udHMgd2l0aAoJYGZ0dmlldycuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IFNwbGl0IGludG8uLi4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5oLCBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMsCglzcmMvdHlwZTQyL3Q0MnBhcnNlLmgsIHNyYy90eXBlNDIvdDQyb2Jqcy5oLCBzcmMvdHlwZTQyL3Q0Mm9ianMuYywKCXNyYy90eXBlNDIvdHlwZTQyLmM6IE5ldyBmaWxlcy4KCgkodDQyX2dldF9nbHlwaF9uYW1lLCB0NDJfZ2V0X3BzX25hbWUsIHQ0Ml9nZXRfbmFtZV9pbmRleCk6IFVzZQoJYGZhY2UtPnR5cGUxJy4KCgkoR2V0X0ludGVyZmFjZSk6IFJlbmFtZWQgdG8uLi4KCShUNDJfR2V0X0ludGVyZmFjZSk6IFRoaXMuCglVcGRhdGVkLgoJKFQ0Ml9PcGVuX0ZhY2UsIFQ0Ml9GYWNlX0RvbmUpOiBVcGRhdGVkLgoJKFQ0Ml9GYWNlX0luaXQpOiBBZGQgbmV3IGNtYXAgc3VwcG9ydC4KCVVwZGF0ZWQuCgkoVDQyX0RyaXZlcl9Jbml0LCBUNDJfRHJpdmVyX0RvbmUsIFQ0Ml9TaXplX0luaXQsIFQ0Ml9TaXplX0RvbmUsCglUNDJfR2x5cGhTbG90X0luaXQsIFQ0Ml9HbHlwaFNsb3RfRG9uZSk6IFVwZGF0ZWQuCgkoR2V0X0NoYXJfSW5kZXgsIEdldF9OZXh0X0NoYXIpOiBSZW5hbWVkIHRvLi4uCgkoVDQyX0NNYXBfQ2hhckluZGV4LCBUNDJfQ01hcF9DaGFyTmV4dCk6IFRoaXMuCglVcGRhdGVkLgoJKFQ0Ml9DaGFyX1NpemUsIFQ0Ml9QaXhlbF9TaXplKTogUmVuYW1lZCB0by4uLgoJKFQ0Ml9TaXplX1NldENoYXJzLCBUNDJfU2l6ZV9TZXRQaXhlbHMpOiBUaGlzLgoJKFQ0Ml9Mb2FkX0dseXBoKTogUmVuYW1lZCB0by4uLgoJKFQ0Ml9HbHlwaFNsb3RfTG9hZCk6IFRoaXMuCgoJKHQ0Ml9pbml0X2xvYWRlciwgdDQyX2RvbmVfbG9hZGVyKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9sb2FkZXJfaW5pdCwgdDQyX2xvYWRlcl9kb25lKTogVGhpcy4KCShUNDJfTmV3X1BhcnNlciwgVDQyX0ZpbmFsaXplX1BhcnNlcik6IFJlbmFtZWQgdG8uLi4KCSh0NDJfcGFyc2VyX2luaXQsIHQ0Ml9wYXJzZXJfZG9uZSk6IFRoaXMuCgkocGFyc2VfZGljdCk6IFJlbmFtZWQgdG8uLi4KCSh0NDJfcGFyc2VfZGljdCk6IFRoaXMuCgkoaXNfYWxwaGEsIGlzX3NwYWNlLCBoZXh2YWwpOiBSZW5hbWVkIHRvLi4uCgkodDQyX2lzX2FscGhhLCB0NDJfaXNfc3BhY2UsIHQ0Ml9oZXh2YWwpOiBUaGlzLgoJKHBhcnNlX2ZvbnRfbmFtZSwgcGFyc2VfZm9udF9iYm94LCBwYXJzZV9mb250X21hdHJpeCwKCXBhcnNlX2VuY29kaW5nLCBwYXJzZV9zZm50cywgcGFyc2VfY2hhcnN0cmluZ3MsIHBhcnNlX2RpY3QpOgoJUmVuYW1lZCB0by4uLgoJKHQ0Ml9wYXJzZV9mb250X25hbWUsIHQ0Ml9wYXJzZV9mb250X2Jib3gsIHQ0Ml9wYXJzZV9mb250X21hdHJpeCwKCXQ0Ml9wYXJzZV9lbmNvZGluZywgdDQyX3BhcnNlX3NmbnRzLCB0NDJfcGFyc2VfY2hhcnN0cmluZ3MsCgl0NDJfcGFyc2VfZGljdCk6IFRoaXMuCglVcGRhdGVkLgoKCSh0NDJfa2V5d29yZHMpOiBVcGRhdGVkLgoKCSogc3JjL3R5cGU0Mi9KYW1maWxlLCBzcmMvdHlwZTQyL2Rlc2NyaXAubW1zOiBVcGRhdGVkLgoKMjAwMi0wNi0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUFkZCA4YnBwIHN1cHBvcnQgdG8gQkRGIGRyaXZlci4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcGFyc2Vfc3RhcnQpOiBIYW5kbGUgOGJwcC4KCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfR2x5cGhfTG9hZCk6IERpdHRvLgoJKiBzcmMvYmRmL1JFQURNRTogVXBkYXRlZC4KCjIwMDItMDYtMDIgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX3BoeV9mb250X2RvbmUpOiBGcmVlIGBibHVlX3ZhbHVlcycgYXJyYXkuCgoyMDAyLTA1LTI5ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9yZWFkc3RyZWFtKTogQWxsb2NhdGUgYGJ1ZicgZHluYW1pY2FsbHkuCgkoX2JkZl9wYXJzZV9nbHlwaHMpOiBVc2UgY29ycmVjdCBzaXplIGZvciBhbGxvY2F0aW5nCglgZm9udC0+dW5lbmNvZGVkJy4KCShiZGZfbG9hZF9mb250KTogRnJlZSBhcnJheSBjb25kaXRpb25hbGx5LgoJUmV0dXJuIHByb3BlciBlcnJvciBjb2RlIGluIGNhc2Ugb2YgZmFpbHVyZS4KCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KTogTWFrZSBpdCBtb3JlIHJvYnVzdCBhZ2FpbnN0Cgl1bnVzdWFsIGZvbnRzLgoKMjAwMi0wNS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9kZXNjcmlwLm1tcywgc3JjL3R5cGU0Mi9kZXNjcmlwLm1tczogTmV3IGZpbGVzLgoJKiBkZXNjcmlwLm1tcyAoYWxsKTogVXBkYXRlZC4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcGFyc2VfZ2x5cGhzKTogRml4IHR5cG8gd2hpY2ggcHJldmVudGVkCgljb21waWxhdGlvbi4KCSogc3JjL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NjYWxlX3pvbmVzKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTA1LTI4ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhL21ha2VmaWxlLCBidWlsZHMvYW1pZ2Evc21ha2VmaWxlLAoJYW1pZ2EvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogVXBkYXRlZCB0byBpbmNsdWRlCglzdXBwb3J0IGZvciBCREYgYW5kIFR5cGU0MiBkcml2ZXJzLgoKCSogZG9jcy9tb2R1bGVzLnR4dDogVXBkYXRlZC4KCjIwMDUtMDUtMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZmlsZSBmb3IgbmV4dCByZWxlYXNlICgyLjEuMSkuCgoJKiBzcmMvYmRmL2JkZmxpYi5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR4Zjg2LmgsIHNyYy9iYXNlL2Z0eGY4Ni5jOiBOZXcgZmlsZXMuCglUaGV5IHByb3ZpZGUgYSBuZXcgQVBJIChGVF9HZXRfWDExX0ZvbnRfRm9ybWF0KSB0byByZXRyaWV2ZSBhbgoJWDExLWNvbXBhdGlibGUgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGZvbnQgZm9ybWF0IG9mIGEgZ2l2ZW4gZmFjZS4KCVRoaXMgd2FzIHB1dCBpbiBhIG5ldyBvcHRpb25hbCBiYXNlIHNvdXJjZSBmaWxlLCBjb3JyZXNwb25kaW5nIHRvIGEKCW5ldyBwdWJsaWMgaGVhZGVyIChuYW1lZCBGVF9YRlJFRTg2X0ggc2luY2UgdGhpcyBmdW5jdGlvbiBzaG91bGQKCW9ubHkgYmUgdXNlZCB3aXRoaW4gdGhlIFhGcmVlODYgZm9udCBzZXJ2ZXIgSU1PKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1hGUkVFODZfSCk6IE5ldyBtYWNybyAobm90Cglkb2N1bWVudGVkIHlldCkuCgoJKiBzcmMvYmFzZS9mdHR5cGUxLmM6IE5ldyBmaWxlLCBwcm92b2RpbmcgdHdvIG5ldyBBUEkgZnVuY3Rpb25zCgkoRlRfR2V0X1BTX0ZvbnRfSW5mbyBhbmQgRlRfSGFzX1BTX0dseXBoX05hbWVzKS4KCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWssIHNyYy9iYXNlL2Rlc2NyaXAubW1zOgoJVXBkYXRpbmcgYnVpbGQgY29udHJvbCBmaWxlcyBmb3IgdGhlIG5ldyBmaWxlcyBgZnR4Zjg2LmMnIGFuZAoJYGZ0dHlwZTEuYycgaW4gc3JjL2Jhc2UuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc2NhbGVfem9uZXMpOiBGaXhlZCBhIGJ1ZyB0aGF0CglwcmV2ZW50ZWQgZmFtaWx5IGJsdWUgem9uZXMgc3Vic3RpdHV0aW9uIGZyb20gaGFwZW5uaW5nIGNvcnJlY3RseS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRiZGYuaCBGVF9HZXRfQkRGX0NoYXJzZXRfSUQpOiBBZGRpbmcKCWRvY3VtZW50YXRpb24gY29tbWVudC4KCjIwMDItMDUtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZSk6IERvbid0IHVzZSBGVF9TVFJFQU1fUkVBRF9BVAoJYnV0IEZUX1NUUkVBTV9SRUFELgoJRGVjbGFyZSBgc3RyZWFtJyB2YXJpYWJsZS4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcGFyc2VfZ2x5cGhzKTogUmVwbGFjZSBmbG9hdGluZyBwb2ludCBtYXRoCgl3aXRoIGNhbGxzIHRvIGBGVF9NdWxEaXYnLgoKMjAwMi0wNS0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGluZyB0aGUgU0ZOVCBuYW1lIHRhYmxlIGxvYWRlciB0byBzdXBwb3J0IHZhcmlvdXMgYnVnZ3kgZm9udHMuCglJdCBub3cgaWdub3JlcyBlbXB0eSBuYW1lIGVudHJpZXMsIGVudHJpZXMgd2l0aCBpbnZhbGlkIHBvaW50ZXIKCU9mZnNldHMgYW5kIGNlcnRhaW4gZm9udHMgY29udGFpbmluZyB0YWJsZXMgd2l0aCBicm9rZW4KCWBzdG9yYWdlT2Zmc2V0JyBmaWVsZHMuCgoJTmFtZSBzdHJpbmdzIGFyZSBub3cgbG9hZGVkIG9uIGRlbWFuZCwgd2hpY2ggcmVkdWNlcyB0aGUgbWVtb3J5CglyZXF1aXJlbWVudHMgZm9yIGEgZ2l2ZW4gRlRfRmFjZSB0cmVtZW5kb3VzbHkgKGZvciBleGFtcGxlLCB0aGUgbmFtZQoJdGFibGUgb2YgQXJpYWwudHRmIGlzIGFib3V0IDEwS2IgYW5kIGNvbnRhaW5zIDcwIG5hbWVzKS4KCglUaGlzIGlzIGEgdGVtcG9yYXJ5IGZpeC4gIFRoZSB3aG9sZSBuYW1lIHRhYmxlIGxvYWRlciBhbmQgaW50ZXJmYWNlCgl3aWxsIGJlIHJld3JpdHRlbiBpbiBhIG11Y2ggbW9yZSBjbGVhbmx5IHdheSBzaG9ydGx5LCBvbmNlIENTRUggaGF2ZQoJYmVlbiBpbnRyb2R1Y2VkIGluIHRoZSBzb3VyY2VzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX05hbWVFbnRyeVJlYyk6IENoYW5nZQoJdHlwZSBvZiBgc3RyaW5nT2Zmc2V0JyB0byBGVF9VTG9uZy4KCShUVF9OYW1lVGFibGVSZWMpOiBDaGFuZ2UgdHlwZSBvZiBgbnVtTmFtZVJlY29yZHMnIGFuZAoJYHN0b3JhZ2VPZmZzZXQnIHRvIEZUX1VJbnQuCglSZXBsYWNlIGBzdG9yYWdlJyB3aXRoIGBzdHJlYW0nLgoJKiBzcmMvYmFzZS9mdG5hbWVzLmMgKEZUX0dldF9TZm50X05hbWUpOiBMb2FkIG5hbWUgb24gZGVtYW5kLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBEaXR0by4KCU1ha2UgY29kZSBtb3JlIHJvYnVzdC4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFRUX05hbWVFbnRyeV9Db252ZXJ0RnVuYyk6IE5ldyB0eXBlZGVmLgoJKHR0X2ZhY2VfZ2V0X25hbWUpOiBVc2UgaXQuCglNYWtlIGNvZGUgbW9yZSByb2J1c3QuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX05hbWVzKTogVXNlIGBzdGF0aWMnIGZvciBhcnJheXMuCglIYW5kbGUgaW52YWxpZCBgc3RvcmFnZU9mZnNldCcgZGF0YSBiZXR0ZXIuCglTZXQgbGVuZ3RoIGZpZWxkcyB0byB6ZXJvIGZvciBpbnZhbGlkIG9yIGlnbm9yZWQgZGF0YS4KCVJlbW92ZSBjb2RlIHdpdGhpbiBGVF9ERUJVR19MRVZFTF9UUkFDRS4KCShUVF9GcmVlX05hbWVzKTogVXBkYXRlZC4KCjIwMDItMDUtMjQgIFRpbSBNb29uZXkgIDxlbmNoYW50ZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogYnVpbGRzL3VuaXgvZnQtbXVubWFwLm00OiBOZXcgZmlsZSwgZXh0cmFjdGVkIEZUX01VTk1BUF9ERUNMIGFuZAoJRlRfTVVOTUFQX1BBUkFNIGZyb20gYWNsb2NhbC5tNCBpbnRvIGhlcmUsIHNvIGFjbG9jYWwubTQgY2FuIGJlCglyZWJ1aWx0IGZyb20gc291cmNlcy4gIFNldCBtYWNybyBzZXJpYWwgdG8gMSwgYW5kIHVzZSB0aGlyZCBhcmd1bWVudAoJdG8gQUNfREVGSU5FIGZvciBvdXIgdHdvIGN1c3RvbSBzeW1ib2xzLCBzbyBmdGNvbmZpZy5pbiBjb3VsZCBvbmUgZGF5CgliZSByZWJ1aWx0IHdpdGggYXV0b2hlYWRlciAobm90IHJlY29tbWVuZGVkIG5vdywgZnRjb25maWcuaW4gaXMgYQoJY3VzdG9tIHNvdXJjZSBmaWxlKQoKMjAwMi0wNS0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfQkVaSUVSX0gpOiBSZW1vdmVkLgoJKEZUX0JERl9IKTogTmV3IG1hY3JvIGZvciBhY2Nlc3NpbmcgYGZ0YmRmLmgnLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jIChoZXh2YWwpOiBGaXggdHlwby4KCjIwMDItMDUtMjEgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFQxUmFkaXgpOiBOZXcgZnVuY3Rpb24uCgkodDFfdG9pbnQpOiBVc2UgaXQgdG8gaGFuZGxlIG51bWJlcnMgaW4gcmFkaXggZm9ybWF0LgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiBBZGQgZHVtbXkKCWZvciB1bmRvY3VtZW50ZWQsIG9ic29sZXRlIG9wY29kZSAxNS4KCjIwMDItMDUtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iZGYvYmRmbGliLmM6IFJlbW92ZWQgY29tcGlsZXIgd2FybmluZywgYW5kIGNoYW5nZWQgYWxsIHRhYmxlcwoJdG8gdGhlIGBzdGF0aWMgY29uc3QnIHN0b3JhZ2Ugc3BlY2lmaWVyIChpbnN0ZWFkIG9mIHNpbXBseQoJYHN0YXRpYycpLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jIChoZXh2YWwpOiBVc2UgbW9yZSBlZmZpY2llbnQgY29kZS4KCVJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGJkZi5oLCBzcmMvYmFzZS9mdGJkZi5jLAoJc3JjL2Jhc2UvZGVzY3JpcC5tbXMsIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rCgkoRlRfR2V0X0JERl9DaGFyc2V0X0lEKTogTmV3IEFQSSB0byByZXRyaWV2ZSBCREYtc3BlY2lmaWMgc3RyaW5ncwoJZnJvbSBhIGZhY2UuICBUaGlzIGlzIG11Y2ggY2xlYW5lciB0aGFuIGFjY2Vzc2luZyB0aGUgaW50ZXJuYWwgdHlwZXMKCWBCREZfUHVibGljX0ZhY2UnIGRlZmluZWQgaW4gRlRfSU5URVJOQUxfQkRGX1RZUEVTX0guCgoyMDAyLTA1LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL1JFQURNRTogTWVudGlvbiBNaWNyb3NvZnQncyBTQklUIHRvb2wuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jaWQvY2lkcml2ZXIuYywgc3JjL3BjZi9wY2Zkcml2ZXIuYywKCXNyYy90cnVldHlwZS90dGRyaXZlci5jLCBzcmMvdHlwZTEvdDFkcml2ZXIuYywKCXNyYy93aW5mb250cy93aW5mbnQuYywgc3JjL3R5cGU0Mi90NDJkcml2ci5jLCBzcmMvYmRmL2JkZmRyaXZyLmMKCVtGVF9DT05GSUdfT1BUSU9OX0RZTkFNSUNfRFJJVkVSU106IENvbXBsZXRlbHkgcmVtb3ZlZC4gIEl0IGhhcwoJYmVlbiBuZXZlciB1c2VkLgoKMjAwMi0wNS0yMSAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+LgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jOiBzL1Q0Ml9FTkNPRElOR19UWVBFXy9UMV9FTkNPRElOR19UWVBFXy8uCgkocGFyc2VfZm9udF9tYXRyaXgpOiBSZW1vdmUgdW5uZWNlc3NhcnkgY29kZS4KCShwYXJzZV9zZm50cyk6IEluaXRpYWxpemUgc29tZSB2YXJpYWJsZXMuCgkodDQyX2RyaXZlcl9jbGFzcykgW1RUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVJdOiBVc2UKCWZ0X21vZHVsZV9kcml2ZXJfaGFzX2hpbnRlciBjb25kaXRpb25hbGx5LgoJTW92ZWQgc29tZSB0eXBlIDQyIHNwZWNpZmljIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3Q0MnR5cGVzLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX1Q0Ml9UWVBFU19IKToKCU5ldyBtYWNyby4KCjIwMDItMDUtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjc2JpdHMuaCAoRlRDX1NCaXQpOiBBZGRlZCBhIG5ldyBmaWVsZAoJYG51bV9ncmF5cycgZm9yIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiB1c2VkIGdyYXkgbGV2ZWxzLgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9sb2FkKTogSW5pdGlhbGl6ZSBpdC4KCjIwMDItMDUtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGRpbmcgYSBkcml2ZXIgZm9yIEJERiBmb250cyB3cml0dGVuIGJ5IEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaQoJPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+LiAgSGVhdmlseSBtb2RpZmllZCBieSBtZSB0bwoJYmV0dGVyIGFkYXB0IGl0IHRvIEZyZWVUeXBlLCByZW1vdmluZyB1bm5lZWRlZCBzdHVmZi4gIEFkZGl0aW9uYWxseSwKCWl0IG5vdyBzdXBwb3J0cyBNYXJrIExlaXNoZXIncyBCREYgZXh0ZW5zaW9uIGZvciBhbnRpLWFsaWFzZWQKCWJpdG1hcCBnbHlwaHMgd2l0aCAyIGFuZCA0IGJwcC4KCgkqIHNyYy9iZGYvKjogTmV3IGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9iZGZ0eXBlcy5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmg6IEFkZGVkIEJERiBkcml2ZXIgY29tcG9uZW50cy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycmRlZi5oOiBBZGRlZCBlcnJvciBjb2RlcyBmb3IgQkRGIGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCwgc3JjL0phbWZpbGU6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfQkRGX1RZUEVTX0gpOgoJTmV3IG1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCAoZnRfc3ByaW50Zik6IE5ldyBhbGlhcyBmb3IKCXNwcmludGYuCgoyMDAyLTA1LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogQWRkZWQgVHlwZSA0MiBkcml2ZXIKCWNvbXBvbmVudC4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jOiBVc2UgaXQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX1BDRl9UWVBFU19IKToKCU5ldyBtYWNyby4KCjIwMDItMDUtMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlNDIvSmFtZmlsZTogTmV3IGZpbGUuCgoyMDAyLTA1LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQWRkaW5nIGEgZHJpdmVyIGZvciBUeXBlNDIgZm9udHMgd3JpdHRlbiBieSBSb2JlcnRvIEFsYW1lZGEKCTxvamFuY2Fub0BnZWVrbWFpbC5kZT4uCgoJKiBzcmMvdHlwZTQyLyo6IE5ldyBkcml2ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgsIHNyYy9KYW1maWxlOiBVcGRhdGVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF94ZGlnaXQsIGZ0X21lbWNtcCwKCWZ0X2F0b2kpOiBOZXcgYWxpYXNlcyBmb3IgeGRpZ2l0LCBtZW1jbXAsIGFuZCBhdG9pLCByZXNwZWN0aXZlbHkuCgoyMDAyLTA1LTEyICBPd2VuIFRheWxvciAgPG90YXlsb3JAcmVkaGF0LmNvbT4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb29rVXBfVGFibGUpOiBQcm90ZWN0IGFnYWluc3QgdGFibGVzCgl3aXRoIGEgemVybyBsZW5ndGggdmFsdWUuCgoyMDAyLTA1LTEyICBNaWNoYWVsIFBmZWlmZmVyICA8bWljaGFlbC5wZmVpZmZlckB1dGFuZXQuYXQ+CgoJKiBidWlsZHMvYmVvcy9iZW9zLm1rOiBJbmNsdWRlIGBsaW5rLXN0ZC5taycuCgoyMDAyLTA1LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmggKFQxX0xvYWRlcik6IFJlbmFtZWQgdG8uLi4KCShUMV9Mb2FkZXJSZWMpOiBUaGlzLgoJKFQxX0xvYWRlcik6IE5vdyBwb2ludGVyIHRvIFQxX0xvYWRlclJlYy4KCSogc3JjL3R5cGUxL3QxbG9hZC5jOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmgsIHNyYy90eXBlMS90MWxvYWQuYywKCXNyYy90eXBlMS90MW9ianMuYzoKCXMvVDFfRU5DT0RJTkdfVFlQRV9FWFBPUlQvVDFfRU5DT0RJTkdfVFlQRV9FWFBFUlQvLgoKMjAwMi0wNS0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogUkVBRE1FOiBBZGQgYSBub3RlIHJlZ2FyZGluZyBsaWJ0dGYgdnMuIGxpYmZyZWV0eXBlLgoKMjAwMi0wNS0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUZyZWVUeXBlIDIgY2FuIG5vdyBiZSBidWlsdCBpbiBhbiBleHRlcm5hbCBkaXJlY3Rvcnkgd2l0aCB0aGUKCWNvbmZpZ3VyZSBzY3JpcHQgYWxzby4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoSU5DTFVERVMpOiBBZGQgYE9CSl9ESVInLgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rIChoYXZlX21rKTogTmV3IHZhcmlhYmxlIHRvIHRlc3QgZm9yCglleHRlcm5hbCBidWlsZC4KCSh1bml4LWRlZi5tayk6IERlZmluZWQgYWNjb3JkaW5nIHRvIHZhbHVlIG9mIGBoYXZlX21rJy4KCSogYnVpbGRzL3VuaXgvdW5peC5tayAoaGF2ZV9tayk6IE5ldyB2YXJpYWJsZSB0byB0ZXN0IGZvcgoJZXh0ZXJuYWwgYnVpbGQuCglTZWxlY3QgaW5jbHVkZSBwYXRocyBmb3IgdW5peC1kZWYubWsgYW5kIHVuaXgtY2MubWsgYWNjb3JkaW5nCgl0byB2YWx1ZSBvZiBgaGF2ZV9taycuCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluIChPQkpfQlVJTEQpOiBOZXcgdmFyaWFibGUuCgkoRElTVENMRUFOKTogVXNlIGl0LgoJKiBidWlsZHMvdW5peC91bml4LWNjLmluIChMSUJUT09MKTogRGVmaW5lIGRlZmF1bHQgdmFsdWUgb25seQoJaWYgbm90IHlldCBkZWZpbmVkLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChpbnN0YWxsKTogVXNlIGBPQkpfQlVJTEQnIGZvciBpbnN0YWxsaW5nCglmcmVldHlwZS1jb25maWcuCgoJKiBjb25maWd1cmU6IERvbid0IGRlcGVuZCBvbiBiYXNoIGZlYXR1cmVzLgoJKGZ0Ml9kaXIsIGFic19jdXJyX2RpciwgYWJzX2Z0Ml9kaXIpOiBOZXcgdmFyaWFibGVzIChjb2RlCglwYXJ0aWFsbHkgdGFrZW4gZnJvbSBBdXRvY29uZikuCglCdWlsZCBhIGR1bW15IE1ha2VmaWxlIGlmIG5vdCBidWlsZGluZyBpbiBzb3VyY2UgdHJlZS4KCgkqIGRvY3MvSU5TVEFMTDogRG9jdW1lbnQgaXQuCgoyMDAyLTA1LTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoKTogRmluYWxseSBmaXhpbmcgdGhlIGxhc3QKCWJ1ZyB0aGF0IHByZXZlbnRlZCBGcmVlVHlwZSAyLnggYW5kIEZyZWVUeXBlIDEueCB0byBwcm9kdWNlCgliaXQtYnktYml0IGlkZW50aWNhbCBtb25vY2hyb21lIGdseXBoIGJpdG1hcHMgd2l0aCBuYXRpdmUgVHJ1ZVR5cGUKCWhpbnRpbmcuICBUaGUgY3VscHJpdCB3YXMgYSBzaW5nbGUtYml0IGZsYWcgdGhhdCB3YXNuJ3Qgc2V0Cgljb3JyZWN0bHkgYnkgdGhlIFRydWVUeXBlIGdseXBoIGxvYWRlci4KCgkqIHNyYy9vdGxheW91dC9vdGxheW91dC5oLCBzcmMvb3RsYXlvdXQvb3RsYmFzZS5jLAoJc3JjL290bGF5b3V0L290bGJhc2UuaCwgc3JjL290bGF5b3V0L290bGNvbmYuaCwKCXNyYy9vdGxheW91dC9vdGxnZGVmLmMsIHNyYy9vdGxheW91dC9vdGxnZGVmLmgsCglzcmMvb3RsYXlvdXQvb3RsZ3Bvcy5jLCBzcmMvb3RsYXlvdXQvb3RsZ3Bvcy5oLAoJc3JjL290bGF5b3V0L290bGdzdWIuYywgc3JjL290bGF5b3V0L290bGdzdWIuaCwKCXNyYy9vdGxheW91dC9vdGxqc3RmLmMsIHNyYy9vdGxheW91dC9vdGxqc3RmLmgsCglzcmMvb3RsYXlvdXQvb3RsdGFibGUuYywgc3JjL290bGF5b3V0L290bHRhYmxlLmgsCglzcmMvb3RsYXlvdXQvb3RsdGFncy5oOiBOZXcgT3BlblR5cGUgTGF5b3V0IHNvdXJjZSBmaWxlcy4gIFRoZQoJbW9kdWxlIGlzIHN0aWxsIGluY29tcGxldGUuCgoyMDAyLTA1LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X2NoYXJfaW5kZXgpOiBGaXggc2VyaW91cyB0eXBvCgkoMHhGRkZVIC0+IDB4RkZGRlUpLgoKMjAwMi0wNS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9JTlNUQUxMOiBGaXggVVJMIG9mIG1ha2VwcC4KCjIwMDItMDUtMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9mYWNlX2dldF9uYW1lKTogRml4aW5nIGEgYnVnIHRoYXQgY2F1c2VkCglGcmVlVHlwZSB0byBjcmFzaCB3aGVuIGNlcnRhaW4gYnJva2VuIGZvbnRzIChlLmcuIGBoeWE2Z2IudHRmJykKCXdlcmUgb3BlbmVkLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpOiBBcHBsaWVkIGEgc21hbGwgd29yay1hcm91bmQgdG8KCW1hbmFnZSBmb250cyBjb250YWluaW5nIGEgYnJva2VuIG5hbWUgdGFibGUgKGUuZy4gYGh5YTZnYi50dGYnKS4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfdmFsaWRhdGUpOiBGaXhlZCBvdmVyLXJlc3RyaWN0aXZlCgl2YWxpZGF0aW9uIHRlc3QuICBUaGUgY2hhcm1hcCB2YWxpZGF0b3Igbm93IGFjY2VwdHMgb3ZlcmxhcHBpbmcKCXJhbmdlcyBpbiBmb3JtYXQgNCBjaGFybWFwcy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9pbmRleCk6IFN3aXRjaGVkIHRvIGEgYmluYXJ5CglzZWFyY2ggYWxnb3JpdGhtLiAgQ2VydGFpbiBmb250cyBjb250YWluIG1vcmUgdGhhbiAxNzAgZGlzdGluY3QKCXNlZ21lbnRzIQoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaDogQWRkaW5nIGFuIGFsaWFzIGZvciB0aGUgYGV4aXQnCglmdW5jdGlvbi4gIFRoaXMgd2lsbCBiZSB1c2VkIGluIHRoZSBuZWFyIGZ1dHVyZSB0byBwYW5pYyBpbiBjYXNlIG9mCgl1bmV4cGVjdGVkIGV4Y2VwdGlvbiAod2hpY2ggc2hvdWxkbid0IGhhcHBlbiBpbiB0aGVvcnkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGhhc2guaCwgc3JjL2Jhc2UvZnRoYXNoLmM6IE5ldyBmaWxlcy4KCVRoaXMgaXMgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiBkeW5hbWljIGhhc2ggdGFibGVzIHVzaW5nIGEgbGluZWFyCglhbGdvcml0aG0gKHRvIGdldCByaWQgb2YgYHN0YWxscycgZHVyaW5nIHJlc2l6ZXMpLiAgSW4gdGhlIGZ1dHVyZQoJdGhpcyB3aWxsIGJlIHVzZWQgaW4gYXQgbGVhc3QgdGhyZWUgcGFydHMgb2YgdGhlIGxpYnJhcnk6IHRoZSBjYWNoZQoJc3ViLXN5c3RlbSwgdGhlIG9iamVjdCBzdWItc3lzdGVtLCBhbmQgdGhlIG1lbW9yeSBkZWJ1Z2dlci4KCgkqIHNyYy9iYXNlL0phbWZpbGU6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX0hBU0hfSCwKCUZUX0lOVEVSTkFMX09CSkVDVF9IKTogTmV3IG1hY3Jvcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjb3JlLmg6IE5ldyBmaWxlIHRvIGdyb3VwIGFsbCBuZXcKCWRlZmluaXRpb25zIHJlbGF0ZWQgdG8gZXhjZXB0aW9uIGhhbmRsaW5nIGFuZCBtZW1vcnkgbWFuYWdlbWVudC4gIEl0CglpcyB2ZXJ5IGxpa2VseSB0aGF0IHRoaXMgZmlsZSB3aWxsIGRpc2FwcGVhciBvciBiZSByZW5hbWVkIGluIHRoZQoJZnV0dXJlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9iamVjdC5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzbWVtLmg6CglBZGRpbmcgY29tbWVudHMgdG8gYmV0dGVyIGV4cGxhaW4gdGhlIG9iamVjdCBzdWItc3lzdGVtIGFzIHdlbGwgYXMKCXRoZSBuZXcgbWVtb3J5IG1hbmFnZXIgaW50ZXJmYWNlLgoKMjAwMi0wNC0zMCAgV2VubGluIEluc3RpdHV0ZSAoVG9tIEJpc2hvcCkgIDx3ZW5saW5Ad2VubGluLmNvbT4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKHAyY19zdHIpOiBSZW1vdmVkLgoJKGZpbGVfc3BlY19mcm9tX3BhdGgpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOiBBZGRlZCBzdXBwb3J0IGZvcgoJT1MgWC4KCShpc19kZm9udCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06IERlZmluZSBvbmx5IGZvciBPUyBYLgoJSGFuZGxlIGBuYW1lTGVuJyA8PSA2IGFsc28uCgkocGFyc2VfZm9uZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG5hbWVfdGFibGUnLgoJVXNlIGZ1bmN0aW9uYWxpdHkgb2Ygb2xkIHAyY19zdHIgZGlyZWN0bHkuCglBZGQgc2FmZXR5IGNoZWNrcy4KCShyZWFkX2x3Zm4pOiBJbml0aWFsaXplIGBzaXplX3AnLgoJQ2hlY2sgZm9yIHNpemVfcCA9PSBOVUxMLgoJKG5ld19tZW1vcnlfc3RyZWFtLCBvcGVuX2ZhY2VfZnJvbV9idWZmZXIpOiBVcGRhdGVkIHRvIEZyZWVUeXBlIDIuMS4KCShGVF9OZXdfRmFjZV9Gcm9tX0xXRk4pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBtZW1vcnknLgoJUmVtb3ZlIHNvbWUgZGVhZCBjb2RlLgoJKEZUX05ld19GYWNlX0Zyb21fU0ZOVCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHN0cmVhbScuCgkoRlRfTmV3X0ZhY2VfRnJvbV9kZm9udCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06IERlZmluZSBvbmx5IGZvcgoJT1MgWC4KCShGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBlcnJvcicuCgkoUmVzb3VyY2VGb3JrU2l6ZSk6IE5ldyBmdW5jdGlvbi4KCShGVF9OZXdfRmFjZSk6IFVzZSBpdC4KCUhhbmRsZSBlbXB0eSByZXNvdXJjZSBmb3Jrcy4KCUNvbmRpdGlvbmFsaXplIHNvbWUgY29kZSBmb3IgT1MgWC4KCUFkZCBjb2RlIHRvIGNhbGwgbm9ybWFsIGxvYWRlciBhcyBhIGZhbGxiYWNrLgoKMjAwMi0wNC0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCWBpbnRlcmZhY2UnIGlzIHJlc2VydmVkIG9uIHRoZSBNYWMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgsCglzcmMvYmFzZS9mdG91dGxuLmM6IHMvaW50ZXJmYWNlL2Z1bmNfaW50ZXJmYWNlLy4KCSogc3JjL2Jhc2UvZnRiYm94LmMgKEZUX091dGxpbmVfR2V0X0JCb3gpOgoJcy9pbnRlcmZhY2UvYmJveF9pbnRlcmZhY2UvLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IHMvaW50ZXJmYWNlL21vZHVsZV9pbnRlcmZhY2UvLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZsb2FkLmg6CglzL2ludGVyZmFjZS9wc25hbWVzX2ludGVyZmFjZS8uCgkqIHNyYy9jaWQvY2lkcml2ZXIuYzogcy9pbnRlcmZhY2UvY2lkX2ludGVyZmFjZS8uCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IHMvaW50ZXJmYWNlL21vZHVsZV9pbnRlcmZhY2UvLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogcy9pbnRlcmZhY2UvZnVuY19pbnRlcmZhY2UvLgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYzogcy9pbnRlcmZhY2UvdHRfaW50ZXJmYWNlLy4KCSogc3JjL3R5cGUxL3QxZHJpdmVyLmM6IHMvaW50ZXJmYWNlL3QxX2ludGVyZmFjZS8uCgoJU29tZSBtb3JlIHZhcmlhYmxlIHJlbmFtZXMgdG8gYXZvaWQgdHJvdWJsZXMgb24gdGhlIE1hYy4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzoKCXMvVW5rbm93bnxBc2NlbmRpbmd8RGVzY2VuZGluZ3xGbGF0L1wxX1N0YXRlLy4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmM6IHMvVFNjYW4vVENvb3JkLy4KCglPdGhlciBjaGFuZ2VzIGZvciB0aGUgTWFjLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogRGVmaW5lIEZUX01BQ0lOVE9TSCBmb3IKCU1hYyBwbGF0Zm9ybXMuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBzL21hY2ludG9zaC9GVF9NQUNJTlRPU0gvLgoKCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogTWFrZSBgcGl0Y2gnIGFsd2F5cwoJYW4gZXZlbiBudW1iZXIuCgoyMDAyLTA0LTI5ICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBkZXNjcmlwLm1tcyAoYWxsKTogQWRkIHBmciBkcml2ZXIuCgoyMDAyLTA0LTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGZyL3BmcmVycm9yLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmg6IEFkZCBQRlIgZXJyb3IgY29kZXMuCgkqIHNyYy9wZnIvcGZyZ2xvYWQuYzogSW5jbHVkZSBwZnJlcnJvci5oLgoJVXNlIFBDRiBlcnJvciBjb2Rlcy4KCShwZnJfZXh0cmFfaXRlbV9sb2FkX3N0ZW1fc25hcHMpOiBGaXggZGVidWcgbWVzc2FnZS4KCSogc3JjL3Bmci9wZnJnbG9hZC5jOiBJbmNsdWRlIHBmcmVycm9yLmguCglVc2UgUENGIGVycm9yIGNvZGVzLgoJKHBmcl9leHRyYV9pdGVtX2xvYWRfYml0bWFwX2luZm8sIHBmcl9nbHlwaF9sb2FkX3NpbXBsZSwKCXBmcl9nbHlwaF9sb2FkX2NvbXBvdW5kKTogRml4IGRlYnVnIG1lc3NhZ2UuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jOiBJbmNsdWRlIHBmcmVycm9yLmguCglVc2UgUENGIGVycm9yIGNvZGVzLgoJKHBmcl9mYWNlX2luaXQpOiBSZXR1cm4gUEZSX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0LgoJKiBzcmMvcGZyL3J1bGVzLm1rIChQRlJfRFJWX0gpOiBJbmNsdWRlIHBmcmVycm9yLmguCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRmFjZV9Jbml0KSBbIUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXToKCWByb290JyAtPiBgZmFjZS0+cm9vdCcuCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAoVFRfQnVpbGRfQ01hcHMpIFshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOgoJUmVtb3ZlZC4KCSogc3JjL3NmbnQvdHRjbWFwMC5jOiBEZWNsYXJlIFRUX0J1aWxkX0NNYXBzIG9ubHkgZm9yCglGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQUy4KCjIwMDItMDQtMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfY2FjaGVfbG9va3VwKSwKCXNyYy9jYWNoZS9mdGNjbWFwLmMgKGZ0Y19jbWFwX2ZhbWlseV9pbml0KSwKCXNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfZmFtaWx5X3RhYmxlX2FsbG9jKSwKCXNyYy9jYWNoZS9mdGNzYml0cy5jIChGVENfU0JpdF9DYWNoZV9Mb29rdXApOiBVc2UgRlRDX0Vycl8qLgoJc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKEZUQ19JbWFnZV9DYWNoZV9Mb29rdXApOiBVc2UgRlRDX0Vycl8qLgoJKEZUQ19JbWFnZUNhY2hlX0xvb2t1cCk6IEZpeCBoYW5kbGluZyBvZiBpbnZhbGlkIGFyZ3VtZW50cy4KCjIwMDItMDQtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogU2V0IGB2ZXJzaW9uX2luZm8nIHRvIDk6MTozIChGVDIKCXZlcnNpb24gMi4wLjkgaGFzIDk6MDozKS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZCAodXNpbmcgYXV0b2NvbmYgMi41MykuCgoyMDAyLTA0LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX2V4dHJhX2l0ZW1zX2ZhcnNlKTogRml4IGRlYnVnIG1lc3NhZ2UuCgkocGZyX3BoeV9mb250X2xvYWQpOiBzL3NpemUvU2l6ZS8gZm9yIGxvY2FsIHZhcmlhYmxlIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoJKHBmcl9zbG90X2xvYWQpOiBSZW1vdmUgcmVkdW5kYW50IGxvY2FsIHZhcmlhYmxlLgoKMjAwMi0wNC0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBhIFBGUiBmb250IGRyaXZlciB0byB0aGUgRnJlZVR5cGUgc291cmNlcy4gIE5vdGUgdGhhdCBpdAoJZG9lc24ndCBzdXBwb3J0IGVtYmVkZGVkIGJpdG1hcHMgb3Iga2VybmluZyB0YWJsZXMgeWV0LgoKCXNyYy9wZnIvKjogTmV3IGZpbGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oLCBzcmMvSmFtZWZpbGU6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5oIChUMV9Mb2FkX0dseXBoKSwgc3JjL3R5cGUxL3QxZ2xvYWQuYwoJKFQxX0xvYWRfR2x5cGgpOiBGaXhlZCBpbmNvcnJlY3QgcGFyYW1ldGVyIHNpZ24tbmVzcyBpbiBjYWxsYmFjawoJZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmggKEZUX01FTV9aRVJPLCBGVF9aRVJPKTogTmV3CgltYWNyb3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEZUX05FWFRfT0ZGMywgRlRfTkVYVF9VT0ZGMywKCUZUX05FWFRfT0ZGM19MRSwgRlRfTkVYVF9VT0ZGM19MRSk6IE5ldyBtYWNyb3MgdG8gcGFyc2UgaW4tbWVtb3J5CgkyNC1iaXQgaW50ZWdlcnMuCgoyMDAyLTA0LTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYywgYnVpbGRzL3dpbjMyL2Z0ZGVidWcuYywKCWJ1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdGRlYnVnLmM6IFZlcnNpb24gMi4xLjAgY291bGRuJ3QgYmUgbGlua2VkCglhZ2FpbnN0IGFwcGxpY2F0aW9ucyBpbiBXaW4zMiBhbmQgQW1pZ2EgYnVpbGRzIGR1ZSB0byBjaGFuZ2VzIHRvCglgc3JjL2Jhc2UvZnRkZWJ1Zy5jJyB0aGF0IHdlcmUgbm90IHByb3Blcmx5IHByb3BhZ2F0ZWQgdG8KCWBidWlsZHMvd2luMzInIGFuZCBgYnVpbGRzL2FtaWdhJy4gIFRoaXMgaGFzIGJlZW4gZml4ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2JqZWN0LmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZXhjZXB0LmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRzeXNtZW0uaCwKCWluY2x1ZGUvZnJlZXR5cGUvZnRzeXNpby5oLCBzcmMvYmFzZS9mdHN5c21lbS5jLCBzcmMvYmFzZS9mdHN5c2lvLmM6CglOZXcgZXhwZXJpbWVudGFsIGZpbGVzLgoKMjAwMi0wNC0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjAgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wNC0xNyAgTWljaGFlbCBKYW5zc29uICA8bWphbkBlbTItc29sdXRpb25zLmNvbT4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0NvbXB1dGVfTWF4X0FkdmFuY2UpOiBGaXhlZCBhIHNtYWxsIGJ1ZwoJdGhhdCBwcmV2ZW50ZWQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZS4KCjIwMDItMDQtMTYgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZnJlYWQgKHBjZl9nZXRfYWNjZWxsKTogRml4IHBhcnNpbmcgb2YgYWNjZWxlcmF0b3IKCXRhYmxlcy4KCjIwMDItMDQtMTUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvRlRMLnR4dDogRm9ybWF0dGluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUKCXJlbmRlciBwb29sIGZyb20gMzJrQnl0ZSB0byAxNmtCeXRlLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBSZW1vdmUgY29tcGlsZXIKCXdhcm5pbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9NQVhfRVhURU5TSU9OUyk6IFJlbW92ZWQuCgoJKiBkb2NzL0NIQU5HRVM6IFByZXBhcmluZyAyLjEuMCByZWxlYXNlLgoKMjAwMi0wNC0xMyAgV2VybmVyIExFTUJFUkcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBzL3JhbmQvUmFuZC8gdG8gYXZvaWQKCWNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTA0LTEyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUuVU5YOiBVcGRhdGVkIHRoZSBVbml4LXNwZWNpZmljIHF1aWNrLWNvbXBpbGF0aW9uIGd1aWRlIHRvCgl3YXJuIGFib3V0IHRoZSBHTlUgTWFrZSByZXF1aXJlbWVudCBhdCBjb21waWxlIHRpbWUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oLAoJaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoKCXNyYy9hdXRvaGludC9haG9wdGltLmMsCgoJc3JjL2Jhc2UvZnRkYmdtZW0uYywgc3JjL2Jhc2UvZnRkZWJ1Zy5jLCBzcmMvYmFzZS9mdG1hYy5jLAoJc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0c3lzdGVtLmMsCgoJc3JjL2NhY2hlL2Z0Y2ltYWdlLmMsIHNyYy9jYWNoZS9mdGNzYml0cy5jLAoKCXNyYy9jZmYvY2ZmZHJpdmVyLmMsIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZm9ianMuYywKCglzcmMvY2lkL2NpZGxvYWQuYywgc3JjL2NpZC9jaWRwYXJzZS5jLCBzcmMvY2lkL2NpZHJpdmVyLmMsCgoJc3JjL3BjZi9wY2Zkcml2ZXIuYywgc3JjL3BjZi9wY2ZyZWFkLmMsCgoJc3JjL3BzYXV4L3QxY21hcC5jLCBzcmMvcHNhdXgvdDFkZWNvZGUuYywKCglzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsCglzcmMvcHNoaW50ZXIvcHNocmVjLmMsCgoJc3JjL3BzbmFtZXMvcHNtb2R1bGUuYywKCglzcmMvcmFzdGVyL2Z0cmFzdGVyLmMsCgoJc3JjL3NmbnQvc2Zkcml2ZXIuYywgc3JjL3NmbnQvdHRsb2FkLmMsCgoJc3JjL3Ntb290aC9mdGdyYXlzLmMsCgoJc3JjL3R5cGUxL3QxYWZtLmMsIHNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFnbG9hZC5jLAoJc3JjL3R5cGUxL3QxbG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsIHNyYy90eXBlMS90MXBhcnNlLmMsCgoJYnVpbGRzL3VuaXgvZnRjb25maWcuaW4sIGJ1aWxkcy92bXMvZnRjb25maWcuaCwKCglidWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRkZWJ1Zy5jOgoKCUFkZGVkIHRoZSBuZXcgY29uZmlndXJhdGlvbiBmaWxlIGBmdHN0ZGxpYi5oJyB1c2VkIHRvIGRlZmluZQoJYWxpYXNlcyBmb3IgYWxsIElTTyBDIGxpYnJhcnkgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIGVuZ2luZQoJKGUuZy4gc3RybGVuLCBxc29ydCwgc2V0am1wLCBldGMuKS4KCglUaGlzIGVhc2VzIHRoZSBwb3J0aW5nIG9mIEZyZWVUeXBlIDIgdG8gZW52aXJvbm1lbnRzIGxpa2UKCVhGcmVlODYgbW9kdWxlcy9leHRlbnNpb25zLgoKCUFsc28gcmVtb3ZlZCBtYW55ICNpbmNsdWRlIDxzdHJpbmcuaD4sICNpbmNsdWRlIDxzdGRsaWIuaD4sIGV0Yy4KCWZyb20gdGhlIGVuZ2luZSdzIHNvdXJjZXMgd2hlcmUgdGhleSBhcmUgbm90IG5lZWRlZC4KCgkqIHNyYy9zZm50L3R0cG9zdC5jOiBVc2UgbWFjcm8gbmFtZSBmb3IgcHNuYW1lcy5oLgoKMjAwMi0wNC0xMiAgVmluY2VudCBDYXJvbiAgPHYuY2Fyb25AemVyb2RldXgubmV0PgoKCSogY29uZmlndXJlLCBidWlsZHMvZGV0ZWN0Lm1rOiBVcGRhdGVkIHRoZSBidWlsZCBzeXN0ZW0gdG8gcHJpbnQKCWEgd2FybmluZyBtZXNzYWdlIGluIGNhc2UgR05VIE1ha2UgaXNuJ3QgdXNlZCB0byBidWlsZCB0aGUgbGlicmFyeS4KCjIwMDItMDQtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRSwgZG9jcy9DSEFOR0VTLCBKYW1maWxlLmluOiBVcGRhdGVzIGZvciB0aGUgMi4xLjAgcmVsZWFzZS4KCgkqIGRvY3MvRlRMLnR4dDogVXBkYXRlZCBsaWNlbnNlIHRleHQgdG8gcHJvdmlkZSBhIHByZWZlcnJlZAoJZGlzY2xhaW1lciBhbmQgYWRqdXN0IGNvcHlyaWdodCBkYXRlcy9leHRlbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNnbHlwaC5oOiBSZW1vdmluZyBvYnNvbGV0ZSAoYW5kCgljb25mdXNpbmcpIGNvbW1lbnQuCgoJKiBKYW1maWxlLmluOiBOZXcgZmlsZS4KCjIwMDItMDQtMTEgIE1heGltIFNoZW1hbmFyZXYgIDxtY3NlZW1hZ2dAeWFob28uY29tPgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfaGxpbmUpOiBNaW5vciBvcHRpbWl6YXRpb24uCgoyMDAyLTA0LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJRml4ZXMgZnJvbSB0aGUgc3RhYmxlIGJyYW5jaDoKCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTKToKCVJlbW92ZWQuCglbRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1NdOiBSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oLCBzcmMvYmFzZS9mdGNhbGMuYwoJW0ZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTXTogUmVtb3ZlZC4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX1ZlY3Rvcl9MZW5ndGgpOiBDaGFuZ2UgYWxnb3JpdGhtIHRvIG1hdGNoCglvdXRwdXQgb2YgRnJlZVR5cGUgMS4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX3NjYWxlX3dpZHRocyk6IEZpeGVkIGEgc21hbGwKCWJ1ZyB0aGF0IGNyZWF0ZWQgdW4tZXZlbiBzdGVtIHdpZHRocyB3aGVuIGhpbnRpbmcgUG9zdHNjcmlwdCBmb250cy4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFwYXJzZS5jOiAxNmJpdCBmaXhlcy4KCjIwMDItMDQtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmM6IDE2Yml0IGZpeGVzLgoJKFRUX0xvYWRfU2ltcGxlX0dseXBoKTogSW1wcm92ZSBkZWJ1ZyBtZXNzYWdlcy4KCShsb2FkX3RydWV0eXBlX2dseXBoKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IDE2Yml0IGZpeGVzLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IERpdHRvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHNuYW1lcy5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCwKCXNyYy9jZmYvY2ZmbG9hZC5oLCBzcmMvcHNhdXgvcHNvYmpzLmgsIHNyYy90cnVldHlwZS90dGludGVycC5bY2hdLAoJc3JjL3NmbnQvdHRwb3N0Lmg6IHMvaW5kZXgvaWR4Ly4KCjIwMDItMDMtMzEgIFlhbyBaaGFuZyAgPHlhb3pAdmlkYXIubmlhYWEubmloLmdvdj4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfU2l6ZV9Jbml0KTogRml4IHR5cG8uCgoyMDAyLTAzLTMxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvb3RsYXlvdXQvb3RsY29tbW4uYywgc3JjL290bGF5b3V0L290bGNvbW1uLmg6IHMvaW5kZXgvaWR4Ly4KCSogc3JjL3BzYXV4L3QxY21hcC5jOiBEaXR0by4KCSogc3JjL3NmbnQvdHRjbWFwMC5jOiBEaXR0by4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmggKFRUX0dvdG9fVGFibGVfRnVuYyk6IFJlbmFtZWQgdG8gLi4uCgkoVFRfTG9hZGVyX0dvdG9UYWJsZUZ1bmMpOiBUaGlzLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IEZpeCBkZWJ1ZwoJbWVzc2FnZXMuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKHBzbmFtZXNfaW50ZXJmYWNlKQoJWyFGVF9DT05GSUdfT1BUSU9OX0FET0JFX0dMWVBIX0xJU1RdOiBGaXggdHlwby4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfdGFibGUpOiAxNmJpdCBmaXguCgkqIHNyYy9zZm50L3R0Y21hcC5jOiAxNmJpdCBmaXhlcyAoMHhGRkZGIC0+IDB4RkZGRlUpLgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IDE2Yml0IGZpeGVzLgoJKFRUX0J1aWxkX0NNYXBzKTogU2ltcGxpZnkgZGVidWcgbWVzc2FnZXMuCgkodHRfY21hcDEyX2NoYXJfbmV4dCk6IEZpeCBvZmZzZXQuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX05hbWVzLCBUVF9Mb2FkX0NNYXApOiBGaXggZGVidWcKCW1lc3NhZ2VzLgoJKFRUX0xvYWRfT1MyKTogMTZiaXQgZml4LgoKMjAwMi0wMy0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmg6IEFkZGluZyBjb21tZW50cyB0byBzb21lIG9mCgl0aGUgVFRfRmFjZVJlYyBmaWVsZHMuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKFRUX0J1aWxkX0NNYXBzKTogUmVtb3ZlZCBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9uYW1lX2VudHJ5X2FzY2lpX2Zyb21fe3V0ZjE2LHVjczQsb3RoZXJ9OgoJTmV3IGZ1bmN0aW9ucy4KCSh0dF9mYWNlX2dldF9uYW1lKTogVXNlIHRoZW0gdG8gcHJvcGVybHkgZXh0cmFjdCBhbiBhc2NpaSBmb250IG5hbWUuCgoyMDAyLTAzLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKHQxX2JsZW5kX21heCk6IEZpeCB0eXBvLgoJKiBzcmMvYmFzZS9mdHN0cmVhbS5jOiBTaW1wbGlmeSBGVF9FUlJPUiBjYWxscy4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X2dseXBoX25hbWUpOiBGaXggZGVidWcgbWVzc2FnZS4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfRHJpdmVyX0luaXQsIENGRl9Ecml2ZXJfRG9uZSkKCVtUVF9DT05GSUdfT1BUSU9OX0VYVEVORF9FTkdJTkVdOiBSZW1vdmVkLgoJKiBzcmMvY2ZmL3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSkKCVtUVF9DT05GSUdfT1BUSU9OX0VYVEVORF9FTkdJTkVdOiBEaXR0by4KCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9Jbml0X0RyaXZlciwgVFRfRG9uZV9Ecml2ZXIpCglbVFRfQ09ORklHX09QVElPTl9FWFRFTkRfRU5HSU5FXTogRGl0dG8uCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywgc3JjL3RydWV0eXBlL3R0b2Jqcy5jLAoJc3JjL3RydWV0eXBlL3R0b2Jqcy5oOiBSZW5hbWluZyBkcml2ZXIgZnVuY3Rpb25zIHRvIHRoZQoJRlRfPFN1YmplY3Q+XzxBY3Rpb24+IHNjaGVtZToKCgkgIFRUX0luaXRfRHJpdmVyID0+IFRUX0RyaXZlcl9Jbml0CgkgIFRUX0RvbmVfRHJpdmVyID0+IFRUX0RyaXZlcl9Eb25lCgkgIFRUX0luaXRfRmFjZSAgID0+IFRUX0ZhY2VfSW5pdAoJICBUVF9Eb25lX0ZhY2UgICA9PiBUVF9GYWNlX0RvbmUKCSAgVFRfSW5pdF9TaXplICAgPT4gVFRfU2l6ZV9Jbml0CgkgIFRUX0RvbmVfU2l6ZSAgID0+IFRUX1NpemVfRG9uZQoJICBUVF9SZXNldF9TaXplICA9PiBUVF9TaXplX1Jlc2V0CgoyMDAyLTAzLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdm1zL2Z0Y29uZmlnLmg6IFJlbmFtZSBMT0NBTF9ERUYgYW5kIExPQ0FMX0ZVTkMgdG8KCUZUX0xPQ0FMIGFuZCBGVF9MT0NBTF9ERUYsIHJlc3BlY3RpdmVseSwgYXMgd2l0aCBvdGhlciBmdGNvbmZpZy5oCglmaWxlcy4KCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW46IEFkZCBhcmd1bWVudCB0byBGVF9MT0NBTCBhbmQKCUZUX0xPQ0FMX0RFRi4KCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IHMvRlRfQXNzZXJ0L0ZUX0FTU0VSVC8uCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogVGVtcG9yYXJpbHkgZGVhY3RpdmF0ZSBjcmVhdGlvbiBvZgoJLi4vLi4vSmFtZmlsZS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBVcGRhdGVkLgoKMjAwMi0wMy0yOCAgS1VTQU5PIFRha2F5dWtpICA8QUU1VC1LU05AYXNhaGktbmV0Lm9yLmpwPgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRml4IHNlcmlvdXMgdHlwb3MuCgoyMDAyLTAzLTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTQXV4X1NlcnZpY2VSZWMpOiBGaXgKCWNvbXBpbGVyIHdhcm5pbmdzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCAoVDFfRmFjZVJlYyk6IFVzZSBgY29uc3QnIGZvcgoJc29tZSBtZW1iZXJzLgoJKiBzcmMvYmFzZS9mdGFwaS5jIChGVF9OZXdfTWVtb3J5X1N0cmVhbSk6IEZpeCB0eXBvcy4KCSogc3JjL3BzYXV4L3QxY21hcC5jICh0MV9jbWFwX3N0ZF9pbml0LCB0MV9jbWFwX3VuaWNvZGVfaW5pdCk6IEFkZAoJY2FzdC4KCSh0MV9jbWFwX3tzdGFuZGFyZCxleHBlcnQsY3VzdG9tLHVuaWNvZGV9X2NsYXNzX3JlYyk6IFVzZQoJYEZUX0NBTExCQUNLX1RBQkxFX0RFRicuCgkqIHNyYy9wc2F1eC90MWNtYXAuaDogVXBkYXRlZC4KCSogc3JjL3NmbnQvdHRjbWFwMC5jIChUVF9CdWlsZF9DTWFwcyk6IFVzZSBgZnRfZW5jb2Rpbmdfbm9uZScKCWluc3RlYWQgb2YgemVyby4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBVc2UgY2FzdHMuCgoyMDAyLTAzLTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jLCBzcmMvc2ZudC9zZm9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jOgoJRml4ZWQgYSBzbWFsbCBidWcgaW4gdGhlIEZUX0NNYXBzIHN1cHBvcnQgY29kZS4KCjIwMDItMDMtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChOb3JtKTogUmVwbGFjZWQgd2l0aC4uLgoJKFRUX1ZlY0xlbik6IFRoaXMuCgkoVFRfTXVsRml4MTQsIFRUX0RvdEZpeDE0KTogTmV3IGZ1bmN0aW9ucy4KCShQcm9qZWN0LCBEdWFsX1Byb2plY3QsIEZyZWVfUHJvamVjdCwgQ29tcHV0ZV9Qb2ludF9EaXNwbGFjZW1lbnQsCglJbnNfU0hQSVgsIEluc19NSUFQLCBJbnNfTUlSUCk6IFVzZSB0aGVtLgoJW0ZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTXTogUmVtb3ZlZCBhbGwgY29kZS4KCjIwMDItMDMtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmMsIHNyYy90eXBlMS90MW9ianMuYzoKCVZhcmlvdXMgZml4ZXMgdG8gbWFrZSB0aGUgRlRfQ01hcHMgc3VwcG9ydCB3b3JrIGNvcnJlY3RseSAobW9yZQoJdGVzdHMgYXJlIHN0aWxsIG5lZWRlZCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvc2ZudC9KYW1maWxlLAoJc3JjL3NmbnQvcnVsZXMubWssIHNyYy9zZm50L3NmbnQuYywgc3JjL3NmbnQvc2ZvYmpzLmMsCglzcmMvc2ZudC90dGxvYWQuYywgc3JjL3NmbnQvdHRjbWFwMC5jLCBzcmMvc2ZudC90dGNtYXAwLmg6IFVwZGF0ZWQKCXRoZSBTRk5UIGNoYXJtYXAgc3VwcG9ydCB0byB1c2UgRlRfQ01hcHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyZGVmLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmg6IEluY2x1ZGUgaXQuICBJdCBjb250YWlucyBhbGwgZXJyb3IKCWNvZGVzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9FUlJPUl9ERUZJTklUSU9OU19IKTogTmV3CgltYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwgYW5kIGEgbG90IG9mIG90aGVyIGZpbGVzOgoJQ2hhbmdlZCB0aGUgbmFtZXMgb2YgbWVtb3J5IG1hY3Jvcy4gIEV4YW1wbGVzOgoKCSAgTUVNX1NldCAgID0+IEZUX01FTV9TRVQKCSAgTUVNX0NvcHkgID0+IEZUX01FTV9DT1BZCgkgIE1FTV9Nb3ZlICA9PiBGVF9NRU1fTU9WRQoKCSAgQUxMT0MgICAgID0+IEZUX0FMTE9DCgkgIEZSRUUgICAgICA9PiBGVF9GUkVFCgkgIFJFQUxMT0MgICA9ID5GVF9SRUFMTE9DCgoJRlRfTkVXIHdhcyBpbnRyb2R1Y2VkIHRvIGFsbG9jYXRlIGEgbmV3IG9iamVjdCBmcm9tIGEgX3R5cGVkXwoJcG9pbnRlci4KCglOb3RlIHRoYXQgQUxMT0NfQVJSQVkgYW5kIFJFQUxMT0NfQVJSQVkgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5CglGVF9ORVdfQVJSQVkgYW5kIEZUX1JFTkVXX0FSUkFZIHdoaWNoIHRha2UgX3R5cGVkXyBwb2ludGVyCglhcmd1bWVudHMuCgoJVGhpcyByZXN1bHRzIGluIF9sb3RzXyBvZiBzb3VyY2VzIGJlaW5nIGNoYW5nZWQsIGJ1dCBtYWtlcyB0aGUgY29kZQoJbW9yZSBnZW5lcmljIGFuZCBsZXNzIGVycm9yLXByb25lLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oLCBzcmMvYmFzZS9mdHN0cmVhbS5jLAoJc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9wY2YvcGNmcmVhZC5jLCBzcmMvc2ZudC90dGNtYXAuYywKCXNyYy9zZm50L3R0Y21hcDAuYywgc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy9zZm50L3R0cG9zdC5jLAoJc3JjL3NmbnQvdHRzYml0LmMsIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dHBsb2FkLmMsCglzcmMvd2luZm9udHMvd2luZm50LmM6IENoYW5nZWQgdGhlIGRlZmluaXRpb25zIG9mIHN0cmVhbSBtYWNyb3MuCglFeGFtcGxlczoKCgkgIE5FWFRfQnl0ZSAgICAgPT4gRlRfTkVYVF9CWVRFCgkgIE5FWFRfU2hvcnQgICAgPT4gRlRfTkVYVF9TSE9SVAoJICBORVhUX1VTaG9ydExFID0+IEZUX05FWFRfVVNIT1JUX0xFCgkgIFJFQURfU2hvcnQgICAgPT4gRlRfUkVBRF9TSE9SVAoJICBHRVRfTG9uZyAgICAgID0+IEZUX0dFVF9MT05HCgkgIGV0Yy4KCglBbHNvIGludHJvZHVjZWQgdGhlIEZUX1BFRUtfWFhYWCBmdW5jdGlvbnMuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0J1aWxkX1VuaWNvZGVfQ2hhcm1hcCk6IFJlbW92ZWQgY29tbWVudGVkCglvdXQgZnVuY3Rpb24uCgkoZmluZF9lbmNvZGluZyk6IFJlbW92ZWQuCgkoQ0ZGX0ZhY2VfSW5pdCk6IFJlbW92ZSBjaGFybWFwIHN1cHBvcnQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQUywKCVRUX0NPTkZJR19DTUFQX0ZPUk1BVHswLDIsNCw2LDgsMTAsMTJ9KTogTmV3IG1hY3JvcyB0byBmaW5lLXR1bmUKCXN1cHBvcnQgb2YgY21hcHMuCgoyMDAyLTAzLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYywgc3JjL3BjZi9wY2Zkcml2ZXIuYywgc3JjL3BjZi9wY2ZyZWFkLmM6IFVwZGF0ZWQKCXRvIG5ldyBGVF9DTWFwIGRlZmluaXRpb25zLgoKCSogc3JjL3BzYXV4L3QxY21hcC5oLCBzcmMvcHNhdXgvdDFjbWFwLmMsIHNyYy90eXBlMS90MWNtYXAuaCwKCXNyYy90eXBlMS90MWNtYXAuYzogVXBkYXRpbmcgYW5kIG1vdmluZyB0aGUgVHlwZSAxIEZUX0NNYXAgc3VwcG9ydAoJZnJvbSBgc3JjL3R5cGUxJyB0byBgc3JjL3BzYXV4JyBzaW5jZSBpdCBpcyBnb2luZyB0byBiZSBzaGFyZWQgYnkKCXRoZSBUeXBlIDEgYW5kIENJRCBmb250IGRyaXZlcnMuCgoJKiBzcmMvcHNhdXgvSmFtZmlsZSwgc3JjL3BzYXV4L3BzYXV4LmMsIHNyYy9wc2F1eC9wc2F1eG1vZC5jLAoJc3JjL3BzYXV4L3J1bGVzLm1rLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4Lmg6IEFkZGVkIHN1cHBvcnQKCWZvciBUeXBlIDEgRlRfQ01hcHMuCgoyMDAyLTAzLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdsb2Fkci5jIChGVF9HbHlwaExvYWRlcl9DaGVja1N1YkdseXBocyk6IEZpeGVkIGEKCW1lbW9yeSBhbGxvY2F0aW9uIGJ1ZyB0aGF0IHdhcyBkdWUgdG8gdW4tY2FyZWZ1bCByZW5hbWluZyBvZiB0aGUKCUZUX1N1YkdseXBoIHR5cGUuCgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fdGFibGVfZGVzdHJveSk6IEZpeGVkIGEgc21hbGwgYnVnIHRoYXQKCWNhdXNlZCB0aGUgbGlicmFyeSB0byBjcmFzaCB3aXRoIEVsZWN0cmljIEZlbmNlIHdoZW4gbWVtb3J5CglkZWJ1Z2dpbmcgaXMgdXNlZC4KCgkqIFJlbmFtaW5nIHN0cmVhbSBtYWNyb3MuICBFeGFtcGxlczoKCgkgIEZJTEVfU2tpcCAgICA9PiBGVF9TVFJFQU1fU0tJUAoJICBGSUxFX1JlYWQgICAgPT4gRlRfU1RSRUFNX1JFQUQKCSAgQUNDRVNTX0ZyYW1lID0+IEZUX0ZSQU1FX0VOVEVSCgkgIEZPUkdFVF9GcmFtZSA9PiBGVF9GUkFNRV9FWElUCgkgIGV0Yy4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IEZpeGVkIG1lbW9yeSBsZWFrLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogQ2hhbmdpbmcgdGhlIGRlZmluaXRpb24gb2YKCUZUX0NNYXBfQ2hhck5leHRGdW5jIHNsaWdodGx5LgoKCSogc3JjL2NmZi8qLmM6IFVwZGF0aW5nIENGRiB0eXBlIGRlZmluaXRpb25zLgoKMjAwMi0wMy0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9hdXRvaGludC5oLCBzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYywKCXNyYy9iYXNlL2Z0YXBpLmMsIHNyYy9iYXNlL2Z0b2Jqcy5jOiBVcGRhdGluZyB0aGUgdHlwZSBkZWZpbml0aW9ucwoJZm9yIHRoZSBhdXRvLWhpbnRlciBtb2R1bGUuCgoJICBGVF9BdXRvSGludGVyX0ludGVyZmFjZSAgPT4gRlRfQXV0b0hpbnRlcl9TZXJ2aWNlUmVjCgkgIEZUX0F1dG9IaW50ZXJfSW50ZXJmYWNlKiA9PiBGVF9BdXRvSGludGVyX1NlcnZpY2UKCSAgZXRjLgoKCSAgRlRfQXV0b0hpbnRlcl9HZXRfR2xvYmFsX0Z1bmMgID0+IEZUX0F1dG9IaW50ZXJfR2xvYmFsR2V0RnVuYwoJICBGVF9BdXRvSGludGVyX0RvbmVfR2xvYmFsX0Z1bmMgPT4gRlRfQXV0b0hpbnRlcl9HbG9iYWxEb25lRnVuYwoJICBldGMuCgoJKiBhaGxvYWRlci5oIFtfU1RBTkRBTE9ORV9dOiBSZW1vdmVkIGFsbCBjb25kaXRpb25hbCBjb2RlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oLCBzcmMvY2ZmLyouYzogVXBkYXRpbmcgdGhlCgl0eXBlIGRlZmluaXRpb25zIG9mIHRoZSBDRkYgZm9udCBkcml2ZXIuCgoJICBDRkZfRm9udCAgPT4gQ0ZGX0ZvbnRSZWMKCSAgQ0ZGX0ZvbnQqID0+IENGRl9Gb250CgkgIGV0Yy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaCwgc3JjL3dpbmZvbnRzLyouYzogVXBkYXRpbmcKCXR5cGUgZGVmaW5pdGlvbnMgb2YgdGhlIFdpbmRvd3MgRk5UIGZvbnQgZHJpdmVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwgc3JjL2Jhc2UvZnRhcGkuYywKCXNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2ZmZHJpdnIuaCwKCXNyYy9jaWQvY2lkcml2ZXIuYywgc3JjL2NpZC9jaWRyaXZlci5oLCBzcmMvcGNmL3BjZmRyaXZlci5jLAoJc3JjL3BjZi9wY2Zkcml2ZXIuaCwgc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMsCglzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuaCwgc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MWRyaXZlci5oLAoJc3JjL3dpbmZvbnRzL3dpbmZudC5jLCBzcmMvd2luZm9udHMvd2luZm50Lmg6IFVwZGF0aW5nIHR5cGUKCWRlZmluaXRpb25zIGZvciBmb250IGRyaXZlcnMuCgoJICBGVERyaXZlcl9pbml0RmFjZSAgICAgID0+IEZUX0ZhY2VfSW5pdEZ1bmMKCSAgRlREcml2ZXJfaW5pdEdseXBoU2xvdCA9PiBGVF9TbG90X0luaXRGdW5jCgkgIGV0Yy4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRmFjZV9Jbml0KTogUmVtb3ZlIGRlYWQgY29kZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9iYXNlL2Z0b2Jqcy5jOiBVcGRhdGVkIGEKCWZldyBmYWNlIG1ldGhvZCBkZWZpbml0aW9uczoKCgkgIEZUX1BTTmFtZV9SZXF1ZXN0ZXIgICAgID0+IEZUX0ZhY2VfR2V0UG9zdHNjcmlwdE5hbWVGdW5jCgkgIEZUX0dseXBoX05hbWVfUmVxdWVzdGVyID0+IEZUX0ZhY2VfR2V0R2x5cGhOYW1lRnVuYwoJICBGVF9OYW1lX0luZGV4X1JlcXVlc3RlciA9PiBGVF9GYWNlX0dldEdseXBoTmFtZUluZGV4RnVuYwoKCSogc3JjL2Jhc2UvZnRhcGkuYzogTmV3IGZpbGUuICBJdCBjb250YWlucyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQoJZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLCBzcmMvY2lkL2NpZGxvYWQuYywKCXNyYy9jaWR0b2tlbi5oLCBzcmMvcHNhdXgvcHNvYmpzLmMsIHNyYy9wc2F1eC9wc29ianMuaCwKCXNyYy9wc2F1eC90MWRlY29kZS5jLCBzdGMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MXRva2Vucy5oOgoJVXBkYXRlZCBjb21tb24gUG9zdFNjcmlwdCB0eXBlIGRlZmluaXRpb25zLgoJUmVuYW1lZCBhbGwgZW51bWVyYXRpb24gdmFsdWVzIGxpa2UgdG8gdXBwZXJjYXNlIHZhcmlhbnRzOgoKCSAgdDFfdG9rZW5fYW55ICAgICAgPT4gVDFfVE9LRU5fVFlQRV9BTlkKCSAgdDFfZmllbGRfY2lkX2luZm8gPT4gVDFfRklFTERfTE9DQVRJT05fQ0lEX0lORk8KCSAgZXRjLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2dsb2JhbHMuaDogUmVtb3ZlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgsIHNyYy9wc2hpbnRlci9wc2hnbG9iLmg6CglVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCwgc3JjL2Jhc2UvZnRuYW1lcy5jLAoJc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvc2ZudC8qLmMsIHNyYy90cnVldHlwZS8qLmM6IFVwZGF0ZWQKCVNGTlQvVHJ1ZVR5cGUgdHlwZSBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oOgoJVXBkYXRpbmcgdHlwZSBkZWZpbnRpaW9ucyBmb3IgdGhlIGdseXBoIGxvYWRlci4KCjIwMDItMDMtMTMgIEFudG9pbmUgTGVjYSAgPGFudG9pbmVAb3Jpb2xuZXQuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogQ2hhbmdlZCB0aGUgYXV0b21hdGljCglkZXRlY3Rpb24gb2YgTWljcm9zb2Z0IEMgY29tcGlsZXJzIHRvIGF1dG9tYXRpY2FsbHkgc3VwcG9ydCA2NC1iaXQKCWludGVnZXJzIG9ubHkgc2luY2UgcmV2aXNpb24gOS4wMCAoaS5lLiA+PSBWaXN1YWwgQysrIDIuMCkuCgoyMDAyLTAzLTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdHV0aWwuYyAoRlRfUmVhbGxvYyk6IFVzZSBNRU1fU2V0IGluc3RlYWQgb2YgbWVtc2V0LgoKMjAwMi0wMy0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZnRfbWVtX3RhYmxlX3Jlc2l6ZSwgZnRfbWVtX3RhYmxlX25ldywKCWZ0X21lbV90YWJsZV9zZXQsIGZ0X21lbV9kZWJ1Z19hbGxvYywgZnRfbWVtX2RlYnVnX2ZyZWUsCglmdF9tZW1fZGVidWdfcmVhbGxvYywgZnRfbWVtX2RlYnVnX2RvbmUsIEZUX0FsbG9jX0RlYnVnLAoJRlRfUmVhbGxvY19EZWJ1ZywgRlRfRnJlZV9EZWJ1Zyk6IEZpeCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bEZpeCk6IERpdHRvLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IERpdHRvLgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX1NpemVfR2V0X0dsb2JhbF9GdW5jcywgQ0ZGX1NpemVfSW5pdCwKCUNGRl9HbHlwaFNsb3RfSW5pdCk6IERpdHRvLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0dseXBoU2xvdF9Jbml0LAoJQ0lEX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MpOiBEaXR0by4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9TaXplX0dldF9HbG9iYWxzX0Z1bmNzLCBUMV9HbHlwaFNsb3RfSW5pdCk6CglEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaG1vZC5jIChwc2hpbnRlcl9pbnRlcmZhY2UpOiBVc2UgYHN0YXRpYyBjb25zdCcuCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0dldF9OZXh0X0NoYXIpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0J1aWxkZXJfRnVuY3MpOiBSZW5hbWVkCgl0by4uLgoJKFQxX0J1aWxkZXJfRnVuY3NSZWMpOiBUaGlzLgoJKFQxX0J1aWxkZXJfRnVuY3MpOiBOZXcgdHlwZWRlZi4KCShQU0F1eF9JbnRlcmZhY2UpOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9wc2F1eC9wc2F1eG1vZC5jICh0MV9idWlsZGVyX2Z1bmNzKSwgc3JjL3BzYXV4L3Bzb2Jqcy5oCgkodDFfYnVpbGRlcl9mdW5jcyk6IFVwZGF0ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfQmx1ZV9BbGlnbik6IFJlcGxhY2VkIHdpdGggLi4uCgkoUFNIX0JMVUVfQUxJR05fe05PTkUsVE9QLEJPVH0pOiBOZXcgZGVmaW5lcy4KCShQU0hfQWxpZ25tZW50UmVjKTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoR0VUX0NoYXIsIEdFVF9CeXRlKTogRml4Cgl0eXBvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmggKEZUX1N1YkdseXBoKTogRGl0dG8uCgkqIHNyYy9iYXNlL2Z0c3RyZWFtIChGVF9HZXRfQ2hhcik6IFJlbmFtZSB0by4uLgoJKEZUX1N0cmVhbV9HZXRfQ2hhcik6IFRoaXMuCgoJKiBzcmMvYmFzZS9mdG5hbWVzLmMgKEZUX0dldF9TZm50X05hbWUpOiBzL2luZGV4L2lkeC8gLS0gYGluZGV4JyBpcwoJYSBidWlsdC1pbiBmdW5jdGlvbiBpbiBnY2MsIGNhdXNpbmcgd2FybmluZyBtZXNzYWdlcyB3aXRoIGdjYyAzLjAuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbG9hZCk6IERpdHRvLgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoYWhfaGludGVyX2NvbXB1dGVfYmx1ZXMpOiBEaXR0by4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MsCglmdGNfZmFtaWx5X3RhYmxlX2ZyZWUsIEZUQ19NYW5hZ2VyX0RvbmUsIEZUQ19NYW5hZ2VyX1JlZ2lzdGVyX0NhY2hlKToKCURpdHRvLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX25ld19pbmRleCwgY2ZmX2RvbmVfaW5kZXgsCgljZmZfZXhwbGljaXRfaW5kZXgsIENGRl9BY2Nlc3NfRWxlbWVudCwgQ0ZGX0ZvcmdldF9FbGVtZW50LAoJQ0ZGX0dldF9OYW1lLCBDRkZfR2V0X1N0cmluZywgQ0ZGX0xvYWRfU3ViRm9udCwgQ0ZGX0xvYWRfRm9udCwKCUNGRl9Eb25lX0ZvbnQpOiBEaXR0by4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19UYWJsZV9BZGQsIFBTX1BhcnNlcl9Mb2FkRmllbGQpOiBEaXR0by4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiBEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChwc19tYXNrX3Rlc3RfYml0LCBwc19tYXNrX2NsZWFyX2JpdCwKCXBzX21hc2tfc2V0X2JpdCwgcHNfZGltZW5zaW9uX2FkZF90MXN0ZW0sIHBzX2hpbnRzX3Qxc3RlbTMsCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfcmVjb3JkLAoJcHNoMV9oaW50X3RhYmxlX3JlY29yZF9tYXNrLCBwc2gxX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX3JlY29yZCwKCXBzaDJfaGludF90YWJsZV9yZWNvcmRfbWFzaywgcHNoMl9oaW50X3RhYmxlX2FjdGl2YXRlX21hc2spOiBEaXR0by4KCSogc3JjL3NmbnQvdHRwb3N0LmMgKExvYWRfRm9ybWF0XzIwLCBMb2FkX0Zvcm1hdF8yNSwKCVRUX0dldF9QU19OYW1lKTogRGl0dG8uCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0dldF9NZXRyaWNzLCBHZXRfSE1ldHJpY3MsCglsb2FkX3RydWV0eXBlX2dseXBoKTogRGl0dG8uCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2Vfc3VicnMsIFQxX09wZW5fRmFjZSk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoVDFfR2V0X0tlcm5pbmcpOiBEaXR0by4KCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtYW5hZy5oIChmdGNfZmFtaWx5X3RhYmxlX2ZyZWUpOiBEaXR0by4KCjIwMDItMDMtMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KSwgc3JjL2NpZC9jaWRvYmpzLmMKCShDSURfRmFjZV9Jbml0KTogRml4ZWQgYW5vdGhlciBidWcgcmVsYXRlZCB0byB0aGUKCWFzY2VuZGVyL2Rlc2NlbmRlci90ZXh0IGhlaWdodCBvZiBQb3N0c2NyaXB0IGZvbnRzLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHByaW50X3pvbmUpOiBSZW5hbWVkIHRvIC4uLgoJKHBzaDJfcHJpbnRfem9uZSk6IFRoaXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwcmludF96b25lKTogUmVuYW1lZCB0byAuLi4KCShwc2gxX3ByaW50X3pvbmUpOiBUaGlzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJc3JjL2Jhc2UvZnRvYmpzLmM6IEFkZGluZyB0aGUgbmV3IEZUX0xpYnJhcnlfVmVyc2lvbiBBUEkgdG8gcmV0dXJuCgl0aGUgbGlicmFyeSdzIGN1cnJlbnQgdmVyc2lvbiBpbiBkeW5hbWljIGxpbmtzLgoJKiBzcmMvYmFzZS9mdGluaXQuYyAoRlRfSW5pdF9GcmVlVHlwZSk6IFVwZGF0ZWQuCgoyMDAyLTAzLTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfRGltZW5zaW9uUmVjKTogcy9zdGQvc3Rkdy8uCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxfc2NhbGVfd2lkdGhzLAoJcHNoX2RpbWVuc2lvbl9zbmFwX3dpZHRoLCBwc2hfZ2xvYmFsc19kZXN0cm95LCBwc2hfZ2xvYmFsc19uZXcpOgoJRGl0dG8uCgoyMDAyLTAzLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCksIHNyYy9jZmYvY2Zmb2Jqcy5jCgkoQ0ZGX0ZhY2VfSW5pdCksIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRmFjZV9Jbml0KTogUmVtb3ZpbmcgdGhlIGJ1ZwoJdGhhdCByZXR1cm5lZCBnbG9iYWwgQkJveCB2YWx1ZXMgaW4gMTYuMTYgZml4ZWQgZm9ybWF0IChpbnN0ZWFkIG9mCglpbnRlZ2VyIGZvbnQgdW5pdHMpLgoKCSogc3JjL2NpZC9jaWRyaXZlci5jIChjaWRfZ2V0X3Bvc3RzY3JpcHRfbmFtZSk6IEZpeGVkIGEgYnVnIHRoYXQKCWNhdXNlZCB0aGUgQ0lEIGRyaXZlciB0byByZXR1cm4gUG9zdHNjcmlwdCBmb250IG5hbWVzIHdpdGggYSBsZWFkaW5nCglzbGFzaCAoYC8nKSBhcyBpbiBgL01PRUthaS1SZWd1bGFyJy4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX05hbWVzKSwgc3JjL3NmbnQvc2ZvYmpzLmMgKEdldF9OYW1lKSwKCXNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IEZpeGVkIHRoZSBsb2FkZXIgc28KCXRoYXQgaXQgYWNjZXB0cyBicm9rZW4gZm9udHMgbGlrZSBgZm94anVtcC50dGYnLCB3aGljaCBtYWRlIEZyZWVUeXBlCgljcmFzaCB3aGVuIHRyeWluZyB0byBsb2FkIHRoZW0uCgoJQWxzbyBpbXByb3ZlZCB0aGUgbmFtZSB0YWJsZSBwYXJzZXIgdG8gYmUgYWJsZSB0byBsb2FkCglXaW5kb3dzLWVuY29kZWQgZW50cmllcyBiZWZvcmUgTWFjaW50b3NoIG9yIFVuaWNvZGUgb25lcywgc2luY2UgaXQKCXNlZW1zIHNvbWUgZm9udHMgZG9uJ3QgaGF2ZSByZWxpYWJsZSB2YWx1ZXMgaGVyZSBhbnl3YXkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzbmFtZXMuaDogQWRkIHR5cGVkZWYgZm9yCglgUFNOYW1lc19TZXJ2aWNlJy4KCjIwMDItMDMtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQsIGJ1aWxkcy91bml4L2x0bWFpbi5zaDogVXBkYXRlIHRvIGxpYnRvb2wKCTEuNC4yLgoJQXBwbHkgYSBzbWFsbCBwYXRjaCBmb3IgQUlYIHRvIG1ha2Ugc2hhcmVkIGxpYnJhcmllcyB3b3JrICh0aGlzCglwYXRjaCBpcyBhbHJlYWR5IGluIHRoZSBDVlMgdmVyc2lvbiBvZiBsaWJ0b29sKS4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5zdWIsIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzczogVXBkYXRlZCB0bwoJcmVjZW50IHZlcnNpb25zLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBGaXggdHlwbwoJKEFDX0NPTkZJR19GSUxFLT5BQ19DT05GSUdfRklMRVMpLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDItMDItMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjb25maWcuaDogQ2hhbmdlZCBgRlRfTE9DQUwgeHh4eCcgdG8KCWBGVF9MT0NBTCggeHh4eCApJyBldmVyeXdoZXJlIGluIHRoZSBzb3VyY2UuICBUaGUgc2FtZSBnb2VzIGZvcgoJYEZUX0xPQ0FMX0RFRiB4eHh4JyB3aGljaCBpcyB0cmFuc2xhdGVkIHRvIGBGVF9MT0NBTF9ERUYoIHh4eHh4ICknLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9NSU5PUiwgRlJFRVRZUEVfUEFUQ0gpOgoJQ2hhbmdpbmcgdmVyc2lvbiB0byAyLjEuMCB0byBpbmRpY2F0ZSBhbiB1bnN0YWJsZSBicmFuY2guCglBZGRlZCB0aGUgZGVjbGFyYXRpb25zIG9mIEZUX0dldF9GaXJzdF9DaGFyIGFuZCBGVF9HZXRfTmV4dF9DaGFyLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEltcGxlbWVudCBGVF9HZXRfRmlyc3RfQ2hhciBhbmQKCUZUX0dldF9OZXh0X0NoYXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmg6IFJlbmFtaW5nIHN0cnVjdHVyZSB0eXBlcy4gIFRoaXMKCgkgIHR5cGVkZWYgIFQxX1N0cnVjdF8KCSAgewoJICB9IFQxX1N0cnVjdDsKCgliZWNvbWVzCgoJICB0eXBlZGVmICBQU19TdHJ1Y3RSZWNfCgkgIHsKCSAgfSBQU19TdHJ1Y3RSZWMsICpQU19TdHJ1Y3Q7CgoJICB0eXBlZGVmIFBTX1N0cnVjdFJlYyAgVDFfU3RydWN0OyAgLyogYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgKi8KCglIZW5jZSwgd2UgaW5jcmVhc2UgdGhlIGNvaGVyZW5jeSBvZiB0aGUgc291cmNlIGNvZGUgYnkgZWZmZWN0aXZlbHkKCXVzaW5nIHRoZSBgUmVjJyBwcmVmaXggZm9yIHN0cnVjdHVyZSB0eXBlcy4KCjIwMDItMDItMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX05hbWVzKTogU2ltcGxpZnlpbmcgYW5kIHNlY3VyaW5nIHRoZQoJbmFtZXMgdGFibGUgbG9hZGVyLiAgSW52YWxpZCBpbmRpdmlkdWFsIG5hbWUgZW50cmllcyBhcmUgbm93IGhhbmRsZWQKCWNvcnJlY3RseS4gIFRoaXMgYWxsb3dzIHRoZSBsb2FkaW5nIG9mIHZlcnkgYnVnZ3kgZm9udHMgbGlrZQoJYGZveGp1bXAudHRmJyB3aXRob3V0IGFsbG9jYXRpbmcgdG9ucyBvZiBtZW1vcnkgYW5kIGNhdXNpbmcgY3Jhc2hlcy4KCgkqIHNyYy9vdGxheW91dC9vdGxjb21tb24uaCwgc3JjL290bGF5b3V0L290bGNvbW1vbi5jOiBBZGRpbmcgKHN0aWxsCglleHBlcmltZW50YWwpIGNvZGUgZm9yIE9wZW5UeXBlIExheW91dCB0YWJsZXMgdmFsaWRhdGlvbiBhbmQKCXBhcnNpbmcuCgoJKiBzcmMvdHlwZTEvdDFjbWFwLmgsIHNyYy90eXBlMS90MWNtYXAuYzogQWRkaW5nIChzdGlsbAoJZXhwZXJpbWVudGFsKSBjb2RlIGZvciBUeXBlIDEgY2hhcm1hcCBwcm9jZXNzaW5nLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jOiBOZXcgZmlsZS4gIEl0IGNvbnRhaW5zIGEgbmV3LCBzdGlsbAoJZXhwZXJpbWVudGFsIFNGTlQgY2hhcm1hcCBwcm9jZXNzaW5nIHN1cHBvcnQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBBZGRpbmcgdmFsaWRhdGlvbiBzdXBwb3J0IGFzCgl3ZWxsIGFzIGludGVybmFsIGNoYXJtYXAgb2JqZWN0IGRlZmluaXRpb25zIChGVF9DTWFwICE9IEZUX0NoYXJNYXApLgoKMjAwMi0wMi0yNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUmVuYW1pbmcgc3RyZWFtIGZ1bmN0aW9ucyB0byB0aGUgRlRfPFN1YmplY3Q+XzxBY3Rpb24+IHNjaGVtZToKCgkgIEZUX1NlZWtfU3RyZWFtICAgID0+IEZUX1N0cmVhbV9TZWVrCgkgIEZUX1NraXBfU3RyZWFtICAgID0+IEZUX1N0cmVhbV9Ta2lwCgkgIEZUX1JlYWRfU3RyZWFtICAgID0+IEZUX1N0cmVhbV9SZWFkCgkgIEZUX1JlYWRfU3RyZWFtX0F0ID0+IEZUX1N0cmVhbV9SZWFkX0F0CgkgIEZUX0FjY2Vzc19GcmFtZSAgID0+IEZUX1N0cmVhbV9FbnRlcl9GcmFtZQoJICBGVF9Gb3JnZXRfRnJhbWUgICA9PiBGVF9TdHJlYW1fRXhpdF9GcmFtZQoJICBGVF9FeHRyYWN0X0ZyYW1lICA9PiBGVF9TdHJlYW1fRXh0cmFjdF9GcmFtZQoJICBGVF9SZWxlYXNlX0ZyYW1lICA9PiBGVF9TdHJlYW1fUmVsZWFzZV9GcmFtZQoJICBGVF9HZXRfWFhYWCAgICAgICA9PiBGVF9TdHJlYW1fR2V0X1hYWFgKCSAgRlRfUmVhZF9YWFhYICAgICAgPT4gRlRfU3RyZWFtX1JlYWRfWFhYWAoKCSAgRlRfTmV3X1N0cmVhbSggZmlsZW5hbWUsIHN0cmVhbSApID0+CgkgICAgRlRfU3RyZWFtX09wZW4oIHN0cmVhbSwgZmlsZW5hbWUgKQoKCSAgICAoVGhlIGZ1bmN0aW9uIGRvZXNuJ3QgY3JlYXRlIHRoZSBGVF9TdHJlYW0gc3RydWN0dXJlLCBpdCBzaW1wbHkKCSAgICBpbml0aWFsaXplcyBpdCBmb3IgcmVhZGluZy4pCgoJICBGVF9OZXdfTWVtb3J5X1N0cmVhbSggbGlicmFyeSwgRlRfQnl0ZSogIGJhc2UsIHNpemUsIHN0cmVhbSApID0+CgkgICAgRlRfU3RyZWFtX09wZW5fTWVtb3J5KCBzdHJlYW0sIGNvbnN0IEZUX0J5dGUqIGJhc2UsIHNpemUgKQoKCSAgRlRfRG9uZV9TdHJlYW0gID0+IEZUX1N0cmVhbV9DbG9zZQoJICBGVF9TdHJlYW1fSU8gICAgPT4gRlRfU3RyZWFtX0lPRnVuYwoJICBGVF9TdHJlYW1fQ2xvc2UgPT4gRlRfU3RyZWFtX0Nsb3NlRnVuYwoKCSAgZnRfY2xvc2Vfc3RyZWFtID0+IGZ0X2Fuc2lfc3RyZWFtX2Nsb3NlIChpbiBiYXNlL2Z0c3lzdGVtLmMgb25seSkKCSAgZnRfaW9fc3RyZWFtICAgID0+IGZ0X2Fuc2lfc3RyZWFtX2lvICAgIChpbiBiYXNlL2Z0c3lzdGVtLmMgb25seSkKCgkqIHNyYy9iYXNlL2Z0dXRpbC5jOiBOZXcgZmlsZS4gIENvbnRhaW5zIGFsbCBtZW1vcnkgYW5kIGxpc3QKCW1hbmFnZW1lbnQgY29kZSAocHJldmlvdXNseSBpbiBgZnRvYmpzLmMnIGFuZCBgZnRsaXN0LmMnLAoJcmVzcGVjdGl2ZWx5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IE1vdmluZyBhbGwgY29kZSByZWxhdGVkIHRvCglnbHlwaCBsb2FkZXJzIHRvIC4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmg6IFRoaXMgbmV3IGZpbGUuCglgRlRfR2x5cGhMb2FkZXInIGlzIG5vdyBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZQoJYEZUX0dseXBoTG9hZGVyUmVjJy4KCShmdF9nbHlwaF9vd25fYml0bWFwKTogUmVuYW1lZCB0byAuLi4KCShGVF9HTFlQSF9PV05fQklUTUFQKTogVGhpcy4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IE1vdmluZyBhbGwgY29kZSByZWxhdGVkIHRvIGdseXBoIGxvYWRlcnMKCXRvIC4uLgoJKiBzcmMvYmFzZS9mdGdsb2Fkci5jOiBUaGlzIG5ldyBmaWxlLgoKMjAwMi0wMi0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggKEZUX1RyYWNlKTogUmVtb3ZlIGNvbW1hIGluCgllbnVtIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMi0wMi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1vZGlmaWVkIHRoZSBkZWJ1ZyBzdWItc3lzdGVtIGluaXRpYWxpemF0aW9uLiAgVHJhY2UgbGV2ZWxzIGNhbiBub3cKCWJlIHNwZWNpZmllZCB3aXRoaW4gdGhlIGBGVDJfREVCVUcnIGVudmlyb25tZW50IHZhcmlhYmxlLiAgU2VlIHRoZQoJY29tbWVudHMgd2l0aGluIGBmdGRlYnVnLmMnIGZvciBtb3JlIGRldGFpbHMuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmM6IChGVF9TZXRUcmFjZUxldmVsKTogUmVtb3ZlZC4KCShmdF9kZWJ1Z19pbml0KTogTmV3IGZ1bmN0aW9uLgoJKGZ0X2RlYnVnX2R1bW15KTogUmVtb3ZlZC4KCVVwZGF0ZWQgdG8gY2hhbmdlcyBpbiBmdGRlYnVnLmgKCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBBbHdheXMgZGVmaW5lCglGVF9ERUJVR19MRVZFTF9FUlJPUiBpZiBGVF9ERUJVR19MRVZFTF9UUkFDRSBpcyBkZWZpbmVkLgoJKEZUX0Fzc2VydCk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfQVNTRVJUKTogVGhpcy4KCVNvbWUgc3R1ZmYgZnJvbSBmdGRlYnVnLmggaGFzIGJlZW4gbW92ZWQgdG8gLi4uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogTmV3IGZpbGUsIHRvIGRlZmluZSB0aGUgdHJhY2UKCWxldmVscyB1c2VkIGZvciBkZWJ1Z2dpbmcuICBJdCBpcyB1c2VkIGJvdGggdG8gZGVmaW5lIGVudW1zIGFuZAoJdG9nZ2xlIG5hbWVzIGZvciBGVDJfREVCVUcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRzdHJlYW0uYzogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRleHRlbmQuaCwgc3JjL2Jhc2UvZnRleHRlbmQuYzoKCVJlbW92ZWQuICBCb3RoIGZpbGVzIGFyZSBub3cgY29tcGxldGVseSBvYnNvbGV0ZS4KCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWs6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmg6IEFkZGluZyBgI3VuZGVmIEZUX0VSUl9DQVQnIGFuZAoJYCN1bmRlZiBGVF9FUlJfWENBVCcgdG8gYXZvaWQgd2FybmluZ3Mgd2l0aCBjZXJ0YWluIGNvbXBpbGVycyAobGlrZQoJTENDKS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwcmludF96b25lKTogUmVuYW1lZCB0byAuLi4KCShwc2gyX3ByaW50X3pvbmUpOiBUaGlzIHRvIGF2b2lkIGVycm9ycyBkdXJpbmcgY29tcGlsYXRpb24gb2YgZGVidWcKCWxpYnJhcnkuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoRlRfQ09NUE9ORU5UKTogQ2hhbmdlIGRlZmluaXRpb24gdG8gYXMKCWB0cmFjZV9zbW9vdGgnLgoKMjAwMi0wMi0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FOiBBZGRpbmcgYGRldmVsQGZyZWV0eXBlLm9yZycgYWRkcmVzcyBmb3IgYnVnIHJlcG9ydHMuCgoyMDAyLTAyLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChjaGVjayk6IE5ldyBkdW1teSB0YXJnZXQuCgkoLlBIT05ZKTogQWRkIGl0LgoKMjAwMi0wMi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChGVF9DRkxBR1MpOiBVc2UgJChJTkNMVURFX0ZMQUdTKSBmaXJzdC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfY2FjaGVfcmVzaXplKTogTWFyayBgZXJyb3InIGFzIHVudXNlZAoJdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9HZXRfU3RyaW5nKTogRGl0dG8uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfU3RyQ29weSk6IERpdHRvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlX0RvbmUpOiBEaXR0by4KCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBEaXR0by4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRGl0dG8uCgkocGNmX2dldF9iaXRtYXBzKTogVGhlIHNhbWUgZm9yIGBzaXplYml0bWFwcycuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVfUGFyc2VfQ2hhcnN0cmluZ3MpOiBUaGUgc2FtZSBmb3IKCWBvcmlnX3knLgoJKHQxb3BlcmF0b3Jfc2VhYyk6IENvbW1lbnQgb3V0IG1vcmUgZGVhZCBjb2RlLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHMyX2hpbnRzX2FwcGx5KTogQWRkIGBERUJVR19ISU5URVInCgljb25kaXRpb25hbC4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfUHJvY2Vzc19TaW1wbGVfR2x5cGgsCglsb2FkX3RydWV0eXBlX2dseXBoKTogQWRkIGBUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSJwoJY29uZGl0aW9uYWwuCgoyMDAyLTAyLTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2xpbmtfc2VnbWVudHMpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZXMuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfYWxpZ25fc2VyaWZfZWRnZSk6IFVzZSBGVF9VTlVTRUQgaW5zdGVhZAoJb2YgVU5VU0VELgoJKiBzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYyAoZnRfYXV0b2hpbnRlcl9yZXNldCk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX21hc2tfdGFibGVfbWVyZ2UpOiBGaXggdHlwbyBpbiB2YXJpYWJsZQoJc3dhcHBpbmcgY29kZS4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0JsdWVfQWxpZ24pOiBBZGQgUFNIX0JMVUVfQUxJR05fTk9ORS4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NuYXBfc3RlbSk6IFVzZSBpdC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9vcHRpbWl6ZSk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X2FsaWduKTogRGl0dG8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKFVOVVNFRCk6IFJlbW92ZWQuCgoyMDAyLTAyLTEwICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4KCglBZGQgc3VwcG9ydCBmb3IgSVNPTGF0aW4xIFBTIGVuY29kaW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChmdF9lbmNvZGluZ19sYXRpbl8xKTogTmV3IHRhZwoJKGBsYXQxJykuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChUMV9FbmNvZGluZ19UeXBlKTogQWRkCglgdDFfZW5jb2RpbmdfaXNvbGF0aW4xJy4KCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKEdldF9DaGFyX0luZGV4LCBHZXRfTmV4dF9DaGFyKTogSGFuZGxlCglmdF9lbmNvZGluZ19sYXRpbl8xLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogSGFuZGxlIGBJU09MYXRpbjFFbmNvZGluZycuCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogSGFuZGxlIGB0MV9lbmNvZGluZ19pc29sYXRpbjEnLgoKMjAwMi0wMi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogUkVBRE1FOiBGaXggdHlwby4KCSogZG9jcy9DSEFOR0VTOiBNaW5vciBmaXhlcy4KCgoJKiBWZXJzaW9uIDIuMC44IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDItMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZm9yIDIuMC44LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBTZXR0aW5nIGBQQVRDSF9MRVZFTCcgdG8gOCBhbmQKCXJlbW92aW5nIGBGVF9HZXRfTmV4dF9DaGFyJyBmcm9tIHRoZSBBUEkgKHRlbXBvcmFyaWx5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkaW5nIGNvbW1lbnRzIHRvIEZUX0dldF9OZXh0X0NoYXI7Cglub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtaWdodCB0ZW1wb3JhcmlseSBiZSByZW1vdmVkIGZvciB0aGUgMi4wLjgKCXJlbGVhc2UuCgoyMDAyLTAyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IFJlbW92ZWQgaW1tYXR1cmUgc3VwcG9ydCBvZgoJdGhlIEFWRVJBR0VfV0lEVEggcHJvcGVydHkuCgoyMDAyLTAyLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBTaW5jZSBtYW55IGZvbnRzIGVtYmVkZGVkIGluCglQREYgZG9jdW1lbnRzIGRvIG5vdCBpbmNsdWRlICdjbWFwJywgJ3Bvc3QnIGFuZCAnbmFtZScgdGFibGVzLCB0aGUKCVNGTlQgZmFjZSBsb2FkZXIgaGFzIGJlZW4gY2hhbmdlZCB0byBub3QgaW1tZWRpYXRlbHkgcmVwb3J0IGFuCgllcnJvciBpZiB0aGVzZSBhcmUgbm90IHByZXNlbnQuCgoJTm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uIF9yZXF1aXJlc18gdGhlc2UgdGFibGVzLCBidXQgQWRvYmUKCXNlZW1zIHRvIGlnbm9yZSBpdCBjb21wbGV0ZWx5LgoKCSogc3JjL3NmbnQvdHRjbWFwLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9yZWFkX1RPQyk6IFVzZSBGVF9VSW50LgoJKHBjZl9wYXJzZV9tZXRyaWMsIHBjZl9wYXJzZV9jb21wcmVzc2VkX21ldHJpYyk6IFJlbW92ZWQuICBDb2RlCglpcyBub3cgaW4gLi4uCgkocGNmX2dldF9tZXRyaWMpOiBIZXJlLgoJKHBjZlNlZWtUb1R5cGUpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBUaGlzLgoJVXNlIEZUX0ludC4KCShwY2ZIYXNUeXBlKTogUmVuYW1lZCB0byAuLi4KCShwY2ZfaGFzX3RhYmxlX3R5cGUpOiBUaGlzLgoJVXNlIEZUX0ludC4KCShmaW5kX3Byb3BlcnR5KTogUmVuYW1lZCB0byAuLi4KCShwY2ZfZmluZF9wcm9wZXJ0eSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKHBjZl9nZXRfYml0bWFwcywgcGNmX2dldF9lbmNvZGluZ3MpOiBIYW5kbGUgaW52YWxpZCBQQ0YgZm9udHMKCWJldHRlciAoZGVsYXlpbmcgZm9ybWF0IGNoZWNrcyBvdXQgb2YgRlRfQWNjZXNzX0ZyYW1lIC4uCglGVF9Gb3JnZXRfRnJhbWUgYmxvY2tzIHRvIGF2b2lkIGxlYXZpbmcgdGhlIHN0cmVhbSBpbiBhbiBpbmNvcnJlY3QKCXN0YXRlIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgUENGIGZvbnQpLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0ZhY2VfRG9uZSk6IFRoaXMuCgkoUENGX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0ZhY2VfSW5pdCk6IFRoaXMuCgkoUENGX0dldF9DaGFyX0luZGV4KTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfQ2hhcl9HZXRfSW5kZXgpOiBUaGlzLgoJKFBDRl9HZXRfTmV4dF9DaGFyKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfQ2hhcl9HZXRfTmV4dCk6IFRoaXMuCgkocGNmX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoJKiBzcmMvcGNmL3BjZi5oIChQQ0ZfRG9uZV9GYWNlKTogUmVtb3ZlZC4KCjIwMDItMDItMDYgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChGVF9Eb25lX0ZhY2UpOiBGaXhlZCBzbWFsbCBtZW1vcnkgbGVhay4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogTm93IGhhbmRsZXMgdGhlIGBBVkVSQUdFX1dJRFRIJwoJcHJvcGVydHkgdG8gcmV0dXJuIGNvcnJlY3QgY2hhcmFjdGVyIHBpeGVsICh3aWR0aC9oZWlnaHQpIHBhaXJzIGZvcgoJZW1iZWRkZWQgYml0bWFwcy4KCjIwMDItMDItMDQgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCglBZGRpbmcgdGhlIGZ1bmN0aW9uIGBGVF9HZXRfTmV4dF9DaGFyJywgZG9pbmcgdGhlIG9idmlvdXMgdGhpbmcKCXcuci50LiB0aGUgc2VsZWN0ZWQgY2hhcm1hcC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkIHByb3RvdHlwZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oOiBBZGQgYEZURHJpdmVyX2dldE5leHRDaGFyJwoJdHlwZWRlZi4KCShGVF9Ecml2ZXJfQ2xhc3MpOiBVc2UgaXQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNuYW1lcy5oOiBBZGQgYFBTX05leHRfVW5pY29kZV9GdW5jJwoJdHlwZWRlZi4KCShQU05hbWVzX0ludGVyZmFjZSk6IFVzZSBpdC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmg6IEFkZCBgVFRfQ2hhck5leHRfRnVuYycKCXR5cGVkZWYuCgkoVFRfQ01hcFRhYmxlKTogVXNlIGl0LgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24sIGltcGxlbWVudGluZwoJaGlnaC1sZXZlbCBBUEkuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uZXh0X2NoYXIpOiBOZXcgZnVuY3Rpb24uCgkoY2ZmX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL2NpZC9jaWRyaXZlci5jIChDaWRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0MWNpZF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHBjZl9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKFBTX05leHRfVW5pY29kZSk6IE5ldyBmdW5jdGlvbi4KCShwc25hbWVzX2ludGVyZmFjZSk6IEFkZCBpdC4KCSogc3JjL3NmbnQvdHRjbWFwLmMgKGNvZGVfdG9fbmV4dDAsIGNvZGVfdG9fbmV4dDIsIGNvZGVfdG9fbmV4dDQsCgljb2RlX3RvX25leHQ2LCBjb2RlX3RvX25leHRfOF8xMiwgY29kZV90b19uZXh0XzEwKTogTmV3IGF1eGlsaWFyeQoJZnVuY3Rpb25zLgoJKFRUX0NoYXJNYXBfTG9hZCk6IFVzZSB0aGVtLgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0dF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy90eXBlMS90MWRyaXZlci5jIChHZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHQxX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3dpbmZudC93aW5mbnQuYyAoRk5UX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkod2luZm50X2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogRm9yIG5vdywgcmVwb3J0IFVuaWNvZGUgZm9yCglVbmljb2RlIGFuZCBMYXRpbiAxIGVuY29kaW5ncy4KCjIwMDItMDItMDIgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogQWRkIG1pc3NpbmcgYGZpJy4KCgoJKiBWZXJzaW9uIDIuMC43IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogSW5jcmVhc2luZyBGUkVFVFlQRV9QQVRDSCB0byA3Cglmb3IgdGhlIG5ldyByZWxlYXNlLgoKMjAwMi0wMS0zMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLCBSRUFETUUuVU5YLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGRvY3VtZW50YXRpb24gZm9yIHRoZQoJMi4wLjcgcmVsZWFzZS4KCjIwMDItMDEtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIElOU1RBTEw6IE1vdmVkIHRvIC4uLgoJKiBkb2NzL0lOU1RBTEw6IEhlcmUgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdGhlIGBpbnN0YWxsJyBzY3JpcHQgb24KCVdpbmRvd3MsIHdoZXJlIHRoZSBmaWxlc3lzdGVtIGRvZXNuJ3QgcHJlc2VydmUgY2FzZS4KCjIwMDItMDEtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGNvbmZpZ3VyZTogRml4ZWQgdGhlIHNjcmlwdC4gIEl0IHByZXZpb3VzbHkgZGlkbid0IGFjY2VwdCBtb3JlCgl0aGFuIG9uZSBhcmd1bWVudCBjb3JyZWN0bHkuICBGb3IgZXhhbXBsZSwgd2hlbiB0eXBpbmc6CgoJICAuL2NvbmZpZ3VyZSAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS1ubHMKCgl0aGUgYC0tZGlzYWJsZS1ubHMnIHdhcyBpbmNvcnJlY3RseSBzZW50IHRvIHRoZSBgbWFrZScgcHJvZ3JhbS4KCjIwMDItMDEtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFJFQURNRS5VTlg6IEZpeCB0eXBvLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rICh1bmluc3RhbGwpOiBGaXggbGlicmFyeSBuYW1lIGZvciBsaWJ0b29sLgoKMjAwMi0wMS0yOCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Eb25lX0ZhY2UpOiBGaXggaW5jb3JyZWN0IGRlc3RydWN0aW9uIG9mCgl0aGUgZmFjZSBvYmplY3QgKGZhY2UtPnRvYy50YWJsZXMsIGZhY2UtPnJvb3QuZmFtaWx5X25hbWUsCglmYWNlLT5yb290LmF2YWlsYWJsZV9zaXplLCBmYWNlLT5jaGFyc2V0X2VuY29kaW5nLAoJZmFjZS0+Y2hhcnNldF9yZWdpc3RyeSBhcmUgbm93IGZyZWVkKS4gIFRoYW5rcyB0byBOaWVscyBNb3NlbGV5LgoKMjAwMi0wMS0yOCAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogU2V0IGBsb2FkZXItPm51bV9jaGFycycuCgoyMDAyLTAxLTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzLCBwYXJzZV9jaGFyc3RyaW5ncyk6IFVzZSBjb3B5CglvZiBgYmFzZScgc3RyaW5nIGZvciBkZWNyeXB0aW5nIHRvIG5vdCBtb2RpZnkgdGhlIG9yaWdpbmFsIGRhdGEuCglCYXNlZCBvbiBhIHBhdGNoIGJ5IEpha3ViIEJvZ3VzeiA8cWJvb3NoQHBsZC5vcmcucGw+LgoKMjAwMi0wMS0yNyAgR2l1bGlhbm8gUG9jaGluaSAgPHBvY2hpbmlAc2hpbnkuaXQ+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfc2NhbmxpbmUpOiBGaXggYnVnIHdoaWNoIGNhdXNlZAoJYmFkIHJlbmRlcmluZyBvZiB0aGluIGxpbmVzIChsZXNzIHRoYW4gb25lIHBpeGVsIHRoaWNrKS4KCjIwMDItMDEtMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogTWFrZSBsYXN0IHBhdGNoIHdvcmsKCWFjdHVhbGx5LgoKMjAwMi0wMS0yNSAgTWFydGluIFppbnNlciAgPHppbnNlckBkZWN1cy5kZT4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9kb25lLCBmdGNfbm9kZV9kZXN0cm95KTogRml4Cgljb21waWxhdGlvbiB3YXJuaW5ncy4KCSogc3JjL2Jhc2UvZGVzY3JpcC5tbXMgKE9CSlMpOiBBZGQgYGZ0bW0ub2JqJy4KCSogc3JjL2NhY2hlL2Rlc2NyaXAubW1zIChmdGNhY2hlLm9iaik6IERlcGVuZGVuY2llcyBhZGRlZC4KCjIwMDItMDEtMjUgIFdBTkcgWWkgIDx3YW5neWlAZm91bmRlci5jb20uY24+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IEZpeCBkZWFsbG9jYXRpb24gYnVnLgoKMjAwMi0wMS0yMSAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGRvY3MvUEFURU5UUzogVHlwbyBmaXhlZCAodGhhbmtzIHRvIERldGxlZiBgSGF3a2V5ZScgV/xya25lcikgaW4KCXRoZSBVUkwgZm9yIHRoZSBvbmxpbmUgcmVzb3VyY2UuCgoyMDAyLTAxLTE4ICBJYW4gQnJvd24gIDxpYW4uYnJvd25AcHJpbnRzb2Z0LmRlPgoKCSogYnVpbGRzL3dpbjMyL2Z0ZGVidWcuYzogTmV3IGZpbGUuCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDEtMTggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRzeXN0ZW0uYzogVXBkYXRlZCBmb3IgQW1pZ2FPUyAzLjkuCgkqIGJ1aWxkcy9hbWlnYS9SRUFETUU6IFVwZGF0ZWQuCgoyMDAyLTAxLTE4ICBJYW4gQnJvd24gIDxpYW4uYnJvd25AcHJpbnRzb2Z0LmRlPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wMS0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmE0OiBUaGUgc2NyaXB0IHdhcyBzdGlsbCBidWdneS4KCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBNYWtlIGl0IHJlYWxseSB3b3JrIGZvciBhbnkgaW5zdGFsbAoJcHJlZml4LgoKMjAwMi0wMS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmE0OiBGaXggc29tZSBzZXJpb3VzIGJ1Z3MuCgoyMDAyLTAxLTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEJ1aWxkIHRvcC1sZXZlbCBKYW1maWxlLgoKMjAwMi0wMS0wOSAgTWF4aW0gU2hlbWFuYXJldiAgPG1jc2VlbWFnZ0B5YWhvby5jb20+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfbGluZSk6IFNtYWxsIG9wdGltaXphdGlvbiB0bwoJdGhlIHNtb290aCBhbnRpLWFsaWFzZWQgcmVuZGVyZXIgdGhhdCBkZWFscyB3aXRoIHZlcnRpY2FsIHNlZ21lbnRzLgoJVGhpcyByZXN1bHRzIGluIGEgNS03JSBzcGVlZHVwIGluIHJlbmRlcmluZyBzcGVlZC4KCjIwMDItMDEtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBzb21lIHdyYXBwZXIgc2NyaXB0cyB0byBtYWtlIHRoZSBpbnN0YWxsYXRpb24gbW9yZQoJVW5peC1mcmllbmRseS4KCgkqIGNvbmZpZ3VyZSwgaW5zdGFsbDogTmV3IGZpbGVzLgoKCSogSU5TVEFMTCwgUkVBRE1FLlVOWDogVXBkYXRlZCBpbnN0YWxsYXRpb24gZG9jdW1lbnRhdGlvbiB0byB1c2UgdGhlCgluZXcgJ2NvbmZpZ3VyZScgYW5kICdpbnN0YWxsJyBzY3JpcHRzLgoKMjAwMi0wMS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wLjYgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogZG9jcy9CVUdTLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGRvY3VtZW50YXRpb24gZm9yIDIuMC42IHJlbGVhc2UuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHk6IEZpeGVkIEhUTUwgcXVvdGluZyBpbiBzb3VyY2VzLgoJKGh0bWxfZm9ybWF0KTogUmVwbGFjZWQgd2l0aCAuLi4KCShodG1sX3F1b3RlKTogTmV3IGZ1bmN0aW9uLgoJKGh0bWxfcXVvdGUwKTogTmV3IGZ1bmN0aW9uLgoJKERvY0NvZGU6OmR1bXBfaHRtbCk6IFNtYWxsIGltcHJvdmVtZW50LgoJKERvY1BhcmFncmFwaDo6ZHVtcCwgRG9jQmxvY2s6Omh0bWwpOiBVc2UgaHRtbF9xdW90ZTAgYW5kIGh0bWxfcXVvdGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBTZXR0aW5nIGRlZmF1bHQgb3B0aW9ucyBmb3IKCWEgcmVsZWFzZSBidWlsZCAoZGVidWdnaW5nIG9mZiwgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgb2ZmKS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvYmFzZS9mdG91dGxuLmMsIHNyYy9jYWNoZS9mdGNjbWFwLmMsCglzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLAoJc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy9zZm50L3R0c2JpdC5jOiBSZW1vdmluZyBzbWFsbCBjb21waWxlcgoJd2FybmluZ3MgKGluIHBlZGFudGljIGNvbXBpbGF0aW9uIG1vZGVzKS4KCjIwMDItMDEtMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfYWxpZ25fbGlua2VkX2VkZ2UpOiBNb2RpZmllZCBjb21wdXRhdGlvbgoJb2YgYXV0by1oaW50ZWQgc3RlbSB3aWR0aHM7IHRoaXMgYXZvaWRzIGNvbG9yIGZyaW5nZXMgaW4KCWBDbGVhclR5cGUtbGlrZScgcmVuZGVyaW5nLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaF9IZWFkZXIsCglUVF9Mb2FkX1NpbXBsZV9HbHlwaCwgVFRfTG9hZF9Db21wb3NpdGVfR2x5cGgsIGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOgoJTW9kaWZpZWQgdGhlIFRydWVUeXBlIGxvYWRlciB0byBtYWtlIGl0IG1vcmUgcGFyYW5vaWQ7IHRoaXMgYXZvaWRzCgluYXN0eSBidWZmZXIgb3ZlcmZsb3dzIGluIHRoZSBjYXNlIG9mIGludmFsaWQgZ2x5cGggZGF0YSAoYXMKCWVuY291bnRlcmVkIGluIHRoZSBvdXRwdXQgb2Ygc29tZSBidWdneSBmb250IGNvbnZlcnRlcnMpLgoKMjAwMi0wMS0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLlVOWDogQWRkZWQgc3BlY2lhbCBSRUFETUUgZmlsZSBmb3IgVW5peCB1c2Vycy4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmMgKEZUX05ld19TdHJlYW0pOiBGaXhlZCB0eXBvLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEFkZGVkICNpbmNsdWRlIEZUX09VVExJTkVfSCB0byBnZXQgcmlkCglvZiBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT3V0bGluZV9DaGVjayk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoKMjAwMi0wMS0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBBZGQgY2FzdCB0byBhdm9pZCBjb21waWxlcgoJd2FybmluZy4KCjIwMDItMDEtMDMgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmMgKEZUX05ld19TdHJlYW0pOiBBZGRlZCBhIGZpeCB0byBlbnN1cmUgdGhhdAoJYWxsIEZyZWVUeXBlIGlucHV0IHN0cmVhbXMgYXJlIGNsb3NlZCBpbiBjaGlsZCBwcm9jZXNzZXMgb2YgYSBgZm9yaycKCW9uIFVuaXggc3lzdGVtcy4gIFRoaXMgaXMgaW1wb3J0YW50IHRvIGF2b2lkIChwb3RlbnRpYWwpIGFjY2VzcwoJY29udHJvbCBpc3N1ZXMuCgoyMDAyLTAxLTAzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IEZpeGVkIGEgYnVnIHRoYXQgY3Jhc2hlZCB0aGUKCWxpYnJhcnkgd2hlbiBkZWFsaW5nIHdpdGggY2VydGFpbiB3ZWlyZCBmb250cyBsaWtlIGBTdGFsaW5ncmFkJywgaW4KCWBzYWRuLnBmYicgKHRoaXMgZm9udCBoYXMgbm8gZnVsbCBmb250IG5hbWUgZW50cnkpLgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCAoRlRfT3V0bGluZV9DaGVjayk6CglOZXcgZnVuY3Rpb24gdG8gY2hlY2sgdGhlIGNvbnNpc3RlbmN5IG9mIG91dGxpbmUgZGF0YS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogVXNlIGBGVF9PdXRsaW5lX0NoZWNrJyB0bwoJZW5zdXJlIHRoYXQgbG9hZGVkIGdseXBocyBhcmUgdmFsaWQuICBUaGlzIGFsbG93cyBjZXJ0YWluIGZvbnRzIGxpa2UKCWB0dDEwOTVtXy50dGYnIHRvIGJlIGxvYWRlZCBldmVuIHRob3VnaCBpdCBhcHBlYXJzIHRoZXkgY29udGFpbgoJcmVhbGx5IGZ1bmt5IGdseXBocy4KCglUaGVyZSBzdGlsbCBpcyBhIGJ1ZyB0aGVyZSwgdGhvdWdoLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeCBlcnJvciBjb25kaXRpb24uCgoyMDAxLTEyLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogRml4IGFkdmFuY2Ugd2lkdGgKCWNvbXB1dGF0aW9uIG9mIGF1dG8taGludGVkIGdseXBocy4gIFRoaXMgbm90aWNlYWJseSBpbXByb3ZlcyB0aGUKCXNwYWNpbmcgb2YgbGV0dGVycyBpbiBLREUgYW5kIEdub21lLgoKMjAwMS0xMi0yNSAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGJ1aWxkcy9kb3MvZGV0ZWN0Lm1rOiBDb3JyZWN0aW5nIHRoZSBvcmRlciBmb3IgQm9ybGFuZCBjb21waWxlcnM6CgkxNi1iaXQgYmNjIHdhcyBuZXZlciBzZWxlY3RlZCwgYWx3YXlzIG92ZXJyaWRkZW4gYnkgMzItYml0IGJjYzMyLgoKMjAwMS0xMi0yMiAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wZmMvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogSGFuZGxlIHByb3BlcnR5IGBQT0lOVF9TSVpFJwoJYW5kIGZpeCBpbmNvcnJlY3QgY29tcHV0YXRpb24gb2YgYGF2YWlsYWJsZV9zaXplcycuCgoyMDAxLTEyLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogQXV0by1oaW50ZWQgZ2x5cGhzIGhhZCBhbgoJaW5jb3JyZWN0IGdseXBoIGFkdmFuY2UgaW4gdGhlIGNhc2Ugb2YgbW9uby13aWR0aCBmb250cyAobGlrZQoJQ291cmllciwgQW5kYWxlIE1vbm8sIGFuZCBvdGhlcnMpLgoKMjAwMS0xMi0yMiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS8qOiBBZGFwdGF0aW9ucyB0byBsYXRlc3QgY2hhbmdlcy4KCVN1cHBvcnQgYWRkZWQgZm9yIE1vcnBoT1MuCgoyMDAxLTEyLTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKEZUX0NPTVBPTkVOVCk6IFJlZGVmaW5lIHRvIGB0cmFjZV9wc2hyZWMnLgoJKHBzX21hc2tfdGFibGVfbWVyZ2UsIHBzX2hpbnRzX29wZW4sIHBzX2hpbnRzX3N0ZW0sCglwc19oaW50c190MXN0ZW0zLCBwc19oaW50c190Mm1hc2ssIHBzX2hpbnRzX3QyY291bnRlcik6IEZpeAoJRlRfRVJST1IgbWVzc2FnZXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChGVF9DT01QT05FTlQpOiBEZWZpbmUgYXMKCWB0cmFjZV9wc2hhbGdvMScuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChGVF9DT01QT05FTlQpOiBEZWZpbmUgYXMKCWB0cmFjZV9wc2hhbGdvMicuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIChGVF9UcmFjZSk6IFVwZGF0ZWQuCgoJKiBkb2NzL21vZHVsZXMudHh0OiBOZXcgZmlsZS4KCjIwMDEtMTItMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfaGludHNfdDJtYXNrLCBwc19oaW50c190MmNvdW50ZXIpOgoJSWdub3JlIGludmFsaWQgYGhpbnRtYXNrJyBhbmQgYGNudHJtYXNrJyBvcGVyYXRvcnMgKGluc3RlYWQgb2YKCXJldHVybmluZyBhbiBlcnJvcikuICBHbHlwaCAyMDI4IG9mIHRoZSBDRkYgZm9udCBgTVN1bmctTGlnaHQtQWNybycKCWNvdWxkbid0IGJlIHJlbmRlcmVkIG90aGVyd2lzZSAoaXQgc2VlbXMgaXRzIGNoYXJzdHJpbmcgaXMgYnVnZ3ksCgl0aG91Z2ggdGhpcyByZXF1aXJlcyBtb3JlIGFuYWx5c2lzKS4KCShGVF9DT01QT05FTlQpOiBEZWZpbmUuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyksIHNyYy9wc2F1eC90MWRlY29kZS5jCgkoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyksIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jICgqKSwgRml4ZWQgYQoJYnVnIHdoZXJlIHRoZSBYIGFuZCBZIGF4aXMgd2hlcmUgaW52ZXJzZWQgaW4gdGhlIHBvc3RzY3JpcHQgaGludGVyLgoJVGhpcyBjYXVzZWQgcHJvYmxlbSB3aGVuIGRpc3BsYXlpbmcgb24gbm9uLXNxdWFyZSBzdXJmYWNlcy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jOiBzL3ZlcnRpY2FsL2RpbWVuc2lvbi8uCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBSZXBsYWNlZCBhIGZsb2F0aW5nCglwb2ludCBjb25zdGFudCB3aXRoIGEgZml4ZWQtZmxvYXQgZXF1aXZhbGVudC4gIEZvciBzb21lIHJlYXNvbnMgbm90CglhbGwgY29tcGlsZXJzIGFyZSBjYXBhYmxlIG9mIGRpcmVjdGx5IGNvbXB1dGluZyBhIGZsb2F0aW5nIHBvaW50ZXIKCWNvbnN0YW50IGNhc3RlZCB0byBGVF9GaXhlZCwgYW5kIHdpbGwgbGluayBhIG1hdGggbGlicmFyeSBpbnN0ZWFkLgoKMjAwMS0xMi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2Rlc3Ryb3ksIGZ0Y19jYWNoZV9sb29rdXApOiBGaXgKCXRyYWNpbmcgc3RyaW5ncy4KCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfZmFtaWx5X2luaXQpOiBEaXR0by4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MsCglmdGNfZmFtaWx5X3RhYmxlX2ZyZWUsIEZUQ19NYW5hZ2VyX0NoZWNrKTogRGl0dG8uCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBEaXR0by4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Eb25lX0xpYnJhcnkpOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDEtMTItMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBQb3N0U2NyaXB0IGhpbnRlciBzdXBwb3J0IHRvIHRoZSBDRkYgYW5kIENJRCBkcml2ZXJzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oIChDRkZfRm9udCk6IE5ldyBtZW1iZXIKCWBwc2hpbnRlcicuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfR2V0X1N0YW5kYXJkX0VuY29kaW5nKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfSW5pdF9CdWlsZGVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfQnVpbGRlcl9Jbml0KTogVGhpcy4KCUFkZGVkIG5ldyBhcmd1bWVudCBgaGludGluZycuCgkoQ0ZGX0RvbmVfQnVpbGRlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0J1aWxkZXJfRG9uZSk6IFRoaXMuCgkoQ0ZGX0luaXRfRGVjb2Rlcik6IEFkZGVkIG5ldyBhcmd1bWVudCBgaGludGluZycuCgkoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogSW1wbGVtZW50IHZzdGVtIHN1cHBvcnQuCgkoQ0ZGX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoJQWRkIGhpbnRpbmcgc3VwcG9ydC4KCShjZmZfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlKTogVXNlIENGRl9HZXRfU3RhbmRhcmRfRW5jb2RpbmcoKS4KCShjZmZfYXJndW1lbnRfY291bnRzKTogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZnbG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0hJTlRTX0guCgkoQ0ZGX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsIENGRl9TaXplX0RvbmUsIENGRl9TaXplX0luaXQsCglDRkZfU2l6ZV9SZXNldCwgQ0ZGX0dseXBoU2xvdF9Eb25lLCBDRkZfR0x5cGhTbG90X0luaXQpOiBOZXcKCWZ1bmN0aW9ucy4KCShDRkZfSW5pdF9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRmFjZV9Jbml0KTogVGhpcy4KCUFkZCBoaW50ZXIgc3VwcG9ydC4KCShDRkZfRG9uZV9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRmFjZV9Eb25lKTogVGhpcy4KCShDRkZfSW5pdF9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9Ecml2ZXJfSW5pdCk6IFRoaXMuCgkoQ0ZGX0RvbmVfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRHJpdmVyX0RvbmUpOiBUaGlzLgoJKiBzcmMvY2ZmL2NmZm9ianMuaDogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChDSURfRmFjZVJlYyk6IE5ldyBtZW1iZXIKCWBwc2hpbnRlcicuCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0xvYWRfR2x5cGgpOiBBZGQgaGludGVyIHN1cHBvcnQuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSC4KCShDSURfR2x5cGhTbG90X0RvbmUsIENJRF9HbHlwaFNsb3RfSW5pdCwgQ0lEX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsCglDSURfU2l6ZV9Eb25lLCBDSURfU2l6ZV9Jbml0LCBDSURfU2l6ZV9SZXNldCk6IE5ldyBmdW5jdGlvbnMuCgkoQ0lEX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0ZhY2VfRG9uZSk6IFRoaXMuCgkoQ0lEX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0ZhY2VfSW5pdCk6IFRoaXMuCglBZGQgaGludGluZyBzdXBwb3J0LgoJKENJRF9Jbml0X0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0RyaXZlcl9Jbml0KTogVGhpcy4KCShDSURfRG9uZV9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENJRF9Ecml2ZXJfRG9uZSk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkb2Jqcy5oOiBVcGRhdGVkLgoJKiBzcmMvY2lkcml2ZXIuYzogVXBkYXRlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAodDJfaGludF9zdGVtcyk6IEZpeGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfTGlicmFyeSk6IEZpeGVkIGEgc3R1cGlkIGJ1ZyB0aGF0CgljcmFzaGVkIHRoZSBsaWJyYXJ5IG9uIGV4aXQuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKTogRW5hYmxlIGZvbnQgbWF0cml4Cgl0cmFuc2Zvcm1hdGlvbiBvZiBoaW50ZWQgZ2x5cGhzLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogRml4IGVycm9yIGNvbmRpdGlvbi4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRmFjZV9Eb25lKTogRml4ZWQgYSBtZW1vcnkgbGVhazsgdGhlIHN1YnJzCglyb3V0aW5lcyB3ZXJlIG5ldmVyIHJlbGVhc2VkIHdoZW4gQ0lEIGZhY2VzIHdlcmUgZGVzdHJveWVkLgoKCSogc3JjL2NmZi9jZmZsb2FkLmgsIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZmdsb2FkLmM6IFVwZGF0ZWQKCXRvIG1vdmUgdGhlIGRlZmluaXRpb24gb2YgZW5jb2RpbmcgdGFibGVzIGJhY2sgd2l0aGluIGBjZmZsb2FkLmMnCglpbnN0ZWFkIG9mIG1ha2luZyB0aGVtIHBhcnQgb2YgYSBzaGFyZWQgaGVhZGVyIChjYXVzaW5nIHByb2JsZW1zIGluCglgbXVsdGknIGJ1aWxkcykuICBUaGlzIHJldmVydHMgY2hhbmdlIDIwMDEtMDgtMDguCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQgZm9yIDIuMC42IHJlbGVhc2UuCgkqIGRvY3MvVE9ETzogQWRkZWQgYHN0ZW0zIGFuZCBjb3VudGVyIGhpbnRzIHN1cHBvcnQnIHRvIHRoZSBUT0RPCglsaXN0IGZvciB0aGUgUG9zdHNjcmlwdCBoaW50ZXIuCgkqIGRvY3MvQlVHUzogQ2xvc2VkIHRoZSBBVVRPSElOVC1OTy1TQklUUyBidWcuCgoyMDAxLTEyLTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2FjaGUuaDogQWRkZWQgY29tbWVudHMgdG8gaW5kaWNhdGUgdGhhdAoJc29tZSBvZiB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgYXBwbGljYXRpb25zCgl0aGF0IG5lZWQgdG8gaW1wbGVtZW50IGN1c3RvbSBjYWNoZSB0eXBlcy4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGN1cl90b19vcmcsIG9yZ190b19jdXIpOiBGaXhlZCBhIG5hc3R5IGJ1ZwoJdGhhdCBwcmV2ZW50ZWQgY29tcG9zaXRlcyBmcm9tIGxvYWRpbmcgY29ycmVjdGx5LCBkdWUgdG8gbWlzc2luZwoJcGFyZW50aGVzZXMgYXJvdW5kIG1hY3JvIHBhcmFtZXRlcnMuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBNYWtlIHRoZSBgcG9zdCcgYW5kIGBuYW1lJwoJdGFibGVzIG9wdGlvbmFsIHRvIGxvYWQgUENMIGZvbnRzIHByb3Blcmx5LgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaCksIHNyYy9iYXNlL2Z0b2Jqcy5jCgkoRlRfTG9hZF9HbHlwaCksIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfTE9BRF9TQklUU19PTkxZKToKCWBGaXhlZCcgdGhlIGJ1ZyB0aGF0IHByZXZlbnRlZCBlbWJlZGRlZCBiaXRtYXBzIHRvIGJlIGxvYWRlZCB3aGVuCgl0aGUgYXV0by1oaW50ZXIgaXMgdXNlZC4gIFRoaXMgYWN0dWFsbHkgaXMgYSBoYWNrIGJ1dCB3aWxsIGJlIGVub3VnaAoJdW50aWwgdGhlIGludGVybmFsIHJlLWRlc2lnbiBzY2hlZHVsZWQgZm9yIEZyZWVUeXBlIDIuMS4KCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IEZpeGVkIGEgbmFzdHkgb3V0bGluZQoJc2hpZnRpbmcgYnVnIGluIHRoZSBtb25vY2hyb21lIHJlbmRlcmVyLgoKCSogUkVBRE1FOiBVcGRhdGVkIHZlcnNpb24gbnVtYmVycyB0byAyLjAuNi4KCjIwMDEtMTItMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXggdGVzdCBmb3IgaW52YWxpZAoJZ2x5cGggaGVhZGVyLgoKMjAwMS0xMi0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmggKEZUQ19Ob2RlX1VucmVmKTogUmVtb3ZlZC4gIEl0IGlzCglhbHJlYWR5IGluIGZ0Y21hbmFnLmguCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgZ2ZhbScuCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfZmFtaWx5X3RhYmxlX2FsbG9jLAoJKiBmdGNfZmFtaWx5X3RhYmxlX2ZyZWUpOiBVc2UgRlRfRVhQT1JUX0RFRi4KCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtYW5hZy5oOiBVcGRhdGVkLgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZGVzdHJveSk6IFVzZSBGVF9FWFBPUlRfREVGLgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9ub2RlX2luaXQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgY2ZhbScuCglSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCShGVENfQ01hcENhY2hlX0xvb2t1cCk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCShmdGNfY21hcF9mYW1pbHlfaW5pdCk6IERpdHRvLgoJKEZUQ19DTWFwQ2FjaGVfTG9va3VwKTogRGl0dG8uCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEluY3JlYXNlIGB2ZXJzaW9uX2luZm8nIHRvIDg6MDoyLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0xMi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL21hYy9SRUFETUU6IFVwZGF0ZWQuCgoyMDAxLTEyLTE0ICBTY290dCBMb25nICA8c2NvdHRAc3dpZnR2aWV3LmNvbT4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXhpbmcgY3Jhc2ggd2hlbgoJZGVhbGluZyB3aXRoIGludmFsaWQgZm9udHMgKGkuZS4gZ2x5cGggc2l6ZSA8IDEwIGJ5dGVzKS4KCjIwMDEtMTItMTQgIFNhbSBMYXRpbmdhICA8c2xvdWtlbkBkZXZvbHV0aW9uLmNvbT4KCgkqIGJ1aWxkcy9tYWMvZnJlZXR5cGUubWFrZTogQSBuZXcgTWFrZWZpbGUgdG8gYnVpbGQgd2l0aCBNUFcgb24KCU1hY09TIGNsYXNzaWMuCgoyMDAxLTEyLTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoKSwgc3JjL3R5cGUxL3QxZ2xvYWQuYwoJKFQxX0xvYWRfR2x5cGgpLCBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Mb2FkX0dseXBoKSwKCXNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX0xvYWRfR2x5cGgpOiBGaXhlZCBhIHNlcmlvdXMgYnVnIGNvbW1vbiB0bwoJYWxsIGZvbnQgZHJpdmVycyAodGhlIGFkdmFuY2Ugd2lkdGggd2FzIG5ldmVyIGhpbnRlZCB3aGVuIGl0CglzaG91bGQpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IE5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZGVidWdfbWVtX2R1bW15KSBbIUZUX0RFQlVHX01FTU9SWV06IERvbid0Cgl1c2UgYGV4dGVybicga2V5d29yZC4KCjIwMDEtMTItMTIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9ibHVlc19zY2FsZV96b25lcywgcHNoX2JsdWVzX3NuYXBfc3RlbQoJcHNoX2dsb2JhbHNfbmV3KTogQWRkaW5nIGNvcnJlY3QgQmx1ZVNjYWxlL0JsdWVTaGlmdCBzdXBwb3J0LCBwbHVzCglmYW1pbHkgYmx1ZXMgcHJvY2Vzc2luZy4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0JsdWVzUmVjKTogVXBkYXRlZC4KCglTdGFydGVkIGFkZGluZyBzdXBwb3J0IGZvciB0aGUgUG9zdHNjcmlwdCBoaW50ZXIgaW4gdGhlIENGRiBtb2R1bGUuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9ISU5UU19ILgoJKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IEltcGxlbWVudCBpdC4KCSogc3JjL2NmZi9jZmZnbG9hZC5oOiBVcGRhdGVkLgoKMjAwMS0xMi0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLm00OiBTb21lIHBvcnRhYmlsaXR5IGZpeGVzLgoKMjAwMS0xMi0xMSAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogc3JjL2Jhc2UvZGVzY3JpcC5tbXMgKE9CSlMpOiBBZGQgZnRkZWJ1Zy5vYmouCgoyMDAxLTEyLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9HZW5lcmljX0hlYWRlcik6IFR5cG9zLgoKMjAwMS0xMi0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBNb2RpZmllZCB0aGUgc2NyaXB0IHRvIHByZXZlbnQKCXBhc3NpbmcgYC1ML3Vzci9saWInIHRvIGdjYy4KCgkqIGRvY3MvRlRMLlRYVDogU2ltcGxlIGZpeCAoY2hhbmdlIGBMSUNFTlNFLlRYVCcgdG8gYEZUTC5UWFQnKS4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5tNDogTmV3IGZpbGUgZm9yIGNoZWNraW5nIGNvbmZpZ3VyZSBwYXRocy4KCVdlIG5lZWQgdG8gaW5zdGFsbCBpdCBpbiAkKHByZWZpeCkvc2hhcmUvYWNsb2NhbC9mcmVldHlwZTIubTQgYnV0IEkKCWRpZG4ndCBtb2RpZnkgYnVpbGRzL3VuaXgvaW5zdGFsbC5tayB5ZXQuCgoJKiBJTlNUQUxMOiBVcGRhdGVkIHRoZSBpbnN0cnVjdGlvbnMgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcyB3aXRoCglKYW0uICBUaGV5IHdlcmUgc2ltcGx5IHdyb25nLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfQ29zKTogRml4ZWQgYSBzbWFsbCBidWcgdGhhdCBjYXVzZWQKCXNsaWdodGx5IGltcHJvcGVyIHJlc3VsdHMgZm9yIGBGVF9Db3MnIGFuZCBgRlRfU2luJyAoZXhhbXBsZToKCUZUX1NpbigwKSA9PSAtMSEpLgoKMjAwMS0xMi0xMSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoR0VUX0xvbmdMRSwgR0VUX1VMb25nTEUpOgoJRml4ZWQgaW5jb3JyZWN0IGFyZ3VtZW50IHR5cGVzLgoKMjAwMS0xMi0xMCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Jbml0X0ZhY2UpOiBBbGxvdyBYZnQgdG8gdXNlIFBDRiBmb250cwoJYnkgc2V0dGluZyB0aGUgYGZhY2UtPm1ldHJpY3MubWF4X2FkdmFuY2UnIGNvcnJlY3RseS4KCjIwMDEtMTItMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY21hcC5oLCBzcmMvY2FjaGUvZnRjY21hcC5jOiBBZGRlZCBuZXcKCWNoYXJtYXAgY2FjaGUuCgkqIHNyYy9jYWNoZS9mdGNhY2hlLmM6IFVwZGF0ZWQuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogcy9VTlVTRUQvRlRfVU5VU0VELy4KCjIwMDEtMTItMDYgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCglBZGRlZCBzdXBwb3J0IGZvciByZWFkaW5nIC5kZm9udCBmaWxlcyBvbiBNYWMgT1MgWC4gIEFsc28gYWRkZWQgYQoJbmV3IHJvdXRpbmUgd2hpY2ggbG9va3MgdXAgYSBnaXZlbiBmb250IGJ5IG5hbWUgaW4gdGhlIE1hYyBPUyBhbmQKCXJldHVybnMgdGhlIGRpc2sgZmlsZSB3aGVyZSBpdCByZXNpZGVzLgoKCSogc3JjL2Jhc2UvZnRtYWMuYzogSW5jbHVkZSA8RmlsZXMuaD4gYW5kIDxUZXh0VXRpbHMuaD4uCgkoaXNfZGZvbnQpOiBOZXcgYXV4aWxpYXJ5IGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlX0Zyb21fZGZvbnQpOiBOZXcgZnVuY3Rpb24uCgkoRlRfR2V0RmlsZV9Gcm9tX01hY19OYW1lKTogTmV3IGV4cG9ydGVkIGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlKTogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oOiBVcGRhdGVkLgoKMjAwMS0xMi0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL0phbWZpbGUsIHNyYy9jYWNoZS9ydWxlcy5tazogVXBkYXRlZC4KCjIwMDEtMTItMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEw6IFNtYWxsIHVwZGF0ZS4KCjIwMDEtMTItMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogUmUtb3JkZXJlZCBjb2RlIGZvcgoJZGVidWdnaW5nIHB1cnBvc2VzLgoJQ29tbWVudCBvdXQgdXNlIG9mIGBvcmlnaW4nLgoKCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyKTogRml4ZWQgYSBuYXN0eSBoaWRkZW4gYnVnCgl3aGVyZSBvdXRsaW5lIHNoaWZ0aW5nIHdhc24ndCBjb3JyZWN0bHkgdW5kb25lIGFmdGVyIGJpdG1hcAoJcmFzdGVyaXphdGlvbi4gIFRoaXMgY3JlYXRlZCBwcm9ibGVtcyB3aXRoIGNlcnRhaW4gZ2x5cGhzIChsaWtlICciJwoJb2YgY2VydGFpbiBmb250cykgYW5kIHRoZSBjYWNoZSBzeXN0ZW0uCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX2luaXQpOiBGaXggdHlwby4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9pbml0KTogRml4IHR5cG8uCgkocHMyX2hpbnRzX2FwcGx5KTogU21hbGwgZml4LgoKMjAwMS0xMi0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9pbml0KSwKCXNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfaW5pdCk6IFJlbW92ZWQgY29tcGlsZXIKCXdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmgsIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvKiwgc3JjL2NhY2hlLyo6CglZZXQgYW5vdGhlciBtYXNzaXZlIHJld3JpdGUgb2YgdGhlIGNhY2hpbmcgc3ViLXN5c3RlbSBpbiBvcmRlciB0bwoJYm90aCBpbmNyZWFzZSBwZXJmb3JtYW5jZSBhbmQgYWxsb3cgc2ltcGxlciBjYWNoZSBzdWItY2xhc3NpbmcuICBBcwoJYW4gZXhhbXBsZSwgdGhlIGNvZGUgZm9yIHRoZSBpbWFnZSBhbmQgc2JpdCBjYWNoZXMgaXMgbm93IG11Y2gKCXNpbXBsZXIuCgoJSSBzdGlsbCBuZWVkIHRvIHVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBpbgoJd3d3L2ZyZWV0eXBlMi9kb2NzL2NhY2hlLmh0bWwgdG8gcmVmbGVjdCB0aGUgbmV3IGRlc2lnbiB0aG91Z2guCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9DQUNIRV9DSEFSTUFQX0gpOiBOZXcKCW1hY3JvLgoJKEZUX0NBQ0hFX0lOVEVSTkFMX0NBQ0hFX0gpOiBVcGRhdGVkLgoKMjAwMS0xMi0wNSAgRGF2aWQgS3JhdXNlICA8ZnJlZXR5cGVAZGF2aWRrcmF1c2UuY29tPgoKCSogZG9jcy9saWNlbnNlLnR4dDogcy9YIFdpbmRvd3MvWCBXaW5kb3cgU3lzdGVtLy4KCjIwMDEtMTItMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzogRml4IGRlZmluaXRpb24gY29uZGl0aW9uIG9mIE1FTV9TZXQoKS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKE1fWSk6IENoYW5nZSB2YWx1ZSB0byAxOTIuCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGZ0X21lbV90YWJsZV9kZXN0cm95KTogRml4IHByaW50ZigpIHBhcmFtZXRlci4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChmdGNfaW1hZ2Vfbm9kZV9pbml0LAoJZnRjX2ltYWdlX25vZGVfY29tcGFyZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV93ZWlnaHQpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZS4KCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChNRU1fU2V0KTogTW92ZSBkZWZpbml0aW9uIGRvd24gdG8gYXZvaWQKCWNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2hpbnRfZWRnZXMpOiBVc2UgVU5VU0VEKCkgdG8KCWF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAodGFibGVOYW1lcyk6IFVzZSBgY29uc3QnLgoJKHBjZl9yZWFkX1RPQyk6IENoYW5nZSBjb3VudGVyIG5hbWUgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZy4KCVVzZSBgY29uc3QnLgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX2hpbnRzX2Nsb3NlKTogUmVtb3ZlIHJlZHVuZGFudAoJZGVjbGFyYXRpb24uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfaW5pdCk6IFJlbmFtZSB2YXJpYWJsZXMKCXRvIGF2b2lkIHNoYWRvd2luZy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKTogRGl0dG8uCgkqIHNyYy90eXBlMS90MW9ianMuaDogUmVtb3ZlIGRvdWJsZSBkZWNsYXJhdGlvbnMgb2YgYFQxX1NpemVfSW5pdCgpJwoJYW5kIGBUMV9TaXplX0RvbmUoKScuCgoyMDAxLTExLTIwICBBbnRvaW5lIExlY2EgIDxhbnRvaW5lbGVjYUBtdWx0aW1hbmlhLmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogQWRkZWQgc29tZSBuZXcgTWljcm9zb2Z0IGxhbmd1YWdlCgljb2RlcyBhbmQgTENJRHMgYXMgZm91bmQgaW4gTVNETiAoUGFzc3BvcnQgU0RLKS4gIEFsc28gYWRkZWQKCWNvbW1lbnRzIGFib3V0IHRoZSBtZWFuaW5nIG9mIGJpdCA1NyBvZiB0aGUgYE9TLzInIHRhYmxlCgkoVFRfVUNSX1NVUlJPR0FURVMpIHdoaWNoICh3aXRoIE9wZW5UeXBlIHYuMS4zKSBub3cgbWVhbnMgYHRoZXJlIGlzCglhIGNoYXJhY3RlciBiZXlvbmQgMHhGRkZGIGluIHRoaXMgZm9udCcuICBUaGFua3MgdG8gRGV0bGVmIFf8cmtuZXIKCTxUZXRpU29mdEBhcGcubGFobi5kZT4gZm9yIG5vdGljaW5nIHRoaXMuCgoyMDAxLTExLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIve3BzaGFsZ28yLmMsIHBzaGFsZ28xLmN9OiBGaXhlZCBzdHVwaWQgYnVnIGluIHNvcnRpbmcKCXJvdXRpbmUgdGhhdCBjcmVhdGVkIG5hc3R5IGFsaWdubWVudCBhcnRlZmFjdHMuCgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMsIHRlc3RzL2d2aWV3LmM6IERlYnVnZ2luZyB1cGRhdGVzLgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmM6IERlLWFjdGl2YXRlZCBleHBlcmltZW50YWwgZ2FtbWEgc3VwcG9ydC4KCUFwcGFyZW50bHksIGBvcHRpbWFsJyBnYW1tYSB0YWJsZXMgZGVwZW5kIG9uIHRoZSBtb25pdG9yIHR5cGUsCglyZXNvbHV0aW9uIGFuZCBnZW5lcmFsIGthcm1hLCBzbyBpdCdzIGJldHRlciB0byBjb21wdXRlIHRoZW0gb3V0c2lkZQoJb2YgdGhlIHJhc3Rlcml6ZXIgaXRzZWxmLgoJKGdyYXlfY29udmVydF9nbHlwaCk6IFVzZSBgdm9sYXRpbGUnIGtleXdvcmQuCgoyMDAxLTEwLTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkaW5nIGV4cGVyaW1lbnRhbCBgZ2FtbWEnIHN1cHBvcnQuICBUaGlzIHByb2R1Y2VzIHNtb290aGVyIGdseXBocwoJYXQgc21hbGwgc2l6ZXMgZm9yIHZlcnkgbGl0dGxlIGNvc3QuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheXNfaW5pdF9nYW1tYSk6IE5ldyBmdW5jdGlvbi4KCShncmF5X3Jhc3Rlcl9uZXcpOiBVc2UgaXQuCgoJVmFyaW91cyBmaXhlcyB0byB0aGUgYXV0by1oaW50ZXIuICBUaGV5IG1lcmVseSBpbXByb3ZlIHRoZSBvdXRwdXQgb2YKCXNhbnMtc2VyaWYgZm9udHMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHN0aWxsIHByb2JsZW1zIHdpdGggc2VyaWZlZAoJZm9udHMgYW5kIGNvbXBvc2l0ZXMgKGFjY2VudGVkIGNoYXJhY3RlcnMpLgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9sb2FkLAoJYWhfb3V0bGluZV9saW5rX3NlZ21lbnRzKTogSW1wbGVtZW50IGl0LgoJRml4IHR5cG9zLgoJKGFoX291dGxpbmVfc2F2ZSwgYWhfb3V0bGluZV9jb21wdXRlX3NlZ21lbnRzKTogRml4IHR5cG9zLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2FsaWduX3NlcmlmX2VkZ2UpOiBOZXcgYXJndW1lbnQKCWB2ZXJ0aWNhbCcuICBJbXBsZW1lbnQgaW1wcm92ZW1lbnQuCgkoYWhfaGludF9lZGdlc18zLCBhaF9oaW50ZXJfaGludF9lZGdlcyk6IEltcGxlbWVudCBpdC4KCUZpeCB0eXBvcy4KCShhaF9oaW50ZXJfYWxpZ25fc3Ryb25nX3BvaW50cywgYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogRml4Cgl0eXBvcy4KCShhaF9oaW50ZXJfbG9hZCk6IFNldCBgYWhfZGVidWdfaGludGVyJyBpZiBERUJVR19ISU5URVIgaXMgZGVmaW5lZC4KCSogc3JjL2F1dG9oaW50L2FobW9kdWxlLmM6IEltcGxlbWVudCBzdXBwb3J0IGZvciBERUJVR19ISU5URVIgbWFjcm8uCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmg6IERpdHRvLgoJKEFIX0hpbnRlcik6IFJlbW92ZSBgZGlzYWJsZV9ob3J6X2VkZ2VzJyBhbmQgYGRpc2FibGVfdmVydF9lZGdlcycKCShtYWtpbmcgdGhlbSBnbG9iYWwgYXMgYGFoX2RlYnVnX2Rpc2FibGVfaG9yeicgYW5kCglgYWhfZGVidWdfZGlzYWJsZV92ZXJ0JykuCglGaXggdHlwb3MuCgoJKiB0ZXN0cy9ndmlldy5jOiBVcGRhdGVkIHRoZSBkZWJ1Z2dpbmcgZ2x5cGggdmlld2VyIHRvIHNob3cgdGhlCgloaW50cyBnZW5lcmF0ZWQgYnkgdGhlIGBhdXRvaGludCcgbW9kdWxlLgoKMjAwMS0xMC0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NodW5rLmMgKGZ0Y19jaHVua19jYWNoZV9sb29rdXApOiBGaXhlZCBhIGJ1ZyB0aGF0Cgljb25zaWRlcmFibHkgbG93ZXJlZCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGFic3RyYWN0IGNodW5rIGNhY2hlLgoKMjAwMS0xMC0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmgsIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvKi5oLAoJc3JjL2NhY2hlLyouYzogTWFqb3IgcmUtZGVzaWduIG9mIHRoZSBjYWNoZSBzdWItc3lzdGVtIHRvIHByb3ZpZGUKCWJldHRlciBwZXJmb3JtYW5jZSBhcyB3ZWxsIGFzIGFuIGBBY3F1aXJlJy9gUmVsZWFzZScgQVBJLiAgU2VlbXMgdG8KCXdvcmsgd2VsbCBoZXJlLCBidXQgcHJvYmFibHkgbmVlZHMgYSBiaXQgbW9yZSB0ZXN0aW5nLgoKMjAwMS0xMC0yNiAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCSogYnVpbGRzL21hYy9SRUFETUU6IFVwZGF0ZWQgdG8gcmVmbGVjdCBteSB0YWtpbmcgb3ZlciB0aGUgcHJvamVjdAoJYW5kIHRoYXQgaXMgbm93IGJlaW5nIGFjdGl2ZWx5IG1haW50YWluZWQuCgoJKiBzcmMvYmFzZS9mdG1hYy5jIChwYXJzZV9mb25kKTogQXBwbGllZCBwYXRjaGVzIGZyb20gUGF1bCBNaWxsZXIKCTxwYXVsbUBwcm9mb3VuZGVmZmVjdHMuY29tPiB0byBzdXBwb3J0IGxvYWRpbmcgYSBmYWNlIG90aGVyIHRoYW4gdGhlCglmaXJzdCBmcm9tIGEgRk9ORCByZXNvdXJjZS4KCShGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQpOiBVcGRhdGVkLgoKMjAwMS0xMC0yNSAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCSogYnVpbGRzL21hYy9mdGxpYi5wcmo6IFVwZGF0ZSBvZiBDb2RlV2FycmlvciBwcm9qZWN0IGZpbGUgZm9yIE1hYwoJT1MgZm9yIGxhdGVzdCB2ZXJzaW9uICg3KSBvZiBDV1BybyBhbmQgZm9yIHJlY2VudCBjaGFuZ2VzIHRvIHRoZSBGVAoJc291cmNlIHRyZWUuCgoyMDAxLTEwLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBVcGRhdGVkIGNvbW1lbnRzIHRvIGV4cGxhaW4KCXByZWNpc2VseSBob3cgdG8gdXNlIHByb2plY3Qtc3BlY2lmaWMgbWFjcm8gZGVmaW5pdGlvbnMgd2l0aG91dAoJbW9kaWZ5aW5nIHRoaXMgZmlsZSBtYW51YWxseS4KCgkoRlRfQ09ORklHX0ZPUkNFX0lOVDY0KTogRGVmaW5lLgoKCShGVF9ERUJVR19NRU1PUlkpOiBOZXcgbWFjcm8uCgoyMDAxLTEwLTI0ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSk6IEFkZGVkIGEgbWlzc2luZyBgeycuCgoyMDAxLTEwLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6CglJbXByb3ZlbWVudHMgdG8gdGhlIG1lbW9yeSBkZWJ1Z2dlciB0byByZXBvcnQgbW9yZSBpbmZvcm1hdGlvbiBpbgoJY2FzZSBvZiBlcnJvcnMuICBBbHNvLCBzb21lIGFsbG9jYXRpb25zIHRoYXQgb2NjdXJyZWQgdGhyb3VnaCBSRUFMTE9DCgljb3VsZG4ndCBiZSBwcmV2aW91c2x5IGNhdGNoZWQgY29ycmVjdGx5LgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9jb21wdXRlX3NlZ21lbnRzLAoJYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKSwgc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChmdF9ibGFja19uZXcpLAoJc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX3NwYW4sIGdyYXlfcmFzdGVyX25ldyk6IFJlcGxhY2VkCglsaWJlcmFsIHVzZXMgb2YgbWVtc2V0KCkgYnkgdGhlIE1FTV9TZXQoKSBtYWNyby4KCjIwMDEtMTAtMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoVXBkYXRlKTogUmVtb3ZlZCB0byBiZSBpbmxpbmVkIGluIC4uLgoJKFNvcnQpOiBVcGRhdGVkLgoKMjAwMS0xMC0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJYnVpbGRzL3Ztcy9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSksCglidWlsZHMvYW1pZ2EvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJc3JjL2Jhc2UvZnRkYmdtZW0uYzogVXBkYXRlZCB0aGUgbWVtb3J5IGRlYnVnZ2VyIGFuZAoJcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIG9mIGBmdHN5c3RlbScgaW4gb3JkZXIgdG8gYmUgYWJsZQoJdG8gZGVidWcgbWVtb3J5IGFsbG9jYXRpb25zIG9uIFVuaXgsIFZNUyBhbmQgQW1pZ2EgdG9vIQoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9yZWNvcmRfbWFzayk6IFJlbW92ZWQKCXNvbWUgYm9ndXMgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6CglNb2RpZmllZCB0aGUgZGVidWdnaW5nIG1lbW9yeSBtYW5hZ2VyIHRvIHJlcG9ydCB0aGUgbG9jYXRpb24gKHNvdXJjZQoJZmlsZSBuYW1lICsgbGluZSBudW1iZXIpIHdoZXJlIGxlYWtlZCBtZW1vcnkgYmxvY2tzIGFyZSBhbGxvY2F0ZWQgaW4KCXRoZSBzb3VyY2UgZmlsZS4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6IE5ldyBkZWJ1Z2dpbmcgbWVtb3J5IG1hbmFnZXIuICBZb3UgbXVzdAoJZGVmaW5lIHRoZSBGVF9ERUJVR19NRU1PUlkgbWFjcm8gaW4gYGZ0b3B0aW9uLmgnIHRvIGVuYWJsZSBpdC4gIEl0Cgl3aWxsIHJlY29yZCBldmVyeSBtZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGFuZCByZXBvcnQgc2ltcGxlIGVycm9ycwoJbGlrZSBtZW1vcnkgbGVha3MgYW5kIGRvdWJsZSBkZWxldGVzLgoKCSogc3JjL2Jhc2UvSmFtZmlsZTogSW5jbHVkZSBmdGRiZ21lbS4KCSogc3JjL2Jhc2UvcnVsZXMubWs6IERpdHRvLgoJKiBzcmMvYmFzZS9mdGJhc2UuYzogSW5jbHVkZSBmdGRiZ21lbS5jLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogQWRkZWQgdGhlIEZUX0RFQlVHX01FTU9SWQoJbWFjcm8gZGVmaW5pdGlvbi4KCgkqIHNyYy9iYXNlL2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KTogTW9kaWZpZWQgdGhlCgliYXNlIGNvbXBvbmVudCB0byB1c2UgdGhlIGRlYnVnZ2luZyBtZW1vcnkgbWFuYWdlciB3aGVuIHRoZSBtYWNybwoJRlRfREVCVUdfTUVNT1JZIGlzIGRlZmluZWQuCgoyMDAxLTEwLTIxICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Eb25lX0ZvbnQpOiBGcmVlIHN1YmZvbnRzIGFycmF5IG9ubHkgaWYKCXdlIGFyZSB3b3JraW5nIHdpdGggYSBDSUQga2V5ZWQgQ0ZGIGZvbnQuICBPdGhlcndpc2UsIGEgdmFyaWFibGUKCXRoYXQgd2FzIG5ldmVyIGFsbG9jYXRlZCBtZW1vcnkgbWlnaHQgZnJlZWQuICBUaGlzIGlzIGEgY29ycmVjdGlvbgoJdG8gdGhlIHByZXZpb3VzIHBhdGNoIGZvciBmcmVlaW5nIHN1YmZvbnRzLgoKMjAwMS0xMC0yMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfRG9uZV9Gb250KTogRnJlZSB0aGUgc3ViZm9udHMgYXJyYXkgdG8KCWF2b2lkIGEgbWVtb3J5IGxlYWsuCgoyMDAxLTEwLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywgc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsCglzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncyBpbiBwZWRhbnRpYyBtb2RlcwoJKGluIG11bHRpLW9iamVjdCBjb21waWxhdGlvbiBtb2RlLCBtYWlubHkpLgoKMjAwMS0xMC0yMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZW5jb2RpbmcpOiBBZGQgYSB0ZXN0IHRvIG1ha2Ugc3VyZQoJdGhhdCBjdXN0b20gZW5jb2RpbmdzIChpLmUuLCBuZWl0aGVyIFN0YW5kYXJkRW5jb2Rpbmcgbm9yCglFeHBlcnRFbmNvZGluZykgYXJlIG5vdCBsb2FkZWQgdHdpY2Ugd2hlbiB0aGUgVHlwZSAxIGZvbnQgaXMKCXN5bnRoZXRpYy4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9uYW1lLCBwYXJzZV9zdWJycyk6IEFkZGVkIGEgdGVzdAoJZm9yIHdoZW4gbG9hZGluZyBzeW50aGV0aWMgZm9udHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZvbnQgbmFtZQoJYW5kIHN1YnJvdHVpbmVzIGFyZSBub3QgbG9hZGVkIHR3aWNlLiAgVGhpcyBpcyB0byByZW1vdmUgYSBtZW1vcnkKCWxlYWsgdGhhdCBvY2N1cnJlZCBiZWNhdXNlIHRoZSBvcmlnaW5hbCBtZW1vcnkgYmxvY2tzIGZvciB0aGVzZQoJb2JqZWN0cyB3ZXJlIG5vdCBkZWFsbG9jYXRlZCB3aGVuIHRoZSBvYmplY3RzIHdlcmUgcGFyc2VkIHRoZQoJc2Vjb25kIHRpbWUuCgoyMDAxLTEwLTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYywgc3JjL3BzaGludGVyL3BzaGdsb2IuaCwKCXNyYy9wc2hpbnRlci9wc2hyZWMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmM6IEdldHRpbmcgcmlkIG9mCgljb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9wc2hpbnRlci9tb2R1bGUubWssIHNyYy9wc2hpbnRlci9ydWxlcy5tazogQWRkaW5nIGNvbnRyb2wKCWZpbGVzIHRvIGJ1aWxkIHRoZSBQb3N0U2NyaXB0IGhpbnRlciB3aXRoIHRoZSBgb2xkJyBidWlsZCBzeXN0ZW0uCgoyMDAxLTEwLTE5ICBKYWNvYiBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogZGVzY3JpcC5tbXMsIHNyYy9wc2hpbnRlci9kZXNjcmlwLm1tczogVXBkYXRlcyB0byB0aGUgVk1TIGJ1aWxkCglmaWxlcy4KCjIwMDEtMTAtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmgsIHNyYy90b29scy9nbG5hbWVzLnB5OiBSZXdyb3RlIHRoZQoJYGdsbmFtZXMucHknIHNjcmlwdCB1c2VkIHRvIGdlbmVyYXRlIHRoZSBgcHN0YWJsZXMuaCcgaGVhZGVyIGZpbGUuCglUaGUgb2xkIG9uZSBjb250YWluZWQgYSBzZXJpb3VzIGJ1ZyB0aGF0IG1hZGUgRnJlZVR5cGUgcmV0dXJuCglpbmNvcnJlY3QgZ2x5cGggbmFtZXMgZm9yIGNlcnRhaW4gZ2x5cGhzLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogQ2hhbmdpbmcgY29tcHV0YXRpb24gb2YKCXBpeGVsIHNpemUgZnJvbSBjaGFyYWN0ZXIgc2l6ZSB0byB1c2Ugcm91bmRpbmcuICBUaGlzIGlzIGFuCglleHBlcmltZW50IHRvIHNlZSB3aGV0aGVyIHRoaXMgZ2l2ZXMgdmFsdWVzIHNpbWlsYXIgdG8gV2luZG93cyBmb3IKCXNjYWxlZCBhc2NlbnQvZGVzY2VudC9ldGMuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfRGl2NjRieTMyKTogQ2hhbmdlZCB0aGUgaW1wbGVtZW50YXRpb24KCXNsaWdodGx5IHNpbmNlIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBtaXMtY29tcGlsZWQgb24gTWFjIG1hY2hpbmVzCgl1c2luZyB0aGUgTVBXIEMgY29tcGlsZXIuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfUmVhbGxvYyk6IFdoZW4gYSBtZW1vcnkgYmxvY2sgd2FzIGdyb3duCgl0aHJvdWdoIEZUX1JlYWxsb2MoKSwgdGhlIG5ldyBieXRlcyB3ZXJlIG5vdCBzZXQgdG8gMCwgd2hpY2ggY3JlYXRlZAoJc29tZSBzdHJhbmdlIGJ1Z3MgaW4gdGhlIFBvc3RTY3JpcHQgaGludGVyLgoJKGRlc3Ryb3lfZmFjZSk6IERvbid0IGRlYWxsb2NhdGUgdW5jb25kaXRpb25hbGx5LgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChDSURfQ29tcHV0ZV9NYXhfQWR2YW5jZSwgQ0lEX0xvYWRfR2x5cGgpOgoJQWRkaW5nIHN1cHBvcnQgdG8gbmV3IFBvc3RTY3JpcHQgaGludGVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2dsb2JhbC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLCBzcmMvcHNoaW50ZXIvSmFtZmlsZSwKCXNyYy9wc2hpbnRlci9wc2hhbGdvLmgsIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5oLAoJc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5oLAoJc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsIHNyYy9wc2hpbnRlci9wc2hnbG9iLmgsCglzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jLCBzcmMvcHNoaW50ZXIvcHNoaW50ZXIuYywKCXNyYy9wc2hpbnRlci9wc2htb2QuYywgc3JjL3BzaGludGVyL3BzaG1vZC5oLCBzcmMvcHNoaW50ZXIvcHNocmVjLmMsCglzcmMvcHNoaW50ZXIvcHNocmVjLmg6IEFkZGluZyBuZXcgUG9zdFNjcmlwdCBoaW50ZXIgbW9kdWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oLCBzcmMvcHNhdXgvcHNvYmpzLmMsCglzcmMvcHNhdXgvcHNvYmpzLmgsIHNyYy9wc2F1eC90MWRlY29kZS5oLCBzcmMvcHNhdXgvdDFkZWNvZGUuYywKCXNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFnbG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsCglzcmMvdHlwZTEvdDFvYmpzLmg6IFVwZGF0ZXMgdG8gdXNlIHRoZSBuZXcgUG9zdFNjcmlwdCBoaW50ZXIuCgoJKiB0ZXN0cy9KYW1maWxlLCB0ZXN0cy9ndmlldy5jOiBBZGRpbmcgYSBuZXcgZ2x5cGggaGludGluZwoJdmlld2VyL2RlYnVnZ2VyIHRvIHRoZSBzb3VyY2UgdHJlZS4gIE5vdGUgdGhhdCB5b3Ugd2lsbCBfbm90XyBiZQoJYWJsZSB0byBjb21waWxlIGl0IHNpbmNlIGl0IGRlcGVuZHMgb24gYW4gdW5hdmFpbGFibGUgZ3JhcGhpY3MKCWxpYnJhcnkgbmFtZWQgYE5pcnZhbmEnIHRvIHJlbmRlciB2ZWN0b3IgaW1hZ2VzLgoKMjAwMS0xMC0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wLjUgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ludGVybmFsL2Z0b2Jqcy5oLAoJc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy90eXBlMS90MWRyaXZlci5jOiBBZGRpbmcgYSBuZXcgZnVuY3Rpb24gbmFtZWQKCSdGVF9HZXRfUG9zdHNjcmlwdF9OYW1lJyB0byByZXRyaWV2ZSB0aGUgUG9zdFNjcmlwdCBuYW1lIG9mIGEgZ2l2ZW4KCWZvbnQuICBTaG91bGQgd29yayB3aXRoIGFsbCBmb3JtYXRzIGV4Y2VwdCBwdXJlIENGRi9DRUYgZm9udHMgKHRoaXMKCXdpbGwgYmUgYWRkZWQgc29vbikuCgoJKiBzcmMvY2lkL2NpZHJpdmVyIChjaWRfZ2V0X3Bvc3RzY3JpcHRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShDSURfR2V0X0ludGVyZmFjZSk6IEhhbmRsZSBgcG9zdHNjcmlwdF9uYW1lJyBpbnRlcmZhY2UuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoU0ZOVF9HZXRfSW50ZXJmYWNlKTogSGFuZGxlIGBwb3N0c2NyaXB0X25hbWUnIGludGVyZmFjZS4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9nZXRfcHNfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShHZXRfSW50ZXJmYWNlKTogSGFuZGxlIGBwb3N0c2NyaXB0X25hbWUnIGludGVyZmFjZS4KCgkqIFJFQURNRSwgZG9jcy9DSEFOR0VTOiBVcGRhdGVkIGZvciAyLjAuNSByZWxlYXNlLgoKMjAwMS0xMC0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGVkIGEgYnVnIGluIGBnbG5hbWVzLnB5JyB0aGF0IHByZXZlbnRlZCBpdCBmcm9tIGdlbmVyYXRpbmcKCWNvcnJlY3QgZ2x5cGggbmFtZXMgdGFibGVzLiAgVGhpcyByZXN1bHRlZCBpbiB0aGUgdW5hdmFpbGFiaWxpdHkgb2YKCWNlcnRhaW4gZ2x5cGhzIGxpa2UgYENhY3V0ZScsIGBjYWN1dGUnIGFuZCBgbHNsYXNoJyBpbiBVbmljb2RlCgljaGFybWFwcywgZXZlbiBpZiB0aGVzZSB3ZXJlIHByZXNlbnQgaW4gdGhlIGZvbnQgKGNhdXNpbmcgcHJvYmxlbXMKCWZvciBQb2xpc2ggdXNlcnMpLgoKCSogc3JjL3Rvb2xzL2dsbmFtZXMucHkgKG1hY19zdGFuZGFyZF9uYW1lcyk6IEZpeGVkLgoJKHQxX3N0YW5kYXJkX3N0cmluZ3MpOiBTb21lIGZpeGVzIGFuZCByZW5hbWVkIHRvIC4uLgoJKHNpZF9zdGFuZGFyZF9uYW1lcyk6IFRoaXMuCgkodDFfZXhwZXJ0X2VuY29kaW5nKTogRml4ZWQuCgkodGhlX2Fkb2JlX2dseXBoX2xpc3QpOiBSZW5hbWVkIHRvIC4uLgoJKGFkb2JlX2dseXBoX25hbWVzKTogVGhpcy4KCSh0aGVfYWRvYmVfZ2x5cGhzKTogUmVuYW1lZCB0byAuLi4KCShhZG9iZV9nbHlwaF92YWx1ZXMpOiBUaGlzLgoJKGR1bXBfbWFjX2luZGljZXMsIGR1bXBfZ2x5cGhfbGlzdCwgZHVtcF91bmljb2RlX3ZhbHVlcywgbWFpbik6CglVcGRhdGVkLgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oOiBSZWdlbmVyYXRlZC4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAoUFNfVW5pY29kZV9WYWx1ZSk6IEZpeCBvZmZzZXQuCglGaXggcmV0dXJuIHZhbHVlLgoJVXNlIGBzaWRfc3RhbmRhcmRfdGFibGUnIGFuZCBgcHNfbmFtZXNfdG9fdW5pY29kZScgaW5zdGVhZCBvZgoJYHQxX3N0YW5kYXJkX2dseXBocycgYW5kIGBuYW1lc190b191bmljb2RlJy4KCShQU19NYWNpbnRvc2hfTmFtZSk6IFVzZSBgcHNfZ2x5cGhfbmFtZXMnIGluc3RlYWQgb2YKCWBzdGFuZGFyZF9nbHlwaF9uYW1lcycuCgkoUFNfU3RhbmRhcmRfU3RyaW5ncyk6IFVzZSBgc2lkX3N0YW5kYXJkX25hbWVzJyBpbnN0ZWFkIG9mCglgdDFfc3RhbmRhcmRfZ2x5cGhzJy4KCgkqIGRvYy9CVUdTLCBkb2MvVE9ETzogTmV3IGRvY3VtZW50cy4KCjIwMDEtMTAtMDcgIFJpY2hhcmQgQmFyYmVyICA8cmljaEBzb2x1dGlvbnVrLmNvbT4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVfTG9va3VwX05vZGUpOiBGaXhlZCBhIGJ1ZyB0aGF0IHByZXZlbnRlZAoJY29ycmVjdCBMUlUgYmVoYXZpb3VyLgoKMjAwMS0xMC0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCXNldGptcCgpIGFuZCBsb25nam1wKCkgYXJlIG5vdyB1c2VkIGZvciByb2xsYmFjayAoaS5lLiB3aGVuIG1lbW9yeQoJcG9vbCBvdmVyZmxvdyBvY2N1cnMpLgoKCUZ1bmN0aW9uIG5hbWVzIGFyZSBub3cgYWxsIHVuaWZvcm1seSBwcmVmaXhlZCB3aXRoIGBncmF5XycuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogSW5jbHVkZSA8c2V0am1wLmg+LgoJKEVyclJhc3Rlcl9NZW1vcnlPdmVyZmxvdyk6IE5ldyBtYWNyby4KCShUQXJlYSk6IE5ldyB0eXBlIHRvIHN0b3JlIGFyZWEgdmFsdWVzIGluIGVhY2ggY2VsbCAodXNpbmcgYGludCcgd2FzCgl0b28gc21hbGwgb24gMTYtYml0IHN5c3RlbXMpLiAgPGxpbWl0cy5oPiBpcyBpbmNsdWRlZCB0byBwcm9wZXJseQoJZ2V0IHRoZSBuZWVkZWQgZGF0YSB0eXBlLgoJKFRDZWxsLCBUUmFzdGVyKTogVXNlIGl0LgoJKFRSYXN0ZXIpOiBOZXcgZWxlbWVudCBganVtcF9idWZmZXInLgoJKGdyYXlfY29tcHV0ZV9jYm94KTogVXNlIGBSQVNfQVJHJyBhcyB0aGUgb25seSBwYXJhbWV0ZXIgYW5kIGdldAoJYG91dGxpbmUnIGZyb20gaXQuCgkoZ3JheV9yZWNvcmRfY2VsbCk6IFVzZSBsb25nam1wKCkuCgkoZ3JheV9zZXRfY2VsbCk6IFVzZSBncmF5X3JlY29yZF9jZWxsKCkgZm9yIGVycm9yIGhhbmRsaW5nLgoJKGdyYXlfcmVuZGVyX2xpbmUsIGdyYXlfcmVuZGVyX2NvbmljLCBncmF5X3JlbmRlcl9jdWJpYyk6IFNpbXBsaWZ5LgoJKGdyYXlfY29udmVydF9nbHlwaF9pbm5lcik6IE5ldyBmdW5jdGlvbiwgdXNpbmcgc2V0am1wKCkuCgkoZ3JheV9jb252ZXJ0X2dseXBoKTogVXNlIGl0LgoKMjAwMS0xMC0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVByb3ZpZGUgYSBwdWJsaWMgQVBJIHRvIG1hbmFnZSBtdWx0aXBsZSBzaXplIG9iamVjdHMgZm9yIGEgZ2l2ZW4KCUZUX0ZhY2UgaW4gdGhlIG5ldyBoZWFkZXIgZmlsZSBgZnRzaXplcy5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzaXplcy5oOiBOZXcgaGVhZGVyIGZpbGUsCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IFVzZSBpdC4KCVJlbW92ZSBkZWNsYXJhdGlvbnMgb2YgRlRfTmV3X1NpemUgYW5kIEZUX0RvbmVfU2l6ZSAobW92ZWQgdG8KCWZ0c2l6ZXMuaCkuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1NJWkVTX0gpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9BY3RpdmF0ZV9TaXplKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYzogSW5jbHVkZSBmdHNpemVzLmguCgkoZnRjX21hbmFnZXJfaW5pdF9zaXplLCBmdGNfbWFuYWdlcl9mbHVzaF9zaXplKTogVXNlCglGVF9BY3RpdmF0ZV9TaXplLgoKMjAwMS0wOS0yMCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS8qOiBBZGRlZCBwb3J0IHRvIEFtaWdhIHdpdGggdGhlIFNBUy9DIGNvbXBpbGVyLgoKMjAwMS0wOS0xNSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9Eb25lX0FGTSk6IEZyZWUgYGFmbScuCgoyMDAxLTA5LTEwICBZYW8gWmhhbmcgIDx5emhhbmdAc2hhcmVtZWRpYS5jb20+CgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoY29kZV90b19pbmRleDIpOiBIYW5kbGUgY29kZSB2YWx1ZXMgd2l0aAoJaGktYnl0ZSA9PSAwIGNvcnJlY3RseS4KCjIwMDEtMDktMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9saW5rLXN0ZC5tayAoJChQUk9KRUNUX0xJQlJBUlkpKTogRml4IHR5cG8uCgoyMDAxLTA4LTMwICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEEgbmV3IHdheSB0byBjb21wdXRlIHRoZQoJdW5pdHMgcGVyIEVNIHdpdGggZ3JlYXRlciBhY2N1cmFjeSAoaW1wb3J0YW50IGZvciBlbWJlZGRlZCBUMSBmb250cwoJaW4gUERGIGRvY3VtZW50cyB0aGF0IHdlcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBUcnVlVHlwZQoJb25lcykuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKGlzX2FscGhhKTogTm93IHN1cHBvcnRzIGArJyBpbiBmb250IG5hbWVzOwoJdGhpcyBpcyB1c2VkIGluIGVtYmVkZGVkIGZvbnRzLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19UYWJsZV9BZGQpOiBGaXhlZCBhIHJlYWxsb2NhdGlvbiBidWcgdGhhdAoJZ2VuZXJhdGVkIGEgZGFuZ2xpbmcgcG9pbnRlciByZWZlcmVuY2UuCgoyMDAxLTA4LTMwICBBbnRob255IEZlaWsgIDxhZmVpY2tAaG90bWFpbC5jb20+CgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoVDFfUmVhZF9BZm0pOiBOb3cgY29ycmVjdGx5IHNldHMgdGhlIGZsYWcKCUZUX0ZBQ0VfRkxBR19LRVJOSU5HIHdoZW4gYXBwcm9wcmlhdGUgZm9yIFR5cGUxICsgQUZNIGZpbGVzLgoKMjAwMS0wOC0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfQ01hcCk6IEZpeCBmcmFtZSBsZW5ndGggb2YKCWBjbWFwX3JlY19maWVsZHMnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIFshRlRfQ09ORklHX09QVElPTl9VU0VfTU9EVUxFX0VSUk9SU106CglVbmRlZmluZSBGVF9FUlJfQkFTRSBiZWZvcmUgZGVmaW5pbmcgYWdhaW4uCgoyMDAxLTA4LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuaDogRml4IHByb3RvdHlwZSBvZiBUVF9Nb3ZlX0Z1bmMuCgoyMDAxLTA4LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvZG9zL2Rvcy1kZWYubWsgKE5PX09VVFBVVCk6IERvbid0IHVzZSBgJj4nIGJ1dCBgPicuCgoyMDAxLTA4LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBDaGFuZ2VkIHRoZSBkZWZhdWx0IHNldHRpbmcKCWZvciBGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTIHRvIHVuZGVmaW5lZCwgc2luY2UgaXQgYnJlYWtzCglzb3VyY2UgY29tcGF0aWJpbGl0eSBpbiBhIGZldyBjYXNlcy4gIFVwZGF0ZWQgdGhlIGNvbW1lbnQgdG8gZXhwbGFpbgoJdGhhdCB0b28uCgoyMDAxLTA4LTE3ICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bERpdik6IEZpeGVkIHNlcmlvdXMgdHlwby4KCjIwMDEtMDgtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglVcGRhdGluZyB0byBPcGVuVHlwZSAxLjMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfQ01hcDAsIFRUX0NNYXAyLCBUVF9DTWFwNCwKCVRUX0NNYXA2KTogQWRkaW5nIGZpZWxkIGBsYW5ndWFnZScuCgkoVFRfQ01hcFRhYmxlKTogUmVtb3ZpbmcgZmllbGQgYGxhbmd1YWdlJy4KCVR5cGUgb2YgYGxlbmd0aCcgZmllbGQgY2hhbmdlZCB0byBGVF9VTG9uZy4KCUFkZGluZyBmaWVsZHMgZm9yIGNtYXBzIGZvcm1hdCA4LCAxMCwgYW5kIDEyLgoJKFRUX0NNYXBHcm91cCk6IE5ldyBhdXhpbGlhcnkgc3RydWN0dXJlLgoJKFRUX0NNYXA4XzEyLCBUVF9DTWFwMTApOiBOZXcgc3RydWN0dXJlcy4KCSogaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIChUVF9Ib3JpSGVhZGVyLCBUVF9WZXJ0SGVhZGVyKToKCVJlbW92ZWQgbGFzdCBlbGVtZW50IG9mIGBSZXNlcnZlZCcgYXJyYXkuCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCAoVFRfUExBVEZPUk1fQ1VTVE9NLCBUVF9NU19JRF9VQ1NfNCwKCVRUX05BTUVfSURfQ0lEX0ZJTkRGT05UX05BTUUpOiBOZXcgbWFjcm9zLgoKCSogc3JjL3NmbnQvdHRjbWFwLmMgKFRUX0NoYXJNYXBfTG9hZCk6IFVwZGF0ZWQgbG9hZGluZyBvZiBgbGFuZ3VhZ2UnCglmaWVsZCB0byB0aGUgbmV3IHN0cnVjdHVyZXMuCglGaXhlZCBmcmVlaW5nIG9mIGFycmF5cyBpbiBjYXNlIG9mIHVuc3VjY2Vzc2Z1bCBsb2Fkcy4KCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgZm9ybWF0IDgsIDEwLCBhbmQgMTIgY21hcHMuCgkoVFRfQ2hhck1hcF9GcmVlKTogQWRkZWQgc3VwcG9ydCBmb3IgZnJlZWluZyBmb3JtYXQgOCwgMTAsIGFuZCAxMgoJY21hcHMuCgkoY29kZV90b19pbmRleDQpOiBTbWFsbCBpbXByb3ZlbWVudC4KCShjb2RlX3RvX2luZGV4Nik6IERpdHRvLgoJKGNvZGVfdG9faW5kZXg4XzEyLCBjb2RlX3RvX2luZGV4MTApOiBOZXcgZnVuY3Rpb25zLgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9NZXRyaWNzX0hlYWRlcik6IFVwZGF0ZWQgdG8gbmV3CglzdHJ1Y3R1cmUuCgkoVFRfTG9hZF9DTWFwKTogRGl0dG8uCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfZW5jb2RpbmdzKTogQWRkIE1TIFVDUzQgdGFibGUgKGJlZm9yZSBNUwoJVW5pY29kZSkuCgoyMDAxLTA4LTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAodDFfZ2V0X25hbWVfaW5kZXgpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDEtMDgtMDkgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGdldF9jZmZfZ2x5cGhfbmFtZSk6IFJlbmFtZWQgdG8KCWNmZl9nZXRfZ2x5cGhfbmFtZSBmb3IgY29uc2lzdGVuY3kuCgoJKGNmZl9nZXRfZ2x5cGhfaW5kZXgpOiBNaW5vciBkb2N1bWVudGF0aW9uIGNoYW5nZS4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9nZXRfbmFtZV9pbmRleCk6IE5ldyBmdW5jdGlvbiB1c2VkIGluCglHZXRfSW50ZXJmYWNlIGFzIHRoZSBmdW5jdGlvbiByZXR1cm5lZCB3aGVuIHRoZSBgbmFtZV9pbmRleCcKCWZ1bmN0aW9uIGlzIHJlcXVlc3RlZC4KCgkoZ2V0X3QxX2dseXBoX25hbWUpOiBSZW5hbWVkIHRvIHQxX2dldF9nbHlwaF9uYW1lIGZvciBjb25zaXN0ZW5jeS4KCjIwMDEtMDgtMDggIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYzogUmVtb3ZlZCBkZWZpbml0aW9ucyBvZiBjZmZfaXNvYWRvYmVfY2hhcnNldCwKCWNmZl9leHBlcnRfY2hhcnNldCwgY2ZmX2V4cGVydHN1YnNldF9jaGFyc2V0LCBjZmZfc3RhbmRhcmRfZW5jb2RpbmcsCglhbmQgY2ZmX2V4cGVydF9lbmNvZGluZyBhcnJheXMgdG8gY2ZmbG9hZC5oLgoKCSogc3JjL2NmZi9jZmZsb2FkLmg6IEFkZGVkIGRlZmluaXRpb25zIG9mIGNmZl9pc29hZG9iZV9jaGFyc2V0LAoJY2ZmX2V4cGVydF9jaGFyc2V0LCBjZmZfZXhwZXJ0c3Vic2V0X2NoYXJzZXQsIGNmZl9zdGFuZGFyZF9lbmNvZGluZywKCWFuZCBjZmZfZXhwZXJ0X2VuY29kaW5nIGFycmF5cy4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogTmV3IGZ1bmN0aW9uLCByZXR1cm5lZAoJd2hlbiBgY2ZmX2dldF9pbnRlcmZhY2UnIGlzIGNhbGxlZCB3aXRoIGEgcmVxdWVzdCBmb3IgdGhlCglgbmFtZV9pbmRleCcgZnVuY3Rpb24uCgoJKGNmZl9nZXRfaW50ZXJmYWNlKTogTW9kaWZpZWQgc28gdGhhdCBpdCByZXR1cm5zIHRoZSBmdW5jdGlvbgoJYGNmZl9nZXRfbmFtZV9pbmRleCcgd2hlbiB0aGUgYG5hbWVfaW5kZXgnIGZ1bmN0aW9uIGlzIHJlcXVlc3RlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9HZXRfTmFtZV9JbmRleCk6IE5ldyBmdW5jdGlvbiwgdXNlZCB0bwoJcmV0dXJuIGEgZ2x5cGggaW5kZXggZm9yIGEgZ2l2ZW4gZ2x5cGggbmFtZSBvbmx5IGlmIHRoZSBkcml2ZXIKCXN1cHBvcnRzIGdseXBoIG5hbWVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfTmFtZV9JbmRleF9SZXF1ZXN0ZXIpOgoJTmV3IGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSBkZWZpbnRpb24gdXNlZCBpbiB0aGUgZnVuY3Rpb24KCUZUX0dldF9OYW1lX0luZGV4LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9HZXRfTmFtZV9JbmRleCk6IEFkZGVkCglkb2N1bWVudGF0aW9uIGFuZCBwcm90b3R5cGUuCgoyMDAxLTA3LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY3lnd2luLyo6IFJlbW92ZWQuICBVc2UgdGhlIHVuaXggc3R1ZmYgaW5zdGVhZC4KCjIwMDEtMDctMjYgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGJ1aWxkcy92bXMvZnRjb25maWcuaCAoRlRfQ0FMTEJBQ0tfREVGKTogVXBkYXRlZCB0byBjaGFuZ2UgZGF0ZWQKCTIwMDEtMDYtMjcuCgoyMDAxLTA3LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTX1RhYmxlKTogVXNlIEZUX09mZnNldCBmb3IKCWBjdXJzb3InIGFuZCBgY2FwYWNpdHknLgoJKiBzcmMvcHNhdXgvcHNvYmpjLmMgKHJlYWxsb2NhdGVfdDFfdGFibGUpOiBVc2UgRlRfTG9uZyBmb3Igc2Vjb25kCglwYXJhbWV0ZXIuCgkoUFNfVGFibGVfQWRkKTogVXNlIEZUX09mZnNldCBmb3IgYG5ld19zaXplJy4KCglBZGQgc3VwcG9ydCBmb3IgdmVyc2lvbiAwLjUgbWF4cCB0YWJsZXMuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9NYXhQcm9maWxlKTogSW1wbGVtZW50IGl0LgoJKFRUX0xvYWRfT1MyKTogSW5pdGlhbGl6ZSBzb21lIHZhbHVlcy4KCjIwMDEtMDctMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYzogSW5jbHVkZSBmdGNhbGMuaCB1bmNvbmRpdGlvbmFsbHkuCgoyMDAxLTA3LTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYywgc3JjL3BjZi9wY2ZyZWFkOgoJUmVtb3ZlZCBwZWRhbnRpYyBjb21waWxlciB3YXJuaW5ncyB3aGVuIHRoZSBieXRlY29kZSBpbnRlcnByZXRlciBpcwoJY29tcGlsZWQgaW4uCgoyMDAxLTA3LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9hbGlnbl93ZWFrX3BvaW50cyk6IFJlbW92ZQoJdW51c2VkIHZhcmlhYmxlIGBlZGdlcycuCgkoYWhfaGludGVyX2xvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcyBgb2xkX3dpZHRoJyBhbmQKCWBuZXdfd2lkdGgnLgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX2RlY3J5cHQpOiBVc2UgYFUnIGZvciBjb25zdGFudCAoYWdhaW4pLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFQxX0RlY3J5cHQpOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfR2V0X1ByaXZhdGVfRGljdCk6IERpdHRvLgoKMjAwMS0wNi0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9pbnRlcm5hbC9mdHN0cmVhbS5oOiBNb2RpZmllZCB0aGUgZGVmaW5pdGlvbnMKCW9mIHRoZSBGVF9HRVRfWFhYWCBhbmQgTkVYVF9YWFhYIG1hY3JvcyBmb3IgMTYtYml0IGNvcnJlY3RuZXNzLgoKMjAwMS0wNi0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRsb2FkLmMsIHNyYy9jaWQvY2lkbG9hZC5oIChjaWRfZGVjcnlwdCk6IFVzZSBGVF9PZmZzZXQKCWluc3RlYWQgb2YgRlRfSW50IGFzIHR5cGUgZm9yIGBsZW5ndGgnIHBhcmFtZXRlci4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChQU0F1eF9JbnRlcmZhY2UpOiBVcGRhdGVkLgoKMjAwMS0wNi0yNyAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3Bzb2Jqcy5oIChUMV9EZWNyeXB0KTogVXNlIEZUX09mZnNldAoJaW5zdGVhZCBvZiBGVF9JbnQgYXMgdHlwZSBmb3IgYGxlbmd0aCcgcGFyYW1ldGVyLgoKCgkqIFZlcnNpb24gMi4wLjQgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMS0wNi0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW46IENoYW5nZWQgdGhlIGRlZmluaXRpb24gb2YgdGhlCglGVF9DQUxMQkFDS19ERUYgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y29uZmlnLmgsIHNyYy8qLyouYzogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBhbmQKCXVzZSBvZiB0aGUgRlRfQ0FMTEJBQ0tfREVGIG1hY3JvIGluIG9yZGVyIHRvIHN1cHBvcnQgMTYtYml0Cgljb21waWxlcnMuCgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKCUZUX0NBTExCQUNLX0RFRiBtYWNyby4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0tlcm4pOiBUaGUga2VybiB0YWJsZSBsb2FkZXIgbm93IGVuc3VyZXMKCXRoYXQgdGhlIGtlcm5pbmcgdGFibGUgaXMgY29ycmVjdGx5IHNvcnRlZCAoc29tZSBwcm9ibGVtIGZvbnRzIGRvbid0CgloYXZlIGEgY29ycmVjdCBrZXJuIHRhYmxlKS4KCjIwMDEtMDYtMjYgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEZUX0dFVF9PRkYzX0xFKTogRml4IHR5cG8uCgoyMDAxLTA2LTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoZnRfZGl2NjRieTMyKTogRml4ZWQgdGhlIHNvdXJjZSB0byB3b3JrCgljb3JyZWN0bHkgb24gMTYtYml0IHN5c3RlbXMuCgoyMDAxLTA2LTIzICBBbnRob255IEZvayAgPGZva0BkZWJpYW4ub3JnPgoKCSogZGViaWFuLyo6IEFkZGVkIERlYmlhbiBwYWNrYWdlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgMi4wLjQuCgoyMDAxLTA2LTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL1BBVEVOVFM6IEFkZGVkIHBhdGVudHMgZGlzY2xhaW1lci4gIFRoaXMgb25lIHdhcyBtaXNzaW5nIQoKCSogZG9jcy9DSEFOR0VTLCBkb2NzL3RvZG86IFVwZGF0ZWQgZm9yIHRoZSB1cGNvbWluZyAyLjAuNCByZWxlYXNlLgoKMjAwMS0wNi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogQWRkIHR3byBtb3JlIGBMJ3MgdG8KCWNvbnN0YW50cy4KCUFkZCBtaXNzaW5nIHNlbWljb2xvbnMuCgoJKiBidWlsZHMvdG9wbGV2ZWwubWs6IERvIHNpbWlsYXIgY2hhbmdlIGFzIGZvcgoJYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9FTkNfVEFHKTogTmV3IHZlcnNpb24gdG8gbWFrZSBpdAoJZWFzaWVyIHRvIHJlZGVmaW5lLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCAoRlRfSU1BR0VfVEFHKTogRGl0dG8uCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2dldF9lbmNvZGluZ3MpOiBBZGQgY2FzdC4KCjIwMDEtMDYtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcCwgYnVpbGRzL3dpbjMyL3Zpc3VhbGMvaW5kZXguaHRtbDoKCVVwZGF0ZWQgdGhlIFZpc3VhbCBDKysgcHJvamVjdCAoZm9yIHRoZSAyLjAuNCByZWxlYXNlKS4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogQWRkZWQgcnVsZSBmb3IgQUlYIGRldGVjdGlvbiAod2hpY2ggdXNlcwoJL3Vzci9zYmluL2luaXQgaW5zdGVhZCBvZiAvc2Jpbi9pbml0KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCwgc3JjLyovKmVyciouaDogVXBkYXRlZCBzb21lIG9mIHRoZQoJZXJyb3IgbWFjcm9zIHRvIHNpbXBsaWZ5IGhhbmRsaW5nIG9mIG5ldyBlcnJvciBzY2hlbWUuCgoyMDAxLTA2LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaCAoRlRfRVJST1JfTU9EVUxFKTogTmV3IG1hY3JvLgoKMjAwMS0wNi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVJlbW92aW5nIF9sb3RzXyBvZiBjb21waWxlciB3YXJuaW5ncyB3aGVuIHRoZSBtb3N0IHBlZGFudGljIHdhcm5pbmcKCWxldmVscyBvZiBWaXN1YWwgQysrIGFuZCBCb3JsYW5kIEMrKyBhcmUgdXNlZC4gIFRvbyBtYW55IGZpbGVzIHRvIGJlCglsaXN0ZWQgaGVyZSwgYnV0IEZUMiBub3cgY29tcGlsZXMgd2l0aG91dCB3YXJuaW5ncyB3aXRoIFZDKysgYW5kIHRoZQoJYC9XNCcgd2FybmluZyBsZXZlbCAobGludC1zdHlsZSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX05ld19NZW1vcnlfRmFjZSk6IFVwZGF0ZWQKCWRvY3VtZW50YXRpb24uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oIChGVF9CT09MKTogTmV3IG1hY3JvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogQWRkICNwcmFnbWEgZm9yIFZpc3VhbCBDKysKCXRvIHN1cHByZXNzIHdhcm5pbmcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoRlRfR0VUX1NIT1JUX3tCRSxMRX0sCglGVF9HRVRfT0ZGM197QkUsTEV9LCBGVF9HRVRfTE9OR197QkUsTEV9KTogTmV3IG1hY3Jvcy4KCShORVhUXyopOiBVc2UgdGhlbS4KCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfREVCVUdfSC4KCShGVF9OZXdfTWVtb3J5X0ZhY2UpOiBBZGQgYGNvbnN0JyB0byBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCjIwMDEtMDYtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNaW5vciBjbGVhbnVwcyB0byByZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21hbmFnLmggKEZUQ19NQVhfQllURVNfREVGQVVMVCk6IFVzZQoJYEwnIGZvciBjb25zdGFudC4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfUkVOREVSX1BPT0xfU0laRSk6IERpdHRvLgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2KTogVXNlIGBMJyBmb3IgY29uc3RhbnQuCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfR2V0X0NCb3gpOiBSZW1vdmUgYGVycm9yJyB2YXJpYWJsZS4KCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoZnRfdHJpZ19hcmN0YW5fdGFibGUpOiBVc2UgYEwnIGZvciBjb25zdGFudHMuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Eb25lX1NpemUpOiBGaXggcmV0dXJuIHZhbHVlLgoJKEZUX1NldF9DaGFyX1NpemUsIEZUX1NldF9QaXhlbF9TaXplcywgRlRfR2V0X0tlcm5pbmcpOiBSZW1vdmUKCXVudXNlZCBgbWVtb3J5JyB2YXJpYWJsZS4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfZ2V0X29yaWVudGF0aW9uKTogVXNlIGBMJyBmb3IgY29uc3RhbnQuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludF9lZGdlc18zLAoJYWhfaGludGVyX2FsaWduX2VkZ2VfcG9pbnRzKTogUmVtb3ZlIHVudXNlZCBgYmVmb3JlJyBhbmQgYGFmdGVyJwoJdmFyaWFibGVzLgoJKGFoX2hpbnRlcl9hbGlnbl93ZWFrX3BvaW50cyk6IFJlbW92ZSB1bnVzZWQgYGVkZ2VfbGltaXQnIHZhcmlhYmxlLgoJKGFoX2hpbnRlcl9sb2FkKTogUmVtb3ZlIHVudXNlZCBgbmV3X2FkdmFuY2UnLCBgc3RhcnRfY29udG91cicsCglhbmQgYG1ldHJpY3MnIHZhcmlhYmxlcy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Mb2FkX0VuY29kaW5nKTogUmVtb3ZlIGRlYWQgY29kZSB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBSZW1vdmUgdW51c2VkIGBiYXNlX29mZnNldCcKCXZhcmlhYmxlLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IFJlbW92ZSB1bnVzZWQKCWBvdXRsaW5lJyB2YXJpYWJsZS4KCShjZmZfY29tcHV0ZV9iaWFzKTogVXNlIGBVJyBmb3IgY29uc3RhbnQuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfZGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFQxX0RlY3J5cHQpOiBEaXR0by4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhclN0cmluZ3MpOiBEaXR0by4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfS2Vybik6IFJlbW92ZSB1bnVzZWQgYHZlcnNpb24nCgl2YXJpYWJsZS4KCSogc3JjL3NmbnQvdHRzYml0LmMgKFRUX0xvYWRfU0JpdF9JbWFnZSk6IFJlbW92ZSB1bnVzZWQgYHRvcCcKCXZhcmlhYmxlLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogUmVtb3ZlIHVudXNlZAoJYG51bV9jb250b3VycycgYW5kIGBpbnNfb2Zmc2V0JyB2YXJpYWJsZXMuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogUmVtb3ZlIHVudXNlZCBgVG9wJyBhbmQgYHhfc2NhbGUnCgl2YXJpYWJsZXMuCgkoVFRfTG9hZF9HbHlwaCk6IFJlbW92ZSB1bnVzZWQgYG1lbW9yeScgdmFyaWFibGUuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5c19yYXN0ZXJfcmVuZGVyKTogVXNlIGBMJyBmb3IgY29uc3RhbnRzLgoKMjAwMS0wNi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1ha2UgdGhlIG5ldyBlcnJvciBzY2hlbWUgc291cmNlIGNvbXBhdGlibGUgd2l0aCBvbGRlciBGVCB2ZXJzaW9ucwoJYnkgaW50cm9kdWNpbmcgYW5vdGhlciBsYXllci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCAoRlRfRVJST1JERUZfLCBGVF9OT0VSUk9SREVGXyk6IE5ldwoJbWFjcm9zLgoJKEZUX05PRVJST1JERUYpOiBSZW1vdmVkLgoJKiBpbmNsdWRlLyovKmVyciouaDogVXNlIEZUX0VSUk9SREVGXyBhbmQgRlRfTk9FUlJPUkRFRl8uCgoyMDAxLTA2LTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VOQ19UQUcpOiBOZXcgbWFjcm8uCgkoRlRfRW5jb2RpbmdfKTogVXNlIGl0LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCAoRlRfSU1BR0VfVEFHKTogRGVmaW5lIGl0Cgljb25kaXRpb25hbGx5LgoKMjAwMS0wNi0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1vZGlmaWVkIHRoZSBUcnVlVHlwZSBpbnRlcnByZXRlciB0byBsZXQgaXQgdXNlIHRoZSBuZXcKCXRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zIHByb3ZpZGVkIGluIGBmdHRyaWdvbi5oJy4gIFRoaXMgZ2V0cyByaWQgb2YKCXNvbWUgb2xkIDY0LWJpdCBjb21wdXRhdGlvbiByb3V0aW5lcywgYXMgd2VsbCBhcyBtYW55IHdhcm5pbmdzIHdoZW4KCWNvbXBpbGluZyB0aGUgbGlicmFyeSB3aXRoIHRoZSBgbG9uZyBsb25nJyA2NC1iaXQgaW50ZWdlciB0eXBlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogVW5kZWZpbmUKCUZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oOiBSZWFycmFuZ2UgdXNlIG9mCglGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUy4KCSogc3JjL2Jhc2UvZnRjYWxjLmM6IEFkZCBkZWNsYXJhdGlvbiBvZiBGVF9JbnQ2NCBpZgoJRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MgaXNuJ3QgZGVmaW5lZC4KCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IFVzZSBGVF9UUklHT05PTUVUUllfSC4KCShOb3JtKTogQWRkIGEgc3BlY2lhbCB2ZXJzaW9uIGlmIEZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTIGlzbid0CglkZWZpbmVkLgoJKEN1cnJlbnRfUmF0aW8sIE5vcm1hbGl6ZSk6IFNpbXBsaWZ5IGNvZGUuCgoyMDAxLTA2LTExICBNaWtlIE93ZW5zICA8TU93ZW5zQGFtdGRhdGFzb3V0aC5jb20+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2LCBGVF9EaXZGaXgsIEZUX1NxcnQ2NCk6IFJlbW92ZQoJY29tcGlsZXIgd2FybmluZ3MuCgoyMDAxLTA2LTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW46IFJlbmFtZWQgdG8gLi4uCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogVGhpcyB0byBtYWtlIHN1cmUgdGhhdCBhdXRvY29uZiAyLjUwIGlzCgluZWVkZWQuCglSdW4gYGF1dG91cGRhdGUnIG9uIGl0LgoJSW5jcmVhc2UgYHZlcnNpb25faW5mbycgdG8gNzowOjEuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAxLTA2LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKTogRml4ZWQgYSBidWcgdGhhdAoJY29ycnVwdGVkIHRyYW5zZm9ybWVkIGdseXBocyB0aGF0IHdlcmUgYXV0by1oaW50ZWQgKHRoZSB0cmFuc2Zvcm0KCXdhcyBhcHBsaWVkIHR3aWNlKS4KCglGaXhlZCBhIGJ1ZyB0aGF0IHJldHVybmVkIGFuIGludmFsaWQgbGluZWFyIHdpZHRoIGZvciBjb21wb3NpdGUKCVRydWVUeXBlIGdseXBocy4KCgkqIGluY2x1ZGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9Mb2FkZXJfKTogVHdvIG5ldyBlbGVtZW50cyBgbGluZWFyJwoJYW5kIGBsaW5lYXJfZGVmJy4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCwKCWNvbXB1dGVfZ2x5cGhfbWV0cmljcyk6IFVzZSBpdC4KCgkqIGluY2x1ZGUvZnR0eXBlcy5oIChGVF9FUlJPUl9CQVNFKTogTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfT3Blbl9GYWNlLCBGVF9SZW5kZXJfR2x5cGhfSW50ZXJuYWwpOiBVc2UgaXQKCXRvIG1ha2Ugc291cmNlIGNvZGUgd29yayB3aXRoIHRoZSBuZXcgZXJyb3Igc2NoZW1lIGltcGxlbWVudGVkIGJ5CglXZXJuZXIuCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT3V0bGluZV9SZW5kZXIpOiBEaXR0by4KCjIwMDEtMDYtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglVcGRhdGluZyB0byBsaWJ0b29sIDEuNC4wIGFuZCBhdXRvY29uZiAyLjUwLgoKCSogYnVpbGRzL3VuaXgvbHRjb25maWc6IFJlbW92ZWQuCgkqIGJ1aWxkcy91bml4L2x0bWFpbi5zaCwgYnVpbGRzL3VuaXgvY29uZmlndXJlLmluLAoJYnVpbGRzL3VuaXgvYWNsb2NhbC5tNDogVXBkYXRlZC4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMDYtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglDb21wbGV0ZSByZWRlc2lnbiBvZiBlcnJvciBjb2Rlcy4gIFBsZWFzZSBjaGVjayBmdG1vZGVyci5oIGZvciBtb3JlCglkZXRhaWxzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZlcnJzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0ZXJyb3JzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxZXJyb3JzLmg6IFJlbW92ZWQuICBSZXBsYWNlZCB3aXRoIGZpbGVzCglsb2NhbCB0byB0aGUgbW9kdWxlLiAgQWxsIGV4dHJhIGVycm9yIGNvZGVzIGhhdmUgYmVlbiBtb3ZlZCB0bwoJYGZ0ZXJyb3JzLmgnLgoKCSogc3JjL3NmbnQvdHRwb3N0Lmg6IE1vdmUgZXJyb3IgY29kZXMgdG8gYGZ0ZXJyb3JzLmgnLgoKCSogc3JjL2F1dG9oaW50L2FoZXJyb3JzLmgsIHNyYy9jYWNoZS9mdGNlcnJvci5oLCBzcmMvY2ZmL2NmZmVycnMuaCwKCXNyYy9jaWQvY2lkZXJycy5oLCBzcmMvcGNmL3BjZmVycm9yLmgsIHNyYy9wc2F1eC9wc2F1eGVyci5oLAoJc3JjL3BzbmFtZXMvcHNuYW1lcnIuaCwgc3JjL3Jhc3Rlci9yYXN0ZXJycy5oLCBzcmMvc2ZudC9zZmVycm9ycy5oLAoJc3JjL3Ntb290aC9mdHNtZXJycy5oLCBzcmMvdHJ1ZXR5cGUvdHRlcnJvcnMuaCwKCXNyYy90eXBlMS90MWVycm9ycy5oLCBzcmMvd2luZm9udHMvZm50ZXJycy5oOiBOZXcgZmlsZXMgZGVmaW5pbmcgdGhlCgllcnJvciBuYW1lcyBmb3IgdGhlIG1vZHVsZSBpdCBiZWxvbmdzIHRvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oOiBOZXcgZmlsZSwgZGVmaW5pbmcgdGhlIG1vZHVsZSBlcnJvcgoJb2Zmc2V0cy4gIEl0cyBzdHJ1Y3R1cmUgaXMgc2ltaWxhciB0byBgZnRlcnJvcnMuaCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmggKEZUX05PRVJST1JERUYpOiBOZXcgbWFjcm8uCgkoRlRfRVJST1JERUYpOiBSZWRlZmluZWQgdG8gdXNlIG1vZHVsZSBlcnJvciBvZmZzZXRzLgoJQWxsIGludGVybmFsIGVycm9yIGNvZGVzIGFyZSBub3cgcHVibGljOyB1bnVzZWQgZXJyb3IgY29kZXMgaGF2ZQoJYmVlbiByZW1vdmVkLCBzb21lIGFyZSBuZXcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9NT0RVTEVfRVJST1JTX0gpOiBOZXcKCW1hY3JvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCgkoRlRfQ09ORklHX09QVElPTl9VU0VfTU9EVUxFX0VSUk9SUyk6IE5ldyBtYWNyby4KCglBbGwgb3RoZXIgc291cmNlIGZpbGVzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHVzZSB0aGUgbmV3IGVycm9yIGNvZGVzOwoJc29tZSBhbHJlYWR5IGV4aXN0aW5nIChpbnRlcm5hbCkgZXJyb3IgY29kZXMgbG9jYWwgdG8gYSBtb2R1bGUgaGF2ZQoJYmVlbiByZW5hbWVkIHRvIGdpdmUgdGhlbSB0aGUgc2FtZSBuYW1lIGFzIGluIHRoZSBiYXNlIG1vZHVsZS4KCglBbGwgbWFrZSBmaWxlcyBoYXZlIGJlZW4gdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBsb2NhbCBlcnJvciBmaWxlcy4KCjIwMDEtMDYtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkdG9rZW5zLmg6IFJlcGxhY2VkIHdpdGguLi4KCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBUaGlzIGZpbGUgZm9yIDgrMyBjb25zaXN0ZW5jeS4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzogVXNlIG1hY3JvcyBmb3IgaGVhZGVyIGZpbGUgbmFtZXMuCgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIChUVF9Ib3JpSGVhZGVyXywgVFRfVmVydEhlYWRlcl8pOgoJRml4IGxlbmd0aCBvZiBgUmVzZXJ2ZWQnIGFycmF5LiAgTm90ZSB0aGF0IHRoaXMgaXNuJ3QgdGhlIHJlYWwgZml4CglzaW5jZSByZWNlbnQgT3BlblR5cGUgc3BlY3MgaGF2ZSBpbnRyb2R1Y2VkIGEgYENhcmV0T2Zmc2V0JyBmaWVsZAoJaW5zdGVhZCBvZiB0aGUgZmlyc3QgcmVzZXJ2ZWQgYnl0ZS4KCjIwMDEtMDUtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEw6IE1pbm9yIGZpeGVzLgoKCgkqIFZlcnNpb24gMi4wLjMgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMS0wNS0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogSU5TVEFMTCwgZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMS0wNS0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1vdmVkIHNldmVyYWwgZG9jdW1lbnRzIGZyb20gdGhlIHRvcC1sZXZlbCB0byB0aGUgYGRvY3MnIGRpcmVjdG9yeS4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9EaXZGaXgpOiBTbWFsbCBmaXggdG8gcmV0dXJuIHZhbHVlLgoKMjAwMS0wNS0xNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeGVkIGEgYnVnIGluIHRoZQoJY29tcG9zaXRlIGxvYWRlci4gIFNwb3R0ZWQgYnkgS2VpdGggUGFja2FyZC4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dseXBoTG9hZGVyX0NoZWNrX1BvaW50cywKCUZUX0dseXBoTG9hZGVyX0NoZWNrX1N1YmdseXBocyk6IERpdHRvLgoKMjAwMS0wNS0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGVkIHRoZSBpbmNvcnJlY3QgYmx1ZSB6b25lIGNvbXB1dGF0aW9ucywgYW5kIGltcHJvdmVkIHRoZQoJY29tcG9zaXRlIHN1cHBvcnQuICBOb3RlIHRoYXQgdGhlc2UgY2hhbmdlcyByZXN1bHQgaW4gaW1wcm92ZWQKCXJlbmRlcmluZywgd2hpbGUgc29tZXRpbWVzIGludHJvZHVjaW5nIHRoZWlyIG93biBhcnRlZmFjdHMuICBUaGlzIGlzCglwcm9iYWJseSB0aGUgbGFzdCBiaWcgY2hhbmdlIHRvIHRoZSBhdXRvaGludGVyIGJlZm9yZSB0aGUKCWludHJvZHVjdGlvbiBvZiBhIGNvbXBsZXRlIHJlcGxhY2VtZW50LgoKCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKHNvcnRfdmFsdWVzKTogRml4IGxvb3AuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmM6IFJlbW92ZWQgc29tZSBvYnNvbGV0ZSBjb2RlLgoJKGFoX291dGxpbmVfY29tcHV0ZV9lZGdlcyk6IE1vZGlmeSBjb2RlIHRvIHNldCB0aGUgYWhfZWRnZV9yb3VuZAoJZmxhZy4KCShhaF9vdXRsaW5lX2NvbXB1dGVfYmx1ZV9lZGdlcyk6IEFkZCBjb2RlIHRvIGNvbXB1dGUgYWN0aXZlIGJsdWUKCXpvbmVzLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9nbHlwaF9sb2FkKTogQ2hhbmdlIGxvYWRfZmxhZ3MKCXZhbHVlLgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX0RpdkZpeCk6IEZpeGVkIGEgYnVnIGluIHRoZSA2NC1iaXQgY29kZSB0aGF0CgljcmVhdGVkIGluY29ycmVjdCBzY2FsZSBmYWN0b3JzIQoJKEZUX1JvdW5kX0ZpeCwgRlRfQ2VpbEZpeCwgRlRfRmxvb3JGaXgpOiBNaW5vciBpbXByb3ZlbWVudHMuCgoyMDAxLTA1LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0YmJveC5oOiBGVEJCT1hfSCAtPiBfX0ZUQkJPWF9IX18uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaDogX19GVF9UUklHT05PTUVUUllfSF9fIC0+CglfX0ZUVFJJR09OX0hfXy4KCUluY2x1ZGUgRlRfRlJFRVRZUEVfSC4KCUJlYXV0aWZpZWQ7IGFkZGVkIGNvcHlyaWdodC4KCSogc3JjL2Jhc2UvZnR0cmlnb24uYzogQmVhdXRpZmllZDsgYWRkZWQgY29weXJpZ2h0LgoKMjAwMS0wNS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpLCBzcmMvY2lkL2NpZGxvYWQuYwoJKHBhcnNlX2ZvbnRfbWF0cml4KSwgc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEZpeGVkCgl0aGUgaW5jb3JyZWN0IEVNIHNpemUgY29tcHV0YXRpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmgsIHNyYy9iYXNlL2Z0dHJpZ29uLmM6IE5ldyBmaWxlcywKCWFkZGluZyB0cmlnb25vbWV0cmljIGZ1bmN0aW9ucyB0byB0aGUgY29yZSBBUEkgKHVzaW5nIENvcmRpYwoJYWxnb3JpdGhtcykuCgkqIHNyYy9iYXNlL2Z0YmFzZS5jLCBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5tazogVXNlIHRoZW0uCgoJKiBidWlsZHMvbmV3bGluZTogTmV3IGZpbGUuCgkqIGJ1aWxkcy90b3BfbGV2ZWwubWssIGJ1aWxkcy9kZXRlY3QubWs6IFVzZSBpdC4gIFRoaXMgZml4ZXMKCXByb2JsZW1zIHdpdGggTWFrZSBvbiBXaW5kb3dzIDIwMDAsIGFzIHdlbGwgYXMgcHJvYmxlbXMgd2hlbiBgbWFrZQoJZGlzdGNsZWFuJyBpcyBpbnZva2VkIG9uIGEgbm9uLVVuaXggcGxhdGZvcm0gd2hlbiB0aGVyZSBpcyBubwoJYGNvbmZpZy5taycgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rOiBGaXhlZCBhIHByb2JsZW0gd2l0aCBvYmplY3QgZGVsZXRpb25zIHVuZGVyCglEb3MvV2luZG93cy9PUy8yIHN5c3RlbXMuCgoJQWRkZWQgbmV3IGRpcmVjdG9yeSB0byBob2xkIHRvb2xzIGFuZCB0ZXN0IHByb2dyYW1zLgoKCSogZG9jcy9kb2NtYWtlci5weSwgZG9jcy9nbG5hbWVzLnB5OiBNb3ZlZCB0by4uLgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHksIHNyYy90b29scy9nbG5hbWVzLnB5OiBUaGlzIHBsYWNlLgoJKiBzcmMvdG9vbHMvY29yZGljLnB5OiBOZXcgZmlsZSB1c2VkIHRvIGNvbXB1dGUgYXJjdGFuZ2VudCB0YWJsZQoJbmVlZGVkIGJ5IGZ0dHJpZ29uLmMuCgkqIHNyYy90b29scy90ZXN0X2Jib3guYywgc3JjL3Rvb2xzL3Rlc3RfdHJpZy5jOiBOZXcgdGVzdCBmaWxlcy4KCgkqIHNyYy90b29scy9kb2NtYWtlci5weTogSW1wcm92ZWQgdGhlIHNjcmlwdCB0byBhZGQgdGhlIGN1cnJlbnQgZGF0ZQoJYXQgdGhlIGZvb3RlciBvZiBlYWNoIHdlYiBwYWdlICh1c2VmdWwgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgoJdmVyc2lvbnMpLgoKCSogSmFtZmlsZTogRml4ZWQgaW5jb3JyZWN0IEhEUk1BQ1JPIGFyZ3VtZW50LgoKCSogVE9ETzogUmVtb3ZlZCB0aGUgY3ViaWMgYXJjIGJib3ggY29tcHV0YXRpb24gbm90ZSwgc2luY2UgaXQgaGFzIGJlZW4KCWZpeGVkIHJlY2VudGx5LgoJKiBzcmMvYmFzZS9mdGJib3guYyAodGVzdF9jdWJpY196ZXJvKTogUmVuYW1lZCB0by4uLgoJKHRlc3RfY3ViaWNfZXh0cmVtYSk6IFRoaXMgZnVuY3Rpb24uICBVc2UgYFVMJyBmb3IgdW5zaWduZWQgbG9uZwoJY29uc3RhbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOgoJRm9ybWF0dGluZy4KCjIwMDEtMDUtMTAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9PcGVuX0ZhY2UpOiBGaXhlZCBhIHNtYWxsIG1lbW9yeSBsZWFrCgl3aGljaCBoYXBwZW5lZCB3aGVuIHRyeWluZyB0byBvcGVuIDAtc2l6ZSBmb250IGZpbGVzIQoKMjAwMS0wNS0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaDogTW92ZSBkZWNsYXJhdGlvbiBvZgoJRlRfU3FydEZpeGVkKCkgb3V0IG9mIGAjaWZkZWYgRlRfTE9ORzY0Jy4KCjIwMDEtMDUtMDggIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmZHJpdmVyLmMgKFBDRl9Mb2FkX0dseXBoKTogRml4ZWQgaW5jb3JyZWN0IGJpdG1hcCB3aWR0aAoJY29tcHV0YXRpb24uCgoyMDAxLTA1LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBVcGRhdGVkIHRoZSBEb2NNYWtlciBzY3JpcHQgaW4gb3JkZXIgdG8gYWRkCgljb21tYW5kIGxpbmUgb3B0aW9ucyAoLS1vdXRwdXQsLS1wcmVmaXgsLS10aXRsZSksIGZpeCB0aGUgZXJyb25lb3VzCglsaW5lIG51bWJlcnMgcmVwb3J0ZWQgZHVyaW5nIGVycm9ycyBhbmQgd2FybmluZ3MsIGFuZCBvdGhlcgoJZm9ybWF0dGluZyBpc3N1ZXMuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2LCBGVF9NdWxGaXgsIEZUX0RpdkZpeCk6IFZhcmlvdXMgdGlueQoJZml4ZXMgcmVsYXRlZCB0byByb3VuZGluZyBpbiA2NC1iaXRzIHJvdXRpbmVzIGFuZAoJcHNldWRvLWBvcHRpbWl6YXRpb25zJy4KCjIwMDEtMDQtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0YmJveC5jIChCQm94X0N1YmljX0NoZWNrKTogRml4ZWQgdGhlIGNvZWZmaWNpZW50Cglub3JtYWxpemF0aW9uIGFsZ29yaXRobSAoaW52YWxpZCBmaW5hbCBiaXQgcG9zaXRpb24sIGFuZCBpbnZhbGlkCglzaGlmdCBjb21wdXRhdGlvbikuCgoyMDAxLTA0LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsIGJ1aWxkcy91bml4L2NvbmZpZy5zdWI6IFVwZGF0ZWQgdG8KCWxhdGVzdCB2ZXJzaW9ucyBmcm9tIGdudS5vcmcuCgoJKiBidWlsZHMvY29tcGlsZXIvZ2NjLWRldi5tazogQWRkIGAtV25vLWxvbmctbG9uZycgZmxhZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg6IERlZmluZSBGVF9TcXJ0Rml4ZWQoKQoJdW5jb2RpdGlvbmFsbHkuCgkqIHNyYy9iYXNlL2Z0YmJveC5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX0NBTENfSC4KCUZpeCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL2Jhc2UvZnRjYWxjLmM6IEZpeCAocG90ZW50aWFsKSBjb21waWxlciB3YXJuaW5ncy4KCjIwMDEtMDQtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9TcXJ0Rml4ZWQpOiBDb3JyZWN0ZWQvb3B0aW1pemVkIHRoZSAzMi1iaXQKCWZpeGVkLXBvaW50IHNxdWFyZSByb290IGNvbXB1dGF0aW9uLiAgSXQgaXMgbm93IHVzZWQgZXZlbiB3aXRoCgk2NC1iaXRzIGludGVnZXJzLCBhcyBpdCBpcyBfbXVjaF8gZmFzdGVyIHRoYW4gY2FsbGluZyBGVF9TcXJ0NjQgOi0pCgoJKiBzcmMvYmFzZS9mdGJib3guYzogUmVtb3ZlZCBpbnZhbGlkIGAjaW5jbHVkZSBGVF9CRVpJRVJfSCcgbGluZS4KCjIwMDEtMDQtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0YmJveC5jIChCQm94X0N1YmljX0NoZWNrKTogUmV3cm90ZSBmdW5jdGlvbiB0byB1c2UKCWRpcmVjdCBjb21wdXRhdGlvbnMgd2l0aCAxNi4xNiB2YWx1ZXMgaW5zdGVhZCBvZiBzdWItZGl2aXNpb25zLiAgSXQKCWlzIG5vdyBzbG93ZXIsIGJ1dCBwcm92ZXMgYSBwb2ludCA6LSkKCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYywgc3JjL3Ntb290aC9mdGdyYXlzLmMsIHNyYy9iYXNlL2Z0YmJveC5jOgoJRml4ZWQgdGhlIGJlemllciBzdGFjayBkZXB0aHMuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRml4KTogTWlub3Igcm91bmRpbmcgZml4LgoKCSogYnVpbGRzL2Jlb3M6IEFkZGVkIEJlT1Mtc3BlY2lmaWMgZmlsZXMgdG8gdGhlIG9sZCBidWlsZCBzeXN0ZW0KCShubyBjaGFuZ2VzIHdlcmUgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgQmVPUyBpbiB0aGUgSmFtZmlsZSB0aG91Z2gpLgoKMjAwMS0wNC0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZnRjb25maWcuaCwgZnRvcHRpb24uaDogVXBkYXRlZCBgZnRjb25maWcuaCcgdG8gZGV0ZWN0IDY0LWJpdCBpbnQKCXR5cGVzIG9uIHBsYXRmb3JtcyB3aGVyZSBBdXRvY29uZiBpcyBub3QgYXZhaWxhYmxlKS4gIEFsc28gcmVtb3ZlZAoJRlRDQUxDX1VTRV9MT05HX0xPTkcgYW5kIHJlcGxhY2VkIGl0IHdpdGgKCUZUX0NPTkZJR19PUFRJT05fRk9SQ0VfSU5UNjQuCgoJKiBidWlsZHMvd2luMzIvZnJlZXR5cGUuZHNwOiBVcGRhdGVkIHRoZSBWaXN1YWwgQysrIHByb2plY3QgZmlsZS4KCURvZXNuJ3QgY3JlYXRlIGEgRExMIHlldC4KCgkqIGNmZmdsb2FkLmM6IFJlbW92ZWQgYSBjb21waWxhdGlvbiB3YXJuaW5nLgoKMjAwMS0wNC0xMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHQxbG9hZC5jIChwYXJzZV9jaGFyc3RyaW5ncyk6IENoYW5nZWQgY29kZSBmb3IgcGxhY2luZyAubm90ZGVmCglnbHlwaCBpbnRvIHNsb3QgMCBzbyB0aGF0IHdlIG5vIGxvbmdlciBoYXZlIGEgbWVtb3J5IGFjY2VzcwoJdmlvbGF0aW9uLgoKCSogdDFsb2FkLmg6IEluIHN0cnVjdHVyZSBUMV9Mb2FkZXIsIGFkZGVkIHN3YXBfdGFibGUgKG9mIHR5cGUKCVBTX1RhYmxlKSB0byBmYWNpbGl0YXRlIHBsYWNpbmcgdGhlIC5ub3RkZWYgZ2x5cGggaW50byBzbG90IDAuCgoyMDAxLTA0LTEwICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxmcmFuY2VzY28uemFwcGEubmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dldF9DaGFyX0luZGV4KTogRml4IHJldHVybiB2YWx1ZS4KCjIwMDEtMDQtMDkgIExhdXJlbmNlIFdpdGhlcnMgIDxsd2l0aGVyc0Bsd2l0aGVycy5kZW1vbi5jby51az4KCgkqIGJ1aWxkcy9kb3MvZGV0ZWN0Lm1rOiBBZGQgc3VwcG9ydCBmb3IgYmFzaC4KCjIwMDEtMDQtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9vczIvKi5tazogVGhlc2UgZmlsZXMgaGF2ZSBiZWVuIGZvcmdvdHRlbiB0byB1cGRhdGUgdG8KCXRoZSBzdHJ1Y3R1cmUgb2Ygc2ltaWxhciBtYWtlZmlsZXMuCgkqIGJ1aWxkcy9kb3MvKi5tazogRGl0dG8uCgkqIGJ1aWxkcy9hbnNpLyoubWs6IERpdHRvLgoKCSogYnVpbGRzL3dpbjMyL3dpbjMyLWRlZi5tayAoQlVJTEQpOiBGaXggdHlwby4KCgkqIGJ1aWxkcy9jb21waWxlci8qLm1rIChDTEVBTl9MSUJSQVJZKTogRG9uJ3QgdXNlIE5PX09VVFBVVC4KCVRoaXMgaXMgYWxyZWFkeSB1c2VkIGluIHRoZSBsaW5rXyoubWsgZmlsZXMuCgoyMDAxLTA0LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvKi9KYW1maWxlOiBTbGlnaHQgY2hhbmdlcwl0byBtYWtlIGZpbGVzIG1vcmUgY3J5cHRpYy4KCjIwMDEtMDQtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIEphbWZpbGUsIHNyYy9KYW1maWxlLCBzcmMvKi9KYW1maWxlOiBGb3JtYXR0ZWQuICBTbGlnaHQgY2hhbmdlcwoJdG8gZ2l2ZSBmaWxlcyBpZGVudGljYWwgc3RydWN0dXJlLgoKMjAwMS0wNC0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogQ0hBTkdFUzogUmVmb3JtYXR0ZWQsIG1pbm9yIGZpeGVzLgoJKiBUT0RPOiBVcGRhdGVkLgoJKiBSRUFETUU6IEZvcm1hdHRpbmcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRm9ybWF0dGluZy4KCgkqIEphbWZpbGU6IEZpeCB0eXBvLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jOiBNb3ZlIGVycm9yIGNvZGUgI2RlZmluZXMgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZlcnJzLmg6IFRoaXMgZmlsZS4KCSogc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NmZi9jZmZsb2FkLmM6IFJlcGxhY2VkCglgRlRfRXJyXyonIHdpdGggYENGRl9FcnJfKicuCgkqIHNyYy9jaWQvY2lkcGFyc2UuYzogUmVwbGFjZWQgYEZUX0Vycl8qJyB3aXRoIGBUMV9FcnJfKicuCgkqIHNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3QxZGVjb2RlLmM6IERpdHRvLgoJKiBzcmMvc2ZudC9zZm9iY3MuYywgc3JjL3NmbnQvdHRsb2FkLmM6IFJlcGxhY2VkIGBGVF9FcnJfKicgd2l0aAoJYFRUX0Vycl8qJy4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0b2Jqcy5jOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxZ2xvYWQuYywgc3JjL3R5cGUxL3QxbG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsCglzcmMvdHlwZTEvdDFwYXJzZS5jOiBSZXBsYWNlZCBgRlRfRXJyXyonIHdpdGggYFQxX0Vycl8qJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmZXJycy5oOiBBZGQKCWBDRkZfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxZXJyb3JzLmg6IEFkZAoJYFQxX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0Jy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dGVycm9ycy5oOiBBZGQKCWBUVF9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdCcuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogQWRkIGBjZmZfKl9lbmNvZGluZycgYW5kIGBjZmZfKl9jaGFyc2V0JwoJcmVmZXJlbmNlcy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jOiBJbmNsdWRlIGBGVF9JTlRFUk5BTF9UWVBFMV9FUlJPUlNfSCcuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSwgQ0ZGX0RvbmVfRmFjZSk6IFVzZQoJRlRfTE9DQUxfREVGLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0RvbmVfRHJpdmVyKTogRGl0dG8uCgkqIHNyYy90cnV0eXBlL3R0b2Jqcy5jIChUVF9Jbml0X0ZhY2UsIFRUX0RvbmVfRmFjZSwgVFRfSW5pdF9TaXplKToKCURpdHRvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0RvbmVfRHJpdmVyKTogRGl0dG8uCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Eb25lX0ZhY2UpOiBEaXR0by4KCSogc3JjL3BjZi9wY2YuaDogVXNlIEZUX0xPQ0FMIGZvciBgUENGX0RvbmVfRmFjZScuCgoyMDAxLTA0LTAyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTWV0cmljcyk6IEZpeCBhbiBpbXByb3BlciBwb2ludGVyCglkZXJlZmVyZW5jZS4gIFN1Ym1pdHRlZCBieSBIZXJiZXJ0IER1ZXJyIDxkdWVyckBzdW4uY29tPi4KCjIwMDEtMDMtMjYgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBDaGFuZ2VkIGhleGFkZWNpbWFsCgljb25zdGFudHMgdG8gdXNlIHN1ZmZpeCBVIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggSFAtVVgncyBjODkKCWNvbXBpbGVyLiAgU3VibWl0dGVkIGJ5IEcuVy4gTHVjYXMgPGdsdWNhc0Bzb25hbHlzdHMuY29tPi4KCjIwMDEtMDMtMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBKYW1ydWxlcywgSmFtZmlsZSwgc3JjL0phbWZpbGUsIHNyYy8qL0phbWZpbGU6IEFkZGluZyBqYW1maWxlcyB0bwoJdGhlIHNvdXJjZSB0cmVlLiAgU2VlIHd3dy5mcmVldHlwZS5vcmcvamFtL2luZGV4Lmh0bWwgZm9yIGRldGFpbHMuCgoKCSogVmVyc2lvbiAyLjAuMiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTAzLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvd2luMzIvZGV0ZWt0Lm1rOiBGaXggLlBIT05ZIHRhcmdldCBmb3IgSW50ZWwgY29tcGlsZXIuCgoyMDAxLTAzLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHNuYW1lcy5oOgoJUmVuYW1lZCBgZnRuYW1lcy5oJyB0byBgZnRzbmFtZXMuaCcsIGFuZCBGVF9OQU1FU19IIHRvCglGVF9TRk5UX05BTUVTX0guCgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBnZW5lcmF0aW9uIG9mIElOREVYIGxpbmsgaW4gdGFibGUgb2YKCWNvbnRlbnRzLgoKCSogSU5TVEFMTCwgZG9jcy9CVUlMRDogVXBkYXRlZCBkb2N1bWVudGF0aW9uIHRvIGluZGljYXRlIHRoYXQgdGhlCgljb21waWxhdGlvbiBwcm9jZXNzIGhhcyBjaGFuZ2VkIHNsaWdodGx5IChubyBtb3JlIGBzcmMnIHJlcXVpcmVkIGluCgl0aGUgaW5jbHVkZSBwYXRoKS4KCgkqIGJ1aWxkcy8qLyotZGVmLm1rOiBDaGFuZ2VkIHRoZSBvYmplY3RzIGRpcmVjdG9yeSBmcm9tIGBvYmonIHRvCglgb2JqcycuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oOiBSZW1vdmVkIG9ic29sZXRlIG1hY3JvcyBsaWtlCglGVF9TT1VSQ0VfRklMRSwgZXRjLiBhbmQgYWRkZWQgY2FjaGUtc3BlY2lmaWMgbWFjcm8gZGVmaW5pdGlvbnMgdGhhdAoJd2VyZSBwcmV2aW91c2x5IGRlZmluZWQgaW4gPGZyZWV0eXBlL2Z0Y2FjaGUuaD4uICBBZGRlZCBjb21tZW50cyB0bwoJYmUgaW5jbHVkZWQgaW4gYSBuZXcgQVBJIFJlZmVyZW5jZSBzZWN0aW9uLgoKCSogc3JjLyovKjogUmVtb3ZlZCB0aGUgdXNlIG9mIEZUX1NPVVJDRV9GSUxFLCBldGMuICBOb3csIGVhY2gKCWNvbXBvbmVudCBuZWVkcyB0byBhZGQgaXRzIG93biBkaXJlY3RvcnkgdG8gdGhlIGluY2x1ZGUgcGF0aCBhdAoJY29tcGlsZSB0aW1lLiAgTW9kaWZpZWQgYWxsIGBydWxlcy5taycgYW5kIGBkZXNjcmlwLm1tcycKCWFjY29yZGluZ2x5LgoKMjAwMS0wMy0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmluOiBBZGQgJGZ0X3ZlcnNpb24uCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogVXNlIGl0LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgoyMDAxLTAzLTE5ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFzc2lnbiB0aGUgdW5pdHMgcGVyIGVtCgl2YWx1ZSBhbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgZmlyc3QgYnkgc2hpZnRpbmcgcmlnaHQgMTYgYml0cywKCXRoZW4gYnkgY2FzdGluZyB0aGUgcmVzdWx0cyB0byBGVF9VU2hvcnQuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X2Jib3gpOiBBc3NpZ24gdGhlIHVuaXRzIHBlciBlbQoJdmFsdWUgYW4gdW5zaWduZWQgc2hvcnQgdmFsdWUsIGZpcnN0IGJ5IHNoaWZ0aW5nIHJpZ2h0IDE2IGJpdHMsCgl0aGVuIGJ5IGNhc3RpbmcgdGhlIHJlc3VsdHMgdG8gRlRfVVNob3J0LgoKMjAwMS0wMy0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jLCBzcmMvY2lkL2NpZGxvYWQuYywgc3JjL3BjZi9wY2ZyZWFkLmMsCglzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYzogQWRkZWQgYSBmZXcgY2FzdHMgdG8gcmVtb3ZlCgljb21waWxlciB3YXJuaW5ncyBpbiBwZWRhbnRpYyBtb2Rlcy4KCgkqIGluY2x1ZGUvY29uZmlnL2Z0MmJ1aWxkLmgsIGluY2x1ZGUvY29uZmlnL2Z0aGVhZGVyLmg6IFRoZSBmaWxlCglgZnQyYnVpbGQuaCcgd2FzIHJlbmFtZWQgdG8gYGZ0aGVhZGVyLmgnIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZQoJdG9wLWxldmVsIDxmdDJidWlsZC5oPi4KCgkqIGluY2x1ZGUvY29uZmlnL2Z0aGVhZGVyLmg6IEFkZGVkIG5ldyBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlICNpbmNsdWRlCgltYWNyb3MuCgoyMDAxLTAzLTE3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9iYm94KTogT2J0YWluIHJvdW5kZWQgRlRfRml4ZWQKCXZhbHVlcyBmb3IgdGhlIGJvdW5kaW5nIGJveCBudW1iZXJzLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBXaGVuIHByb2Nlc3NpbmcgYSBDRkYvQ0VGIGZvbnQsCglzZXQgYHJvb3QtPmFzY2VuZGVyJyAoYHJvb3QtPmRlc2NlbmRlcicpIHRvIHRoZSBpbnRlZ2VyIHBhcnQgb2YKCWByb290LT5iYm94LnlNYXgnIChgcm9vdC0+YmJveC55TWluJywgcmVzcGVjdGl2ZWx5KS4KCjIwMDEtMDMtMTYgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGdldF9jZmZfZ2x5cGhfbmFtZSk6ICBOZXcgZnVuY3Rpb24uICBVc2VkIGluCgljZmZfZ2V0X2ludGVyZmFjZSB0byBmYWNpbGl0YXRlIGdldHRpbmcgYSBnbHlwaCBuYW1lIGZvciBnbHlwaCBpbmRleAoJdmlhIEZUX0dldF9HbHlwaF9OYW1lKCkuCgoJKGNmZl9nZXRfaW50ZXJmYWNlKTogQWRkZWQgc3VwcG9ydCBmb3IgZ2V0dGluZyBhIGdseXBoIG5hbWUgdmlhIHRoZQoJYGdseXBoX25hbWUnIG1vZHVsZSBpbnRlcmZhY2UuICBVc2VzIHRoZSBuZXcgZnVuY3Rpb24KCWdldF9jZmZfZ2x5cGhfbmFtZSgpLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4uCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IExvZ2ljYWwgb3IgdGhlIGZhY2UgZmxhZ3Mgd2l0aAoJRlRfRkFDRV9GTEFHX0dMWVBIX05BTUVTIG9ubHkgaWYgRlRfQ09ORklHX09QVElPTl9OT19HTFlQSF9OQU1FUyBpcwoJbm90IGRlZmluZWQuICBUaGlzIGlzIHRvIGFkZCBzdXBwb3J0IGZvciBnZXR0aW5nIGEgZ2x5cGggbmFtZSBmcm9tIGEKCWdseXBoIGluZGV4IHZpYSBGVF9HZXRfR2x5cGhfTmFtZSgpLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4uCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIHN1cHBvcnQgZm9yCglkZXByZWNhdGVkIG9wZXJhdG9yIGBkb3RzZWN0aW9uJy4KCVN1Ym1pdHRlZCBieSBTYW5kZXIgdmFuIGRlciBXYWwgPHN2ZHdhbEB4czRhbGwubmw+LgoKMjAwMS0wMy0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiBGaXggZXJyb3IKCW1lc3NhZ2VzLgoKCSogSU5TVEFMTCwgZG9jcy9CVUlMRDogV2UgbmVlZCBHTlUgbWFrZSAzLjc4LjEgb3IgbmV3ZXIuCgoyMDAxLTAzLTEyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oOiAgQ2hhbmdlZCB0aGUgbGVuSVYgbWVtYmVyIG9mCgl0aGUgVDFfRGVjb2Rlcl8gc3RydWN0IHRvIGJlIGFuIEZUX0ludCBpbnN0ZWFkIG9mIGFuIEZUX1VJbnQuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6ICBBZGp1c3QKCWZvciBsZW5JViBzZWVkIGJ5dGVzIGF0IHRoZSBzdGFydCBvZiBhIGRlY3J5cHRlZCBzdWJyb3V0aW5lLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogRGVjcnlwdCBzdWJyb3V0aW5lcyBvbmx5CglpZiBsZW5JViA+PSAwLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCk6IERlY3J5cHQgY2hhcnN0cmluZ3Mgb25seQoJaWYgbGVuSVYgPj0gMC4KCjIwMDEtMDMtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFRPRE86IFVwZGF0ZWQuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYzogUHV0IFJFQURfRmllbGRzKCkgYWx3YXlzIGluIGEgY29uZGl0aW9uYWwgdG8KCWF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMS0wMy0xMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIFRPRE86IE5ldyBmaWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGRlZCBwcm90b3R5cGVzIGFuZCBub3RlcyBmb3IKCXRocmVlIG5ldyBmdW5jdGlvbnM6IEZUX1JvdW5kRml4LCBGVF9DZWlsRml4LCBhbmQgRlRfRmxvb3JGaXguCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9Sb3VuZEZpeCwgRlRfQ2VpbEZpeCwgRlRfRmxvb3JGaXgpOiBBZGRlZAoJaW1wbGVtZW50YXRpb24gY29kZS4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfSW5pdF9GYWNlKTogVXNlIGNhbGN1bGF0ZWQgdW5pdHNfcGVyX0VNLAoJYW5kIGlmIHRoYXQgaXMgbm90IGF2YWlsYWJsZSwgZGVmYXVsdCB0byAxMDAwIHVuaXRzIHBlciBFTS4gIENoYW5nZWQKCWFzc2lnbm1lbnQgY29kZSBmb3IgYXNjZW5kZXIgYW5kIGRlc2NlbmRlciB2YWx1ZXMuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIHVuaXRzX3Blcl9FTQoJcHJvY2Vzc2luZy4KCShwYXJzZV9mb250X2Jib3gpOiBDaGFuZ2VkIHRvIHVzZSBGVF9GaXhlZCBudW1iZXIgaGFuZGxpbmcuCgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IENoYW5nZWQgdGhlIGFzc2lnbm1lbnQgY29kZQoJZm9yIGFzY2VuZGVyLCBkZXNjZW5kZXIsIGFuZCBtYXhfYWR2YW5jZV93aWR0aC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X2Jib3gpOiBDaGFuZ2VkIHRvIHVzZSBGVF9GaXhlZAoJbnVtYmVyIGhhbmRsaW5nLgoKMjAwMS0wMy0xMCAgSGVucmlrIEdydWJic3Ry9m0gIDxncnViYmFAcm94ZW4uY29tPgoKCSogc3JjLyovKi5jOiBBZGRlZCBtYW55IGNhc3RzIHRvIG1ha2UgY29kZSBtb3JlIDY0Yml0LXNhZmUuCgoyMDAxLTAzLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMLCBkb2NzL0JVSUxEOiBXZSBuZWVkIEdOVSBtYWtlIDMuNzggb3IgbmV3ZXIuCgoyMDAxLTAzLTA3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBNaW5vciBjb3JyZWN0aW9uOiBXZSBtdXN0IHdhaXQKCXVudGlsIHBhcnNlX2ZvbnRfYmJveCBpcyBjaGFuZ2VkIGJlZm9yZSB3ZSB1c2UgbG9naWNhbCBzaGlmdCByaWdodHMKCWluIHRoZSBhc3NpZ25tZW50cyBvZiBgcm9vdC0+YXNjZW5kZXInLCBgcm9vdC0+ZGVzY2VuZGVyJywgYW5kCglgcm9vdC0+bWF4X2FkdmFuY2Vfd2lkdGgnLgoKCShUMV9Eb25lX0ZhY2UpOiBGcmVlIGBjaGFyX25hbWUnIHRhYmxlIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPi4KCjIwMDEtMDMtMDUgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9Mb2FkX0dseXBoKTogU2V0IGdseXBoIGNvbnRyb2wgZGF0YSB0byB0aGUKCXRoZSBUeXBlIDIgZ2x5cGggY2hhcnN0cmluZyAodXNlZCBieSBjb252ZXJzaW9uIHByb2dyYW1zKS4KCVN1Ym1pdHRlZCBieSBIYSBTaGFvIDxoYXNoYW9AY2hpbmVzZS5jb20+LgoKMjAwMS0wMy0wNCAgQW50b2luZSBMZWNhICA8QW50b2luZS5MZWNhQHJlbmF1bHQuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IENvcnJlY3QgYSBzdHVwaWQgdHlwbyB3aGljaCBwcmV2ZW50ZWQKCWNvcnJlY3QgY29tcGlsYXRpb24gKFRUX01TX0xBTkdJRF9USUdSSUdOQV9FVEhJT1BJQSBhcHBlYXJlZCB0d2ljZSkuCgoyMDAxLTAzLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXIpOiBBZGQgZWxlbWVudHMKCWBkaXNhYmxlX2hvcnpfZWRnZXMnLCBgZGlzYWJsZV92ZXJ0X2VkZ2VzJy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jCShhaF9oaW50X2VkZ2VzXzMsIGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogVXNlCgl0aGVtIChhbmQgcmVtb3ZlIHN0YXRpYyB2YXJpYWJsZXMgd2l0aCB0aGUgc2FtZSBuYW1lcykuCgkqIHNyYy9wY2YvcGNmdXRpbC5jIChCaXRPcmRlckludmVydCk6IEFkZCBgY29uc3QnLgoJKiBkb2NzL2dsbmFtZXMucHk6IFVwZGF0ZWQgdG8gbGF0ZXN0IHBzdGFibGVzLmggY2hhbmdlcy4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogQWRkIHRlc3QgZm9yIEh1cmQuCgkqIGJ1aWxkcy9odXJkL2RldGVjdC5tazogUmVtb3ZlZC4KCjIwMDEtMDMtMDQgIFNhbmRlciB2YW4gZGVyIFdhbCAgPHN2ZHdhbEB4czRhbGwubmw+CgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oOiBBZGQgbW9yZSBgY29uc3QnLgoJKiBzcmMvcGNmL3BjZnV0aWwuYzogRGl0dG8uCgoyMDAxLTAzLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEZpeGluZyB0eXBvCgkoRlRfR2x5cGhfRG9uZSAtPiBGVF9Eb25lX0dseXBoKS4KCjIwMDEtMDMtMDEgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUuTGVjYUByZW5hdWx0LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBBZGRlZCBzb21lIG5ldyBNaWNyb3NvZnQgbGFuZ3VhZ2UKCWNvZGVzIGFuZCBMQ0lEcyBhcyBmb3VuZCBpbiBPZmZpY2UgWHAuCgoyMDAxLTAyLTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL2h1cmQvZGV0ZWN0Lm1rOiBOZXcgZmlsZS4gIEFkZGVkIHN1cHBvcnQgdG8gZGV0ZWN0IHRoZSBHTlUKCUh1cmQgb3BlcmF0aW5nIHN5c3RlbSBhcyBVbml4LWxpa2UuICBGaXggc3VibWl0dGVkIGJ5IEFudGhvbnkgRm9rCgk8Zm9rYUBkZWJpYW4ub3JnPi4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpOiBTZXQgZ2x5cGggY29udHJvbCBkYXRhIHRvIHRoZQoJdGhlIFR5cGUgMSBnbHlwaCBjaGFyc3RyaW5nICh1c2VkIGJ5IGNvbnZlcnNpb24gcHJvZ3JhbXMpLgoJU3VibWl0dGVkIGJ5IEhhIFNoYW8gPGhhc2hhb0BjaGluZXNlLmNvbT4uCgoyMDAxLTAyLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRncmF5cy5jIChncmF5c19zd2VlcCk6IFRoZSBmdW5jdGlvbiBkaWRuJ3QgZXhpdAoJaW1tZWRpYXRlbHkgaWYgYG51bV9jZWxscycgd2FzIDAgYXMgaXQgc2hvdWxkLiAgVGhhbmtzIHRvIEJvcmlzIGZvcgoJZmluZGluZyB0aGlzIG91dC4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogRml4ZWQgbWVtb3J5IGxlYWsgd2hlbgoJYml0bWFwIHJlbmRlcmluZyBmYWlscyAodGhhbmtzIHRvIEdyYWhhbSBBc2hlcikuCgoyMDAxLTAyLTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5IChEb2NTZWN0aW9uOjphZGRfZWxlbWVudCk6IFVzZQoJYHNlbGYucHJpbnRfZXJyb3IoKScuCgoJKiBidWlsZHMvdW5peC9jb25maWcue2d1ZXNzLHN1Yn06IFVwZGF0ZWQgKGZyb20gZnRwLmdudS5vcmcpLgoKMjAwMS0wMi0xMyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHksIGluY2x1ZGUvZnJlZXR5cGUvKi5oOiBVcGRhdGVkIHRoZSBEb2NNYWtlcgoJc2NyaXB0IHRvIHN1cHBvcnQgY2hhcHRlcnMgYW5kIHNlY3Rpb24gYmxvY2sgb3JkZXJpbmcuICBVcGRhdGVkIHRoZQoJcHVibGljIGhlYWRlciBmaWxlcyBhY2NvcmRpbmdseS4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfQ29weSk6IEFkdmFuY2Ugd2lkdGggYW5kIGdseXBoIGZvcm1hdAoJd2VyZSBub3QgY29ycmVjdGx5IGNvcGllZC4KCjIwMDEtMDItMDggIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCk6IFJlbW92ZWQgYW4KCXVubmVjZXNzYXJ5IGZwcmludGYoIHN0ZGVyciwgLi4uICkuCgoyMDAxLTAyLTA3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBBZGRlZCBjb2RlIHRvIGdldCB0aGUKCXVuaXRzX3Blcl9FTSBmcm9tIHRoZSB2YWx1ZSBhc3NpZ25lZCBpbiBwYXJzZV9mb250X21hdHJpeCwgaWYKCWF2YWlsYWJsZS4gIERlZmF1bHQgdG8gMTAwMCBpZiBub3QgYXZhaWxhYmxlLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBsb2dpYyB0byBnZXQKCXRoZSB1bml0c19wZXJfRU0gZnJvbSB0aGUgRm9udE1hdHJpeC4KCgkoY2ZmX3BhcnNlX2ZpeGVkX3Rob3VzYW5kKTogTmV3IGZ1bmN0aW9uLiAgR2V0cyBhIHJlYWwgbnVtYmVyIGZyb20KCXRoZSBDRkYgZm9udCwgYnV0IG11bHRpcGxpZXMgYnkgMTAwMCAodGhpcyBpcyB0byBhdm9pZCByb3VuZGluZwoJZXJyb3JzIHdoZW4gcGxhY2luZyB0aGlzIHJlYWwgbnVtYmVyIGludG8gYSAxNi4xNiBmaXhlZCBudW1iZXIpLgoKCShjZmZfcGFyc2VfcmVhbCk6IEFkZGVkIGNvZGUgc28gdGhhdCB0aGUgaW50ZWdlciBwYXJ0IGlzIG1vdmVkCglpbnRvIHRoZSBoaWdoIHNpeHRlZW4gYml0cyBvZiB0aGUgMTYuMTYgZml4ZWQgbnVtYmVyLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBBZGRlZCBsb2dpYyB0byBnZXQgdGhlIHVuaXRzCglwZXIgRU0gZnJvbSB0aGUgQ0ZGIGRpY3Rpb25hcnksIGlmIGF2YWlsYWJsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogSW4gc3RydWN0IENGRl9Gb250X0RpY3RfLAoJYWRkZWQgYSB1bml0c19wZXJfZW0gbWVtYmVyIHRvIGZhY2lsaXRhdGUgcGFzc2luZyBvZiB1bml0c19wZXJfZW0KCWZyb20gZnVuY3Rpb24gY2ZmX3BhcnNlX2ZvbnRfbWF0cml4LgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChpc19hbHBoYSk6IE1ha2UgYC0nIGEgbGVnYWwgYWxwaGFudW1lcmljCgljaGFyYWN0ZXIuICBUaGlzIGlzIHNvIHRoYXQgZm9udCBuYW1lcyB3aXRoIGAtJyBhcmUgZnVsbHkgcGFyc2VkLAoJZXRjLi4uCgoyMDAxLTAyLTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHNoaWZ0X2VsZW1lbnRzKTogUmVtb3ZlIGlmIGNsYXVzZSAod2hpY2ggaXMKCW9ic29sZXRlIG5vdykuCgoJKHJlYWxsb2NhdGVfdDFfdGFibGUsIFBTX1RhYmxlX0RvbmUpOiBSZXBsYWNlIFJFQUxMT0MoKSB3aXRoIEFMTE9DKCkKCSsgTUVNX0NvcHkoKSB0byBhdm9pZCBhIG1lbW9yeSBidWcuCgoyMDAxLTAyLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogSW1wcm92ZWQgdGhlIGluZGV4IHNvcnRpbmcgcm91dGluZSB0byBwbGFjZQoJY2FwaXRhbCBsZXR0ZXJzIGJlZm9yZSBzbWFsbCBvbmVzLiAgQWRkZWQgdGhlIGA8b3JkZXI+JyBtYXJrZXIgdG8KCXNlY3Rpb24gYmxvY2tzIGluIG9yZGVyIHRvIGdpdmUgdGhlIG9yZGVyIG9mIGJsb2Nrcy4KCjIwMDEtMDEtMzAgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUuTGVjYUByZW5hdWx0LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBMYXRlc3QgdXBkYXRlcyB0byBNaWNyb3NvZnQgbGFuZ3VhZ2UKCUlEIGNvZGVzLgoKMjAwMS0wMS0yNCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQWRkZWQgaGV1cmlzdGljIHRvIGdldAoJdW5pdHNfcGVyX0VNIGZyb20gdGhlIGZvbnQgbWF0cml4LgoKCShwYXJzZV9kaWN0KTogRGVsZXRlZCB0ZXN0IHRvIHNlZSB3aGV0aGVyIHRoZSBGb250SW5mbyBrZXl3b3JkIGhhcwoJYmVlbiBzZWVuLiAgRGVsZXRpb24gb2YgdGhpcyB0ZXN0IGFsbG93cyBmb250cyB3aXRob3V0IEZvbnRJbmZvCglkaWN0aW9uYXJpZXMgdG8gYmUgcGFyc2VkIGJ5IHRoZSBUeXBlIDEgZHJpdmVyLgoKCShUMV9PcGVuX0ZhY2UpOiBEZWxldGVkIGVtcHR5IHN1YnJvdXRpbmVzIGFycmF5IHRlc3QgdG8gbWFrZSBzdXJlCglmb250cyB3aXRoIG5vIHN1YnJvdXRpbmVzIHN0aWxsIGFyZSBwYXJzZWQuCgoyMDAxLTAxLTE3ICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxmcmFuY2VzY28uemFwcGEubmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZnJlYWQuYyAocGNmX2dldF9wcm9wZXJ0aWVzLCBwY2ZfZ2V0X21ldHJpY3MsCglwY2ZfZ2V0X2JpdG1hcHMpOiBGaXggY29tcGlsZXIgZXJyb3JzLgoKMjAwMS0wMS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jOiBSZW1vdmVkIHNvbWUgY29tcGlsYXRpb24gd2FybmluZ3MgcmVsYXRlZAoJdG8gY29tcGFyaXNvbiBvZiBzaWduZWQgdnMuIHVuc2lnbmVkIGludGVnZXJzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IENoYW5nZWQgdGhlIGRlYnVnIHRyYWNlCgljb25zdGFudHMgZnJvbSB0cmFjZV90Mnh4eHggdG8gdHJhY2VfY2ZmeHh4eCB0byBiZSBhYmxlIHRvIGNvbXBpbGUKCXRoZSBDRkYgZHJpdmVyIGluIGRlYnVnIG1vZGUuCgoyMDAxLTAxLTExICBNYXR0aGV3IENyb3NieSAgPG1jcm9zYnlAbWFydGhvbi5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IEZpeCBwcm9ibGVtcyB3aXRoIHNlcGFyYXRlCgktLXByZWZpeCBhbmQgLS1leGVjLXByZWZpeC4KCjIwMDEtMDEtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBjcm9zcy1yZWZlcmVuY2VzIGdlbmVyYXRpb24gYXMgd2VsbCBhcwoJbW9yZSByb2J1c3QgaGFuZGxpbmcgb2YgcGF0aG5hbWUgd2lsZGNhcmQgbWF0Y2hpbmcuCgoyMDAxLTAxLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBNaW5vciBpbXByb3ZlbWVudHMgdG8gcmVkdWNlIHVud2FudGVkIHNwYWNlcwoJYW5kIGVtcHR5IGxpbmVzIGluIG91dHB1dC4KCjIwMDEtMDEtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBJbXByb3ZlZCBzY3JpcHQgdG8gZ2VuZXJhdGUgdGFibGUgb2YgY29udGVudHMKCWFuZCBpbmRleCBwYWdlcy4gIEl0IGFsc28gc3VwcG9ydHMgd2lsZGNhcmRzIG9uIG5vbiBVbml4IHN5c3RlbXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlLyouaCwgaW5jbHVkZS9mcmVldHlwZS9jYWNoZS8qLmg6IFVwZGF0ZWQgY29tbWVudHMKCXRvIGluY2x1ZGUgc2VjdGlvbiBkZWZpbml0aW9ucy9kZWxpbWl0YXRpb25zIGZvciB0aGUgQVBJIFJlZmVyZW5jZQoJZ2VuZXJhdG9yLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBNb3ZlZCBkZWNsYXJhdGlvbiBvZgoJYEZUX0dlbmVyaWNfRmluYWxpemVyJyBhbmQgdGhlIGBGVF9HZW5lcmljJyBzdHJ1Y3R1cmUgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmg6IGhlcmUuCgoyMDAxLTAxLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IFVwZGF0ZWQgVW5pY29kZSBjb2RlIHJhbmdlIGNvbW1lbnRzLgoKMjAwMS0wMS0wMyAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvcnVsZXMubWs6IFVzZSBjZmZnbG9hZC57YyxofSBpbnN0ZWFkIG9mIHQyZ2xvYWQue2MsaH0uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg6IENoYW5nZWQgdG8gdXNlIGNmZnR5cGVzLmgKCShjZmZlcnJzLmgpIGluc3RlYWQgb2YgdDJ0eXBlcy5oICh0MmVycm9ycy5oLCByZXNwZWN0aXZlbHkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oOiBNZXJnZWQgaW4gY2hhbmdlcyBmcm9tCgl0MnR5cGVzLmggYW5kIG1hZGUgdGhpcyB0aGUgY2Fub25pY2FsIGB0eXBlcycgaGVhZGVyIGZvciB0aGUgQ0ZGCglkcml2ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QydHlwZXMuaDogVGhpcyBmaWxlIHdhcyBtZXJnZWQgd2l0aAoJY2ZmdHlwZXMuaCBhbmQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDJlcnJvcnMuaDoJUmVuYW1lZCB0byBjZmZlcnJzLmguCgoJKiBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NmZi9jZmZvYmpzLmgsIHNyYy9jZmYvY2ZmcGFyc2UuYywKCXNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmYuYywgc3JjL2NmZi9jZmZsb2FkLmMsCglzcmMvY2ZmL2NmZmdsb2FkLmMsIHNyYy9jZmYvY2ZmZ2xvYWQuaDogQ2hhbmdlZCB0byB1c2UKCWNmZmdsb2FkLntjLGh9IGluc3RlYWQgb2YgdDJnbG9hZC57YyxofS4gIEFsbCBvY2N1cnJlbmNlcyBvZiB0Ml8KCShUMl8pIHdlcmUgcmVwbGFjZWQgd2l0aCBjZmZfIChDRkZfLCByZXNwZWN0aXZlbHkpLgoKCSogc3JjL2NmZi90Mmdsb2FkLmg6IFJlbmFtZWQgY2ZmZ2xvYWQuaC4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jOiBSZW5hbWVkIGNmZmdsb2FkLmMKCjIwMDAtMDEtMDIgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGJ1aWxkcy92bXM6IFN1cHBvcnQgZmlsZXMgZm9yIFZNUyBhcmNoaXRlY3R1cmUgYWRkZWQuCgkqIGRlc2NyaXAubW1zLCBzcmMvKi9kZXNjcmlwLm1tczogVk1TIG1ha2VmaWxlcyBhZGRlZC4KCSogUkVBRE1FLlZNUzogTmV3IGZpbGUuCgoyMDAwLTAxLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBMSUNFTlNFLlRYVDogQWRkZWQgaW5mbyBhYm91dCBQQ0YgZHJpdmVyIGxpY2Vuc2UuCgoyMDAxLTAxLTAxICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxmcmFuY2VzY28uemFwcGEubmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi8qOiBOZXcgZHJpdmVyIG1vZHVsZSBmb3IgUENGIGZvbnQgZm9ybWF0ICh1c2VkIGluCglYIFdpbmRvdyBTeXN0ZW0pLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCAoRlRfVHJhY2UpOiBBZGRlZCB2YWx1ZXMgZm9yCglQQ0YgZHJpdmVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BjZnR5cGVzLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBBZGRlZCBQQ0YgZHJpdmVyIG1vZHVsZS4KCjIwMDEtMDEtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0dldF9DaGFyX0luZGV4KTogRml4IHBhcmFtZXRlciB0eXBlLgoKMjAwMC0xMi0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL21vZHVsZXMubWsgKGNsZWFuX21vZHVsZV9saXN0KTogRml4ZWQgZGVsZXRpb24gb2YgbW9kdWxlCglmaWxlIGluIGNhc2UgYG1ha2UgbWFrZV9tb2R1bGVfbGlzdCcgaXMgY2FsbGVkIGJlZm9yZSBgbWFrZSBzZXR1cCcuCgoyMDAwLTEyLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0xvYWRfQ2hhcnNldCk6IEltcHJvdmVkIGVycm9yIG1lc3NhZ2VzLgoJKENGRl9Mb2FkX0NoYXJzZXQsIENGRl9Mb2FkX0VuY29kaW5nKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHZhcmlhYmxlCglkZWZpbml0aW9uLgoKMjAwMC0xMi0zMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDJ0eXBlcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oOiBDaGFuZ2VkIHRoZSBzdHJ1Y3R1cmVzIGZvcgoJQ0ZGX0VuY29kaW5nIGFuZCBDRkZfRW5jb2RpbmcgZm9yIHRoZSBuZXcgaW1wbGVtZW50YXRpb25zIG9mIHRoZQoJY2hhcnNldCBhbmQgZW5jb2RpbmcgcGFyc2VycyBpbiB0aGUgQ0ZGIGRyaXZlci4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jICh0Ml9sb29rdXBfZ2x5cGhfYnlfc3RkY2hhcmNvZGUsCgl0Ml9vcGVyYXRvcl9zZWFjKTogQWRkZWQgdGhlc2UgZnVuY3Rpb25zIGZvciB1c2UgaW4gaW1wbGVtZW50aW5nIHRoZQoJc2VhYyBlbXVsYXRpb24gcHJvdmlkZWQgYnkgdGhlIFR5cGUgMiBlbmRjaGFyIG9wZXJhdG9yLgoJKFQyX1BhcnNlX0NoYXJTdHJpbmdzKTogQWRkZWQgc2VhYyBlbXVsYXRpb24gZm9yIHRoZSBlbmRjaGFyCglvcGVyYXRvci4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfTG9hZF9FbmNvZGluZywgQ0ZGX0xvYWRfQ2hhcnNldCwKCUNGRl9Eb25lX0VuY29kaW5nLCBDRkZfRG9uZV9DaGFyc2V0KTogRXh0ZW5kZWQgdG8gbG9hZCBhbmQgcGFyc2UgdGhlCgljaGFyc2V0L2VuY29kaW5nIHRhYmxlcywgYW5kIGZyZWUgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZW0gd2hlbiB0aGUKCUNGRiBkcml2ZXIgaXMgZmluaXNoZWQgd2l0aCB0aGVtLiAgQWRkZWQgdGFibGVzCgoJICAgIGNmZl9pc29hZG9iZV9jaGFyc2V0CgkgICAgY2ZmX2V4cGVydF9jaGFyc2V0CgkgICAgY2ZmX2V4cGVydHN1YnNldF9jaGFyc2V0CgkgICAgY2ZmX3N0YW5kYXJkX2VuY29kaW5nCgkgICAgY2ZmX2V4cGVydF9lbmNvZGluZwoKCXNvIHRoYXQgdGhlIGVuY29kaW5nL2NoYXJzZXQgcGFyc2VyIGNhbiBoYW5kbGUgcHJlZGVmaW5lZCBlbmNvZGluZ3MgYW5kCgljaGFyc2V0cy4KCjIwMDAtMTItMjQgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYyAoVDJfTG9hZF9HbHlwaCk6IEFkZGVkIGNvZGUJc28gdGhhdCB0aGUgZm9udAoJdHJhbnNmb3JtIGlzIGFwcGxpZWQuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIGNvZGUgc28gdGhhdAoJdGhlIGZvbnQgbWF0cml4IG51bWJlcnMJYXJlIHNjYWxlZCBieSAxLyhtYXRyaXgtPnl5KS4gIEFsc28sIHRoZQoJb2Zmc2V0IHZlY3RvciBub3cgY29udGFpbnMgaW50ZWdlciB2YWx1ZXMgaW5zdGVhZCBvZiAxNi4xNiBmaXhlZAoJbnVtYmVycy4KCjIwMDAtMTItMjIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKToKCVJlbW92ZWQgdW5uZWNlc3NhcnkgY29tbWVudHMgYW5kIGNvbW1lbnRlZC1vdXQgY29kZS4KCjIwMDAtMTItMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2lkL2NpZGFmbS5jLCBzcmMvY2lkL2NpZGFmbS5oOiByZW1vdmVkIHVuLW5lZWRlZCBmaWxlcywKCXdlJ2xsIHdvcmsgb24gc3VwcG9ydGluZyBDSUQgQUZNIGZpbGVzIGxhdGVyIEkgZ3Vlc3MgOi0pCgoyMDAwLTEyLTIxICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCwgYWhfaGludGVyX2xvYWRfZ2x5cGgpOgoJQ2hhbmdlZCBzbyB0aGF0IGZvbnRzIHdpdGggYSBub24tc3RhbmRhcmQgRm9udE1hdHJpeCByZW5kZXIKCWNvcnJlY3RseS4gIFByZXZpb3VzbHksIHRoZSBmaXJzdCBnbHlwaCByZW5kZXJlZCBmcm9tIHN1Y2ggYQoJZm9udCBkaWQgbm90IGhhdmUgdGhlIHRyYW5mb3JtYXRpb24gbWF0cml4IGFwcGxpZWQuCgoyMDAwLTEyLTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiAqLm1rOiBBZGRlZCBsb3RzIG9mIGAuUEhPTlknIHRhcmdldHMuCgoyMDAwLTEyLTE3ICBLYXJzdGVuIEZsZWlzY2hlciAgPGtmbGVpc2MxQGZvcmQuY29tPgoKCSogKi5tazogSW1wbGVtZW50ZWQgYHBsYXRmb3JtJyB0YXJnZXQgdG8gZGlzYWJsZSBhdXRvLWRldGVjdGlvbi4KCjIwMDAtMTItMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvZGVzaWduL21vZHVsZXMuaHRtbDogUmVtb3ZlZC4gIENvdmVyZWQgYnkgZGVzaWduLSouaHRtbC4KCgkqIElOU1RBTEw6IEFkZGVkIGluZm8gYWJvdXQgbWFrZXBwLgoKMjAwMC0xMi0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBzdXBwb3J0IGZvciBjbGlwcGVkIGRpcmVjdCByZW5kZXJpbmcgaW4gdGhlIHNtb290aCByZW5kZXJlci4KCVRoaXMgc2hvdWxkIG5vdCBicmVhayBiaW5hcnkgY29tcGF0aWJpbGl0eSBvZiBleGlzdGluZyBhcHBsaWNhdGlvbnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaCwgaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IE1vdmUKCWRlZmluaXRpb24gb2YgdGhlIEZUX0JCb3ggc3RydWN0dXJlIGZyb20gdGhlIGZvcm1lciB0byB0aGUgbGF0dGVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogQWRkIGBmdF9yYXN0ZXJfZmxhZ19jbGlwJyB2YWx1ZSB0bwoJRlRfUmFzdGVyX0ZsYWcgZW51bWVyYXRpb24uCglBZGQgYGNsaXBfYm94JyBlbGVtZW50IHRvIEZUX1Jhc3Rlcl9QYXJhbXMgc3RydWN0dXJlLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheXNfY29udmVydF9nbHlwaCk6IEltcGxlbWVudCBpdC4KCgkqIElOU1RBTEw6IFVwZGF0ZWQgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBvbiBXaW4zMiwgbGlzdGluZyB0aGUKCW5ldyBgbWFrZSBzZXR1cCBsaXN0JyB0YXJnZXQgdXNlZCB0byBsaXN0IHN1cHBvcnRlZAoJY29tcGlsZXJzL3RhcmdldHMuCgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKGZ0X2JsYWNrX3JlbmRlcik6IFRlc3QgZm9yIHVuc3VwcG9ydGVkCglkaXJlY3QgcmVuZGVyaW5nIGJlZm9yZSB0ZXN0aW5nIGFyZ3VtZW50cy4KCjIwMDAtMTItMTMgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdDJidWlsZC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBGaXhlZCBoZWFkZXIgaW5jbHVzaW9uIG1hY3JvcwoJdG8gdXNlIGRpcmVjdCBkZWZpbml0aW9ucy4gIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGRvIHRoZXNlIHRoaW5ncwoJaW4gYSBwb3J0YWJsZSB3YXkgOi0oICBUaGUgcmVzdCBvZiB0aGUgY29kZSBzaG91bGQgZm9sbG93IHNob3J0bHkKCXRob3VnaCBldmVyeXRoaW5nIGNvbXBpbGVzIG5vdy4KCgkqIGJ1aWxkcy9jb21waWxlci9pbnRlbGMubWssIGJ1aWxkcy9jb21waWxlci93YXRjb20ubWs6IE5ldyBmaWxlcy4KCgkqIGJ1aWxkcy93aW4zMi9kZXRlY3QubWs6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbnRlbCBDL0MrKwoJY29tcGlsZXIsIGFzIHdlbGwgYXMgX3ByZWxpbWluYXJ5XyAocmVhZDogZG9lc24ndCB3b3JrISkgc3VwcG9ydCBmb3IKCVdhdGNvbS4gIEFsc28gYWRkZWQgYSBuZXcgc2V0dXAgdGFyZ2V0LiAgVHlwZSBgbWFrZSBzZXR1cCBsaXN0JyBmb3IKCWEgbGlzdCBvZiBzdXBwb3J0ZWQgY29tbWFuZC1saW5lIGNvbXBpbGVycyBvbiBXaW4zMi4KCgkqIHNyYy9iYXNlL2Z0ZGVidWcuYzogQWRkZWQgZHVtbXkgc3ltYm9sIHRvIGF2b2lkIGVtcHR5IGZpbGUgaWYKCWNvbmRpdGlvbmFscyBhcmUgb2ZmLgoKMjAwMC0xMi0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYzogRml4ZWQgdHlwb3MuICBGaXhlZCBpbmNsdXNpb24gb2Ygd3JvbmcKCWZ0Y29uZmlnLmggZmlsZS4KCjIwMDAtMTItMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0MmJ1aWxkLmggKEZUMl9ST09ULCBGVDJfQ09ORklHX1JPT1QpOgoJUmVtb3ZlZC4gIEFOU0kgQyBkb2Vzbid0IChleHBsaWNpdGx5KSBhbGxvdyBtYWNybyBleHBhbnNpb24gaW4KCWFyZ3VtZW50cyB1c2luZyBgIyMnLgoJKEZUMl9QVUJMSUNfRklMRSwgRlQyX0NPTkZJR19GSUxFLCBGVDJfSU5URVJOQUxfRklMRSk6IFVzZSBkaXJlY3RvcnkKCW5hbWVzIGRpcmVjdGx5LiAgTWFrZSB0aGVtIGNvbmZpZ3VyYWJsZS4gIFVzZSBgIyMnIHRvIHN0cmlwIGxlYWRpbmcKCWFuZCB0cmFpbGluZyBzcGFjZXMgZnJvbSBhcmd1bWVudHMuCgoJKiBidWlsZHMvdW5peC9mdDJ1bml4Lmg6IEFkYXB0ZWQuCgoJKiBzcmMvYmFzZS9mdHN5c3RlbS5jIChmdF9hbGxvYywgZnRfcmVhbGxvYywgZnRfZnJlZSwgZnRfaW9fc3RyZWFtLAoJZnRfY2xvc2Vfc3RyZWFtKTogVXNlIEZUX0NBTExCQUNLX0RFRi4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmM6IFVzZSBuZXcgaGVhZGVyIHNjaGVtZS4KCShGVF9Eb25lX01lbW9yeSk6IFVzZSBmcmVlKCkgZnJvbSBGVF9NZW1vcnkgc3RydWN0dXJlLgoKCSogc3JjL2Jhc2UvZnRpbml0LmMsIHNyYy9iYXNlL2Z0bWFjLmM6IEhlYWRlciBzY2hlbWUgZml4ZXMuCgoyMDAwLTEyLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdDJidWlsZC5oIChGVDJfQ09ORklHX1JPT1QsCglGVDJfUFVCTElDX0ZJTEUsIEZUMl9DT05GSUdfRklMRSwgRlQyX0lOVEVSTkFMX0ZJTEUsCglGVF9TT1VSQ0VfRklMRSk6IFVzZSBgIyMnIG9wZXJhdG9yIHRvIGJlIHJlYWxseSBBTlNJIEMgY29tcGxpYW50LgoKMjAwMC0xMi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rOiBSZW1vdmUgdW51c2VkIFVTRV9DRkxBR1MgdmFyaWFibGUuCgoyMDAwLTEyLTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiAqLyouaDogQ2hhbmdlZCBib2R5IGluY2x1c2lvbiBtYWNybyBuYW1lcyB0byBzdGFydCBhbmQgZW5kIHdpdGgKCWBfXycgKHRob3NlIHdoaWNoIGhhdmVuJ3QgY29udmVydGVkIHlldCkuICBGaXhlZCBtaW5vciBjb252ZXJzaW9uCglpc3N1ZXMuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmM6IFVwZGF0ZWQgdG8gbmV3IGhlYWRlciBpbmNsdXNpb24gc2NoZW1lLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IFJlbW92ZSB1bnVzZWQgQ0FMQ19MZW5ndGgoKSBtYWNyby4KCjIwMDAtMTItMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiAqLyouW2NoXTogQ2hhbmdlZCBzb3VyY2UgZmlsZXMgdG8gYWRoZXJlIHRvIHRoZSBuZXcKCWhlYWRlciBpbmNsdXNpb24gc2NoZW1lLiAgTm90IGNvbXBsZXRlbHkgdGVzdGVkIGJ1dCB3b3JrcyBmb3Igbm93CgloZXJlLgoKCSogc3JjL2NmZi90MmRyaXZlci5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJkcml2ZXIuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QybG9hZC5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MmxvYWQuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJvYmpzLmM6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZvYmpzLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3Qyb2Jqcy5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MnBhcnNlLmM6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZwYXJzZS5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MnBhcnNlLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZwYXJzZS5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MnRva2Vucy5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmdG9rZW4uaDogTmV3IGZpbGUuCgoJKiBzcmMvY2ZmL2NmZi5jLCBzcmMvY2ZmL3J1bGVzLm1rOiBVcGRhdGVkLgoKMjAwMC0xMi0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVfRG9uZSk6IEZpeGVkIG1lbW9yeSBsZWFrLgoKMjAwMC0xMi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL21vZHVsZS5tazogUmVwbGFjZWQgYHh4eCAjJyB3aXRoIGB4eHgkKHNwYWNlKS4KCSogYnVpbGRzL29zMi9kZXRla3QubWssIGJ1aWxkcy93aW4zMi9kZXRla3QubWs6IE1vdmVkIGNvbW1lbnQgdG8KCWF2b2lkIHRyYWlsaW5nIHNwYWNlcyBpbiB2YXJpYWJsZS4KCSogYnVpbGRzL2ZyZWV0eXBlLm1rOiBVc2UgJChEKSBpbnN0ZWFkIG9mICREIHRvIG1ha2Ugc3RhdGVtZW50IG1vcmUKCXJlYWRhYmxlLgoKCSogZG9jcy9kb2NtYWtlci5weTogRm9ybWF0dGluZy4KCjIwMDAtMTItMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNhdXgvcHNhdXhtb2QuYzogRml4ZWQgYSBicm9rZW4gaW5jbHVzaW9uIG9mIGNvbXBvbmVudAoJaGVhZGVyIGZpbGVzIChhbiBGVF9GTEFUX0NPTVBJTEUgdGVzdCB3YXMgbWlzc2luZykuCgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoRlRDX01hbmFnZXJfRG9uZSk6IEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkCglhbiBvY2Nhc2lvbmFsIGNyYXNoIHdoZW4gdGhlIGZ1bmN0aW9uIHdhcyBjYWxsZWQgKGR1ZSB0byBhIGRhbmdsaW5nCglwb2ludGVyKS4KCgkqIHNyYy9iYXNlL2Z0c3lzdGVtLmMgKEZUX0RvbmVfTWVtb3J5KTogRml4ZWQgYW4gb2J2aW91cyBidWc6CglUaGUgQU5TSSBgZnJlZSgpJyBmdW5jdGlvbiB3YXMgY2FsbGVkIGluc3RlYWQgb2YgYG1lbW9yeS0+ZnJlZSgpJy4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEFkZGVkIHNlY3Rpb24gZmlsdGVyaW5nLCBtdWx0aS1wYWdlIGdlbmVyYXRpb24KCShpbmRleCBwYWdlIGdlbmVyYXRpb24gaXMgc3RpbGwgbWlzc2luZyB0aG91Z2gpLgoKMjAwMC0xMi0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWssIGJ1aWxkcy91bml4L2Z0MnVuaXguaDogVGhlIGZpbGUgYGZ0MnVuaXguaCcKCWlzIG5vdyBpbnN0YWxsZWQgYXMgPGZ0MmJ1aWxkLmg+IGZvciBVbml4IHN5c3RlbXMuICBOb3RlIHRoYXQgd2UKCXN0aWxsIHVzZSB0aGUgYGZyZWV0eXBlMi9mcmVldHlwZScgaW5zdGFsbGF0aW9uIHBhdGggZm9yIG5vdy4KCgkqICovKi5bY2hdOiBOb3cgdXNpbmcgPGZ0MmJ1aWxkLmg+IGFzIHRoZSBkZWZhdWx0IGJ1aWxkIGFuZCBzZXR1cAoJY29uZmlndXJhdGlvbiBmaWxlIGluIGFsbCBwdWJsaWMgaGVhZGVycy4gIEludGVybmFsIHNvdXJjZSBmaWxlcwoJc3RpbGwgbmVlZCBzb21lIGNoYW5nZXMgdGhvdWdoLgoKCSogYnVpbGRzL2RldmVsL2Z0MmJ1aWxkLmgsIGJ1aWxkcy9kZXZlbC9mdG9wdGlvbi5oOiBDcmVhdGVkIGEgbmV3CglkaXJlY3RvcnkgdG8gaG9sZCBhbGwgZGV2ZWxvcG1lbnQgb3B0aW9ucyBmb3IgYm90aCB0aGUgVW5peCBhbmQKCVdpbjMyIGRldmVsb3BlciBidWlsZHMuCgoJKiBidWlsZHMvd2luMzIvZGV0ZWN0Lm1rLCBidWlsZHMvd2luMzIvdzMyLWJjY2QubWssCglidWlsZHMvd2luMzIvdzMyLWRldi5tazogQ2hhbmdlZCB0aGUgZGV2ZWxvcGVyIGJ1aWxkIHRhcmdldHMgdG8KCWBkZXZlbC1nY2MnIGFuZCBgZGV2ZWwtYmNjJyBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGRldmVsb3Agd2l0aCB0aGUKCUJvcmxhbmQgQysrIGNvbXBpbGVyLgoKMjAwMC0xMi0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMC4xIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbiwgYnVpbGRzL3VuaXgvY29uZmlndXJlLAoJYnVpbGRzL2N5Z3dpbi9jb25maWd1cmUuaW4sIGJ1aWxkcy9jeWd3aW4vY29uZmlndXJlOiBTZXR0aW5nCglgdmVyc2lvbl9pbmZvJyB0byA2OjE6MCBmb3IgdGhlIDIuMC4xIHJlbGVhc2UuCgoJKiBDSEFOR0VTOiBBZGRlZCBhIHN1bW1hcnkgb2YgY2hhbmdlcyBiZXR3ZWVuIDIuMC4xIGFuZCAyLjAuCgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbiwgYnVpbGRzL2N5Z3dpbi9mdGNvbmZpZy5pbjogQ2hhbmdlcwoJdG8gYWxsb3cgY29tcGlsYXRpb24gdW5kZXIgVW5peCB3aXRoIHRoZSBVbml4LXNwZWNpZmljIGNvbmZpZwoJZmlsZXMuCgoyMDAwLTEyLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMOiBSZXZpc2VkLgoJKiBidWlsZHMvY29tcGlsZXIvYmNjLWRldi5taywgYnVpbGRzL2NvbXBpbGVyL3Zpc3VhbGFnZS5taywKCWJ1aWxkcy9jb21waWxlci9iY2MubWssIGJ1aWxkcy93aW4zMi93MzItYmNjLm1rLAoJYnVpbGRzL3dpbjMyL3czMi1iY2NkLm1rOiBSZXZpc2VkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGJ1aWxkLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg6IFJldmlzZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBVcGRhdGVkIHRvIG5ldyBoZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4KCjIwMDAtMTEtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy90b3BsZXZlbC5tayAoLlBIT05ZKTogQWRkaW5nIGBkaXN0Y2xlYW4nLgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWsgKC5QSE9OWSk6IEFkZGluZyBgZGV2ZWwnLCBgdW5peCcsIGBsY2MnLAoJYHNldHVwJy4KCjIwMDAtMTEtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vZ3I+CgoJKiBJTlNUQUxMOiBTbGlnaHRseSB1cGRhdGVkIHRoZSBxdWljayBzdGFydGVyIGRvY3VtZW50YXRpb24gdG8KCWluY2x1ZGUgSURFIGNvbXBpbGF0aW9uLCBwcmV2ZW50IGFnYWluc3QgQlNEIE1ha2UsIGFuZCBzcGVjaWZ5IGBtYWtlCglzZXR1cCcgaW5zdGVhZCBvZiBhIHNpbmdsZSBgbWFrZScgZm9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24uCgoJKiBpbmNsdWRlL2NvbmZpZy9mdGJ1aWxkLmgsIGluY2x1ZGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogQWRkZWQgbmV3Cgljb25maWd1cmF0aW9uIGZpbGVzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBsb2NhdGlvbiBvZiBhbGwgcHVibGljLAoJY29uZmlndXJhdGlvbiwgYW5kIGludGVybmFsIGhlYWRlciBmaWxlcyBmb3IgRnJlZVR5cGUgMi4gIE1vZGlmaWVkCglhbGwgaGVhZGVycyB1bmRlciBgaW5jbHVkZS9mcmVldHlwZScgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS4gIE5vdGUKCXRoYXQgd2Ugc3RpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGxpYnJhcnkgc291cmNlIGZpbGVzIHRoZW1zZWx2ZXMKCXRob3VnaC4KCgkqIGJ1aWxkcy9jb21waWxlci9iY2MubWssIGJ1aWxkcy9jb21waWxlci9iY2MtZGV2Lm1rLAoJYnVpbGRzL3dpbjMyL3czMi1iY2MubWssIGJ1aWxkcy93aW4zMi93MzItYmNjZC5taywKCWJ1aWxkcy93aW4zMi9kZXRlY3QubWs6IEFkZGVkIG5ldyBmaWxlcyB0byBzdXBwb3J0IGNvbXBpbGF0aW9uIHdpdGgKCXRoZSBmcmVlIEJvcmxhbmQgQysrIGNvbW1hbmQtbGluZSBjb21waWxlci4gIE1vZGlmaWVkIHRoZSBkZXRlY3Rpb24KCXJ1bGVzIHRvIHJlY29nbml6ZSB0aGUgbmV3IGBiY2MzMicgdGFyZ2V0IGluIGBtYWtlIHNldHVwIGJjYzMyJy4KCgkqIHNyYy9zZm50L3R0Y21hcC5jLCBzcmMvc2ZudC90dHBvc3QuYywgc3JjL3NmbnQvdHRzYml0LmMsCglzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMsIHNyYy90cnVldHlwZS90dGdsb2FkLmMsCglzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogRml4ZWQgYSBmZXcgY29tcGFyaXNvbnMgdGhhdCBCb3JsYW5kIEMrKwoJZGlkbid0IHJlYWxseSBsaWtlLiAgQmFzaWNhbGx5LCB0aGlzIGNvbXBpbGVyIGNvbXBsYWlucyB3aGVuIEZUX1VJbnQKCWlzIGNvbXBhcmVkIHRvIEZUX1VTaG9ydCAoYXBwYXJlbnRseSwgaXQgcHJvbW90ZXMgYFVTaG9ydCcgdG8gYEludCcKCWluIHRoZXNlIGNhc2VzKS4KCjIwMDAtMTEtMzAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiB0Mm9ianMuYyAoVDJfSW5pdF9GYWNlKTogQWRkZWQgY2FsY3VsYXRpb24gb2YgYGZhY2UtPmhlaWdodCcgZm9yCglwdXJlIENGRiBmb250cy4KCgkqIHQxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBGaXhlZCBjb21wdXRhdGlvbiBvZiBgZmFjZS0+aGVpZ2h0Jy4KCjIwMDAtMTEtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGJib3guYyAoQkJveF9Db25pY19DaGVjayk6IEZpeGVkIGEgcmVhbGx5IHN0dXBpZAoJYnVnIGluIHRoZSBmb3JtdWxhIHVzZWQgdG8gY29tcHV0ZSB0aGUgY29uaWMgQul6aWVyIGV4dHJlbWEKCW9mIG5vbi1tb25vdG9ub3VzIGFyY3MuCgoyMDAwLTExLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfU3FydEZpeGVkKSwgc3JjL2Jhc2UvZnRvYmpzLmMKCShGVF9TZXRfUmVuZGVyZXIpOiBVc2UgRlRfRVhQT1JUX0RFRi4KCSogc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKEZUQ19JbWFnZV9DYWNoZV9Mb29rdXApLAoJc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKEZUQ19NYW5hZ2VyX0RvbmUsIEZUQ19NYW5hZ2VyX1Jlc2V0LAoJRlRDX01hbmFnZXJfTG9va3VwX0ZhY2UsIEZUQ19NYW5hZ2VyX0xvb2t1cF9TaXplLAoJRlRDX01hbmFnZXJfUmVnaXN0ZXJfQ2FjaGUpLCBzcmMvY2FjaGUvZnRjc2JpdHMuYwoJKEZUQ19TQml0X0NhY2hlX0xvb2t1cCk6IERpdHRvLgoKCSogc3JjL2luY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjZ2x5cGguaCAoRlRDX0dseXBoTm9kZV9Jbml0KSwKCXNyYy9pbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmggKEZUX05ld19GYWNlX0Zyb21fRk9ORCk6IFVzZSBGVF9FWFBPUlQuCgoyMDAwLTExLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jOiBJbmNsdWRlIHR0c2JpdC5oIGFuZCB0dHBvc3QuaCBvbmx5Cgljb25kaXRpb25hbGx5LgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzLCBTZXRfUGl4ZWxfU2l6ZXMpOiBTZXQKCWBzaXplLT5zdHJpa2VfaW5kZXgnIG9ubHkgY29uZGl0aW9uYWxseS4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFvYmpzLmM6IEluY2x1ZGUgdDFhZm0uaCBvbmx5Cgljb25kaXRpb25hbGx5LgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5oOiBNb3ZlIGFsbCB0eXBlIGRlZmluaXRpb25zIHRvLi4uCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmg6IE5ldyBmaWxlLgoJKiBzcmMvd2luZm9udHMvd2luZm50LmM6IFVzZSBpdC4KCjIwMDAtMTEtMjkgID8/PyA/Pz8gIDxkYXJpbkBlYXplbC5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogUmVwbGFjZWQgRlRfQ0FUIGFuZCBGVF9YQ0FUCgl3aXRoIGEgZGlyZWN0IHNvbHV0aW9uICh3aGljaCBhbHNvIHNhdGlmaWVzIHBpY2t5IGNvbXBpbGVycykuCgoyMDAwLTExLTI4ICBZQU1BTk8tVUNISSBIaWRldG9zaGkgIDxtZXJAZGluLm9yLmpwPgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9Jbml0X1NpemUpOiBGaXggI2lmZGVmJ3MgdG8gd29yayB3aXRoCglkaXNhYmxlZCBpbnRlcnByZXRlciBhbHNvLgoKCSogc3JjL2Jhc2UvZnRuYW1lcy5jIChGVF9HZXRfU2ZudF9OYW1lX0NvdW50KTogRml4IGluY29ycmVjdAoJcGFyZW50aGVzZXMuCgoyMDAwLTExLTI2ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90Mmdsb2FkLmMgKFQyX1BhcnNlX0NoYXJTdHJpbmdzKTogQWRkZWQgbG9naWMgdG8gZ2x5cGgKCXdpZHRoIHNldHRpbmcgY29kZSB0byB0YWtlIGludG8gYWNjb3VudCBldmVuL29kZCBhcmd1bWVudCBjb3VudHMKCWFuZCBnbHlwaCB3aWR0aCBvcGVyYW5kIGJlZm9yZSBlbmRjaGFyL2htb3ZldG8vdm1vdmV0by4KCjIwMDAtMTEtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9hbnNpL2Fuc2kubWs6IEZpeCBpbmNsdXNpb24gb3JkZXIgb2YgZmlsZXMuCgoyMDAwLTExLTI2ICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IENvbXB1dGUgc3R5bGUgZmxhZ3MuCgoyMDAwLTExLTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY29tcGlsZXIvYW5zaS1jYy5tayAoQ0xFQU5fTElCUkFSWSk6IEZpeCBydWxlIGFuZAoJY29uZGl0aW9uYWwuCgoyMDAwLTExLTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzLCBwYXJzZV9jaGFyc3RyaW5ncyk6IFVzZSBkZWNyeXB0CglmdW5jdGlvbiBmcm9tIFBTQXV4IG1vZHVsZS4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKFQxX0RvbmVfUGFyc2UpOiBSZW5hbWVkIHRvLi4uCgkoVDFfRmluYWxpemVfUGFyc2VyKTogTmV3IGZ1bmN0aW9uICh0byBhdm9pZCBuYW1lIGNsYXNoIHdpdGggYQoJZnVuY3Rpb24gaW4gdGhlIFBTQXV4IG1vZHVsZSkuCgkoVDFfRGVjcnlwdCk6IFJlbW92ZWQgc2luY2UgaXQgaXMgZHVwbGljYXRlZCBpbiB0aGUgUFNBdXggbW9kdWxlLgoJKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBBZGRlZCBgcHNhdXgnIGFzIG5ldyBwYXJhbWV0ZXI7IHVzZSBkZWNyeXB0CglmdW5jdGlvbiBmcm9tIFBTQXV4IG1vZHVsZS4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmg6IEFkYXB0ZWQuCgoyMDAwLTExLTIyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90Mm9ianMuYyAoVDJfSW5pdF9GYWNlKTogRm9yIHB1cmUgQ0ZGIGZvbnRzLCBzZXQKCWByb290LT5udW1fZmFjZXMnIHRvIGBjZmYtPm51bV9mYWNlcycgYW5kIHNldCBgdW5pdHNfcGVyX0VNJwoJdG8gMTAwMC4KCgkqIHNyYy9jZmYvdDJwYXJzZS5jIChwYXJzZV90Ml9yZWFsKTogRml4ZWQgcmVhbCBudW1iZXIgcGFyc2luZwoJbG9vcC4KCgkqIHNyYy9jZmYvdDJsb2FkLmMgKFQyX0dldF9TdHJpbmcpOiBDYWxsZWQgVDJfR2V0X05hbWUgd2l0aCBhCglzaWQgdGhhdCB3YXMgb2ZmIGJ5IG9uZS4KCjIwMDAtMTEtMTYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0hpbnRlcik6IEFkZGVkIG5ldyBmaWVsZHMgdG8gY29udHJvbAoJYXV0by1oaW50aW5nIG9mIHN5bnRoZXRpYyBUeXBlIDEgZm9udHMuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkLCBhaF9oaW50ZXJfbG9hZF9nbHlwaCk6CglBZGRlZCBhdXRvLWhpbnRpbmcgc3VwcG9ydCBvZiBzeW50aGV0aWMgVHlwZSAxIGZvbnRzLgoKMjAwMC0xMS0xMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb29rVXBfVGFibGUsIFRUX0xvYWRfR2VuZXJpY19UYWJsZSk6IENoYW5nZQoJdHJhY2luZyBvdXRwdXQuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBTZXQgYm9vbGVhbiB2YXJpYWJsZQoJYGhhcy1vdXRsaW5lJyB0byB0cnVlIG9ubHkgaWYgdGhlIGZvbnQgaGFzIGEgYGdseWYnIG9yIGBDRkYgJyB0YWJsZS4KCjIwMDAtMTEtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogRml4IHJhc3RlcjEtPnJhc3RlciBhbmQKCXR5cGUxei0+dHlwZTEuCgoyMDAwLTExLTExICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluLCBidWlsZHMvY3lnd2luL2ZyZWV0eXBlLWNvbmZpZy5pbjoKCUFkZGVkIGEgLS1saWJ0b29sIG9wdGlvbi4gIFdoZW4gZnJlZXR5cGUtY29uZmlnIC0tbGlidG9vbCBpcwoJaW52b2tlZCwgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeQoJaXMgcmV0dXJuZWQuCgoyMDAwLTExLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY3lnd2luL2N5Z3dpbi1kZWYuaW46IFNhbWUgZml4IGFzIHByZXZpb3VzLgoKMjAwMC0xMS0xMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluOiBBZGQKCgkgICAgSU5TVEFMTF9QUk9HUkFNIDo9IEBJTlNUQUxMX1BST0dSQU1ACgkgICAgSU5TVEFMTF9TQ1JJUFQgIDo9IEBJTlNUQUxMX1NDUklQVEAKCglzbyB0aGF0IGluc3RhbGxhdGlvbiBvZiBmcmVldHlwZS1jb25maWcgZG9lcyBub3QgZmFpbC4KCjIwMDAtMTEtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jeWd3aW4vZnJlZXR5cGUtY29uZmlnLmluLCBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46CglNb3ZlIHRlc3QgZG93biBmb3IgZW1wdHkgLS1leGVjLXByZWZpeC4KCUZpeCAtLXZlcnNpb24uCgoJKiBidWlsZHMvY3lnd2luL2luc3RhbGwubWssIGJ1aWxkcy91bml4L2luc3RhbGwubWs6IFVzZQoJJChJTlNUQUxMX1NDUklQVCkgZm9yIGluc3RhbGxhdGlvbiBvZiBmcmVldHlwZS1jb25maWcuCgoJKiBidWlsZHMvY3lnd2luL2luc3RhbGwubWs6IEZpeCBjbGVhbiB0YXJnZXQgbmFtZXMuCgoyMDAwLTExLTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PQoKCkxvY2FsIFZhcmlhYmxlczoKdmVyc2lvbi1jb250cm9sOiBuZXZlcgpjb2Rpbmc6IGxhdGluLTEKRW5kOgo=